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