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