鄔嘉麒+許國(guó)良
摘要:文章以ATmega328單片機(jī)為控制核心,設(shè)計(jì)交通燈控制系統(tǒng),實(shí)現(xiàn)了交通信號(hào)燈的定時(shí)切換和倒計(jì)時(shí)顯示功能,系統(tǒng)可根據(jù)環(huán)境光強(qiáng)自動(dòng)切換白天與夜間運(yùn)行模式,并在緊急情況下提供應(yīng)急控制功能。用戶可通過液晶屏幕和按鍵操作獲取系統(tǒng)運(yùn)行狀態(tài)、調(diào)整設(shè)置參數(shù)。文章實(shí)現(xiàn)的控制系統(tǒng)具有運(yùn)行穩(wěn)定、調(diào)節(jié)靈活、操作簡(jiǎn)便的優(yōu)點(diǎn),可為智能化交通控制系統(tǒng)的研究和設(shè)計(jì)提供參考。
關(guān)鍵詞:交通燈控制系統(tǒng);ATmega328;模數(shù)轉(zhuǎn)換;單片機(jī)應(yīng)用設(shè)計(jì)
1 交通燈控制系統(tǒng)研究背景
交通燈控制系統(tǒng)作為常見的城市道路交通的電子管理設(shè)備,具有維持交通秩序、控制車流、疏導(dǎo)行人的重要作用,除了常規(guī)的倒計(jì)時(shí)顯示和信號(hào)燈指示功能外[1],還應(yīng)當(dāng)具備環(huán)境適應(yīng)能力和緊急情況下的應(yīng)急控制功能[2],以適應(yīng)交通管理的實(shí)際需要。
本文以ATMEL公司的ATmega328為控制核心,設(shè)計(jì)交通燈控制系統(tǒng),實(shí)現(xiàn)十字路口4個(gè)方向交通燈的定時(shí)切換和倒計(jì)時(shí)顯示。系統(tǒng)可根據(jù)環(huán)境光強(qiáng)自動(dòng)切換運(yùn)行狀態(tài),并通過液晶屏幕提供運(yùn)行狀態(tài)和參數(shù)信息的實(shí)時(shí)顯示和調(diào)整。
2 總體設(shè)計(jì)
2.1 功能介紹
本文設(shè)計(jì)的交通燈控制系統(tǒng)可在白天模式、夜間模式、緊急模式共3種工作模式下運(yùn)行,通過LCD液晶顯示屏實(shí)時(shí)顯示系統(tǒng)當(dāng)前的運(yùn)行狀態(tài)。系統(tǒng)將根據(jù)運(yùn)行環(huán)境的光線強(qiáng)度,自動(dòng)完成白天模式和夜間模式之間的切換。用戶設(shè)置更改在下一循環(huán)周期內(nèi)加載生效,保證狀態(tài)切換期間交通燈放行信號(hào)的自然過渡。
控制系統(tǒng)提供“設(shè)置/確定”鍵、“向上/增加”鍵、“向下/減小”鍵、“緊急狀態(tài)”鍵共4個(gè)按鍵。其中,“設(shè)置/確定”鍵用于調(diào)整LCD顯示屏的光標(biāo)狀態(tài);“向上/增加”鍵與“向下/減小”鍵可用于移動(dòng)光標(biāo)位置或增減當(dāng)前設(shè)置項(xiàng)的數(shù)值。在任何狀態(tài)下,當(dāng)用戶按下“緊急狀態(tài)”鍵,都會(huì)使系統(tǒng)立即進(jìn)入或退出緊急狀態(tài)。進(jìn)入緊急模式后,系統(tǒng)各方向信號(hào)燈的倒計(jì)時(shí)循環(huán)停止,所有方向均顯示紅燈,用戶可根據(jù)實(shí)際交通情況獨(dú)立調(diào)整4個(gè)方向的信號(hào)燈狀態(tài),放行指定方向的車流。
2.2 整體構(gòu)架
本文以ATmega328單片機(jī)為控制核心,構(gòu)建了以5V直流穩(wěn)壓電源供電的交通燈控制系統(tǒng)。系統(tǒng)結(jié)構(gòu)框架如圖1所示,系統(tǒng)由交通燈顯示、倒計(jì)時(shí)顯示、液晶屏顯示3個(gè)輸出模塊,以及按鍵模塊、光感模塊2個(gè)輸入模塊組成。
本文選用的ATmega328芯片是ATMEL公司推出的8位高性能、低功耗、精簡(jiǎn)指令集(ReducedInstructionSet,RIS)單片機(jī)[3],在20MHz工作頻率下指令執(zhí)行速度可達(dá)20MIPS,片內(nèi)帶有32kB的FLASH程序編程存儲(chǔ)器、1KB的EEPROM和2kB的SRAM,可通過SPI串行口在線編程,可滿足交通燈控制系統(tǒng)實(shí)現(xiàn)的性能需求。
3 硬件設(shè)計(jì)
3.1 倒計(jì)時(shí)顯示與交通燈驅(qū)動(dòng)模塊
根據(jù)路面實(shí)際交通情況,在東、南、西、北4個(gè)方向分別用紅、黃、綠3種顏色的信號(hào)燈展示交通信號(hào)(共計(jì)12盞)。由于單片機(jī)的I/O口資源有限,ATmega328僅提供23個(gè)I/O端口,若將各信號(hào)燈控制開關(guān)與單片機(jī)I/O口直接相連需要占用大量端口資源,不利于后續(xù)功能的實(shí)現(xiàn)。因此本文采用兩片74HC595級(jí)聯(lián)的方式,利用3個(gè)單片機(jī)I/O端口分別提供串行輸入信號(hào)(DIN)、移位時(shí)鐘脈沖(Shift_CLK)、鎖存時(shí)鐘脈沖(Latch_CLK),將串行邏輯控制信號(hào)轉(zhuǎn)換為并行信號(hào),經(jīng)過驅(qū)動(dòng)芯片或電力電子開關(guān)控制12盞交通信號(hào)燈的亮滅。
為了節(jié)省單片機(jī)10端口資源,本文在信號(hào)燈驅(qū)動(dòng)模塊中采用兩片74HC595級(jí)聯(lián)的方式,實(shí)現(xiàn)倒計(jì)時(shí)數(shù)碼管的動(dòng)態(tài)刷新[4]。其中,低位芯片的8位輸出用于控制數(shù)碼管段碼,高位芯片的低四位輸出通過PNP三極管向數(shù)碼管輸出位碼信號(hào)。74HC595在4.5V供電的條件下最高時(shí)鐘頻率為,可滿足數(shù)碼管動(dòng)態(tài)刷新的頻率要求。
3.2 光感模塊
光線強(qiáng)度感應(yīng)功能一般可使用模數(shù)轉(zhuǎn)換器(Analog-DigitalConverter,ADC)、模擬比較器(AnalogComparator,AC)設(shè)計(jì)測(cè)量電路。根據(jù)光敏電阻CdS5506電導(dǎo)率隨著光線增強(qiáng)而顯著增大的特性,本文將光敏電阻CdS5506與10kQ電阻串聯(lián)組成分壓電路,將電阻阻值變化轉(zhuǎn)化為節(jié)點(diǎn)電平變化,通過ATmega328片內(nèi)自帶的模數(shù)轉(zhuǎn)換器實(shí)時(shí)獲取節(jié)點(diǎn)電壓信號(hào),從而向單片機(jī)間接提供了環(huán)境光照信息。
ATmega328片上帶有6路10位逐次逼近型ADC,最多可對(duì)PC0.5端口的6路模擬輸入電壓進(jìn)行采樣[5]。光強(qiáng)檢測(cè)模塊使用單片機(jī)的ADC通道4,通過軟件設(shè)定將PC4設(shè)置為不帶上拉電阻的輸入端口,以免內(nèi)部上拉電阻影響模數(shù)轉(zhuǎn)換結(jié)果。
3.3 液晶屏顯示模塊
本設(shè)計(jì)采用帶ST7920驅(qū)動(dòng)芯片的LCD12864顯示屏[6],用作工作狀態(tài)和設(shè)置菜單的顯示設(shè)備。LCD12864可由3?5.5V直流電源供電,利用驅(qū)動(dòng)芯片的光標(biāo)顯隱、字體閃爍、反白顯示等功能實(shí)現(xiàn)菜單操作界面。
硬件電路中使用單片機(jī)3個(gè)I/O端口送出RS,R/W,EN控制信號(hào),并使用PD0.7口作為L(zhǎng)CD并行數(shù)據(jù)輸入口,用于向ST7920控制器傳輸繪字指令。此外還需要為L(zhǎng)CD提供工作電源和背光電源,并向PSB端口和RST端口送入高電平信號(hào),分別用于設(shè)置并行輸入方式和禁止復(fù)位。
3.4 整體外觀
為方便調(diào)試,根據(jù)上文所述的設(shè)計(jì)方案設(shè)計(jì)印刷電路板,并使用紅、黃、綠3色發(fā)光二極管(LED)代替實(shí)際系統(tǒng)中的驅(qū)動(dòng)芯片或電力電子開關(guān),以便測(cè)試系統(tǒng)的工作流程和控制功能??刂齐娐钒宀捎?0cmX15cm覆銅板制作,受電路板尺寸限制,4個(gè)方向的倒計(jì)時(shí)信息僅用2組數(shù)碼管顯示,控制電路板的外觀如圖2所示。
4 軟件設(shè)計(jì)endprint
4.1 模塊劃分
本文使用ICCAVR7.22平臺(tái)編譯單片機(jī)C語言程序。為了降低程序復(fù)雜度,提高代碼的重用性,在編寫程序前首先依據(jù)設(shè)計(jì)目標(biāo)和功能設(shè)定,將軟件程序劃分為交通燈控制模塊、倒計(jì)時(shí)控制模塊、液晶屏顯示模塊、閃爍控制模塊、設(shè)置讀寫模塊、光強(qiáng)檢測(cè)模塊、按鍵響應(yīng)模塊以及核心流程控制模塊共8個(gè)軟件模塊,并遵循自底向上的設(shè)計(jì)思路,逐一實(shí)現(xiàn)各軟件模塊的功能設(shè)計(jì),分別進(jìn)行模塊測(cè)試,最后組合成完整的系統(tǒng)程序。各軟件模塊之間的關(guān)系如圖3所示。
4.2 工作流程
為了描述交通燈主要循環(huán)流程,本文根據(jù)實(shí)際路口交通燈切換規(guī)律,設(shè)計(jì)出綠燈閃爍暫態(tài)、黃燈暫態(tài)、紅綠穩(wěn)態(tài)、全紅穩(wěn)態(tài)、全黃暫態(tài)、黃燈閃爍穩(wěn)態(tài)共6種狀態(tài)?!皶簯B(tài)”和“穩(wěn)態(tài)”是依據(jù)狀態(tài)的設(shè)計(jì)功能進(jìn)行劃分的,“穩(wěn)態(tài)”用于表示較長(zhǎng)時(shí)間內(nèi)的交通放行信號(hào),“暫態(tài)”用于表示狀態(tài)切換過程中的信號(hào)過渡過程??刂葡到y(tǒng)的工作流程必須經(jīng)由“暫態(tài)”完成模式切換,以避免控制系統(tǒng)在光線強(qiáng)度處于臨界范圍時(shí)交通燈運(yùn)行狀態(tài)發(fā)生突然改變。
通過考察分析十字路口交通燈的顯示規(guī)律,繪制的狀態(tài)轉(zhuǎn)移如圖4所示,并根據(jù)圖中揭示的狀態(tài)轉(zhuǎn)移規(guī)律編寫程序。圖中每個(gè)狀態(tài)記錄了系統(tǒng)在一定條件下的運(yùn)行情況,在程序中通過定時(shí)器中斷或外部中斷觸發(fā)狀態(tài)切換,經(jīng)過過渡狀態(tài)在下一循環(huán)周期轉(zhuǎn)入新的狀態(tài)。限于篇幅,本文不再就各軟件模塊的工作流程和實(shí)現(xiàn)原理展開具體論述。
5 結(jié)語
本文以ATmega328為核心設(shè)計(jì)交通燈控制系統(tǒng),實(shí)現(xiàn)了4個(gè)方向交通信號(hào)燈的定時(shí)切換和倒計(jì)時(shí)顯示功能,系統(tǒng)可根據(jù)環(huán)境光強(qiáng)自行切換運(yùn)行狀態(tài),并向用戶提供LCD菜單操作界面,用于調(diào)整系統(tǒng)設(shè)置參數(shù)。經(jīng)過軟件設(shè)計(jì)和硬件調(diào)試,本文實(shí)現(xiàn)的控制系統(tǒng)具有運(yùn)行穩(wěn)定、調(diào)節(jié)靈活、操作簡(jiǎn)便的優(yōu)點(diǎn),可為智能化交通控制系統(tǒng)的研宄和設(shè)計(jì)提供參考。
[參考文獻(xiàn)]
[1]宋依青,張潤(rùn).自適應(yīng)交通燈控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2008(4):497-499.
[2]王瑾,袁戰(zhàn)軍,李小斌.交通燈控制系統(tǒng)的設(shè)計(jì)與仿真[J].海南大學(xué)學(xué)報(bào)(自然科學(xué)版),2014(4):334-339.
[3]王姝,郭昱,武麗云.基于ATmega328P_PU智能開關(guān)燈控制器的設(shè)計(jì)[J].機(jī)電工程技術(shù),2016(12):15-18,57.
[4]吳振羞,劉孝趙.74HC595在單片機(jī)控制多位數(shù)碼管中的應(yīng)用[J].科技廣場(chǎng),2013(5):174-176.
[5]葉軍.基于AVR單片機(jī)的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].大眾科技,2013(9)..15-16,3.
[6]沈建良,趙文宏,賈玉坤ATmegal28單片機(jī)入門與提高[M].北京:北京航空航天大學(xué)出版社,2009.endprint