版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 單片機課程設計報告書</p><p> 課題名稱基于單片機的交通燈設計</p><p><b> 目 錄</b></p><p> 一、緒言 …………………………………………………………………………… 1</p><p> ?。ㄒ唬?設計任務………………………………………………………………
2、 3</p><p> ?。ǘ?交通信號燈控制方案選擇…………………………………………… 3</p><p> 二、系統(tǒng)設計 ……………………………………………………………………… 4</p><p> (一) 硬件電路設計………………………………………………………… 4</p><p> ?。ǘ?程序流程圖…………………………………
3、………………………… 4</p><p> ?。ㄈ?匯編語言程序設計…………………………………………………… 4</p><p> 三、交通信號燈控制器仿真 ……………………………………………………… 5</p><p> ?。ㄒ唬?系統(tǒng)仿真 ………………………………………………………………5</p><p> ?。ǘ?工作原理分析……
4、…………………………………………………… 5</p><p> 結 束 語 …………………………………………………………………………… 6</p><p> 參考文獻………………………………………………………………………………8</p><p><b> 一、緒 言</b></p><p><b> (
5、一)設計任務</b></p><p> 1、交通信號燈的起源</p><p> 1968年,聯(lián)合國《道路交通和道路標志信號協(xié)定》對各種信號燈的含義作了規(guī)定。綠燈是通行信號,面對綠燈的車輛可以直行,左轉彎和右轉彎,除非另一種標志禁止某一種轉向。左右轉彎車輛都必須讓合法地正在路口內行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號,面對紅燈的車輛必須在交叉路口的停車線后停車。
6、黃燈是警告信號,面對黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時可以進入交叉路口。</p><p> 2、本次設計要實現(xiàn)的目標 </p><p> 通過對早期交通燈發(fā)展現(xiàn)狀,結合自己本次設計的課題,本次設計任務要完成的目標是:</p><p> 利用一片AT89C51單片機,8255并行通用接口芯片一片,74LS07兩片,MAX692‘看門
7、狗’一片,共陰極的七段數(shù)碼管兩個雙向晶閘管若干,7805三端穩(wěn)壓電源一個,紅、黃、綠交通燈各兩個,開關鍵盤實現(xiàn)東西南北路口交通控制。</p><p> (二) 交通信號燈控制方案選擇</p><p> 1、交通信號燈的控制方案論證</p><p> 東西、南北兩干道交于一個十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠
8、燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮時間為東西、南北兩干道的公共停車時間。設東西道比南北道的車流量大,指示燈燃亮的方案如表2。</p><p><b> 表二說明:</b></p><p> ?。?)當東西方向為紅燈,此道車輛禁止通行,東西道行人可通過;南北道為綠燈,此道車輛通過,行人禁止通行。時間為60秒。</p>&l
9、t;p> ?。?)黃燈閃爍5秒,警示車輛和行人紅、綠燈的狀態(tài)即將切換。 </p><p> ?。?)當東西方向為綠燈,此道車輛通行;南北方向為紅燈,南北道車輛禁止通過,行人通行。時間為80秒。 東西方向車流大 通行時間長。</p><p> ?。?)這樣如上表的時間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車輛就能安全暢通的通行。</p><p>
10、 2、單片機的控制方案論證</p><p> 根據(jù)設計任務書中的設計要求,可選用Atmel公司的89系列單片機,用AT89C8031來完成本次設計??刂品桨溉缦拢?lt;/p><p><b> 圖6 </b></p><p><b> 二、系統(tǒng)設計</b></p><p><b>
11、 (一)硬件電路設計</b></p><p> 1、交通信號燈控制電路圖</p><p> 8051單片機控制交通信號燈并實現(xiàn)實時顯示倒計時。單片機控制交通信號燈的電路原理如圖2-1所示。</p><p> 圖2-1 交通信號燈控制線路圖</p><p> ?。?)開關鍵盤輸入交通燈初始時間,通過8051單片機P1輸入到系
12、統(tǒng)。</p><p> (2)由8051單片機定時器每秒鐘通過P0口向8255的數(shù)據(jù)口送信息,由8255的PA 口顯示紅、綠、黃燈的燃亮情況;由8255的PC口顯示每個燈的燃亮時間。</p><p> ?。?)8051通過 設置 各個信號等的燃亮時間、通過8031設置,綠、紅時間分別為60秒、80秒循環(huán)由8051的 P0口向8255的數(shù)據(jù)口輸出。</p><p>
13、; (4)通過8051單片機的P3.0位來控制系統(tǒng)是工作或設置初值,當.牌位0就對系統(tǒng)進行初始化,為1系統(tǒng)就開始工作。</p><p> ?。?)紅燈倒計時時間,當有車輛闖紅燈時,啟動蜂鳴器進行報警,3S后然后恢復正常。</p><p> (6)增加每次綠燈時間車流量檢測的功能,并且通過查詢P2.0端口的電平是否為低,開關按下為低電平,雙位數(shù)碼管顯示車流量,直到下一次綠燈時間重新記入。
14、</p><p> ?。?)綠燈時間倒計時完畢,重新循環(huán)。</p><p><b> 2、主要元器件選擇</b></p><p> 主要元器件選用型號和數(shù)量如表2-1所示:</p><p> 表2-1 主要元器件清單</p><p><b> ?。ǘ?程序流程圖</b&g
15、t;</p><p><b> 1、延時模塊</b></p><p> 延時方法可以有兩種一中是利用MCS-51內部定時器才生溢出中斷來確定1秒的時間,另一種是采用軟延時的方法。</p><p><b> 軟件延時</b></p><p> MCS-51的工作頻率為2-12MHZ,我們選用的
16、8031單片機的工作頻率為6MHZ。機器周期與主頻有關,機器周期是主頻的12倍,所以一個機器周期的時間為12*(1/6M)=2us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過指令的執(zhí)行條數(shù)來確定1秒的時間。</p><p> 具體的延時程序分析:</p><p> DELAY:MOV R4,#08H 延時1秒子程序</p><p> DE2:L
17、CALL DELAY1 </p><p> DJNZ R4,DE2</p><p><b> RET</b></p><p> DELAY1:MOV R6,#0 延時125ms 子程序</p><p><b> MOV R5,#0</b></p><p>
18、DE1: DJNZ R5,$</p><p> DJNZ R6,DE1</p><p><b> RET</b></p><p> MOV Rn,#DATA 字節(jié)數(shù)數(shù)為2 機器周期數(shù)為1</p><p> 所以此指令的執(zhí)行時間為2ms </p><p> DELAY1
19、為一個雙重循壞 循環(huán)次數(shù)為256*256=65536 所以延時時間=65536*2=131072us 約為125us </p><p> DELAY R4設置的初值為8 主延時程序循環(huán)8次,所以125us*8= 1秒</p><p> 由于單片機的運行速度很快其他的指令執(zhí)行時間可以忽略不計。</p><p><b> 硬件延時</b>
20、</p><p> ?。?)計數(shù)器初值計算</p><p> 定時器工作時必須給計數(shù)器送計數(shù)器初值,這個值是送到TH和TL中的。他是以加法記數(shù)的,并能從全1到全0時自動產生溢出中斷請求。因此,我們可以把計數(shù)器記滿為零所需的計數(shù)值設定為C和計數(shù)初值設定為TC 可得到如下計算通式:</p><p><b> TC=M-C</b></p&g
21、t;<p> 式中,M為計數(shù)器摸值,該值和計數(shù)器工作方式有關。在方式0時M為213 ;在方式1時M的值為216;在方式2和3為28</p><p><b> ?。?) 計算公式</b></p><p> T=(M-TC)T計數(shù)</p><p> 或TC=M-T/T計數(shù)</p><p> T計數(shù)是單片
22、機時鐘周期TCLK的12倍;TC為定時初值</p><p> 如單片機的主脈沖頻率為TCLK12MHZ ,經(jīng)過12分頻</p><p> 方式0 TMAX=213?。蔽⒚耄?.192毫秒</p><p> 方式1 TMAX=216 *1微秒=65.536毫秒</p><p> 顯然1秒鐘已經(jīng)超過了計數(shù)器的最大定時間,所以我們
23、只有采用定時器和軟件相結合的辦法才能解決這個問題.</p><p> ?。?) 相應程序代碼</p><p><b> 主程序</b></p><p> 定時器需定時50毫秒,故T0工作于方式1。初值:TC=M-T/ T計數(shù)=216-50ms/1us=15536=3CBOH</p><p><b> O
24、RG 1000H</b></p><p> START: MOV TMOD, #01H ; 令T0為定時器方式1</p><p> MOV TH0, #3CH ;裝入定時器初值</p><p> MOV TL0, #BOH;</p><p> MOV IE, #82H ;
25、開T0中斷</p><p> SEBT TR0;啟動T0計數(shù)器</p><p> MOV RO,#14H;軟件計數(shù)器賦初值</p><p> LOOP:SJMP ;等待中斷</p><p> 3、中斷服務程序流程圖</p><p> ?。?)緊急狀態(tài)時,采用中斷方式,通過按鈕,使單片機執(zhí)行中斷
26、服務程序,讓干線紅燈、支線紅燈同時亮。調整放行時間時,也采用中斷方式,通過按鈕,使單片機執(zhí)行中斷服務程序,讓放行時間延長或縮短。中斷服務程序流程圖如下:</p><p> ORG 000BH</p><p> AJMP BRTO</p><p> ORG 00BH</p><p> BRTO:DJNZ R0,NEXT<
27、/p><p> AJMP TIME ; 跳轉到時間及信號燈顯示子程序 </p><p> DJNZ:MOV R0,#14H;恢復R0值</p><p> MOV TH0, #3CH ;重裝入定時器初值</p><p> MOV TL0, #BOH;</p><p> MOV
28、IE, #82H </p><p><b> RET1</b></p><p><b> END</b></p><p> 4、時間及信號燈的顯示</p><p><b> ?。?)顯示原理:</b></p><p> 當定時器定時為1秒,時程序
29、跳轉到時間顯示及信號燈顯示子程序,它將依次顯示信號燈時間 ,同時一直顯示信號燈的顏色,這時在返回定時子程序定時一秒,在顯示黃燈的下一個時間,這樣依次把所有的燈色的時間顯示完后在重新給時間計數(shù)器賦初值 ,重新進入循環(huán)。 </p><p> ?。?)8255PA口輸出信號接信號燈:</p><p> 由于發(fā)光二極管為共陽極接法,輸出端口為低電平,對應的二極管發(fā)光,所以可以用置位方法點亮紅
30、,綠,黃發(fā)光二極管。</p><p> (3) 8255輸出信號與數(shù)碼管的連接:</p><p> LED 燈的顯示原理:通過同名管腳上所加電平的高低來控制發(fā)光二極管是否點量而顯示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上7FH所以?。樱猩蠟椋胺?,不亮其余為TTL高電平,全亮則顯示為8</p><p><b> 采用共陰級連接:<
31、;/b></p><p> 其中 PC0\PB0-a,</p><p> PC1\PB1-b, </p><p> PC2\PB2-c,</p><p> PC3\PB3-d,</p><p> PC4\PB4-e, </p><p> PC5\PB5-f,</p&
32、gt;<p><b> PC6\PB6-g</b></p><p> PC7\PB7 -SP接地</p><p> 表 3 驅動代碼表</p><p> ?。?) 8255與8051的連接:</p><p> 用8051的P0 口的 p0.7 連接8255的片選信號cs 我們用8031的地址采用
33、全譯碼方式,當p0.7 =0 時片選有效, 其他無效, p0.1 p0.1 用于選擇8255端口</p><p> P0.7 p0.6 p0.5 p0.4 p0.3 p0.2 P0.1 P0.0</p><p> A7 A6 A5 A4 A3 A2 A1 A0</p><p> 1 X X X X
34、 X 0 0 00H為8255 的PA口</p><p> 1 X X X X X 0 1 01H 為8255的PB口</p><p> 1 X X X X X 1 0 02H 為8255的PC口</p><p> 1 X X X
35、 X X 1 1 03H 為8255的控制口</p><p> 由于8051是分時對8255和儲存器進行訪問所以8051的P0口不會發(fā)生沖突</p><p><b> 流程圖如圖所示</b></p><p><b> 圖8</b></p><p> ?。ㄈ?匯編語言程
36、序設計</p><p> ORG 0000H ;主程序的入口地址</p><p> LJMP MAIN ;跳轉到主程序的開始處</p><p> ORG 0003H ;外部中斷0的中斷程序入口地址 </p><p> ORG 000BH ;定時器0的中斷程序入口地址<
37、;/p><p> LJMP T0_INT ;跳轉到中斷服務程序處</p><p> ORG 0013H ;外部中斷1的中斷程序入口地址 </p><p> MAIN : MOV SP,#50H</p><p> MOV IE,#8EH ;CPU開中斷,允許T0中斷,T1中斷和外部中斷1中
38、斷</p><p> MOV TMOD,#51H ;設置T1為計數(shù)方式,T0為定時方式,且都工作于模式1</p><p> MOV TH1,#00H ;T1計數(shù)器清零</p><p> MOV TL1,#00H</p><p> SETB TR1 ;啟動T1計時器</p><p&
39、gt; SETB EX1 ;允許INT1中斷</p><p> SETB IT1 ;選擇邊沿觸發(fā)方式</p><p> MOV DPTR ,#0003H</p><p> MOV A, #80H ;給8255賦初值,8255工作于方式0</p><p> MOVX @DPTR, A<
40、;/p><p> //ST0:MOV P3 ,#0F0H</p><p> AGAIN: JB P3.1,N0 ;判斷是否要設定東西方向紅綠燈時間的初值,若P3.1為1 則跳轉</p><p> MOV A,P1 </p><p> JB P1.7,RED ;判斷P1.7是否為1,若為1則設定紅燈時間,否則設
41、定綠燈時間 </p><p> MOV R0,#00H ;R0清零</p><p> MOV R0,A ;存入東西方向綠燈初始時間</p><p><b> MOV R3,A</b></p><p> LCALL DISP1</p><p> LCALL
42、DELAY</p><p> AJMP AGAIN</p><p> RED: MOV A,P1</p><p> ANL A,#7FH ;P1.7置0</p><p> MOV R7,#00H ;R7清零</p><p> MOV R7,A ;存入東西方向紅燈初始時間&l
43、t;/p><p><b> MOV R3,A</b></p><p> LCALL DISP1</p><p> LCALL DELAY</p><p> AJMP AGAIN</p><p> -------------------------------------------</
44、p><p> N0: SETB TR0 ;啟動T0計時器</p><p> MOV 76H,R7 ;紅燈時間存入76H</p><p> N00: MOV A,76H ;東西方向禁止,南北方向通行</p><p> MOV R3,A </p><p&g
45、t; MOV DPTR,#0000H ;置8255A口,東西方向紅燈亮,南北方向綠燈亮</p><p> MOV A,#0DDH</p><p> MOVX @DPTR, A</p><p> N01: JB P2.0,B0</p><p> N02: SETB P3.0</p><p> CJN
46、E R3,#00H,N01 ;比較R3中的值是否為0,不為0轉到當前指令處執(zhí)行</p><p> ;------黃燈閃爍5秒程序------</p><p> N1: SETB P3.0</p><p> MOV R3,#05H</p><p> MOV DPTR,#0000H ;置8255A口,東西,南北方向黃燈亮<
47、/p><p> MOV A,#0D4H</p><p> MOVX @DPTR,A</p><p> N11: MOV R4,#00H</p><p> N12: CJNE R4,#7DH,$ ;黃燈持續(xù)亮0.5秒</p><p> N13: MOV DPTR,#0000H ; 置8255A
48、口,南北方向黃燈滅</p><p> MOV A,#0DDH</p><p> MOVX @DPTR,A</p><p> N14: MOV R4,#00H</p><p> CJNE R4,#7DH,$ ;黃燈持續(xù)滅0.5秒</p><p> CJNE R3,#00H,N1 ;閃爍時間達5秒則
49、退出</p><p> ------------------------------------------------------------</p><p> N2: MOV R7,#00H</p><p> MOV A,R0 ;東西通行,南北禁止</p><p><b> MOV R3,A</b>
50、</p><p> MOV DPTR,#0000H ; 置8255A口,東西方向綠燈亮,南北方向紅燈亮</p><p> MOV A,#0EBH</p><p> MOVX @DPTR,A</p><p> N21: JB P2.0,T03</p><p> N22: CJNE R3,#00H,N21
51、</p><p> ;------黃燈閃爍5秒程序------</p><p> N3: MOV R3,#05H</p><p> MOV DPTR,#0000H ;置8255A口,東西,南北方向黃燈亮</p><p> MOV A,#0E2H</p><p> MOVX @DPTR,A</
52、p><p> N31: MOV R4,#00H</p><p> CJNE R4,#7DH,$ ;黃燈持續(xù)亮0.5秒</p><p> N32: MOV DPTR,#0000H ; 置8255A口,南北方向黃燈滅</p><p> MOV A,#0EBH</p><p> MOVX @DPTR,
53、A</p><p> N33: MOV R4,#00H</p><p> CJNE R4,#7DH,$ ;黃燈持續(xù)滅0.5秒</p><p> CJNE R3,#00H,N3 ;閃爍時間達5秒則退出</p><p><b> SJMP N00</b></p><p> -
54、-----闖紅燈報警程序------</p><p> B0: MOV R2,#03H ;報警持續(xù)時間3秒</p><p> B01: MOV A,R3</p><p> JZ N1 ;若倒計時完畢,不再報警</p><p> CLR P3.0 ;報警 </p
55、><p> CJNE R2,#00H,B01 ;判斷3秒是否結束</p><p><b> SJMP N02</b></p><p> ------1秒延時子程序-------</p><p> N7: RETI</p><p> T0_INT:MOV TL0,#9AH
56、 ;給定時器T0送定時10ms的初值</p><p> MOV TH0,#0F1H </p><p><b> INC R4</b></p><p><b> INC R5</b></p><p> CJNE R5,#0FAH,T01 ;判斷延時是否夠一秒,不夠則調用顯示子程序<
57、;/p><p> MOV R5,#00H ;R5清零</p><p> DEC R3 ;倒計時初值減一</p><p> DEC R2 ;報警初值減一</p><p> T01: ACALL DISP ;調用顯示子程序</p><p>
58、; RETI ;中斷返回</p><p> ------顯示子程序------</p><p> DISP: JNB P2.4,T02</p><p> DISP1: MOV B,#0AH</p><p> MOV A,R3 ;R3中值二轉十顯示轉換</p><
59、p><b> DIV AB</b></p><p><b> MOV 79H,A</b></p><p><b> MOV 7AH,B</b></p><p> DIS: MOV A,79H ;顯示十位</p><p> MOV DPTR
60、,#TAB</p><p> MOVC A,@A+DPTR</p><p> MOV DPTR,#0002H</p><p> MOVX @DPTR,A</p><p> MOV DPTR,#0001H</p><p> MOV A,#0F7H</p><p> MOVX @DPTR
61、,A</p><p> LCALL DELAY</p><p> DS2: MOV A,7AH ;顯示個位</p><p> MOV DPTR,#TAB </p><p> MOVC A,@A+DPTR</p><p> MOV DPTR,#0002H</p><
62、p> MOVX @DPTR,A</p><p> MOV DPTR,#0001H</p><p> MOV A,#0FBH</p><p> MOVX @DPTR,A</p><p><b> RET</b></p><p> ------東西方向車流量檢測程序------<
63、;/p><p> T03: MOV A,R3</p><p> SUBB A,#00H ;若綠燈倒計時完畢,不再檢測車流量</p><p> JZ N3 </p><p> JB P2.0,T03</p><p> INC R7
64、 </p><p> CJNE R7,#64H,E1 </p><p> MOV R7,#00H ;中斷到100次則清零</p><p> E1: SJMP N22</p><p> ------東西方向車流量顯示程序------</p><p> T02: MOV
65、B,#0AH</p><p> MOV A,R7 ;R7中值二轉十顯示轉換</p><p><b> DIV AB</b></p><p><b> MOV 79H,A</b></p><p><b> MOV 7AH,B</b>&l
66、t;/p><p> DIS3: MOV A,79H ;顯示十位</p><p> MOV DPTR,#TAB</p><p> MOVC A,@A+DPTR</p><p> MOV DPTR,#0002H</p><p> MOVX @DPTR,A</p><p>
67、 MOV DPTR,#0001H</p><p> MOV A,#0F7H</p><p> MOVX @DPTR,A</p><p> LCALL DELAY</p><p> DS4: MOV A,7AH ;顯示個位</p><p> MOV DPTR,#TAB </p&g
68、t;<p> MOVC A,@A+DPTR</p><p> MOV DPTR,#0002H</p><p> MOVX @DPTR,A</p><p> MOV DPTR,#0001H</p><p> MOV A,#0FBH</p><p> MOVX @DPTR,A</p>
69、<p><b> LJMP N7</b></p><p> ------延時4MS子程序----------</p><p> DELAY: MOV R1,#0AH</p><p> LOOP: MOV R6,#64H</p><p><b> NOP</b></p
70、><p> LOOP1: DJNZ R6,LOOP1</p><p> DJNZ R1,LOOP</p><p> RET </p><p> ------字符表------</p><p> TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
71、</p><p><b> END</b></p><p><b> ?。ㄋ模〤程序設計</b></p><p> #include <reg51.h></p><p> #include <stdio.h></p><p> #define
72、uchar unsigned char</p><p> #define uint unsigned int</p><p><b> uchar h;</b></p><p><b> uint r=0;</b></p><p><b> uint s;<
73、/b></p><p> uchar code dis[]={</p><p> 0Xc0,/*0*/</p><p> 0Xf9,/*1*/</p><p> 0Xa4,/*2*/</p><p> 0Xb0,/*3*/</p><p> 0X99,/*4*/</p&
74、gt;<p> 0X92,/*5*/</p><p> 0X82,/*6*/</p><p> 0Xf8,/*7*/</p><p> 0X80,/*8*/</p><p> 0X90,/*9*/</p><p> 0Xff,/*NULL*/</p><p><b
75、> };</b></p><p> void delay(uint c)</p><p><b> {</b></p><p><b> uint i,j;</b></p><p> for(i=0;i<c;i++)</p><p> fo
76、r(j=0;j<100;j++);</p><p><b> }</b></p><p> //interrupt 1</p><p> void t0(void) interrupt 0 using 1</p><p><b> {</b></p><p>&
77、lt;b> delay(2);</b></p><p> if(INT0==0)</p><p><b> {</b></p><p><b> r++;</b></p><p><b> if(r==2)</b></p><p&
78、gt;<b> {</b></p><p><b> r=0;</b></p><p><b> }</b></p><p><b> r%=2;</b></p><p><b> if(r==0)</b></p>
79、;<p><b> {</b></p><p><b> P0=0xeb;</b></p><p><b> P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> }whi
80、le(1)</b></p><p><b> {</b></p><p> if(INT0==0|INT1==0|T0==0)</p><p><b> {</b></p><p><b> delay(2);</b></p><p>
81、; if(INT0==0|INT1==0|T0==0)</p><p><b> break;</b></p><p><b> }</b></p><p><b> };</b></p><p><b> }</b></p>&l
82、t;p><b> }</b></p><p> //interrupt 2</p><p> void t1(void) interrupt 2 using 1</p><p><b> {</b></p><p><b> delay(2);</b></
83、p><p> if(INT1==0)</p><p><b> {</b></p><p><b> r++;</b></p><p><b> if(r==2)</b></p><p><b> {</b></p>
84、;<p><b> r=0;</b></p><p><b> }</b></p><p><b> r%=2;</b></p><p><b> if(r==0)</b></p><p><b> {</b>
85、</p><p><b> P0=0xdd;</b></p><p><b> P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> }while(1)</b></p><p&g
86、t;<b> {</b></p><p> if(INT1==0|INT0==0|T0==0)</p><p><b> {</b></p><p><b> delay(2);</b></p><p> if(INT1==0|INT0==0|T0==0)</p
87、><p><b> break;</b></p><p><b> }</b></p><p><b> };</b></p><p><b> }</b></p><p><b> }</b></
88、p><p> //interrupt 3</p><p> void t2(void) interrupt 1 using 1</p><p><b> {</b></p><p><b> TH0=0xff;</b></p><p><b> TL0=0xf
89、f;</b></p><p><b> delay(2);</b></p><p><b> if(T0==0)</b></p><p><b> {</b></p><p><b> P0=0xdb;</b></p>&
90、lt;p><b> P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> }while(1)</b></p><p><b> {</b></p><p> if(INT0==0|INT1=
91、=0)</p><p><b> { </b></p><p><b> delay(2);</b></p><p> if(INT0==0|INT1==0)</p><p><b> break;</b></p><p><b>
92、 }</b></p><p><b> };</b></p><p><b> }</b></p><p> void main(void)</p><p><b> {</b></p><p> TMOD=0x06;</p&
93、gt;<p><b> TH0=0xff;</b></p><p><b> TL0=0xff;</b></p><p><b> TR0=1;</b></p><p><b> EA=1;</b></p><p><b>
94、 EX0=1;</b></p><p><b> EX1=1;</b></p><p><b> ET0=1;</b></p><p><b> while(1)</b></p><p><b> {</b></p>&
95、lt;p><b> P0=0xeb;</b></p><p> for(h=28;h>0;h--)</p><p><b> {</b></p><p> for(s=248;s>0;s--)</p><p><b> {</b></p>
96、<p><b> P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> P1=0x01;</b></p><p> P2=dis[h/10];</p><p><b> delay(1);<
97、;/b></p><p><b> P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> P1=0x02;</b></p><p> P2=dis[h%10];</p><p><b&
98、gt; delay(1);</b></p><p><b> P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> P1=0x04;</b></p><p> P2=dis[(h+2)/10];</p
99、><p><b> delay(1);</b></p><p><b> P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> P1=0x08;</b></p><p> P2
100、=dis[(h+2)%10];</p><p><b> delay(1);</b></p><p><b> }</b></p><p><b> }</b></p><p> delay(248);</p><p><b> P0
101、=0xf3;</b></p><p> for(h=3;h>0;h--)</p><p><b> {</b></p><p> delay(392);</p><p><b> P0=0xf3;</b></p><p><b> del
102、ay(1);</b></p><p><b> P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> P1=0xaa;</b></p><p> P2=dis[(h-1)%10];</p>&l
103、t;p> delay(600);</p><p><b> P0=0xfb;</b></p><p><b> }</b></p><p> delay(248);</p><p><b> P0=0xdd;</b></p><p>
104、for(h=38;h>0;h--)</p><p><b> {</b></p><p> for(s=248;s>0;s--)</p><p><b> {</b></p><p><b> P1=0x00;</b></p><p>
105、;<b> P2=0xff;</b></p><p><b> P1=0x01;</b></p><p> P2=dis[(h+2)/10];</p><p><b> delay(1);</b></p><p><b> P1=0x00;</b>
106、;</p><p><b> P2=0xff;</b></p><p><b> P1=0x02;</b></p><p> P2=dis[(h+2)%10];</p><p><b> delay(1);</b></p><p><b&g
107、t; P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> P1=0x04;</b></p><p> P2=dis[h/10];</p><p><b> delay(1);</b></p>
108、<p><b> P1=0x00;</b></p><p><b> P2=0xff;</b></p><p><b> P1=0x08;</b></p><p> P2=dis[h%10];</p><p><b> delay(1);<
109、/b></p><p><b> }</b></p><p><b> }</b></p><p> delay(248); </p><p><b> P0=0xde;</b></p><p> for(h=3;h>0;h--)&
110、lt;/p><p><b> {</b></p><p> delay(392);</p><p><b> P0=0xde;</b></p><p><b> delay(1);</b></p><p><b> P1=0x00;<
111、;/b></p><p><b> P2=0xff;</b></p><p><b> P1=0xaa;</b></p><p> P2=dis[(h-1)%10];</p><p> delay(600);</p><p><b> P0=0xdf
112、;</b></p><p><b> }</b></p><p> delay(248);</p><p><b> }</b></p><p><b> }</b></p><p> 三、交通信號燈控制器仿真</p>
113、<p> 在完成了交通燈控制器硬件設計和軟件設計以后,便進入系統(tǒng)的調試階段。系統(tǒng)的調試步驟和方法基本上是相同的,但具體細節(jié)和所采用的開發(fā)系統(tǒng)以及用戶系統(tǒng)選用的單片機型號有關,如可選用Keil軟件進行軟件調試,</p><p><b> 1、Keil調試</b></p><p><b> ……</b></p><
114、;p> 圖3-1 程序調試完成圖 </p><p><b> 結 論</b></p><p><b> 一、課程設計總結</b></p><p> 本系統(tǒng)就是充分利用了8051和8255芯片的I/O引腳。系統(tǒng)統(tǒng)采用MSC-51系列單片機Intel8051和可編程并行I/O接口芯片8255A為
115、中心器件來設計交通燈控制器,實現(xiàn)了能根據(jù)實際車流量通過8031芯片的P1口設置紅、綠燈燃亮時間的功能;紅綠燈循環(huán)點亮,倒計時剩5秒時黃燈閃爍警示(交通燈信號通過PA口輸出,顯示時間直接通過8255的PC口輸出至雙位數(shù)碼管);車輛闖紅燈報警;綠燈時間可檢測車流量并可通過雙位數(shù)碼管顯示。。系統(tǒng)不足之處不能控制車的左、右轉、以及自動根據(jù)車流改變紅綠燈時間等。這是由于本身地理位子以及車流量情況所定,如果有需要可以設計擴充原系統(tǒng)來實現(xiàn) 。<
116、/p><p><b> 二、課程設計心得</b></p><p> 通過這次畢業(yè)設計,使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我在單片機的基本原理、單片機應用系統(tǒng)開發(fā)過程,以及在常用編程設計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格的應用型人才打下良好的基所得收獲:通過這次課程設計,使我得到了一次用專業(yè)知識和專業(yè)技
117、能去分析問題、解決問題全面系統(tǒng)的鍛煉。使我在單片機的基本原理、單片機應用系統(tǒng)開發(fā)過程,以及用匯編語言設計程序的思路技巧等方面都能向前邁了一大步,為日后成為合格的應用型人才打下良好的基礎。</p><p><b> 參考文獻</b></p><p> ?、購堃憷? 單片微型計算機原理及應用,西安電子科技大學出版社 1998 </p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計---交通燈
- 單片機交通燈課程設計
- 單片機課程設計-交通燈
- 單片機課程設計--交通燈
- 單片機課程設計(交通燈)
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計--基于單片機的交通燈控制設計
- 交通燈單片機課程設計--基于單片機的交通燈顯示系統(tǒng)
- 交通燈單片機課程設計--基于單片機的交通燈顯示系統(tǒng)
- 單片機交通燈課程設計--基于單片機的交通燈系統(tǒng)的設計
- 單片機交通燈課程設計--基于單片機的交通燈系統(tǒng)的設計
- 單片機課程設計報告---交通燈
- 單片機交通燈課程設計報告
- 單片機課程設計--模擬交通燈
- 模擬交通燈單片機課程設計
- 交通燈單片機課程設計報告
- 單片機交通燈課程設計 (2)
評論
0/150
提交評論