基于單片機(jī)的交通燈創(chuàng)新設(shè)計與制作_第1頁
基于單片機(jī)的交通燈創(chuàng)新設(shè)計與制作_第2頁
基于單片機(jī)的交通燈創(chuàng)新設(shè)計與制作_第3頁
基于單片機(jī)的交通燈創(chuàng)新設(shè)計與制作_第4頁
基于單片機(jī)的交通燈創(chuàng)新設(shè)計與制作_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于單片機(jī)的交通燈創(chuàng)新設(shè)計與制作一、概述(一)電源提供方案:采用獨立的5V穩(wěn)壓電源,此方案穩(wěn)定可靠,且有各種成熟電路可供選用。(二)顯示界面方案采用數(shù)碼管和點陣LED相結(jié)合的方法,因為實際既要求倒計時施主輸出,又要求又狀態(tài)燈輸出等,為方便觀看并考慮到現(xiàn)實狀況,用數(shù)碼管與LED分別顯示時間和提示信息。這種方案既滿足系統(tǒng)功能要求,又減少了系統(tǒng)實現(xiàn)的復(fù)雜度。(三)輸入方案直接在IO口上接按鍵開關(guān)。因為設(shè)計時精簡和優(yōu)化了電路,所以剩余口的資源還比較多。二、系統(tǒng)硬件電路設(shè)計整套電路系統(tǒng)由控制系統(tǒng)模塊、通行燈輸出控制顯示模塊、時間顯示模塊、時間顯示模塊和自動特種車輛控制模塊等組成。(一)通行燈輸出控制道口交通燈指示采用高亮度紅綠雙色發(fā)光二極管,左拐、直行、右拐及行人各一個。當(dāng)發(fā)光電流為6mA時,按公式R=(5-1.8)/0.006計算,限流電阻應(yīng)為510Ω.由于南北通行時雙向指示牌相同,因此每個端口應(yīng)具有12mA的吸收電流能力。(二)時間顯示模塊道口通行剩余時間采用高亮紅色7段LED發(fā)光數(shù)碼管顯示,采用共陽數(shù)碼管,如用單片機(jī)吸收電流驅(qū)動,列掃描驅(qū)動使用三極管,按每段6mA電流算,全顯示字形“8”時,每個數(shù)碼管需6mA×8=48mA。由于時間顯示每個道口相同,4組需192mA,因此設(shè)計中采用中功率三極管9012.由于單片機(jī)每個斷碼輸出口需吸收24mA電流,因此在電路設(shè)計中也使用了驅(qū)動集成塊74HC244。(三)特種車輛自動控制模塊自動道口燈在特種車輛到來時能自動關(guān)閉所有綠燈,讓特種車通過。通過復(fù)位按鈕,使用實時中斷來影響特種車的通行要求。(四)電路仿真圖圖3.1電路仿真圖(五)實物圖圖3.2A路正常顯示狀態(tài)圖3.3B路正常顯示狀態(tài)圖3.4緊急通道狀態(tài)三、系統(tǒng)主要程序設(shè)計(一)主要程序簡介1.初始化程序初始化程序主要完成內(nèi)存劃,定時器的工作模式、中斷方式等的設(shè)定。由于子程序調(diào)用較多,因此初始化時堆棧指針設(shè)于80H處。定時器T0、T1設(shè)為16位定時器模式,定時時間位50ms,為秒計時用,T1為通行結(jié)束閃爍用。2.主程序主程序要負(fù)責(zé)總體程序管理功能,實現(xiàn)人機(jī)交換設(shè)定。由于采用動態(tài)掃描方式顯示時間,因此主程序大部分時間要調(diào)用掃描顯示程序。主程序流程圖如下圖示。3.外中斷1中斷服務(wù)程序經(jīng)過時,車中發(fā)射紅外線信號,其信號被道口控制板上的接收器接收,并輸出一個低電平處外中斷1.中斷處理程序流程圖如下頁圖所示。4.定時服務(wù)中斷程序主要用于行車與行人的通行指示,按照交通規(guī)則,紅綠燈控制轉(zhuǎn)換邏輯表如表所列。南北方向端口控制功能120~110s110~70s70~60s60~10s10~0sP*.7左拐紅00011P*.6左拐綠11100/1P*.5直行紅11100P*.4直行綠000/111P*.3右拐紅01111P*.2右拐綠10000/1P*.1行人紅11100P*.0行人綠000/111道口控制字66H6AH6AH/7BH99H99H/DDH東西方向P*.7左拐紅00000P*.6左拐綠11111P*.5直行紅00000P*.4直行綠11111P*.3右拐紅01111P*.2右拐綠10000/1P*.1行人綠00000P*.0行人紅111115.通行規(guī)則如下:A.車輛南北直行、各路右拐,南北向行人通行。南北向通行時間為1min(60S),各路右拐比直行滯后10S開放。B.車輛南北向左拐、各路右拐,行人禁行。通行時間為1min(60S)。C.車輛東西直行、各路右拐,東西向行人通行。東西向通行時間為1min(60S),各路右拐比直行滯后10S開放。D.車輛東西向左拐、各路右拐,行人禁行。通行時間為1min(60S)。(二)擴(kuò)展交通燈系統(tǒng)完整程序TIME EQU 50H ;當(dāng)前120S倒計時值TIMESFR EQU 51H ;臨時寄存器CONR5 EQU 52H ;T1秒定時記數(shù)用TIMED0 EQU 55H ;單向最大定時時間,直行開始,人行開始(120S)TIMED1 EQU 56H ;各路右拐開始時間(110S)TIMED2 EQU 57H ;前行結(jié)束提醒(70S)TIMED3 EQU 58H ;前行結(jié)束,人行結(jié)束,左拐開始(60S)TIMED4 EQU 59H ;左拐結(jié)束提醒TIMED5 EQU 5AH ;左拐結(jié)束TIMED6 EQU 5BHTIMED7 EQU 5CHSN EQU P1 ;南北口EW EQU P2 ;東西口SCAN EQU P3 ;掃描口LEDOUT EQU P0 ;段碼口SRYBIT P3.4 ;右拐黃燈DCY BIT P3.5 ;直行與行人黃燈DLRY BIT P3.6 ;左拐,右拐黃燈SNEWFLAG BIT 21H.1 ;東西口與南北口轉(zhuǎn)換標(biāo)志EX1FLAG BIT 21H.4 ;外中斷1標(biāo)志;*********************************************;中斷入口程序;*********************************************ORG 0000H ;程序執(zhí)行開始地址LJMP START ;跳到標(biāo)號START執(zhí)行ORG 0003H ;外中斷0中斷程序入口RET ;外中斷0中斷返回ORG 000BH ;定時器T0中斷程序入口LJMP NTT0 ;跳至INTT0執(zhí)行ORG 0013H ;外中斷1中斷程序入口LJMP INT11 ;外中斷1、119﹑120中斷ORG 001BH ;定時器T1中斷程序入口LJMP INTT1ORG 0023H ;串行中斷程序程序返回RETI;******************************************;主程序;******************************************START: MOV SP,#60H MOV R0,#00H ;清00H~7FH內(nèi)存單元 MOV R7,#7FHCLEARDISP: MOV @R0,#00H INCR0 DJNZ R7,CLEARDISP MOV R2,#0FFH SETB IT1 ;下降沿觸發(fā) MOV TIMED0,#78H;單向最大定時時間,直行開始,人行開始 MOV TIMED1,#6EH ;各路右拐開始時間(110S) MOV TIMED2,#46H ;前行結(jié)束提醒(70S) MOV TIMED3,#3CH ;前行結(jié)束,人行結(jié)束,左拐開始(60S) MOV TIMED4,#0AH ;左拐結(jié)束提醒 SETB SNEWFLAG ;南北先通行標(biāo)志位 MOV TMOD,#11H ;設(shè)T0,T1為16位定時器 MOV TL0,#0B0H ;50ms定時初值(T0記時用) MOV TH0,#3CH ;50ms定時初值 MOV TL1,#0B0H ;50ms定時初值(T1閃爍定時用) MOV TH1,#3CH ;50ms定時初值 JB SCAN.7,SSST ;120s管理 ;**以下為60s管理**; LCALL DL1MS LCALL DL1MS LCALL DL1MS JB SCAN.7,SSST ;干擾 MOV TIMED0,#60 ;單向最大定時時間,直行開始,人行開始 MOV TIMED1,#55 ;各路右拐開始時間(55S) MOV TIMED2,#35 ;前行結(jié)束提醒(35S) MOV TIMED3,#30 ;前行結(jié)束,人行結(jié)束,左拐開始(30S) MOV TIMED4,#05 ;左拐結(jié)束提醒SSWAIT: JNB SCAN.7,SSWAIT LCALL DL1MS LCALL DL1MS LCALL DL1MS JNB SCAN.7,SSWAITSSST: MOV TIME,TIMED0;120S LCALL TUNBCD MOV SN,#99H MOV EW,#0AAH SETB EA ;總中斷開放 SETB PX1 SETB EX1 SETB ET0 ;允許T0中斷 SETB TR0 ;開啟T0定時器 MOV R4,#14H ;1S定時用初值(50ms×20) MOV CONR5,#20START1: LCALL DISPLAY ;調(diào)用顯示子程序 JNB SCAN.7,KEYFUN ;手動狀態(tài) SJMP START1 ;P1.0口為1時跳回START1KEYFUN: LCALL DISPLAY LCALL DISPLAY JB SCAN.7,START1 CLR ET0 CLR TR0 MOV 5EH,TIME MOV SN,#00H ;東西車道全通 MOV EW,#56H MOV TIME,#00H ;時間顯示0 LCALL TUNBCDKEYWAIT: LCALL DISPLAY JNB SCAN.7,KEYWAITKEYY: LCALL DISPLAY ;等待按鍵按下 JB SCAN.7,KEYY LCALL DISPLAY JB SCAN.7,KEYY MOV SN,#56H ;南北車道全通 MOV EW,#00H MOV TIME,#00H ;時間顯示0 LCALL TUNBCDKEYWAIT0: LCALL DISPLAY JNB SCAN.7,KEYWAIT0KEYWAIT1: LCALL DISPLAY JNB SCAN.7,KEYWAIT1 MOV TIME,5EH;TIMED0 ;重新開始計時初值 LCALL TUNBCD CLR SNEWFLAG ;南北先通行標(biāo)志位 SETB TR0 SETB ET0 AJMP START1;********************1s計時程序*******************;T0中斷服務(wù)程序;*************************************************INTT0: PUSH ACC ;累加器入棧保護(hù) PUSH PSW ;狀態(tài)字入棧保護(hù) CLR ET0 ;關(guān)T0中斷允許 CLR TR0 ;關(guān)閉定時器T0 MOV A,#0B0H ;中斷響應(yīng)時間同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重裝初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 MOV TH0,A ;重裝初值(高8位修正值) SETB TR0 ;開啟定時器T0 DJNZ R4,OUTT000 ;20次中斷到(1S),重賦初值 SJMP LOOP000OUTT000: LJMP OUTT00LOOP000: MOV R4,#14H JB SNEWFLAG,INT222 SJMP LOOP001INT222: LJMP INT22LOOP001: DEC TIME ;南北行 MOV A,TIME CJNE A,TIMED1,LOOP11 ;判斷是否小于110SLOOP11: JC LOOP22 ;120-110 MOV SN,#99H MOV EW,#0AAH LJMP OUTT0 ;120-110LOOP22: MOV A,TIME CJNE A,TIMED2,LOOP33 ;判斷是否小于70SLOOP33: JC LOOP44 ;110-70 MOV SN,#95H MOV EW,#0A6H LJMP OUTT0 ;110-70LOOP44: MOV A,TIME CJNE A,TIMED3,LOOP55 ;判斷是否小于60SLOOP55: JC LOOP66 ;70-60 MOV 20H,SN CPL 20H.4 CPL 20H.0 MOV SN,20H MOV EW,#0A6H CPL DCY MOV A,P3 MOV R2,A LJMP OUTT0 ;70-60LOOP66: SETB DLRY SETB SRY SETB DCY MOV A,P3 MOV R2,A MOV A,TIME CJNE A,TIMED4,LOOP77 ;判斷是否小于10SLOOP77: JC LOOP88 ;60-10 MOV SN,#66H MOV EW,#0A6H LJMP OUTT0 ;60-10LOOP88: MOV A,TIME JZ OUT88 MOV 20H,SN CPL DLRY CPL SRY MOV A,P3 MOV R2,A CPL 20H.6 CPL 20H.2 MOV SN,20H MOV 20H,EW CPL 20H.2 MOV EW,20H LJMP OUTT0 ;70-60OUT88: SETB DLRY SETB SRY SETB DCY MOV A,P3 MOV R2,A MOV TIME,TIMED0;120初值 CPL SNEWFLAGOUTT0: LCALL TUNBCDOUTT00: POP PSW ;恢復(fù)狀態(tài)字(出棧) POP ACC ;恢復(fù)累加器 SETB ET0 ;開放T0中斷 RETI ;中斷返回INT22: DEC TIME ;東西行 MOV A,TIME CJNE A,TIMED1,LOOP111 ;判斷是否小于110SLOOP111: JC LOOP221 ;120-110 MOV EW,#99H MOV SN,#0AAH LJMP OUTT01 ;120-110LOOP221: MOV A,TIME CJNE A,TIMED2,LOOP331 ;判斷是否小于70SLOOP331: JC LOOP441 ;110-70 MOV EW,#095H MOV SN,#0A6H LJMP OUTT01 ;110-70LOOP441: MOV A,TIME CJNE A,TIMED3,LOOP551 ;判斷是否小于60SLOOP551: JC LOOP661 ;70-60 CPL DCY MOV A,P3 MOV R2,A MOV SN,#0A6H LJMP OUTT01 ;70-60LOOP661: MOV A,TIME CJNE A,TIMED4,LOOP771 ;判斷是否小于10SLOOP771: JC LOOP881 ;60-10 SETB DLRY SETB SRY SETB DCY MOV A,P3 MOV R2,A MOV EW,#66H MOV SN,#0A6H LJMP OUTT01 ;60-10LOOP881: MOV A,TIME JZ OUT881 CPL DLRY CPL SRY MOV A,P3 MOV R2,A LJMP OUTT01 ;70-60OUT881: SETB DLRY SETB SRY SETB DCY MOV A,P3 MOV R2,A MOV TIME,TIMED0;120S初值 CPL SNEWFLAGOUTT01: LCALL TUNBCD POP PSW ;狀態(tài)恢復(fù)字(出棧) POP ACC ;恢復(fù)累加器 SETB ET0 ;開放T0中斷 RETI ;中斷返回;***************************************顯示程序******************************************;顯示數(shù)據(jù)在70H~72H單元內(nèi),用3位LED共陽數(shù)碼管顯示,LEDOUT口輸出段碼數(shù)據(jù),;SCAN口作掃描控制,每個LED數(shù)碼管亮1ms再逐位循環(huán);*******************************************************************************************DISPLAY: MOV R1,#70H ;指向顯示數(shù)據(jù)首址 CJNE R2,#0FFH,DIS1 AJMP DIS2DIS1: MOV A,R2;R2 ORL A,#8FH MOV R2,A ORL A,#8EH CLR ACC.0 MOV R5,A AJMP DIS3DIS2: MOV R5,#0FEHDIS3:PLAY: MOV A,R5 ;掃描字放入A MOV SCAN,A ;從SCAN口輸出 MOV A,@R1 ;取顯示表地址 MOV DPTR,#TAB ;取段碼表地址 MOVC A,@A+DPTR ;查顯示數(shù)據(jù)對應(yīng)段碼 MOV LEDOUT,A ;段碼放入LEDOUT口LOOP6: LCALL DL1MS ;顯示1ms INC R1 ;指向下一地址 MOV A,R5 ;掃描控制字放入A JNB ACC.2,ENDOUT ;ACC.2=0時,一次顯示結(jié)束 RL A ;A中數(shù)據(jù)循環(huán)左移 ORL A,#0F1H ANL A,R2 MOV R5,A ;放回R5內(nèi) MOV LEDOUT,#0FFH SJMP PLAY ;跳回PLAY循環(huán)ENDOUT: MOV LEDOUT,#0FFH ;一次顯示結(jié)束,端口復(fù)位 MOV A,R2 MOV SCAN,A ;#0FFH;端口復(fù)位 RET ;子程序返回TAB: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH;共陽段碼表"0","1","2","3","4","5","6","7","8","9","不亮","A","-";***********************延時程序*******************;1ms延時程序,LED顯示程序用;****************************************************DL1MS: MOV R6,#14HDL11: MOV R7,#19HDL22: DJNZ R7,DL22 DJNZ R6,DL11 RET;*************************************************;10ms延時程序;*************************************************DL10MS: MOV R3,#2GODL1: LCALL DL1MS DJNZ R3,GODL1 RET;*************************************************;300ms顯示延時;*************************************************DL200MS: MOVR0,#12GOON1: LCALLDL10MS DJNZR5,GOON1 RET;*************************************************;將TIME轉(zhuǎn)換為BCD碼存儲;*************************************************TUNBCD: PUSH ACC PUSH PSW PUSH B MOV A,TIME MOV B,#100 DIV AB MOV 72H,A JNZ JJ0 MOV 72H,#0AH ;最高位為0,不點亮JJ0: MOV A,B MOV B,#10 DIV AB MOV 71H,A JNZ JJ1 MOV A,72H;次高位為0,先看最高位是否為不亮 SUBB A,#0AH JNZ JJ1 MOV 71H,#0AH;最高位不亮,次高位也不亮JJ1: MOV 70H,B POP B POP PSW POP ACC RET;*****************************************************;119,120車中斷程序;*****************************************************INT11: PUSH ACC PUSH PSW CLR EX1 CL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論