林紀(jì)言 吉林師范大學(xué)博達(dá)學(xué)院
基于AT89C51單片機(jī)的路口交通信號燈控制設(shè)計(jì)
林紀(jì)言 吉林師范大學(xué)博達(dá)學(xué)院
該路口交通信號燈控制系統(tǒng)以美國Atmel公司生產(chǎn)的51單片機(jī)為控制核心,配合使用數(shù)碼管、紅黃綠三種發(fā)光二極管、反相器等多種電子軟件,該設(shè)計(jì)不僅可以控制路口的通行狀態(tài),也可以是對于車輛的車速進(jìn)行測量,適用于不同環(huán)境下的交通控制。
AT89C51 速度測量 交通信號燈 keil proteus
隨著社會(huì)的不斷發(fā)展,道路上的汽車也越來越多,隨之而來的交通環(huán)境越來越惡劣,道路的擁擠現(xiàn)象越來越嚴(yán)重,尤其在北京等大城市的路口,在高峰時(shí)間段擁擠更為嚴(yán)重。根據(jù)調(diào)查我國的大多數(shù)城市依然采用定周期的交通信號裝置,在日常運(yùn)行中,不論什么時(shí)間段,信號燈都是按照相同的周期進(jìn)行交替變換,這種單一的設(shè)計(jì)往往會(huì)浪費(fèi)較多的社會(huì)資源。所以,改變傳統(tǒng)信號燈的控制模式,使用周期可調(diào)節(jié)的新型交通信號燈會(huì)更快速有效地改變道路現(xiàn)狀,提高道路利用率。
微控制器(Micro Controller Unit,MCU)即單片機(jī)是指把組成微型計(jì)算機(jī)的各種功能的部件(中央處理單元、隨機(jī)存儲器、只讀存儲器、計(jì)數(shù)器等)集成在一塊微型電子芯片上,由于單片機(jī)的硬件結(jié)構(gòu)較小故常用于一些控制裝置當(dāng)中。
圖1
表1
交通信號燈主要用于城市道路交叉口,用于疏導(dǎo)交通車流,提高城市公共交通資源的利用率。該設(shè)計(jì)(如圖1)①②共有四個(gè)狀態(tài)(如表1),實(shí)際顯示電路(圖2)。
首先,X區(qū)顯示綠燈亮起60秒,此時(shí)X1和X2區(qū)車輛通行,Z1和Z2區(qū)車輛停車等待;當(dāng)X區(qū)顯示黃燈亮起時(shí),提醒X1和X2區(qū)此時(shí)已超過停止線的車輛快速通過,Z1和Z2區(qū)車輛依舊停車等待;5秒后X區(qū)紅燈亮起并持續(xù)60秒,該狀態(tài)下X1和X2區(qū)車輛禁止通行,此時(shí)Z區(qū)為綠燈狀態(tài),Z1和Z2區(qū)域內(nèi)車輛正常通行。當(dāng)Z區(qū)顯示黃燈亮起的時(shí)候,則Z區(qū)已超過停止線的車輛快速通過,此時(shí)X1和X2區(qū)車輛停止等待,一個(gè)周期結(jié)束,之后重復(fù)此流程。
(一)主要器件為51單片機(jī),按照芯片半導(dǎo)體制造工藝來劃分,可以分為HMOS工藝性和CHMOS工藝型,在這個(gè)系統(tǒng)設(shè)計(jì)中,我們采用CHMOS型AT89C51單片機(jī),該單片機(jī)是一種可編程可擦除的只讀存儲器單片機(jī),具有低耗能的特點(diǎn)。
單片機(jī)的最小系統(tǒng)(圖3)即能然單片機(jī)工作的最基本元件所構(gòu)成的系統(tǒng),單片機(jī)的最小系統(tǒng)通常由復(fù)位電路與時(shí)鐘脈沖電路構(gòu)成,現(xiàn)在常見的單片機(jī)芯片(如MCS-51)的工作頻率為0~24MHz,我們通常會(huì)接上由一個(gè)晶振和兩個(gè)電容所組成的振蕩電路到18、19號引腳來為單片機(jī)傳輸一段脈沖信號使單片機(jī)能夠正常工作。復(fù)位電路主要由一個(gè)電解電容構(gòu)成,將其連接至第九號復(fù)位引腳(Reset),再次引腳鏈接高電平超過2個(gè)機(jī)器周期時(shí),則會(huì)產(chǎn)生一個(gè)復(fù)位動(dòng)作,使整個(gè)系統(tǒng)能夠重新運(yùn)行。
(圖2)
(二)采用紅黃綠三色led燈和7段共陰極數(shù)碼管作為輸出顯示器件,由于X1和X2區(qū)永遠(yuǎn)為同一組輸出狀態(tài),Z1和Z2區(qū)永遠(yuǎn)為同一組輸出狀態(tài),我們?yōu)榱私档途幊虖?fù)雜度,則我們將同種輸出狀態(tài)的兩組信號燈接在同一I/O口。
(三)鍵盤模塊能夠?qū)τ谥芷跁r(shí)間進(jìn)行更改,選擇(Select)鍵能夠選中不同的倒計(jì)時(shí)數(shù)字,加(Plus)鍵能夠增加時(shí)間,減(Minus)鍵按下即可減少倒計(jì)時(shí)時(shí)間從而減少等待時(shí)間,當(dāng)全部設(shè)置完畢時(shí)按下退出(Quit)鍵即可恢復(fù)到正常運(yùn)行模式。
鍵盤去抖,由于在我們按下按鍵等待彈回的時(shí)間內(nèi)會(huì)產(chǎn)生大約一段10~20ms的抖動(dòng),這種抖動(dòng)會(huì)明顯地影響系統(tǒng)的可靠性,為了避免這種現(xiàn)象的發(fā)生,我們在每個(gè)按鍵上并聯(lián)一個(gè)電容,根據(jù)計(jì)算假設(shè)抖動(dòng)的時(shí)間為20ms,則可得出C的值在2.8uF到5.6uF之間。
由于C語言是一種結(jié)構(gòu)化的高級語言,并且C語言具有可讀性好,移植容易的優(yōu)點(diǎn),所以在路口交通信號燈控制程序的設(shè)計(jì)中,采用了C語言進(jìn)行編寫。文件中包含了初始化函數(shù)、顯示函數(shù)以及延時(shí)等子模塊,由主程序直接調(diào)用各個(gè)子模塊來實(shí)現(xiàn)紅黃綠三色信號燈的周期變換以及7段數(shù)碼管的倒計(jì)時(shí)功能,在正常狀態(tài)下,通過周期性調(diào)用延時(shí)子程序來實(shí)現(xiàn)定時(shí)時(shí)間。
首先使用keil軟件對交通燈控制程序進(jìn)行編寫,之后運(yùn)行程序無誤后編譯生成.hex格式文件,打開Proteus軟件,選取所需元器件并按照設(shè)計(jì)要求排列元器件,繪制電路板(圖3)。
(圖3)
檢查電路連接無誤后,將編譯生成的.hex文件燒寫到Atmel公司的C51單片機(jī)中,運(yùn)行信號燈控制系統(tǒng)(圖4)并觀察在一個(gè)周期(I~I(xiàn)V)內(nèi)的交通信號燈及倒計(jì)時(shí)顯示裝置運(yùn)行狀態(tài)是否正常,按下設(shè)置按鈕調(diào)節(jié)每個(gè)時(shí)間段內(nèi)的時(shí)間,再次觀察電路運(yùn)行是否穩(wěn)定。
(圖4)
最后通過多次運(yùn)行,該設(shè)計(jì)能夠穩(wěn)定地運(yùn)行,并且由于使用單片機(jī)進(jìn)行的設(shè)計(jì),只需要對其運(yùn)行程序的部分語句進(jìn)行重新編寫就能夠修改各個(gè)周期所持續(xù)的時(shí)間,同時(shí)還可實(shí)現(xiàn)信號燈控制系統(tǒng)的維護(hù)與升級,大大節(jié)省了日常維護(hù)的費(fèi)用。
注釋:
① X1與X2因?yàn)樾盘枲顟B(tài)相同簡記為X區(qū),同理,Z1與Z2記為Z區(qū)。
②R表示紅燈,Y表示黃燈,G表示綠燈。
[1]Stephen prata.C Primer Plus[M].姜佑.第六版.北京:人民郵電出版社,2016.
[2]譚浩強(qiáng).C程序設(shè)計(jì)[M].第四版,北京:清華大學(xué)出版社,2010.
[3]林立,張俊亮.單片機(jī)原理及應(yīng)用:基于Proteus和Keil C[M].第三版.北京:電子工業(yè)出版社,2014.
[4]徐愛鈞.Keil C51單片機(jī)高級語言應(yīng)用編程與實(shí)踐[M].北京:電子工業(yè)出版社,2013.
[5]李朝青,劉艷玲.單片機(jī)原理及接口技術(shù)[M].第4版,北京:北京航空航天大學(xué)出版社,2013.
[6]王冠安.基于AT89C51單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)與仿真[J].高科技產(chǎn)品研發(fā),2014,4:24.
[7]朱清慧,張鳳蕊等.Proteus教程[M].第3版,北京:清華大學(xué)出版社,2016
林紀(jì)言(1995-),吉林長春人,主要研究方向?yàn)殡娮与娐吩O(shè)計(jì)與數(shù)字通信技術(shù)。