王年超,, 李志軍, 吳力普
?。ū狈焦I(yè)大學(xué) 現(xiàn)場(chǎng)總線及自動(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通過(guò)RS485通信協(xié)議實(shí)現(xiàn)城市道路交通的模擬,。此沙盤系統(tǒng)為研究城市道路交通模擬提供了平臺(tái),,具有很好的實(shí)用價(jià)值。
關(guān)鍵詞:AVR單片機(jī);道路交通沙盤,;RS485通信協(xié)議
0引言
面對(duì)當(dāng)今世界全球化,、信息化發(fā)展趨勢(shì),傳統(tǒng)的交通技術(shù)和手段已不適應(yīng)經(jīng)濟(jì)社會(huì)發(fā)展的要求,。智能交通系統(tǒng)是交通事業(yè)發(fā)展的必然選擇,,是交通事業(yè)的一場(chǎng)革命。通過(guò)先進(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)今國(guó)際交通領(lǐng)域的三大難題,本文針對(duì)交通堵塞問(wèn)題對(duì)城市道路交通的車輛流量進(jìn)行模擬,,根據(jù)實(shí)際的城市道路實(shí)現(xiàn)模擬沙盤仿真,,對(duì)實(shí)際城市道路的道路承載能力進(jìn)行模擬。
1系統(tǒng)總體設(shè)計(jì)
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.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硬件模塊的設(shè)計(jì)
2.1控制模塊
圖3和圖4是ATmega16單片機(jī)接線電路和最小系統(tǒng)所需的復(fù)位電路以及外部晶振電路。復(fù)位電路:?jiǎn)?dòng)后讓單片機(jī)從初始狀態(tài)執(zhí)行程序,;振蕩電路:?jiǎn)纹瑱C(jī)是一種時(shí)序電路,,必須施加脈沖信號(hào)才能工作。MEGA16內(nèi)部有RC震蕩電路,,但相比外部的晶體震蕩電路還是不夠準(zhǔn)確,,另外它也可以使用外部晶振工作,兩者之間的切換通過(guò)熔絲位來(lái)選擇[3],。單片機(jī)內(nèi)部有一個(gè)時(shí)鐘產(chǎn)生電路,,只要接上兩個(gè)電容和一個(gè)晶振即可正常工作。
2.2通信模塊
圖5RS485通信電路圖5所示是MAX485通信電路,。采用單一電源+5 V工作,,額定電流為300 μA,采用半雙工通信方式,。它完成將TTL電平轉(zhuǎn)換為RS485電平的功能,。MAX485芯片的結(jié)構(gòu)和引腳都非常簡(jiǎn)單,內(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í)接線非常簡(jiǎn)單,只需要一個(gè)信號(hào)控制MAX485的接收和發(fā)送即可,。
2.3LED顯示模塊
如圖6所示,,單片機(jī)IO口輸出信號(hào)通過(guò)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系統(tǒng)軟件設(shè)計(jì)
3.1通信協(xié)議格式
對(duì)于城市道路交通模擬沙盤,軟件部分至關(guān)重要,。本系統(tǒng)通過(guò)串口給控制器發(fā)送數(shù)據(jù),,通過(guò)程序中的協(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表示綠燈。
?。?)顯示燈條數(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燈。
?。?)修改控制板數(shù)據(jù)格式:發(fā)送A5F2000000AE,。此條數(shù)據(jù)只能一對(duì)一地發(fā)送。其中A5,、AE分別為發(fā)送數(shù)據(jù)格式的起始數(shù)據(jù)位和終止數(shù)據(jù)位,,F(xiàn)2為想要修改的地址,000000為無(wú)效數(shù)據(jù)位,。
3.2工作流程
流程介紹:首先對(duì)ATmega16單片機(jī)的IO口進(jìn)行初始化,,設(shè)定IO口為輸出,,然后對(duì)串口進(jìn)行初始化,設(shè)定為中斷方式接收上位機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù),,打開(kāi)總中斷,,程序開(kāi)始進(jìn)入while循環(huán)中接收數(shù)據(jù)并處理數(shù)據(jù),中斷到來(lái)時(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ù)尾和圖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顯示,。
?。?)接收的數(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ù)提取出來(lái)存入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(cuò)誤的數(shù)據(jù)重新按照協(xié)議規(guī)則進(jìn)行排序。主程序如下:
Int main()
{
Init_IO();//IO端口初始化子程序
Chushihua_usart()//串口初始化子程序
Deng_off();//熄滅所有的燈子程序
SREG|=0X80;//打開(kāi)總中斷
Xieyi_2data[1]=eeprom_read_byte(0x0000);//啟動(dòng)時(shí)讀取EEPROM地址0x0000的數(shù)據(jù)地址,,與發(fā)送過(guò)來(lái)的數(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)測(cè)試
測(cè)試使用其中一個(gè)路口作為測(cè)試對(duì)象,,這個(gè)路口包含4個(gè)紅綠燈,,10個(gè)燈條,每個(gè)燈條都有自己的控制器,,都被設(shè)置了地址,,通過(guò)串口連接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所示,。
5結(jié)論
隨著物質(zhì)生活的改善,,城市的車輛也快速增長(zhǎng),合理可靠的交通控制不僅改善交通環(huán)境,,還可以提高人們的生活質(zhì)圖11系統(tǒng)測(cè)試顯示圖
量,,使人們生活更加美好?;贚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)行了模擬,。
參考文獻(xiàn)
?。?] 趙紅軍, 任波. 一種基于單片機(jī)的LED控制器的硬件電路[J]. 大眾科技, 2008(11):7475.
[2] 馬潮.AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實(shí)踐[M].北京:北京航空航天大學(xué)出版社,,2007.
?。?] 李偉偉,張俊杰,王明,等.基于單片機(jī)的太陽(yáng)能熱水器智能節(jié)水裝置[J].微型機(jī)與應(yīng)用,2015,34(13):9496.
[4] 郭志偉. 基于ATmega16的LED交通警示板的設(shè)計(jì)與仿真[J]. 科技信息, 2011(20):10200.
?。?] 張明長(zhǎng), 劉福平. 基于Atmega16的智能交通信號(hào)控制系統(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] 朱利洋,吳夏來(lái),胡葉民,等.基于單片機(jī)的門控系統(tǒng)硬件設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2013,32(2):1618.