




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、1 簡介如今,交通信號燈安裝在各個路口,已成為交通車輛分流最常見、最有效的手段。但這項技術(shù)自 19 世紀以來就已經(jīng)存在。1858年,在英國倫敦的主要街道上安裝了一盞以氣體為光源的紅藍機械扳手式信號燈,用于指揮車廂的通行。這是世界上第一個紅綠燈。 1868 年,英國機械工程師奈特在倫敦威斯敏斯特議會大廈前的廣場上安裝了世界上第一個燃氣紅綠燈。它由紅綠兩個旋轉(zhuǎn)的方形玻璃燈籠組成,紅色表示“停止”,綠色表示“注意”。 1869年1月2日,煤氣燈爆炸,警察受傷,被取消。1914年,用于電激活的交通信號燈出現(xiàn)在美國。該交通信號燈由安裝在紐約市第五街的一座塔上的紅色、綠色和黃色圓形光投影儀組成。紅燈表示“
2、停止”,綠燈表示“通過”。智能紅綠燈指揮人和各種車輛的安全運行,實現(xiàn)紅黃綠燈的自動指揮,是城鄉(xiāng)交通管理現(xiàn)代化的重要課題。在城鄉(xiāng)街道的十字路口,為保證交通秩序和行人安全,一般每條道路上都有一組紅黃綠紅綠燈。紅燈亮,表示禁止通行;車輛繼續(xù)通過;綠燈亮,表示內(nèi)容道路通行。紅綠燈控制電路自動控制路口紅、黃、綠兩組紅綠燈狀態(tài)轉(zhuǎn)換,指示各類車輛和行人安全通行,實現(xiàn)路口城鄉(xiāng)交通管理自動化。為了實現(xiàn)對交通道路的管理,本文力求在交通管理方面做到先進和科學。對單片機實現(xiàn)的智能紅綠燈控制系統(tǒng)進行了分析和應用,采用了系統(tǒng)的軟硬件設計方法。有效分流交通,提高交通路口通行能力。2 系統(tǒng)設計要求及總體規(guī)劃2.1 基本設計要
3、求1)設計一個路口紅綠燈控制電路,要求南北方向和東西方向兩個路口的車輛交替運行,兩個方向可以根據(jù)車流量的大小自動調(diào)整行駛時間流動。小而短的運輸時間。2)每次綠燈變紅時,需要黃燈亮5秒才能換車。3)除指示東西、南北方向車道的紅、黃、綠燈外,各燈亮的時間由數(shù)碼管顯示(采用倒計時法)。4)同時設置人行橫道紅綠燈。2.2 系統(tǒng)規(guī)劃我們將系統(tǒng)設計成可以獨立工作的主控制器和客戶端的形式,但與傳統(tǒng)的C/S模式不同的是,每個終端都可以獨立于主控制器工作。即使主控機停止工作,或因故不能正常工作,各終端機仍能正常穩(wěn)定工作。每個航站樓負責管理交叉路口的多個信號燈。為方便起見,我們將主控機稱為主系統(tǒng),將每臺終端機稱為
4、子系統(tǒng)??刂葡到y(tǒng)整體框圖如圖2-1所示A干道交通信號燈A干道交通信號燈A干道交通信號燈A干道交通信號燈B道交通信號燈B道交通信號燈路口子系統(tǒng)路口子系統(tǒng)圖2-1 控制系統(tǒng)的總框圖遠程主系統(tǒng)計算機路口子系統(tǒng)1)智能紅綠燈研究現(xiàn)狀目前設計紅綠燈的方案有很多,包括應用CPLD設計和實現(xiàn)紅綠燈控制器的方法;應用PLC實現(xiàn)交通燈控制系統(tǒng)設計的方法;以及應用單片機實現(xiàn)紅綠燈設計的方法。目前全國的紅綠燈一般都設在十字路口,紅、綠、黃三色指示燈在顯眼位置。加上一個倒計時顯示計時器來控制騎行。對于正常情況下的安全駕駛,車輛分流還是可以起到一定作用的,但是根據(jù)實際駕駛過程,還是有不足的地方:兩車道車輛輪流放行時間相
5、同,固定時間,而在路口,一個車道是經(jīng)常是主干道。 ,車輛較多,放行時間應較長;另一條車道是次干道,車輛較少,放行時間應該更短智能紅綠燈設計方案及改進措施鑒于道路上的交通擁堵,十字路口經(jīng)常擁堵。采用單片機控制技術(shù),提出了軟硬件設計方案及改進措施:根據(jù)各路口的車流量大小自動調(diào)整行駛時間。由于AT89S51單片機有2個計數(shù)器和6個中斷源,可以滿足系統(tǒng)的設計要求。單片機的設計不僅設計簡單,而且成本低,用它設計的紅綠燈也能滿足要求,因此本文采用單片機設計紅綠燈。系統(tǒng)組成如圖2-2所示:南北檢測點南北檢測點東西檢測點東西檢測點緊急控制開關(guān)南北紅綠黃燈時間顯示塊東西紅綠黃燈時間顯示塊 T0T1 AT89S5
6、1圖 2-2 系統(tǒng)結(jié)構(gòu)框圖3 AT89S51單片機簡介3.1 單片機概述單片機是微機的一個重要分支,也是一種生命力。單片機,簡稱單片機,特別適用于控制領域,故又稱微控制器。通常,單片機由單個集成電路芯片組成,其中包含計算機的基本功能部件:中央處理器、存儲器和I/O接口電路。因此,單片機只需與適當?shù)能浖屯獠吭O備相結(jié)合,即可成為單片機控制系統(tǒng)。AT89S51是美國ATMEL公司生產(chǎn)的低功耗、高性能CMOS 8位單片機。該芯片包含4k 字節(jié)的系統(tǒng)可編程Flash只讀程序存儲器。該設備采用ATMEL的高密度、非易失性存儲技術(shù)生產(chǎn)。 8051命令系統(tǒng)和引腳。它在單芯片中集成了可在線( ISP )或傳統(tǒng)
7、方法編程的Flash程序存儲器和通用8位微處理器。 ATMEL功能強大、成本低廉的AT89S51單片機可以為您提供許多高性價比的產(chǎn)品,可靈活應用于各種控制領域。3.2 AT89S51單片機主要性能參數(shù)及主要引腳3.2.1主要性能參數(shù)兼容MCU產(chǎn)品,8K字節(jié)系統(tǒng)內(nèi)可編程Flash存儲器, 1000次擦除周期,全靜態(tài)操作:0Hz33Hz ,三級加密程序存儲器, 32個可編程I/O口,3個16位定時定時器/計數(shù)器八中斷源、全雙工 UART 串行通道低功耗空閑和掉電模式、掉電后中斷喚醒、看門狗定時器、雙數(shù)據(jù)指針、掉電標識符。3.2.2 AT89S51芯片結(jié)構(gòu)介紹中央處理器:中央處理器(CPU)是整個單
8、片機的核心部件。它是一個8位數(shù)據(jù)寬度的處理器,可以處理8位二進制數(shù)據(jù)或代碼。 CPU負責控制、指揮和調(diào)度整個單元系統(tǒng)的協(xié)調(diào)工作,完成操作和控制輸入。輸出函數(shù)等數(shù)據(jù)存儲器(部分RAM) :數(shù)據(jù)存儲器用于存儲更改的數(shù)據(jù)。 AT89S51的數(shù)據(jù)存儲器地址空間為256個RAM單元,但只有前128個可以作為用戶數(shù)據(jù)存儲器使用,后128個被特殊寄存器占用。程序存儲器(部分ROM):程序存儲器用于存儲程序和固定常數(shù)等。通常使用只讀存儲器,其種類很多。閃存用于所有 89 系列微控制器。 AT89S51 配備 4KB 閃存。定時器/計數(shù)器(ROM):定時器/計數(shù)器用于實現(xiàn)定時和計數(shù)功能。 AT89S51 共有兩
9、個 16 位定時器/計數(shù)器。并行輸入和輸出 (I/O) 端口:8051 有 4 組 8 位 I/O 端口(P0、P1、P2 或 P3)用于外部數(shù)據(jù)傳輸。每個端口由一個鎖存器和一個驅(qū)動器組成。主要用于實現(xiàn)與外部設備的數(shù)據(jù)并行輸入輸出,部分I/O口還有其他功能。全雙工串口:A89S51 具有一個全雙工串行通信端口,用于與其他設備進行串行數(shù)據(jù)傳輸。串口可用作異步通信收發(fā)器或同步移位器。時鐘電路:時鐘電路的作用是產(chǎn)生單片機運行所需的時鐘脈沖序列。中斷系統(tǒng):中斷系統(tǒng)的主要功能是管理和處理外部或外部終端請求。 AT89S51共有5個中斷源,包括2個外部中斷源和3個部分中斷源。圖3-2是AT89S51系列單
10、片機的結(jié)構(gòu)示意圖。圖3-2 AT89S51系列單片機結(jié)構(gòu)示意圖3.2.3主要引腳功能AT89S51 的引腳圖如圖 3-1 所示:VCC:電源電壓GND:地P0口:P0口是一組8位開漏雙向I/O口,即地址/數(shù)據(jù)總線復用口。用作輸出端口時,每位可驅(qū)動8個TTL邏輯門電路,向端口寫“l(fā)”可作為高阻輸入端口。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組端口線時分轉(zhuǎn)換地址(低 8 位)并復用數(shù)據(jù)總線,并在訪問過程中激活上拉電阻。P1口:Pl為8位雙向I/O口,帶上拉電阻。 Pl的輸出緩沖級可以驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。向端口寫入“l(fā)”,通過該部分的上拉電阻將端口拉高,此時可作為輸入端口使用
11、。用作輸入端口時,由于存在上拉電阻,當引腳被外部信號拉低時,會輸出電流(IIL)。在 Flash 編程和程序驗證期間,Pl 接收低 8 位地址。表 1 具有第二種功能的 P1 端口引腳端口引腳第二個功能:P1.5MOSI(用于 ISP 編程)P1.6MOSI(用于 ISP 編程)P1.7MOSI(用于 ISP 編程)P2口:P2為8位雙向I/O口,帶上拉電阻。 P2的輸出緩沖級可以驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。向端口寫入“1”,通過該部分的上拉電阻將端口拉至高電平。此時,可作為輸入端口使用。用作輸入端口時,由于部分內(nèi)有上拉電阻,某個引腳被外部信號拉低。將輸出電流 (IIL)。當以
12、 16 位地址訪問外部程序存儲器或外部數(shù)據(jù)存儲器時(例如,執(zhí)行 MOVXDPTR 指令),P2 端口致高 8 位地址數(shù)據(jù)。當訪問一個 8 位地址的外部數(shù)據(jù)存儲器時(例如執(zhí)行 MOVXRi 指令),P2 端口線上的內(nèi)容(即特殊功能寄存器(SFR)區(qū)域中 P2 寄存器的內(nèi)容)不會在整個訪問期間發(fā)生變化。在 Flash 編程或驗證期間,P2 還接收高位地址和其他控制信號。P3 端口:P3 端口是一組8 位雙向I/0 端口,帶有部分上拉電阻。端口 3 輸出緩沖級可以驅(qū)動(灌入或拉出電流)4 個 TTL 邏輯門。當 P3 端口寫入“1”時,它們被上拉電阻拉高,可用作輸入端口。用作輸入端時,外部下拉的 P
13、3 端口將使用上拉電阻輸出電流(IIL)。 P3口除了用作總則I/0口外,更重要的用途是它的第二個功能,如下表所示:表 2 具有第二種功能的 P1 端口引腳端口引腳第二個功能:P3.0RXD(串行輸入端口)P3.1TXD(串行輸出端口)P3.2/INT0(外部中斷 0)P3.3/INT1(外部中斷 1)P3.4T0(定時器/計數(shù)器 0 外部輸入)P3.5T1(定時器/計數(shù)器 1 外部輸入)P3.6/WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD 外部數(shù)據(jù)存儲器讀選通)P3 端口還接收一些用于 Flash 閃存編程和程序驗證的控制信號。RST:復位輸入。當振蕩器工作時,RST 引腳上的高電平持續(xù)超過
14、兩個機器周期將使單片機復位。 WDT 溢出將導致該引腳輸出高電平,可通過設置 SFR AUXR 中的 DISRT0 位(地址 8EH)來打開或關(guān)閉該引腳。 DISRT0 位默認為 RESET 輸出高開狀態(tài)。ALE/:訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存使能)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE 仍然會以時鐘振蕩頻率的 1/6 輸出固定的正脈沖信號,因此它可以外部輸出時鐘或用于計時目的。請注意,每當訪問外部數(shù)據(jù)存儲器時,都會跳過一個 ALE 脈沖。該引腳還用于在對 F1ash 存儲器進行編程期間輸入編程脈沖 (PROG)。如有必要,可以通過設置特殊功能寄存
15、器 (SFR) 區(qū)域中位置 8EH 的位 D0 來禁用 ALE 操作。當該位被設置時,只有 M0VX 和 M0VC 指令之一,ALE,將被激活。此外,該引腳會被弱拉高。當單片機執(zhí)行外部程序時,ALE 應設置為無效。程序存儲許可()輸出是外部程序存儲器的讀選通信號。 AT89S51從外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期有效兩次,即輸出兩個脈沖。訪問外部數(shù)據(jù)存儲器時,沒有雙重有效信號。 /VPP:內(nèi)容外部訪問。為了使 CPU 只訪問外部程序存儲器(地址為 0000H-FFFFH),EA 端子必須保持低電平(接地)。需要注意的是,如果加密位 LB1 被編程,EA 端的狀態(tài)將在復位時被鎖存。
16、如果 EA 端為高電平(接 VCC 端),CPU 將執(zhí)行程序存儲器中的指令。在對 F1ash 存儲器進行編程時,+12V 編程電壓 Vpp 被施加到該引腳。XTAL1:振蕩器反相放大器和外部時鐘發(fā)生器的輸入端。4 智能紅綠燈方案的實現(xiàn)根據(jù)設計任務和要求,可以畫出控制器的原理框圖。為了保證路口的交通安全,交通信號燈自動控制系統(tǒng)常用于控制交通信號。其中,紅燈(R)亮,表示禁止通行;黃燈(Y)亮,表示暫停;綠燈(G)亮,內(nèi)容通過。4.1 系統(tǒng)整體框圖如圖4-1所示:圖 4-1 整體系統(tǒng)框圖4.2 智能交通燈系統(tǒng)組成紅綠燈系統(tǒng)由四部分組成:車輛檢測電路、信號燈電路、時間顯示電路、緊急轉(zhuǎn)換開關(guān)。4.3
17、智能紅綠燈系統(tǒng)的工作原理大家都明白,綠燈釋放時間與通過的車輛數(shù)量不成正比。例如,20 輛車可以在 20 秒內(nèi)通過每條車道,但 45 輛車可以在 40 秒內(nèi)通過每條車道。因為這有一個啟動問題,還有一個黃燈等待問題。也就是說,綠燈釋放時間越長,單位時間內(nèi)通過的車輛越多。我們算一下,每條車道20秒可以通過20輛車,一個紅綠燈周期是40秒(單個路口),再加上每個狀態(tài)轉(zhuǎn)換5秒黃燈(一個周期兩個轉(zhuǎn)換),也就是一個紅綠燈一個周期需要50秒,即50秒內(nèi)有40輛車通過。通過汽車的平均時間是 1.25 秒。如果將每輛車通過的時間改為40秒,40秒內(nèi)每條車道可以有45輛車通過,一個紅綠燈周期為80秒(單個路口),加
18、上每次狀態(tài)轉(zhuǎn)換黃燈5秒(一個周期需要兩個次換算),即一個紅綠燈周期需要90秒,即90秒內(nèi)有90輛車通過。通過汽車的平均時間僅為 1 秒。顯然,在車輛擁擠的情況下,綠燈通過的時間越長,單位時間內(nèi)通過的車輛就越多,可以有效緩解車輛擁堵問題。當然,綠燈時間不能無限長,還要考慮其他路口的等待時間不能太長。人們總是希望盡可能短地在紅綠燈處等待。因此,筆者將綠燈通行時間的上限設置為40秒。非擁堵時段的綠燈通行時間下限為 20 秒。當路口兩側(cè)車輛較少時,通行時間設置為20秒,可以大大縮短紅燈前車輛的等待時間。當路口兩側(cè)車輛較多時,行車時間設置為40秒。4.3.1汽車檢測電路它用于判斷各個方向的車輛狀況。例如
19、,20 秒內(nèi)可以通過 20 輛車。當20秒內(nèi)南北方向通過的車輛少于20輛時,判斷該方向車輛較少。當該方向通過的車輛數(shù)未達到20輛時,判斷該方向車輛較少,下次通過仍為20秒。當20秒內(nèi)南北或北南任意方向經(jīng)過的車輛達到20輛時,證明該狀態(tài)車輛較多,下次該方向的綠燈釋放時間改為40輛秒。當通過40秒的車輛達到45輛時,判斷車輛擁擠,下次綠燈釋放時間改為40秒。當過往車輛少于45輛時,判斷車輛較少,下次綠燈釋放時間改為20秒,以此類推。綠燈最短時間為20秒,上限為40秒,初始時間為20秒。這樣一來,一次檢測可能不準確,但下次肯定會得到補償。累積計算非常準確,通常被稱為“模糊控制”。因為道路上的汽車數(shù)量
20、不可能突然增加,所以堵車是有一個累積過程的。這種控制可以逐步消化不斷增加的車輛數(shù)量。雖然由于每個路口的綠燈釋放時間延長,等待時間較長,但比堵車時的等待時間要短得多。該系統(tǒng)具有成本低、控制準確的特點。圖 4-2 顯示了路口車輛的通行順序:圖 4-2 路口車輛通行順序由于南北和北南時間顯示是一樣的,只要一個方向的車輛多,下次時間就會從東向西延長,西向東也是如此。顯示時間選擇如表 3 所示。表 3 顯示了時間選擇車輛狀況這個方向的旅行時間這個方向的下一個旅行時間這個方向的旅行時間這個方向的旅行時間南北車少,南車少20 秒20 秒40 秒20 秒南北車少,南北車多20 秒40 秒40 秒40 秒南北車
21、多,南北車少20 秒40 秒40 秒40 秒南北車多,南北車多20 秒40 秒40 秒40 秒東到西少車,西到東少車20 秒20 秒40 秒20 秒東到西車少,西到東車多20 秒40 秒40 秒40 秒東到西車多,西到東車少20 秒40 秒40 秒40 秒東到西車多,西到東車多20 秒40 秒40 秒40 秒4.3.2信號燈電路信號燈用于顯示車輛交通狀況。下面以一個路口為例,說明紅綠燈的四種狀態(tài),如圖 4-3 所示。每個路口信號燈的轉(zhuǎn)換順序為:綠燈-黃燈-紅綠燈表示內(nèi)容通行,黃燈表示禁止通行,但已經(jīng)通過安全線的車輛可以繼續(xù)通行。綠燈過渡到紅燈。 .紅燈意味著沒有交通。綠燈最短20秒,最長40秒
22、,紅燈最短25秒,最長45秒,黃燈5秒。圖4-3 紅綠燈運行狀態(tài)4.3.3時間顯示電路在紅綠燈正上方安裝能顯示綠燈通過時間和紅燈等待時間的顯示電路是一個很好的方法。由于東西方向顯示的時間與西方向顯示的時間相同,南北方向和南北方向顯示的時間相同,因此只需要四位數(shù)碼管顯示電路需要考慮,包括東西方向的兩個和南北方向的兩個。 ,兩位數(shù)碼管的時間可以在0-99秒,完全可以滿足系統(tǒng)的要求。數(shù)碼管的連接方法如圖4-4所示。圖 4-4 數(shù)碼管連接方法5.系統(tǒng)軟件設計5.1 控制器軟件設計5.1.1每秒設置延時方法有兩種:一種是使用MCS-51定時器產(chǎn)生溢出中斷來確定1秒的時間,另一種是使用軟件延時方法。計數(shù)器
23、硬件延遲.a 計數(shù)器初始值計算定時器工作時,必須將計數(shù)器的初始值致給計數(shù)器,并將這個值致給 TH 和 TL。加法計數(shù),可自動產(chǎn)生全1到全0的溢出中斷請求。因此,我們可以將計數(shù)器被填充為零所需的計數(shù)值設置為C,初始計數(shù)值設置為TC,可以得到如下通式:TC=MC式中,M為計數(shù)器的模值,與計數(shù)器的工作模式有關(guān)。 M 在模式 0 中為 213; M 在模式 1 中為 216; 28 在模式 2 和 3.b 計算公式T=(MTC)T計數(shù)或 TC=MC/T計數(shù)T count是單片機時鐘周期T CLK的12倍; TC 是時序初始值例如單片機的主脈沖頻率為T CLK 12MHZ,除以12模式 0 TMAX =
24、 2 13 *1 微秒 = 8.912 毫秒模式 1 TMAX = 2 16 * 1 微秒 = 65.536 毫秒很明顯,1秒已經(jīng)超過了計數(shù)器的最大固定時間,所以我們只能通過定時器和軟件的結(jié)合來解決這個問題。5.1.2 1秒法我們在主程序中使用一個初值為20的軟件計數(shù)器,讓T0定時50毫秒。這樣,當 T0 到 50 毫秒時,CPU 響應其溢出中斷請求,進入其中斷服務程序。在中斷服務程序中,CPU首先將軟件計數(shù)器減1,然后判斷是否為零。零表示經(jīng)過 1 秒返回輸出時間顯示程序。對應的程序代碼(1) 主程序定時器需要設置50毫秒,所以T0工作在模式1。初始值:TC=MT/T計數(shù)=2 16 -50ms
25、/1us=15536=3CBOH奧格1000H開始:移動 TMOD,#01H;設T0為定時器模式1移動 TH0, #3CH ;加載定時器的初始值移動 TL0, #BOH ;移動IE,#82H;啟用 T0 中斷SEBT TRO;啟動 T0 計數(shù)器移動反滲透,#14H;軟件計數(shù)器初始值循環(huán):SJMP $;等待中斷(2) 中斷服務子程序組織機構(gòu) 00BHAJMP BRT0組織機構(gòu) 00BHBRT0:DJNZ R0,下一個調(diào)整時間;跳轉(zhuǎn)時間和信號燈顯示子程序DJNZ:MOV R0,#14H;恢復R0值MOV TH0, #3CH ;重載定時器初值移動 TL0, #BOH ;移動 IE,#82HRET1結(jié)
26、尾5.1.3軟件延遲MCS-51的工作頻率為2-12MHZ,我們選用的8031單片機的工作頻率為6MHZ。機器周期與主頻有關(guān),機器周期是主頻的12倍,所以一個機器周期的時間為12*(1/ 6M)=2us。我們可以知道每條指令的周期數(shù),這樣我們就可以通過執(zhí)行的指令數(shù)來確定1秒的時間。具體延遲方案分析:DELAY:MOV R4,#08H 延遲 1 秒子程序DE2:LCALL 延遲 1DJNZ R4,DE2RETDELAY1:MOV R6,#0 ;延遲125ms子程序MOV R5,#0DE1:DJNZ R5,$DJNZ R6,DE1RET移動 RN,#數(shù)據(jù);字節(jié)數(shù)為2,機器周期數(shù)為1所以這條指令的執(zhí)
27、行時間為2ms,而DELAY1為雙循環(huán),循環(huán)次數(shù)為256*256=65536 ,所以延遲時間=65536*2=131072us約為125us 。 DELAY R4設置的初始值為8,主延遲程序循環(huán)8次,所以125us*8=1秒,因為單片機運行速度非???,其他指令的執(zhí)行時間可以忽略不計。5.2 流程圖如圖5-1所示圖5-1紅綠燈軟件設計流程圖5.3 程序源代碼組織機構(gòu) 0000HA_BIT EQU 20H ;用來存放南北十位數(shù)字B_BIT EQU 21H ;用來存放南北十位數(shù)字C_BIT EQU 22H ;用于存儲十位數(shù)字D_BIT EQU 23H ;用于存儲位數(shù)TEMP1 EQU 24H ;用于
28、存儲南北第一和第二狀態(tài)要顯示的時間TEMP2 EQU 25H;用于存儲第一件事和第二件事要顯示的時間TEMP3 EQU 26H;用于存儲要在南北第三和第四狀態(tài)顯示的時間TEMP4 EQU 27H ;用于存儲要在南北第三和第四狀態(tài)顯示的時間LJMPMAIN組織機構(gòu) 0003H ;外部中斷 0 入口LJMP INT0 ;跳轉(zhuǎn)到外部0中斷組織機構(gòu) 0013H ;外部中斷 1 個入口LJMP INT1 ;跳轉(zhuǎn)到外部 1 中斷INT0:MOV A,P1;外部 0 中斷推加速移動 A,P2 ;中斷保護推加速MOV P1,#0FFH ;清除前一個狀態(tài)MOV P2,#0FFHCLR P1.0CLR P1.4
29、;南北通行,東西禁止通行CLR P1.6CLR P2.3JNB P3.2 ,$ ;判斷是否仍處于中斷狀態(tài)流行音樂節(jié)MOV P2,A ;返回中斷前狀態(tài)流行音樂節(jié)MOV P1,ACC視網(wǎng)膜;從中斷返回INT1:MOV A,P1 ;外部1中斷推加速;中斷保護MOV A,P2推加速MOV P1,#0FFH ;清除前一個狀態(tài)MOV P2,#0FFHCLR P1.2CLR P2.1CLR P1.3 ;東西進出,南北禁止進出CLR P1.5JNB P3.3 ,$ ;判斷是否仍處于中斷狀態(tài)流行音樂節(jié)MOV P2,A ;返回中斷前狀態(tài)流行音樂節(jié)MOV P1,A視網(wǎng)膜;從中斷返回基于單片機的紅綠燈信號控制器設計(
30、含源程序及電路圖)設計一種基于微控制器的交通燈信號控制器。據(jù)了解,東、西、南、北四個方向有紅、黃、綠三盞燈,東西方向有兩個數(shù)碼管,南北方向有兩個數(shù)碼管。要求紅綠燈按表1定時顯示和切換,并要求在數(shù)碼管上分別倒計時東西方向和南北方向各狀態(tài)的剩余時間。表1 紅綠燈狀態(tài)切換表南北方向東西方向序列號狀態(tài)序列號狀態(tài)1綠燈亮25秒紅黃燈滅1紅燈亮30秒,綠黃燈滅2黃燈亮5秒紅綠燈滅3紅燈亮30秒,綠黃燈滅2綠燈亮25秒紅黃燈滅3黃燈亮25秒紅綠燈滅回到狀態(tài) 1回到狀態(tài) 13.2.1 模塊一:系統(tǒng)設計(1)任務分析和總體設計思路考題中要呈現(xiàn)的功能主要包括時序功能、動態(tài)掃描和狀態(tài)切換。計時功能:要實現(xiàn)計時功能,
31、需要使用定時器來計時。通過設置定時器的初值來控制溢出中斷的時間間隔,然后用一個變量來記錄定時器溢出的次數(shù),從而達到1秒計時的功能。當定時器到達1秒時,東西、南北信號燈各狀態(tài)的暫存剩余時間變量減1。當暫存剩余時間的變量減為0時,切換到下一個狀態(tài),同時將下一個狀態(tài)的初始倒計時值加載到計時變量中。開始下一個狀態(tài),循環(huán)重復。動態(tài)掃描:需要用4個數(shù)碼管分別顯示東、西、北、南的倒計時數(shù)字,從每個狀態(tài)的剩余時間變量中提取“十”和“個”,使用動態(tài)掃描方式在數(shù)碼管上顯示倒計時數(shù)字。顯示。整個程序根據(jù)定時器的溢出次數(shù)進行計時。每計數(shù)1S,對應狀態(tài)的剩余時間減1,減為0時觸發(fā)下一個狀態(tài)的開始。 (2)單片機型號及所
32、需外圍設備型號,單片機硬件電路示意圖圖3-5 紅綠燈硬件電路原理圖單片機選用MCS51系列AT89S51單片機,選用2個四位共陰數(shù)碼管組成8位顯示模塊。驅(qū)動,一個74HC244完成對共陰極數(shù)碼管位置控制線的控制和驅(qū)動,另一個74HC244完成數(shù)碼管的7段碼輸出,每個7段串聯(lián)一個100歐的電阻碼輸出端口限制7段數(shù)碼管的電流。使用P3端口的P3.0-P3.5完成對發(fā)光二極管的控制,實現(xiàn)紅綠燈信號的顯示。每個發(fā)光二極管串聯(lián)一個500歐姆的電阻來限制電流。硬件電路原理圖如圖 3-5 所示。 (3)程序設計思路、單片機資源分配及程序流程單片機資源分配 單片機P3口的P3.0-P3.1引腳作為輸出控制顯示
33、的發(fā)光二極管。在計時模塊中,需要定義兩個數(shù)組變量(init_sn3、init_ew3)來存儲東西、南北方向不同狀態(tài)下倒計時的初始值。問題顯示狀態(tài)中每個方向有3種紅綠燈,所以數(shù)組元素個數(shù)為3。還需要定義兩個變量(t_sn,t_ew)來臨時存儲倒計時的剩余時間東西方向和南北方向。在狀態(tài)切換中,為了明確當前處于哪個狀態(tài),在東、西、北方向設置了一個狀態(tài)變量(state_val_sn,state_val_ew)。當變量增加到 3 時,變?yōu)?0 并返回序列號 1 的狀態(tài)。程序設計思路在設計中,由于沒有鍵盤功能,只涉及定時計數(shù)和動態(tài)掃描功能。主程序初始化變量后,設置MCU定時器和中斷特殊功能寄存器的初始值,
34、并將定時器T1的工作模式設置為8位自動加載模式,定時器每250us溢出一次。初始化變量和寄存器后,主程序進入循環(huán)結(jié)構(gòu),只在循環(huán)中進行動態(tài)掃描,根據(jù)剩余時間在東西、南北方向進行動態(tài)掃描和顯示。定時和狀態(tài)的切換是通過定時器的中斷服務程序來實現(xiàn)的。在中斷服務程序中,每計數(shù)一秒,每個方向當前狀態(tài)的剩余時間減1,減為0時,觸發(fā)下一個狀態(tài)。首先,更改交通燈的指示。程序流程(4) 軟硬件調(diào)試方案軟件調(diào)試方案:在威孚軟件中,在“FileNew File”中新建一個C語言源程序文件,編寫相應的程序。在“FileNew Project”菜單中,新建一個工程,將C語言源程序文件包含在工程文件中。在“ProjectC
35、ompile”菜單中編譯C源文件,檢查語法錯誤和邏輯錯誤。編譯成功后,生成帶有“*.hex”和“*.bin”后綴的目標文件。硬件調(diào)試方案:在設計平臺中,通過插頭將單片機的P3.0-P3.5與獨立鍵盤的相應位連接起來。將程序文件編譯成威孚中的目標文件后,運行“單片機下載程序”,選擇對應的flash數(shù)據(jù)文件,點擊“Program”按鈕,將程序文件下載到單片機的Flash中。然后,上電重啟單片機,檢查編寫的程序是否滿足試題要求,試題內(nèi)容是否完整完整。3.2.2 編程(C語言源程序僅供參考) /晶振:11.0592M T1-250微秒溢出一次/*變量定義: show_val_sn,show_val_e
36、w:顯示值0-59 state_val_sn,state_val_ew:狀態(tài)值南北方向0-綠燈亮; 1 -黃燈亮; 2-紅燈亮#include reg51.h sbit SN_green=P32 ;/南北方向綠燈 sbit SN_yellow=P31 ;/南北方向黃燈 sbit SN_red=P30 ;/南北方向紅燈 sbit EW_green=P3 5 ;/東西方向綠燈 sbit EW_yellow=P34 ;/東西方向黃燈 sbit EW_red=P33 ;/ /東西方向紅燈 unsigned char datat_sn,cnt_ew;無符號整數(shù)數(shù)據(jù) T1_cnt;無符號字符數(shù)據(jù) stat
37、e_val_sn,state_val_ew ;字符代碼 led_seg_code10=0 x3f,0 x06,0 x05b,0 x04f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;字符代碼 init_sn3=24,4,29;字符代碼 init_ew3 =29,24,4; /- void delay(unsigned int i)/Delay while( -i); /- void led_show(unsigned int u,unsigned int v) unsigned char i;我= u%10; /暫存一位P0=led_seg_codei; P2=0
38、xbf;延遲(100); /延遲i=u%100/10; /暫存十位P0=led_seg_codei ; P2=0 x7f;延遲(100); /延遲i=v%10; /暫存一位P0=led_seg_codei; P2=0 xfe;延遲(100); /延遲i=v%100/10; /暫存十位數(shù)字P0=led_seg_codei; P2=0 xfd;延遲(100); /延遲 /- - void timer1() 中斷 3 /T1 中斷 T1_cnt+; if(T1_cnt3999) /如果count3999,時間1s T1_cnt=0; if (cnt_sn!=0) / 南北時序t_sn-; 其他 st
39、ate_val_sn+;如果 (state_val_sn2) state_val_sn=0; t_sn=init_snstate_val_sn; switch (state_val_sn) /根據(jù)狀態(tài)值刷新每個信號燈的狀態(tài) case 0: SN_green=0 ;/南北方向綠燈 SN_yellow=1 ;/北-黃燈south direction SN_red=1 ;/南北方向紅燈亮; case 1: SN_green= 1 ;/南北方向綠燈 SN_yellow=0 ;/南北方向黃燈 SN_red=1 ;/南北方向紅燈亮; case 2:SN_green=1 ;/南北方向綠燈 SN_yellow
40、=1 ;/南北方向黃燈 Light SN_red=0 ;/南北方向紅燈斷; if (cnt_ew!=0) /東西向時序t_ew-; 其他 state_val_ew+;如果 (state_val_ew2) state_val_ew=0; t_ew=init_ew state_val_ew; switch (state_val_ew) /根據(jù)狀態(tài)值刷新各個信號燈的狀態(tài) case 0: EW_green=1 ;/東西綠燈EW_yellow=1;/東西黃燈EW_red=0 ;/東西方向闖紅燈; case 1: EW_green=0 ;/東西綠燈EW_yellow=1 ;/東西黃燈EW_red=1 ;/
41、東西紅燈斷; case 2: EW_green=1 ;/東西綠燈EW_yellow=0 ;/東黃燈EW_red=1 ;/東紅燈斷; /- - main() /初始化每個變量t_sn=init_sn0; t_ew=init_ew0; T1_cnt=0; state_val_sn=0; /啟動后,默認工作在序號1的狀態(tài)state_val_ew=0; /初始化每個燈的狀態(tài)SN_green=0;/南北方向綠燈亮SN_yellow=1;/南北方向黃燈滅SN_red=1;/紅燈南北方向燈 燈滅EW_green=1 ;/東綠燈滅EW_yellow =1;/東黃燈滅EW_red=0 ;/東紅燈亮Bit自動加載
42、定時模式TH1=0 x19;/ /0 x4b; /每500微秒溢出一次; 250=(256-x)*12/11.0592 - x= 230.4 TL1=0 x19; EA=1; /打開中斷ET1 =1; TR1=1; /啟動定時器T1 while(1) led_show(cnt_sn,cnt_ew);培訓四個紅綠燈控制系統(tǒng)當今社會,汽車越來越多,交通事故也越來越多。為了減少此類事故的發(fā)生,有必要加強對道路的管理。因此,合理設計紅綠燈控制系統(tǒng),可以大大減少此類事情的發(fā)生。一、系統(tǒng)功能要求: 1、設計任務是在路口設置紅綠燈,并用單片機合理控制。時間方向控制要求東西綠燈、黃燈、紅燈、南北紅燈、綠燈、黃
43、燈晚上,東西向的黃燈是南北向的紅燈。 2、整體設計方案 流行的設計是兩條主線相交的十字路口。本設計采用主干道(南北向)和次干道(東西向)交叉口,即主干道通行時間是次干道的兩倍。正常情況下,兩條主干道的紅綠燈轉(zhuǎn)換如圖1所示,剩余時間以倒計時方式顯示在每條主干道對應的兩個LED上;燈全是紅色的,當緊急情況解除時,它會恢復到原來的狀態(tài)。 2. 整體設計方案提示: 1. 假設一個十字路口從東到西,從北到南。初始狀態(tài)0是從東到西的紅光和從北到南的紅光。然后轉(zhuǎn)向狀態(tài)1,東西綠燈通車,南北紅燈。一段時間后的狀態(tài)。 2.東西綠燈滅,黃燈閃幾下,南北仍是紅色。再次改變狀態(tài)。 3、南北綠燈通車,東西紅燈通行。一段時間后的狀態(tài)。 4、南北綠燈滅,黃燈閃爍數(shù)次。延遲幾秒后,東、西燈仍然是紅色的。最后循環(huán)到狀態(tài) 1.三。硬件設計電路原理圖如下:4. 軟件設計1. 流程圖2. 編程組織機構(gòu) 0000HMOV P0,#00H ;確保 P
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家長會課代表發(fā)言稿
- 小學家長會數(shù)學發(fā)言稿
- 發(fā)言稿講季節(jié)
- 工程觀摩會發(fā)言稿
- 生日圓鎖發(fā)言稿
- 愛國的發(fā)言稿
- 銀行服務年終報告
- 雙十二教育投資策略
- 學員論壇發(fā)言稿
- 學校校長發(fā)言稿
- 麥琴每日讀經(jīng)計劃表
- 鋼塑復合管理論重量表
- 部編版小學語文四年級下冊教學計劃+進度表
- 大客戶營銷的黃金法則
- 高空作業(yè)免責協(xié)議書例文
- 防滲墻專項施工方法
- 執(zhí)業(yè)(助理)醫(yī)師資格證書遺失補辦申請表
- 精品資料(2021-2022年收藏)垃圾焚燒發(fā)電廠監(jiān)理規(guī)劃
- 正副班主任工作職責
- 建筑工程消防安全技術(shù)交底
- 建筑工程原材料構(gòu)配件及試件檢驗的項目規(guī)則取樣規(guī)定_文檔
評論
0/150
提交評論