王年超, 李志軍, 吳力普
(北方工業大學 現場總線及自動化重點實驗室,北京 100144)
基于AVR單片機的城市道路交通模擬沙盤設計
王年超, 李志軍, 吳力普
(北方工業大學 現場總線及自動化重點實驗室,北京 100144)
設計了一種基于AVR的城市道路交通模擬沙盤系統,沙盤系統整體機械結構采用立式導軌的結構。系統包括LED燈驅動和顯示模塊、通信模塊、MEGA16最小系統控制模塊。完成整體PCB設計、軟件的設計,使用PC通過RS485通信協議實現城市道路交通的模擬。此沙盤系統為研究城市道路交通模擬提供了平臺,具有很好的實用價值。
AVR單片機;道路交通沙盤;RS485通信協議
面對當今世界全球化、信息化發展趨勢,傳統的交通技術和手段已不適應經濟社會發展的要求。智能交通系統是交通事業發展的必然選擇,是交通事業的一場革命。通過先進的信息技術、通信技術、控制技術、傳感技術、計算器技術和系統綜合技術有效地集成和應用,使人、車、路之間的相互作用關系以新的方式呈現,從而實現實時、準確、高效、安全、節能的目標。交通安全、交通堵塞及環境污染是困擾當今國際交通領域的三大難題,本文針對交通堵塞問題對城市道路交通的車輛流量進行模擬,根據實際的城市道路實現模擬沙盤仿真,對實際城市道路的道路承載能力進行模擬。
1.1 總體設計方案
該城市道路模擬沙盤系統主要完成道路車輛流量的顯示和路口紅綠燈的變化,整個沙盤包含6個路口,最后實現一個動態的整體顯示。控制板內核采用ATmega16單片機,通信協議采用RS485,是一對多通信。單片機內部EEPROM存儲控制板地址,高效率地利用片內資源和減少硬件的不必要設計。系統整體設計方案[1]如圖1所示。

圖1 硬件系統整體結構圖
1.2 平面圖模型設計
該城市道路模擬沙盤系統平面圖如圖2所示,沙盤總共有6個路口,寬路車輛是雙向運行即兩個路口之間的路段,窄路車輛是單向運行即單個路口的路段[2]。路口紅綠燈用紅色和綠色發光LED模擬指示,道路上車流量使用一排連續排列的LED燈指示,車流量越多LED指示燈亮的個數越多。其中硬件包括LED燈驅動模塊、通信模塊、LED燈顯示模塊、MEGA16最小系統控制模塊。
2.1 控制模塊
圖3和圖4是ATmega16單片機接線電路和最小系統所需的復位電路以及外部晶振電路。復位電路:啟動后讓單片機從初始狀態執行程序;振蕩電路:單片機是一種時序電路,必須施加脈沖信號才能工作。MEGA16內部有RC震蕩電路,但相比外部的晶體震蕩電路還是不夠準確,另外它也可以使用外部晶振工作,兩者之間的切換通過熔絲位來選擇[3]。單片機內部有一個時鐘產生電路,只要接上兩個電容和一個晶振即可正常工作。

圖3 Atmega16單片機接線電路

圖4 外部晶振電路和復位電路
2.2 通信模塊

