王年超, 李志軍, 吳力普
(北方工業(yè)大學(xué) 現(xiàn)場總線及自動(dòng)化重點(diǎn)實(shí)驗(yàn)室,北京 100144)
基于AVR單片機(jī)的城市道路交通模擬沙盤設(shè)計(jì)
王年超, 李志軍, 吳力普
(北方工業(yè)大學(xué) 現(xiàn)場總線及自動(dòng)化重點(diǎn)實(shí)驗(yàn)室,北京 100144)
設(shè)計(jì)了一種基于AVR的城市道路交通模擬沙盤系統(tǒng),沙盤系統(tǒng)整體機(jī)械結(jié)構(gòu)采用立式導(dǎo)軌的結(jié)構(gòu)。系統(tǒng)包括LED燈驅(qū)動(dòng)和顯示模塊、通信模塊、MEGA16最小系統(tǒng)控制模塊。完成整體PCB設(shè)計(jì)、軟件的設(shè)計(jì),使用PC通過RS485通信協(xié)議實(shí)現(xiàn)城市道路交通的模擬。此沙盤系統(tǒng)為研究城市道路交通模擬提供了平臺(tái),具有很好的實(shí)用價(jià)值。
AVR單片機(jī);道路交通沙盤;RS485通信協(xié)議
面對(duì)當(dāng)今世界全球化、信息化發(fā)展趨勢,傳統(tǒng)的交通技術(shù)和手段已不適應(yīng)經(jīng)濟(jì)社會(huì)發(fā)展的要求。智能交通系統(tǒng)是交通事業(yè)發(fā)展的必然選擇,是交通事業(yè)的一場革命。通過先進(jìn)的信息技術(shù)、通信技術(shù)、控制技術(shù)、傳感技術(shù)、計(jì)算器技術(shù)和系統(tǒng)綜合技術(shù)有效地集成和應(yīng)用,使人、車、路之間的相互作用關(guān)系以新的方式呈現(xiàn),從而實(shí)現(xiàn)實(shí)時(shí)、準(zhǔn)確、高效、安全、節(jié)能的目標(biāo)。交通安全、交通堵塞及環(huán)境污染是困擾當(dāng)今國際交通領(lǐng)域的三大難題,本文針對(duì)交通堵塞問題對(duì)城市道路交通的車輛流量進(jìn)行模擬,根據(jù)實(shí)際的城市道路實(shí)現(xiàn)模擬沙盤仿真,對(duì)實(shí)際城市道路的道路承載能力進(jìn)行模擬。
1.1 總體設(shè)計(jì)方案
該城市道路模擬沙盤系統(tǒng)主要完成道路車輛流量的顯示和路口紅綠燈的變化,整個(gè)沙盤包含6個(gè)路口,最后實(shí)現(xiàn)一個(gè)動(dòng)態(tài)的整體顯示。控制板內(nèi)核采用ATmega16單片機(jī),通信協(xié)議采用RS485,是一對(duì)多通信。單片機(jī)內(nèi)部EEPROM存儲(chǔ)控制板地址,高效率地利用片內(nèi)資源和減少硬件的不必要設(shè)計(jì)。系統(tǒng)整體設(shè)計(jì)方案[1]如圖1所示。
圖1 硬件系統(tǒng)整體結(jié)構(gòu)圖
1.2 平面圖模型設(shè)計(jì)
該城市道路模擬沙盤系統(tǒng)平面圖如圖2所示,沙盤總共有6個(gè)路口,寬路車輛是雙向運(yùn)行即兩個(gè)路口之間的路段,窄路車輛是單向運(yùn)行即單個(gè)路口的路段[2]。路口紅綠燈用紅色和綠色發(fā)光LED模擬指示,道路上車流量使用一排連續(xù)排列的LED燈指示,車流量越多LED指示燈亮的個(gè)數(shù)越多。其中硬件包括LED燈驅(qū)動(dòng)模塊、通信模塊、LED燈顯示模塊、MEGA16最小系統(tǒng)控制模塊。
2.1 控制模塊
圖3和圖4是ATmega16單片機(jī)接線電路和最小系統(tǒng)所需的復(fù)位電路以及外部晶振電路。復(fù)位電路:啟動(dòng)后讓單片機(jī)從初始狀態(tài)執(zhí)行程序;振蕩電路:單片機(jī)是一種時(shí)序電路,必須施加脈沖信號(hào)才能工作。MEGA16內(nèi)部有RC震蕩電路,但相比外部的晶體震蕩電路還是不夠準(zhǔn)確,另外它也可以使用外部晶振工作,兩者之間的切換通過熔絲位來選擇[3]。單片機(jī)內(nèi)部有一個(gè)時(shí)鐘產(chǎn)生電路,只要接上兩個(gè)電容和一個(gè)晶振即可正常工作。
圖3 Atmega16單片機(jī)接線電路
圖4 外部晶振電路和復(fù)位電路
2.2 通信模塊
圖5 RS485通信電路
圖5所示是MAX485通信電路。采用單一電源+5 V工作,額定電流為300 μA,采用半雙工通信方式。它完成將TTL電平轉(zhuǎn)換為RS-485電平的功能。MAX485芯片的結(jié)構(gòu)和引腳都非常簡單,內(nèi)部含有一個(gè)驅(qū)動(dòng)器和接收器。RO和DI端分別為接收器的輸出和驅(qū)動(dòng)器的輸入端,與單片機(jī)連接時(shí)只需分別與單片機(jī)的RXD和TXD相連即可。RE和DE端分別為接收和發(fā)送的使能端,當(dāng)RE為邏輯0時(shí),器件處于接收狀態(tài);當(dāng)DE為邏輯1時(shí),器件處于發(fā)送狀態(tài),因?yàn)镸AX485工作在半雙工狀態(tài),所以只需用單片機(jī)的一個(gè)管腳控制這兩個(gè)引腳即可。A端和B端分別為接收和發(fā)送的差分信號(hào)端,當(dāng)A引腳的電平高于B時(shí),代表發(fā)送的數(shù)據(jù)為1;當(dāng)A的電平低于B端時(shí),代表發(fā)送的數(shù)據(jù)為0。在與單片機(jī)連接時(shí)接線非常簡單,只需要一個(gè)信號(hào)控制MAX485的接收和發(fā)送即可。
2.3 LED顯示模塊
如圖6所示,單片機(jī)IO口輸出信號(hào)通過74HC154譯碼、74LS04反相器、4位IO口輸出驅(qū)動(dòng)多位發(fā)光二極管,74HC573鎖存器實(shí)現(xiàn)IO口信號(hào)狀態(tài)的鎖定。顯示電路采用10個(gè)LED燈一組的顯示模塊,設(shè)計(jì)硬件時(shí)10個(gè)LED模塊總共100個(gè)LED,都接有上拉電阻,可以實(shí)現(xiàn)車流量模擬顯示[4]。
3.1 通信協(xié)議格式
對(duì)于城市道路交通模擬沙盤,軟件部分至關(guān)重要。本系統(tǒng)通過串口給控制器發(fā)送數(shù)據(jù),通過程序中的協(xié)議規(guī)則處理接收數(shù)據(jù)[5]。通信協(xié)議格式如圖7、圖8及圖9所示。
協(xié)議的每一位均使用十六進(jìn)制數(shù),具體的協(xié)議規(guī)則如下:
(1)顯示紅綠燈數(shù)據(jù)格式:發(fā)送A5F2001122AF。其中A5、AF分別為發(fā)送數(shù)據(jù)格式的起始數(shù)據(jù)位和終止數(shù)據(jù)位,07為控制器的地址,112211為紅綠燈要顯示的數(shù)據(jù),0表示熄滅,1表示紅燈,2表示綠燈。
(2)顯示燈條數(shù)據(jù)格式:發(fā)送A5F2000000AF。其中A5、AF分別為發(fā)送數(shù)據(jù)格式的起始數(shù)據(jù)位和終止數(shù)據(jù)位,F(xiàn)2為控制器的地址,0A141E為燈條要顯示的數(shù)據(jù),燈條1顯示10個(gè)LED燈,燈條2顯示20個(gè)LED燈,燈條3顯示30個(gè)LED燈。
(3)修改控制板數(shù)據(jù)格式:發(fā)送A5F2000000AE。此條數(shù)據(jù)只能一對(duì)一地發(fā)送。其中A5、AE分別為發(fā)送數(shù)據(jù)格式的起始數(shù)據(jù)位和終止數(shù)據(jù)位,F(xiàn)2為想要修改的地址,000000為無效數(shù)據(jù)位。
3.2 工作流程
流程介紹:首先對(duì)ATmega16單片機(jī)的IO口進(jìn)行初始化,設(shè)定IO口為輸出,然后對(duì)串口進(jìn)行初始化,設(shè)定為中斷方式接收上位機(jī)發(fā)送過來的數(shù)據(jù),打開總中斷,程序開始進(jìn)入while循環(huán)中接收數(shù)據(jù)并處理數(shù)據(jù),中斷到來時(shí)將數(shù)據(jù)放入之前定義好的數(shù)組中,對(duì)數(shù)據(jù)格式進(jìn)行判斷,數(shù)據(jù)格式有以下3種類型:
(1)接收的數(shù)據(jù)為燈條顯示數(shù)據(jù)格式。判斷燈條數(shù)據(jù)格式是否正確,如果不正確則重新接收,若正確則將數(shù)據(jù)進(jìn)行處理,去掉接收數(shù)據(jù)中多余的部分,包括數(shù)據(jù)頭、數(shù)據(jù)尾和地址數(shù)據(jù)。還有將接收的數(shù)據(jù)中地址數(shù)據(jù)與本控制板中EEPROM存入的地址數(shù)據(jù)進(jìn)行比較,若一致則為本控制板的命令數(shù)據(jù),最后將有用的數(shù)據(jù)轉(zhuǎn)換為八進(jìn)制數(shù)據(jù)進(jìn)行LED顯示。
圖6 LED顯示模塊
圖7 紅綠燈數(shù)據(jù)格式
圖8 燈條數(shù)據(jù)格式
圖9 修改地址數(shù)據(jù)格式
(2)接收的數(shù)據(jù)為紅綠燈顯示數(shù)據(jù)格式。判斷燈條數(shù)據(jù)格式是否正確,如果不正確則重新接收,若正確則將數(shù)據(jù)進(jìn)行處理,去掉接收數(shù)據(jù)中多余的部分,包括數(shù)據(jù)頭、數(shù)據(jù)尾和地址數(shù)據(jù)。還有將接收的數(shù)據(jù)中地址數(shù)據(jù)與本控制板中EEPROM存入的地址數(shù)據(jù)進(jìn)行比較,若一致則為本控制板的命令數(shù)據(jù),最后將有用的數(shù)據(jù)轉(zhuǎn)換為八進(jìn)制數(shù)據(jù)進(jìn)行紅綠燈顯示。
(3)接收的數(shù)據(jù)為修改地址數(shù)據(jù)指令。提取接收到的數(shù)據(jù),將要修改的地址數(shù)據(jù)提取出來存入EEPROM中[6-7]。
系統(tǒng)工作流程圖如圖10所示。
3.3 部分程序
本系統(tǒng)的程序由以下幾部分組成:初始化子程序、判斷子程序、排序子程序、顯示子程序、關(guān)閉子程序。初始化子程序?qū)O口和串口進(jìn)行初始化;顯示子程序和關(guān)閉子程序負(fù)責(zé)控制燈條及紅綠燈的顯示和關(guān)閉;判斷子程序?qū)邮盏臄?shù)據(jù)格式進(jìn)行判斷,根據(jù)判斷條件執(zhí)行相應(yīng)的程序;排序子程序?qū)﹀e(cuò)誤的數(shù)據(jù)重新按照協(xié)議規(guī)則進(jìn)行排序。主程序如下:
圖10 軟件程序流程圖
Int main()
{
Init_IO();
//IO端口初始化子程序
Chushihua_usart()
//串口初始化子程序
Deng_off();
//熄滅所有的燈子程序
SREG|=0X80;
//打開總中斷
Xieyi_2data[1]=eeprom_read_byte(0x0000);//啟動(dòng)時(shí)讀取EEPROM地址0x0000的數(shù)據(jù)地址,與發(fā)送過來的數(shù)據(jù)地址相匹配
While(1)
{
Xieyi_paixu();//將收到的串口數(shù)據(jù) xieyi_3排序放在xieyi_1中
//判斷數(shù)據(jù)格式是否正確,并且進(jìn)行顯示
If((xieyi_sign==0xFF)&&(xieyi_2data[1]==xieyi_1data[1])&&(xieyi_2data[0]==xieyi_1data[0]&&(xieyi_2data[5]==xieyi_1data[5]))
{
//如果發(fā)送的數(shù)據(jù)有變化,顯示變換后的數(shù)據(jù)
If((xieyi_2data[2]!=xieyi_1data[2])|(xieyi_2data[3]!=xieyi_1data[3])|(xieyi_2data[4]!=xieyi_1data[4]))
{
Panduan_deng_data();
//判斷并將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制
Display_deng_data();
//顯示燈條
}
Xieyi_sign=0x00;
//標(biāo)志位清零,方便下次排序
}
//判斷數(shù)據(jù)地址格式是否正確,修改地址,把地址放在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;
//標(biāo)志位清零
}
}
}
測試使用其中一個(gè)路口作為測試對(duì)象,這個(gè)路口包含4個(gè)紅綠燈,10個(gè)燈條,每個(gè)燈條都有自己的控制器,都被設(shè)置了地址,通過串口連接232/485轉(zhuǎn)換器給沙盤發(fā)送數(shù)據(jù):當(dāng)發(fā)送A5260A141EAF時(shí),對(duì)應(yīng)26地址的3個(gè)燈條的LED燈依次亮10個(gè)燈、20個(gè)燈、30個(gè)燈,改變地址的值,相應(yīng)的地址均能正確地顯示;當(dāng)發(fā)送A521222122AF時(shí),因?yàn)?5是紅綠燈的控制地址,所以紅綠燈顯示相應(yīng)的燈效果;修改地址一對(duì)一發(fā)送同樣正常運(yùn)行。不僅能單個(gè)控制器進(jìn)行發(fā)送,還可以多個(gè)同時(shí)發(fā)送,如:A521222122AFA5260 A141EAFA527 0A141EAFA5280A141EAFA5290A1 41EAF,運(yùn)行結(jié)果如圖11所示。
圖11 系統(tǒng)測試顯示圖
隨著物質(zhì)生活的改善,城市的車輛也快速增長,合理可靠的交通控制不僅改善交通環(huán)境,還可以提高人們的生活質(zhì)量,使人們生活更加美好?;贚ED的城市道路交通模擬沙盤設(shè)計(jì)提供了這樣一個(gè)平臺(tái)。本系統(tǒng)充分利用ATmega16單片機(jī)芯片,提高了系統(tǒng)的穩(wěn)定性和可靠性。工控機(jī)作為仿真系統(tǒng)的數(shù)據(jù)輸入,實(shí)現(xiàn)了模擬沙盤的動(dòng)態(tài)運(yùn)行。同時(shí)采用MAX485作為通信模塊,實(shí)現(xiàn)了一對(duì)多的通信。本文設(shè)計(jì)的沙盤系統(tǒng)可以對(duì)城市道路交通的車流量進(jìn)行模擬,根據(jù)實(shí)際的城市道路實(shí)現(xiàn)模擬沙盤仿真,對(duì)城市道路的承載能力進(jìn)行了模擬。
[1] 趙紅軍, 任波. 一種基于單片機(jī)的LED控制器的硬件電路[J]. 大眾科技, 2008(11):74-75.
[2] 馬潮.AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2007.
[3] 李偉偉,張俊杰,王明,等.基于單片機(jī)的太陽能熱水器智能節(jié)水裝置[J].微型機(jī)與應(yīng)用,2015,34(13):94-96.
[4] 郭志偉. 基于ATmega16的LED交通警示板的設(shè)計(jì)與仿真[J]. 科技信息, 2011(20):10200.
[5] 張明長, 劉福平. 基于Atmega16的智能交通信號(hào)控制系統(tǒng)設(shè)計(jì)[J]. 北京印刷學(xué)院學(xué)報(bào), 2011, 19(4):37-41.
[6] 郭循釗, 鄺帆, 邵平,等. 基于單片機(jī)的多功能交通燈控制系統(tǒng)設(shè)計(jì)與仿真實(shí)現(xiàn)[J]. 公路交通技術(shù), 2010(1):128-131.
[7] 朱利洋,吳夏來,胡葉民,等.基于單片機(jī)的門控系統(tǒng)硬件設(shè)計(jì)[J].微型機(jī)與應(yīng)用,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ī)的城市道路交通模擬沙盤設(shè)計(jì)[J] .微型機(jī)與應(yīng)用,2016,35(2):78-81.
2015-08-27)
王年超(1987-),男,碩士研究生,主要研究方向:自動(dòng)化系統(tǒng),PLC的應(yīng)用與開發(fā)。
李志軍(1978-),男,博士,副教授,主要研究方向:網(wǎng)絡(luò)化控制系統(tǒng),模糊預(yù)測控制,故障診斷與容錯(cuò)控制,基于單片機(jī)等微處理器的控制儀表開發(fā),PLC、DCS的工程應(yīng)用。
吳力普(1983-),男,碩士,實(shí)驗(yàn)師,主要研究方向:單片機(jī)開發(fā)。