圖5 RS485通信電路
圖5所示是MAX485通信電路。采用單一電源+5 V工作,額定電流為300 μA,采用半雙工通信方式。它完成將TTL電平轉換為RS-485電平的功能。MAX485芯片的結構和引腳都非常簡單,內部含有一個驅動器和接收器。RO和DI端分別為接收器的輸出和驅動器的輸入端,與單片機連接時只需分別與單片機的RXD和TXD相連即可。RE和DE端分別為接收和發送的使能端,當RE為邏輯0時,器件處于接收狀態;當DE為邏輯1時,器件處于發送狀態,因為MAX485工作在半雙工狀態,所以只需用單片機的一個管腳控制這兩個引腳即可。A端和B端分別為接收和發送的差分信號端,當A引腳的電平高于B時,代表發送的數據為1;當A的電平低于B端時,代表發送的數據為0。在與單片機連接時接線非常簡單,只需要一個信號控制MAX485的接收和發送即可。
2.3 LED顯示模塊
如圖6所示,單片機IO口輸出信號通過74HC154譯碼、74LS04反相器、4位IO口輸出驅動多位發光二極管,74HC573鎖存器實現IO口信號狀態的鎖定。顯示電路采用10個LED燈一組的顯示模塊,設計硬件時10個LED模塊總共100個LED,都接有上拉電阻,可以實現車流量模擬顯示[4]。
3.1 通信協議格式
對于城市道路交通模擬沙盤,軟件部分至關重要。本系統通過串口給控制器發送數據,通過程序中的協議規則處理接收數據[5]。通信協議格式如圖7、圖8及圖9所示。
協議的每一位均使用十六進制數,具體的協議規則如下:
(1)顯示紅綠燈數據格式:發送A5F2001122AF。其中A5、AF分別為發送數據格式的起始數據位和終止數據位,07為控制器的地址,112211為紅綠燈要顯示的數據,0表示熄滅,1表示紅燈,2表示綠燈。
(2)顯示燈條數據格式:發送A5F2000000AF。其中A5、AF分別為發送數據格式的起始數據位和終止數據位,F2為控制器的地址,0A141E為燈條要顯示的數據,燈條1顯示10個LED燈,燈條2顯示20個LED燈,燈條3顯示30個LED燈。
(3)修改控制板數據格式:發送A5F2000000AE。此條數據只能一對一地發送。其中A5、AE分別為發送數據格式的起始數據位和終止數據位,F2為想要修改的地址,000000為無效數據位。
3.2 工作流程
流程介紹:首先對ATmega16單片機的IO口進行初始化,設定IO口為輸出,然后對串口進行初始化,設定為中斷方式接收上位機發送過來的數據,打開總中斷,程序開始進入while循環中接收數據并處理數據,中斷到來時將數據放入之前定義好的數組中,對數據格式進行判斷,數據格式有以下3種類型:
(1)接收的數據為燈條顯示數據格式。判斷燈條數據格式是否正確,如果不正確則重新接收,若正確則將數據進行處理,去掉接收數據中多余的部分,包括數據頭、數據尾和地址數據。還有將接收的數據中地址數據與本控制板中EEPROM存入的地址數據進行比較,若一致則為本控制板的命令數據,最后將有用的數據轉換為八進制數據進行LED顯示。

圖6 LED顯示模塊

圖7 紅綠燈數據格式

圖8 燈條數據格式

圖9 修改地址數據格式
(2)接收的數據為紅綠燈顯示數據格式。判斷燈條數據格式是否正確,如果不正確則重新接收,若正確則將數據進行處理,去掉接收數據中多余的部分,包括數據頭、數據尾和地址數據。還有將接收的數據中地址數據與本控制板中EEPROM存入的地址數據進行比較,若一致則為本控制板的命令數據,最后將有用的數據轉換為八進制數據進行紅綠燈顯示。
(3)接收的數據為修改地址數據指令。提取接收到的數據,將要修改的地址數據提取出來存入EEPROM中[6-7]。
系統工作流程圖如圖10所示。
3.3 部分程序
本系統的程序由以下幾部分組成:初始化子程序、判斷子程序、排序子程序、顯示子程序、關閉子程序。初始化子程序對IO口和串口進行初始化;顯示子程序和關閉子程序負責控制燈條及紅綠燈的顯示和關閉;判斷子程序對接收的數據格式進行判斷,根據判斷條件執行相應的程序;排序子程序對錯誤的數據重新按照協議規則進行排序。主程序如下:

圖10 軟件程序流程圖
Int main()
{
Init_IO();
//IO端口初始化子程序
Chushihua_usart()
//串口初始化子程序
Deng_off();
//熄滅所有的燈子程序
SREG|=0X80;
//打開總中斷
Xieyi_2data[1]=eeprom_read_byte(0x0000);//啟動時讀取EEPROM地址0x0000的數據地址,與發送過來的數據地址相匹配
While(1)
{
Xieyi_paixu();//將收到的串口數據 xieyi_3排序放在xieyi_1中
//判斷數據格式是否正確,并且進行顯示
If((xieyi_sign==0xFF)&&(xieyi_2data[1]==xieyi_1data[1])&&(xieyi_2data[0]==xieyi_1data[0]&&(xieyi_2data[5]==xieyi_1data[5]))
{
//如果發送的數據有變化,顯示變換后的數據
If((xieyi_2data[2]!=xieyi_1data[2])|(xieyi_2data[3]!=xieyi_1data[3])|(xieyi_2data[4]!=xieyi_1data[4]))
{
Panduan_deng_data();
//判斷并將數據轉換為十進制
Display_deng_data();
//顯示燈條
}
Xieyi_sign=0x00;
//標志位清零,方便下次排序
}
//判斷數據地址格式是否正確,修改地址,把地址放在EEPROM中
If((xieyi_sign==0xFE)&&(xieyi_1data[0]==0xA5)&&(xieyi_1data[5]==0xAE))
{
Eeprom_write_byte(0x0000,xieyi_1data[1]);
//將修改的地址放在EEPROM地址0x0000中
Xieyi_2data[1]=xieyi_1data[1];
Xieyi_sign=0x00;
//標志位清零
}
}
}
測試使用其中一個路口作為測試對象,這個路口包含4個紅綠燈,10個燈條,每個燈條都有自己的控制器,都被設置了地址,通過串口連接232/485轉換器給沙盤發送數據:當發送A5260A141EAF時,對應26地址的3個燈條的LED燈依次亮10個燈、20個燈、30個燈,改變地址的值,相應的地址均能正確地顯示;當發送A521222122AF時,因為25是紅綠燈的控制地址,所以紅綠燈顯示相應的燈效果;修改地址一對一發送同樣正常運行。不僅能單個控制器進行發送,還可以多個同時發送,如:A521222122AFA5260 A141EAFA527 0A141EAFA5280A141EAFA5290A1 41EAF,運行結果如圖11所示。

圖11 系統測試顯示圖
隨著物質生活的改善,城市的車輛也快速增長,合理可靠的交通控制不僅改善交通環境,還可以提高人們的生活質量,使人們生活更加美好。基于LED的城市道路交通模擬沙盤設計提供了這樣一個平臺。本系統充分利用ATmega16單片機芯片,提高了系統的穩定性和可靠性。工控機作為仿真系統的數據輸入,實現了模擬沙盤的動態運行。同時采用MAX485作為通信模塊,實現了一對多的通信。本文設計的沙盤系統可以對城市道路交通的車流量進行模擬,根據實際的城市道路實現模擬沙盤仿真,對城市道路的承載能力進行了模擬。
[1] 趙紅軍, 任波. 一種基于單片機的LED控制器的硬件電路[J]. 大眾科技, 2008(11):74-75.
[2] 馬潮.AVR單片機嵌入式系統原理與應用實踐[M].北京:北京航空航天大學出版社,2007.
[3] 李偉偉,張俊杰,王明,等.基于單片機的太陽能熱水器智能節水裝置[J].微型機與應用,2015,34(13):94-96.
[4] 郭志偉. 基于ATmega16的LED交通警示板的設計與仿真[J]. 科技信息, 2011(20):10200.
[5] 張明長, 劉福平. 基于Atmega16的智能交通信號控制系統設計[J]. 北京印刷學院學報, 2011, 19(4):37-41.
[6] 郭循釗, 鄺帆, 邵平,等. 基于單片機的多功能交通燈控制系統設計與仿真實現[J]. 公路交通技術, 2010(1):128-131.
[7] 朱利洋,吳夏來,胡葉民,等.基于單片機的門控系統硬件設計[J].微型機與應用,2013,32(2):16-18.
Design of urban road traffic simulation sand table based on AVR SCM
Wang Nianchao, Li Zhijun, Wu Lipu
(Key Laboratories of Field Bus and Automation, North China University of Technology, Beijing 100144, China)
This paper designs a kind of urban road traffic simulation sand table based on AVR SCM.The whole mechanical structure uses the vertical guide rail.The whole system includes the LED driver and display module,communication module ,minimum system control module of MEGA16. It completes the PCB design and software design, and a PC can use this system through the RS485 communication protocol.The sand table provides the simulation study platform of urban road traffic simulation system,which has very good practical value.
AVR SCM;sand table of road traffic;RS485 communication protocol
TP271
A
1674-7720(2016)02-0078-04
王年超,李志軍,吳力普. 基于AVR單片機的城市道路交通模擬沙盤設計[J] .微型機與應用,2016,35(2):78-81.
2015-08-27)
王年超(1987-),男,碩士研究生,主要研究方向:自動化系統,PLC的應用與開發。
李志軍(1978-),男,博士,副教授,主要研究方向:網絡化控制系統,模糊預測控制,故障診斷與容錯控制,基于單片機等微處理器的控制儀表開發,PLC、DCS的工程應用。
吳力普(1983-),男,碩士,實驗師,主要研究方向:單片機開發。