基于51單片機的智能交通燈系統(tǒng)設計(共26頁)_第1頁
基于51單片機的智能交通燈系統(tǒng)設計(共26頁)_第2頁
基于51單片機的智能交通燈系統(tǒng)設計(共26頁)_第3頁
基于51單片機的智能交通燈系統(tǒng)設計(共26頁)_第4頁
基于51單片機的智能交通燈系統(tǒng)設計(共26頁)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上 參考文獻.17 設計心得體會.18 附錄19基于單片機的交通控制系統(tǒng)模擬設計摘要: 自從1858年英國人,發(fā)明了原始的機械扳手交通燈之后,隨后的一百多年里,交通燈改變了交通路況,也在人們?nèi)粘I钪姓紦?jù)了重要地位,隨著人們社會活動日益增加,經(jīng)濟發(fā)展,汽車數(shù)量急劇增加,城市道路日漸擁擠,交通燈更加顯示出了它的功能,使得交通得到有效管制,對于交通疏導,提高道路導通能力,減少交通事故有顯著的效果。近年來,隨著科技的飛速發(fā)展,電子器件也隨之廣泛應用,其中單片機也不斷深入人民的生活當中。本模擬交通燈系統(tǒng)利用單片機AT89C51作為核心元件,實現(xiàn)了通過信號燈對路面狀況的智能控制。

2、從一定程度上解決了交通路口堵塞、車輛停車等待時間不合理、急車強通等問題。系統(tǒng)具有結構簡單、可靠性高、成本低、實時性好、安裝維護方便等優(yōu)點,有廣泛的應用前景。本模擬系統(tǒng)由單片機硬/軟件系統(tǒng),兩位8段數(shù)碼管和LED燈顯示系統(tǒng)。和復位電路控制電路等組成,較好的模擬了交通路面的控制。關鍵詞:交通燈 單片機 數(shù)碼管1. 設計思路(1)分析目前交通路口的基本控制技術以及各種通行方案,并以此為基礎提出自己的交通控制的初步方案。(2)確定系統(tǒng)交通控制的總體設計,包括,十字路口具體的通行禁行方案設計以及系統(tǒng)應擁有的各項功能,在這里,本設計除了有信號燈狀態(tài)控制能實現(xiàn)基本的交通功能,還增加了倒計時顯示提示,基于實際

3、情況,又增加了緊急狀況處理和通行時間可調(diào)這兩項特特殊功能。 (3)進行顯示電路,燈狀態(tài)電路,按鍵電路的設計和對各器件的選擇及連接,大體分配各個器件及模塊的基本功能要求。(4)進行軟件系統(tǒng)的設計,對于本系統(tǒng),本人采用單片機匯編語言編寫,對單片機內(nèi)部結構和工作情況做了充足的研究,了解定時器,中斷以及延時原理,總體上完成了軟件的編寫。2.單片機交通控制系統(tǒng)方案的比較、設計與論證 2.1 電源提供方案為使模塊穩(wěn)定工作,須有可靠電源。因此考慮了兩種電源方案:方案一:采用獨立的穩(wěn)壓電源。此方案的優(yōu)點是穩(wěn)定可靠,且有各種成熟電路可供選用;缺點是各模塊都采用獨立電源,會使系統(tǒng)復雜,且可能影響電路電平。方案二:

4、采用單片機控制模塊提供電源。改方案的優(yōu)點是系統(tǒng)簡明扼要,節(jié)約成本;缺點是輸出功率不高。綜上所述,我選擇第二種方案。2.2 顯示界面方案該系統(tǒng)要求完成倒計時功能?;谏鲜鲈?,我考慮了二種方案:方案一:采用數(shù)碼管顯示。這種方案只顯示有限的符號和數(shù)碼字符,簡單,方便。方案二:采用點陣式LED 顯示。這種方案雖然功能強大,并可方便的顯示各種英文字符,漢字,圖形等,但實現(xiàn)復雜,且須完成大量的軟件工作。綜上所述,我選擇第一種方案。2.3 輸入方案:題目要求系統(tǒng)能調(diào)節(jié)燈亮時間,并可處理緊急情況,我研究了兩種方案:方案一:采用8155擴展I/O 口及鍵盤,顯示等。該方案的優(yōu)點是:使用靈活可編程,并且有RAM

5、,及計數(shù)器。若用該方案,可提供較多I/O 口,但操作起來稍顯復雜。方案二: 直接在I/O口線上接上按鍵開關。由于該系統(tǒng)對于交通燈及數(shù)碼管的控制,只用單片機本身的I/O 口就可實現(xiàn),且本身的計數(shù)器及RAM已經(jīng)夠用,故選擇方案二。3 單片機交通控制系統(tǒng)總體設計3.1單片機交通控制系統(tǒng)的通行方案設計設在十字路口,分為東西向和南北向,在任一時刻只有一個方向通行,另一方向禁行,持續(xù)一定時間,經(jīng)過短暫的過渡時間,將通行禁行方向對換。其具體狀態(tài)如下圖所示。說明:黑色表示亮,白色表示滅。交通狀態(tài)從狀態(tài)1開始變換,直至狀態(tài)6然后循環(huán)至狀態(tài)1,周而復始,即如圖2.1所示:圖1 交通狀態(tài)通過具體的路口交通燈狀態(tài)的演

6、示分析我們可以把這四個狀態(tài)歸納如下:東西方向紅燈滅,同時綠燈亮,南北方向黃燈滅,同時紅燈亮,倒計時20秒。此狀態(tài)下,東西向禁止通行,南北向允許通行。東西方向綠燈滅,同時黃燈亮,南北方向紅燈亮,倒計時5秒。此狀態(tài)下,除了已經(jīng)正在通行中的其他所以車輛都需等待狀態(tài)轉換。南北方向紅燈滅,同時綠燈亮,東西方向黃燈滅,同時紅燈亮,倒計時20秒。此狀態(tài)下,東西向允許通行,南北向禁止通行。南北方向綠燈滅,同時黃燈亮,東西方向紅燈亮,倒計時5秒。此狀態(tài)下,除了已經(jīng)正在通行中的其他所以車輛都需等待狀態(tài)轉換。下面我們可以用圖表表示燈狀態(tài)和行止狀態(tài)的關系如下:表1交通狀態(tài)及紅綠燈狀態(tài)狀態(tài)1狀態(tài)3狀態(tài)4狀態(tài)6東西向禁行

7、等待變換通行等待變換南北向通行等待變換禁行等待變換東西紅燈1100東西黃燈0001東西綠燈0010南北紅燈0011南北綠燈1000南北黃燈0100東西南北四個路口均有紅綠黃3燈和數(shù)碼顯示管2個,在任一個路口,遇紅燈禁止通行,轉綠燈允許通行,之后黃燈亮警告行止狀態(tài)將變換。狀態(tài)及紅綠燈狀態(tài)如表1所示。說明:0表示滅,1表示亮。3.2 單片機交通控制系統(tǒng)的功能要求本設計能模擬基本的交通控制系統(tǒng),用紅綠黃燈表示禁行,通行和等待的信號發(fā)生,還能進行倒計時顯示,通行時間調(diào)整和緊急處理等功能。(1)倒計時顯示倒計時顯示可以提醒駕駛員在信號燈燈色發(fā)生改變的時間、在“停止”和“通過”兩者間作出合適的選擇。駕駛員

8、和行人普遍都愿意選擇有倒計時顯示的信號控制方式,并且認為有倒計時顯示的路口更安全。倒計時顯示是用來減少駕駛員在信號燈色改變的關鍵時刻做出復雜判斷的1種方法,它可以提醒駕駛員燈色發(fā)生改變的時間,幫助駕駛員在“停止”和“通過”兩者間作出合適的選擇 。(2)時間的設置本設計中可通過鍵盤對時間進行手動設置,增加了人為的可控性,避免自動故障和意外發(fā)生,并再緊急狀態(tài)下,可設置所有燈變?yōu)榧t燈。鍵盤是單片機系統(tǒng)中最常用的人機接口,一般情況下有獨立式和行列式兩種。前者軟件編寫簡單,但在按鍵數(shù)量較多時特別浪費I0口資源,一般用于按鍵數(shù)量少的系統(tǒng)。后者適用于按鍵數(shù)量較多的場合,但是在單片機I0 口資源相對較少而需要

9、較多按鍵時,此方法仍不能滿足設計要求。本系統(tǒng)要求的按鍵控制不多,且I0口足夠,可直接采用獨立式。(3)緊急處理 交通路口出現(xiàn)緊急狀況在所難免,如特大事件發(fā)生,救護車等急行車通過等,我們都必須盡量允許其暢通無阻,畢竟在這種情況下是分秒必爭的,時時刻刻關系著公共財產(chǎn)安全,個人生死攸關等。由此在交通控制中增設禁停按鍵,就可達到想此目的。3.3單片機交通控制系統(tǒng)的基本構成及原理單片機設計交通燈控制系統(tǒng),可用單片機直接控制信號燈的狀態(tài)變化,基本上可以指揮交通的具體通行,當然,接入LED數(shù)碼管就可以顯示倒計時以提醒行使者,更具人性化。本系統(tǒng)在此基礎上,加入了緊急情況處理與時間調(diào)整功能。單片機最小系統(tǒng)外圍接

10、口電路LED數(shù)碼管顯示紅黃綠信號燈按鍵控制電路圖2系統(tǒng)的總體框圖據(jù)此,本設計系統(tǒng)以單片機為控制核心,連接成最小系統(tǒng),由按鍵設置模塊產(chǎn)生輸入,信號燈狀態(tài)模塊,LED倒計時模塊模塊接受輸出。系統(tǒng)的總體框圖如上所示。單片機上電后,系統(tǒng)進入正常工作狀態(tài),執(zhí)行交通燈狀態(tài)顯示控制,同時將時間數(shù)據(jù)倒計時輸入到LED數(shù)碼管上實時顯示。在此過程中隨時調(diào)用急停按鍵和時間調(diào)節(jié)中斷。4智能交通燈控制系統(tǒng)的硬件設計4.1 AT89C51單片機簡介 AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電

11、壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。4.1.1 AT89C51單片機的主要特性 與MCS-51 兼容 ,4K字節(jié)可編程閃爍存儲器 ,壽命:1000寫/擦循環(huán),數(shù)據(jù)保留時間:

12、10年,全靜態(tài)工作:0Hz-24Hz,三級程序存儲器鎖定,128*8位內(nèi)部RAM,32可編程I/O線,兩個16位定時器/計數(shù)器,5個中斷源(兩個外部中斷源和3個內(nèi)部中斷源) ,可編程串行通道,低功耗的閑置和掉電模式,片內(nèi)振蕩器和時鐘電路。 ·時鐘電路:時鐘電路的作用是產(chǎn)生單片機工作所需要的時鐘脈沖序列。 ·中斷系統(tǒng):中斷系統(tǒng)的作用主要是對外部或內(nèi)部的終端請求進行管理與處理。AT89S51共有5個中斷源,其中又2個外部中斷源和3個內(nèi)部中斷源。 圖3 AT89C51系列單片機的內(nèi)部結構示意圖4.1.2 主要引腳功能 圖4 AT89C51引腳圖·VCC:電源電壓

13、3;GND:接地·P0口:P0口是一組8位雙向I0口。P0口即可作地址數(shù)據(jù)總線使用,又可以作為通用的I/O口使用。當CPU訪問片外存儲器時,P0口分時先作低8位地址總線,后作雙向數(shù)據(jù)總線,此時,P0口就不能再作I/O口使用了。在訪問期間激活要使用上拉電阻。·P1口:Pl 是一個帶內(nèi)部上拉電阻的8準位雙向IO口,P1作為通用的I/O口使用。·P2 口:P2 是一個帶有內(nèi)部上拉電阻的8 位準雙向IO 口,P2即可作為通用的I/O口使用,也可以作為片外存儲器的高8位地址總線,與P0口配合,組成16位片外存儲器單元地址。·P3 口:P3 口是一組帶有內(nèi)部上拉電阻

14、的8 位準雙向I0 口。P3 口除了作為通用的I/O口使用之外,每個引腳還具有第二功能,具體分配如表2表2 具有第二功能的P3口引腳端口引腳第二功能: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ù)存儲器讀選通)·RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。WDT 溢出將使該引腳輸出高電平,設置SFR AUXR的DISRT0 位(地址8EH

15、)可打開或關閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態(tài)。·ALE:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE 仍以時鐘振蕩頻率的16 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對F1ash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一條M0VX和M0VC指令ALE才會被激活。此外,該引腳會被微弱拉高

16、,單片機執(zhí)行外部程序時,應設置ALE無效。·程序儲存允許()輸出是外部程序存儲器的讀選通信號,當AT89S51 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次有效,即輸出兩個脈沖。當訪問外部數(shù)據(jù)存儲器,沒有兩次有效的信號。·VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000HFFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。F1ash存儲器編程時,該引腳加上+12V的編程電壓Vcc。·XTAL1:振蕩器反相放大器及內(nèi)

17、部時鐘發(fā)生器的輸入端。4.1.3 MCS51的中斷源8051有5個中斷源,它們是兩個外中斷INT0(P3.2)和INT1(P3.3)、兩個片內(nèi)定時/計數(shù)器溢出中斷TF0和TF1,一個是片內(nèi)串行口中斷TI或RI,這幾個中斷源由TCON和SCON兩個特殊功能寄存器進行控制,其中5個中斷源的程序入口地址如表4所示:表3中斷源程序入口中斷源的服務程序入口地址中斷源入口地址外中斷00003H定時/計數(shù)器0000BH外中斷10013H定時/計數(shù)器0001BH串行口中斷0023H4.2 交通燈中的中斷處理流程()現(xiàn)場保護和現(xiàn)場恢復:有特殊車輛要通過時就要進行中斷,在中斷之前,先將交通燈中斷前情況保護好,當中

18、斷執(zhí)行后再恢復現(xiàn)場,包括信號燈和時間顯示電路。()中斷打開和中斷關閉:為了使特殊車輛通行按一下打開中斷開關就可以打開中斷,關閉中斷開關就關閉中斷。()中斷服務程序:有中斷產(chǎn)生,就必然有其具體的需執(zhí)行的任務,中斷服務程序就是執(zhí)行中斷處理的具體內(nèi)容:即如果南北方向有特殊車輛要求通過,南北方向轉換為綠燈,東西方向為紅燈;如果東西方向有特殊車輛要求通過,東西方向轉換為綠燈,南北方向為紅燈。() 中斷返回:執(zhí)行完中斷服務程序后,必然要返回,即回交通燈信號回到中斷前狀態(tài),顯示時間也和中斷前一樣。4.3 系統(tǒng)硬件總電路構成及原理實現(xiàn)本設計要求的具體功能,可以選用AT89C51單片機及外圍器件構成最

19、小控制系統(tǒng),12個發(fā)光二極管分成4組紅綠黃三色燈構成信號燈指示模塊,8個LED東西南北各兩個構成倒計時顯示模塊,若干按鍵組成時間設置和緊急按鈕。4.3.1系統(tǒng)硬件電路構成本系統(tǒng)以單片機為核心,系統(tǒng)硬件電路由狀態(tài)燈,LED顯示,按鍵,組成。其具體的硬件電路總圖如圖3.1所示。其中P0用于送顯兩片LED數(shù)碼管,P1用于控制紅綠黃發(fā)光二極管,XTAL1和XTAL2接入晶振時鐘電路,REST引腳接上復位電路,P2.6與P2.7對數(shù)碼管進行片選,P3.2即INT0緊急情況處理按鍵,P3.3即INT1接時間調(diào)整中斷按鍵。4.3.2系統(tǒng)工作原理系統(tǒng)上電或手動復位之后,系統(tǒng)先顯示狀態(tài)燈及LED數(shù)碼管,將狀態(tài)碼

20、值送顯P1口,將要顯示的時間值的個位和十位分別送顯P0口,在此同時用軟件方法計時1秒,到達1s就要將時間值減1,刷新LED數(shù)碼管。時間到達一個狀態(tài)所要全部時間,則要進行下一狀態(tài)判斷及銜接,并裝入次狀態(tài)的相應狀態(tài)碼值以及時間值,當然,還要開啟兩個外部中斷,其一為緊急情況處理中斷,一旦信號有效,即K3鍵為低電平時進入中斷服務子程序,東西南北路口的紅燈全亮禁止全部通行,再按一下鍵,中斷結束返回。其二為通行時間調(diào)整中斷,若K4按鍵有效,進入相應的中斷子程序,對時間進行調(diào)整,此后再按K4鍵則中斷結束返回。圖5 基于單片機的交通燈控制系統(tǒng)電路圖4.4其它硬件介紹及連接4.4.1八段LED數(shù)碼管LED顯示屏

21、作為大型顯示設備的一種,具有亮度高、價格低、壽命長、維護簡便等優(yōu)點。LED數(shù)碼管的結構簡單,分為七段和八段兩種形式,也有共陽和共陰之分。以八段共陽管為例,它有8個發(fā)光二極管(比七段多一個發(fā)光二極管,用來顯示dP,即點),每個發(fā)光二極管的陽極連在一起,如圖3.6所示。這樣,一個LED數(shù)碼管就有I根位選線和8根段選線,要想顯示一個數(shù)值,就要分別對它們的高低電平來加以控制。為方便起見,本文主要討論共陽八段LED數(shù)碼顯示管,其他類形的顯示管與其類似。圖6 LED數(shù)碼管LED 燈的顯示原理:通過同名管腳上所加電平的高低來控制發(fā)光二極管是否點亮而顯示不同的字形,如 dp,g,f,e,d,c,b,a全亮顯示

22、為,采用共陽極連接驅動代碼,代碼表如下表5所示。表5 驅動代碼表顯示數(shù)值dp,g,f,e,d,c,b,a驅動代碼0C0H1F9H2A4H3B0H499H592H682H7F8H880H990H相應在程序軟件上,可以通過調(diào)用程序給定的秒值經(jīng)過特定計算算出需要顯示的個位和十位,然后有DPTR調(diào)取LEDMAP的代碼。LED8段數(shù)碼管的設置為每個方位上的一對2為顯示器。四個方位上總共用8個LED接在單片機的IO口上。雖然路口不一樣,但是顯示的時間在數(shù)字上是一樣的,所以兩邊連接的IO口是對稱的。如圖3.7所示,其中A,B分別是P0,P1的網(wǎng)絡標號。圖7 LED連接圖4.4.2 發(fā)光二極管根據(jù)本設計的特點

23、,紅綠燈的顯示不可少,紅綠燈的顯示采用普通的發(fā)光二極管。每個方向上設置紅綠黃燈,總共4組。如果東西紅燈亮,那南北方向就是綠燈亮,反之亦然,所以在硬件上連接圖上也是對稱分布的,如下圖8所示。圖8 信號燈的連接4.4.3 按鍵控制本設計設置了有5個鍵:K1鍵P3.0,K2鍵P3.1,K3鍵P3.2,K4鍵P3.3,K5鍵P3.4,每個按鍵一端接地,另一端接對應的P3端口。低電平有效,當按鍵按下端口接地,單片機捕獲到低電平,從而知道相應的輸入信息。5 系統(tǒng)軟件程序的設計5.1 程序主體設計流程全部控制程序實際上分為若干模塊:鍵盤設置處理程序,狀態(tài)燈控制程序,LED顯示程序緊停程序,中斷服務子程序,紅

24、綠燈時間調(diào)整程序等。整個軟件程序方面主要分兩大部分:主程序部分和中斷處理程序。流程圖如圖9所示。開始系統(tǒng)初始化東西亮綠燈,南北亮紅燈調(diào)顯示子程序(動態(tài)顯示)東西,南北方向換向東西黃燈閃爍,南北亮紅燈燈中斷處理子程序處理返回 圖9 系統(tǒng)總流程圖設計說明:該智能交通燈控制系統(tǒng)的軟件設計采用的是順序執(zhí)行并反復循環(huán)的方法。智能交通燈控制系統(tǒng)在正常工作的情況下,每20s循環(huán)變化一次。每個循環(huán)周期在還剩5s時,正在通行路口的黃燈同時點亮并開始閃爍,以提醒路人上的行人及車輛,交通燈即將發(fā)生變化。在此期間若中斷按鍵按下則轉入中斷服務子程序進行相關操作。5.2 理論基礎知識5.2.1定時器原理定時器工作的基本原

25、理其實就是給初值,讓它不斷加1直至減完為模值,這個初值是送到TH和TL中的。它是以加法記數(shù)的,并能從全1到全0時自動產(chǎn)生溢出中斷請求。因此,我們可以把計數(shù)器記滿為零所需的計數(shù)值,即所要求的計數(shù)值設定為C,把計數(shù)初值設定為TC 可得到如下計算通式:TC=M-C式中,M為計數(shù)器模值。計數(shù)值并不是目的,目的是時間值,設計1次的時間,即定時器計數(shù)脈沖的周期為T0,它是單片機系統(tǒng)主頻周期的12倍,設要求的時間值為T,則有C=TT0。計算通式變?yōu)椋篢=(MTC)T0模值和計數(shù)器工作方式有關。在方式0時M為8192;在方式1時M的值為65536;在方式2和3為256。就此可以算出各種方式的最大延時。如單片機

26、的主脈沖頻率為12MHZ,經(jīng)過12分頻后,若采用方式最大延時只有8.129毫秒,采用方式最大延時也只有65.536毫秒。這就是為什么掃描周期為50ms的原因,若使用軟件則會耽擱程序流程,顯然不可行。相反,時間計時方面卻不可能只用計數(shù)器,因為顯然秒鐘已經(jīng)超過了計數(shù)器的最大定時間,所以我們還必須采用定時器和軟件相結合的辦法才能解決這個問題。5.2.2軟件延時原理MCS-51的工作頻率為12MHZ,機器周期與主頻有關,機器周期是主頻的12倍,所以一個機器周期的時間為12*(1/12MHZ)=1us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過指令的執(zhí)行條數(shù)來確定1秒的時間,但同時由于單片機的

27、運行速度很快其他的指令執(zhí)行時間可以忽略不計。5.2.3 中斷原理本系統(tǒng)主要使用了外部中斷,中斷信號有引腳INT0和INT1輸入,低電平有效,CPU每個時鐘周期都會檢測INT0和INT1上的信號,8051允許外部中斷以電平方式或負邊沿方式兩種中斷方式輸入中斷請求信號,可由用戶通過設置TCON中IT0和IT1位的狀態(tài)來實現(xiàn)。以IT0為例,IT0=0,為電平觸發(fā)方式,IT0=1,為負邊沿觸發(fā)方式,本設計采用電平方式,IE0為其中斷標志位,有中斷信號則置位,中斷服務子程序響應后,IE0自動清零。IE中的EA為允許中斷的總控制位,為1開啟,EX0為外部中斷允許控制位,為1開啟。在優(yōu)先級的允許下,一旦有外

28、部中斷信號產(chǎn)生,單片機CPU首先保護斷點,PC值進棧,然后執(zhí)行相應的中斷服務子程序,執(zhí)行完后,用RETI指令返回,此時CPU會從堆棧中取保存的斷點地址,送回PC,程序再正常執(zhí)行。 5.3子程序模塊設計5.3.1狀態(tài)燈顯示及判斷在本設計中,實際控制的燈只有6個,即:東西紅燈,東西綠燈,東西黃燈,南北紅燈,南北綠燈,南北黃燈。定義IO端口如下,其中均是低電平有效。H_RED BIT P1.0H_YELLOW BIT P1.1H_GREEN BIT P1.2L_RED BIT P1.3L_ YELLOW BIT P1.4L_ GREEN BIT P1.5共有4鐘狀態(tài):東西紅燈亮,南北綠燈亮(0F3H

29、);東西紅燈亮,南北黃燈亮(0F5H);東西綠燈亮,南北紅燈亮(0DEH);東西黃燈亮,南北紅燈亮(0EEH)。括號中是P1端口8個引腳值對應的十六進制碼。用于顯示發(fā)光二極管時,部分程序如下: ;東西紅,南北綠,計時時間為20s MOV P1,#0F3H MOV 60H,61HA1: MOV R1,#50A2: ACALL BCD ACALL DISPCLK DJNZ R1,A2 MOV A,60H MOV R0,60H ADD A,#99H DA A MOV 60H,A CJNE R0,#05H,A15.3.2 LED倒計時顯示LED計時每1秒都要刷新1次,采用的是動態(tài)顯示,首先將R4除以1

30、0H,整數(shù)即十位放在50H中,余數(shù)即個位放在51H中,設置7段LED顯示數(shù)據(jù)的數(shù)據(jù)表,用數(shù)據(jù)指針寄存器DPTR指向數(shù)據(jù)表的首地址,再加上A中的偏移量,就可以指向十位數(shù)字,然后送顯即可,個位顯示同理。具體程序如下:BCD: ;將十位數(shù)送到(51),個位數(shù)送到() MOV A,60H;60H單元放的是倒計時值MOV B,#10HDIV ABMOV 51H,AMOV A,BMOV 50H,ARETDISPCLK: ;顯示部分 MOV DPTR,#TABMOVA,50HMOVCA,A+DPTR MOVP0,A CLRP2.6 LCALLDELAY SETBP2.6 MOVA,51H MOVCA,A+D

31、PTR MOVP0,A CLRP2.7 LCALLDELAY SETBP2.7 RET 5.3.3 緊停及調(diào)整時間中斷子程序緊停按鍵連接到外部中斷引腳P3.2,即INT0捕獲到一個低電平,則進入該中斷進行相關處理。程序如下:;緊急情況處理IINT0: CLR EA JB P3.2,$ PUSH 60H PUSH P1 PUSH P2B0: JNB P3.0,NH JNB P3.1,DH;全紅A9: MOV P1,#0F6H SETB P2.6 SETB P2.7 ACALL DELAY JNB P3.2,B0 JMP JE;只允許東西方向車輛通行NH: MOV P1,#0DEH SETB P2

32、.6 SETB P2.7 ACALL DELAY JNB P3.2,B0 JMP JE;只允許南北方向車輛通行DH: MOV P1,#0F3H SETB P2.6 SETB P2.7 ACALL DELAY JNB P3.2,B0 JMP JEJE: POP P2 POP P1 POP 60H SETB EA RETI5.3.4 紅綠燈時間調(diào)整程序時間調(diào)整按鍵連接到外部中斷引腳P3.3,即INT1捕獲到一個低電平,則進入該中斷進行相關處理。程序如下:;加減程序IINT1: CLR EA JB P3.3,$ PUSH P1 PUSH P2B1: JNB P3.1,DDECIINC: JNB P3

33、.0,SINC ;加1程序 ZINC: ;自動加1 MOV R0,#15 A10: ACALL BCD ACALL DISPCLK DJNZ R0,A10 MOV A,60H ADD A,#01H DA A MOV 60H,A JNB P3.3,B1 JMP JS SINC: ;手動加1 MOV R3,#20 A11: ACALL BCD ACALL DISPCLK DJNZ R3,A11 MOV A,60H ADD A,#01H DA A MOV 60H,AB2: JB P3.3,JS JNB P3.4,SINC JMP B2DDEC: ;減1程序 JNB P3.0,SDEC ZDEC: M

34、OV R4,#15 A12: ACALL BCD ACALL DISPCLK DJNZ R4,A12 MOV A,60H ADD A,#99H DA A MOV 60H,A JB P3.3,JS JMP B1 SDEC: ;手動減1程序 MOV R5,#20 A13: ACALL BCD ACALL DISPCLK DJNZ R5,A13 MOV A,60H ADD A,#99H DA A MOV 60H,A B3: JB P3.3,JS JNB P3.4,SDEC JMP B3 JS: MOV 61H,60H POP P2 POP P1 SETB EA RETI5.4 系統(tǒng)軟件調(diào)試5.4.1

35、 TKS仿真器仿真的概念其實使用非常廣,最終的含義就是使用可控的手段來模仿真實的情況。單片機系統(tǒng)開發(fā)中的仿真包括軟件仿真和硬件仿真。軟件仿真這種方法主要是使用計算機軟件來模擬實際的單片機運行,因此仿真與硬件無關的系統(tǒng)具有一定的優(yōu)點。用戶不需要搭建硬件電路就可以對程序進行驗證,特別適合于偏重算法的程序。軟件仿真的缺點是無法完全仿真與硬件相關的部分,因此最終還要通過硬件仿真來完成最后的設計;硬件仿真使用附加的硬件來替代用戶系統(tǒng)的單片機并完成單片機全部或大部分的功能。使用了附加硬件后用戶就可以對程序的運行進行控制,例如單步、全速、查看資源斷點等。5.4.2 集成開發(fā)環(huán)境KEILKEIL IDE Vi

36、sion2集成開發(fā)環(huán)境主要由以下部分組成: u Vision2 IDE。ision2 IDE包括:一個工程管理器,一個功能豐富并有交互式錯誤提示的編輯器選項設置生成工具,以及在線幫助。使用vision2創(chuàng)建源文件并組成應用工程加以管理。vision2可以自動完成編譯匯編鏈接程序的操作; C51編譯器和A51匯編器。Vision2 IDE創(chuàng)建的源文件可以被C51編譯器或A51匯編器處理生成可重定位的object文件。KEIL C51編譯器遵照ANSI C語言標準支持C語言的所有標準特性,另外還增加了幾個可以直接支持80C51結構的特性。KEIL A51宏匯編器支持80C51及其派生系列的所有指令

37、集; LIB51庫管理器。B51庫管理器可以從由匯編器和編譯器創(chuàng)建的目標文件建立目標庫,這些庫是按規(guī)定格式排列的目標模塊,可在以后被鏈接器所使用當鏈接器處理一個庫時僅僅使用了庫中程序使用了的目標模塊而不是全部加以引用;BL51鏈接器定位器。L51鏈接器使用從庫中提取出來的目標模塊和由編譯器匯編器生成的目標模塊創(chuàng)建一個絕對地址目標模塊,絕對地址目標文件或模塊包括不可重定位的代碼和數(shù)據(jù)所有的代碼和數(shù)據(jù)都被固定在具體的存儲器單元中。利用KEIL開發(fā)和調(diào)試系統(tǒng)軟件流程大致如下:啟動Vision2,進入KEIL軟件的集成開發(fā)環(huán)境;利用KEIL內(nèi)置的文本編輯器進行程序源文件的編輯,因為KEIL集成的文本編

38、輯器對中文支持不是很好,可以選擇其他的編輯器(本文使用的文本編輯器是Ultraedit32),Vision2能夠自動識別外部改變了的源文件;建立工程,指定針對哪種單片機進行開發(fā),指定對源程序的編譯、鏈接參數(shù),指定調(diào)試方式(本文采用外部硬件仿真器仿真調(diào)試的方式,即使TKS仿真器仿真),然后對工程進行相關設置;設置好工程后即可進行編譯、鏈接。連接仿真器對軟件進行調(diào)試。也可以生成下載到單片機存儲器上的HEX文件。5.4.3 系統(tǒng)軟件調(diào)試系統(tǒng)的軟件調(diào)試借助于TKS仿真器,在進行系統(tǒng)軟件的連續(xù)調(diào)試之前要先進行軟件的初調(diào),就是要使各個子程序模塊運行正確,程序的運行流程正確。軟件調(diào)試主要分以下幾個步驟進行:

39、功能子程序的調(diào)試。能子程序的調(diào)試包括運算、采樣、數(shù)字濾波以及PID運算等子程序的調(diào)試。在調(diào)試功能子程序時,許多參數(shù)都是未知的,要根據(jù)其所需的條件,給出假定的數(shù)據(jù),使其運行,如果能完成預定的處理功能或與手工計算的結果相符,就說明該子程序己調(diào)試通過。調(diào)試時由小到大,由里到外。例如,調(diào)試PID算法子程序時,先調(diào)通其包含的各個運算子程序和參數(shù)處理子程序,然后將它們連起來進行通調(diào)。通調(diào)時,也是假定一些數(shù)據(jù)、參數(shù)和初始條件,然后運行程序。當運算結果與手工計算的結果相同時,該算法子程序則調(diào)試完成,反之,就要進行相應的修改。其它子程序的調(diào)試同理;程序流程的調(diào)試。序流程的調(diào)試主要是查看程序運行的步驟是否正確,在

40、某時刻程序運行所處的位置是否正確,是否能正確運行各個中斷服務程序。在調(diào)試過程中,先將PID算法子程序屏蔽,輸出可控硅導通時間用一個固定的常數(shù)代替,在各個中斷服務子程序設置斷點,然后運行程序,查看程序是否能運行到所有的斷點,若所有斷點都能運行到,則程序流程基本正確。去掉所有斷點,再一次運行程序,查看可控硅狀態(tài),從而判斷程序流程正確,反之,若程序流程不正確,做相應的修改后,重新調(diào)試;功能程序與算法程序的通調(diào)。完成整個程序流程的調(diào)試后,將PID等算法子程序加入,在算法子程序前或后設置斷點,運行整個程序。當程序在斷點處暫停時,查看PID計算的控制量與手工計算的值是否相同。多運行幾次,若每次的結果都正確

41、,則說明程序各個部分互相沒有矛盾,反之,則說明算法子程序和其它子程序之間有影響,需要做相應的修改后重新調(diào)。參考文獻:l邊海龍,孫永奎. 單片機開發(fā)與典型工程項目實例詳解J.電子工業(yè)出版社,2008,(10):143-160.2張鑫,華臻,陳書謙. 單片機原理及應用J.電子工業(yè)出版社,2008(5).3黃智偉.凌陽單片機課程設計指導J. 北京航空航天大學出版社,2007,4余錫存 曹國華.單片機原理及接口技術M.陜西:西安電子科技大學出版社,2000.75雷麗文 等.微機原理與接口技術M.北京:電子工業(yè)出版社,1997.2專心-專注-專業(yè)6柴鈺.單片機原理和應用M.西安電子科技大學出版社.7張靖

42、武.單片機系統(tǒng)的PROTUSE設計和仿真M.電子工業(yè)出版社.2007.8唐 工.51單片機工程應用實例M.設計心得體會經(jīng)過兩周的努力工作,終于完成了自己的單片機課程設計。雖說忙碌了點,但我覺得這樣的生活充實且有成就感,當然,也獲益匪淺。在焊接過程中,我學會應先合理的布局,并認真檢查每個元器件,確保無誤后再焊接。還有,不能急于求成,要焊接一個模塊,檢查一個模塊,免得整個版子焊完后再在一大堆線中檢查,這樣不僅效率低且耗時。自然,我也學會如何去發(fā)現(xiàn)問題與解決問題的一些方法。至于軟件設計與調(diào)試,我覺得它主要考驗你的思維邏輯能力及你對指令的熟悉程度??梢哉f再整個軟件設計過程中,我不僅學會了延時的兩種方法

43、,即軟件延時和硬件延時,還掌握數(shù)碼管的兩種顯示方式(即動態(tài)顯示與靜態(tài)顯示)及其如何選擇。當然,通過幾次反復調(diào)試過程,使得我對匯編指令有了更深刻的理解。在整個課程設計過程我還掌握了一下幾點:(1)掌握了電子系統(tǒng)設計的流程,熟悉了各種硬件電路以及軟件編程方法。(2)理解了最單片機的各部分組成及特性。(3)熟練使用了各種計算機輔助設計工具完成設計,充分掌握了這些工具的使用。(4)學會了利用Keil uVision3對匯編語言進行編譯過程.更進一步加深了對PROTEUS軟件的學習。還有,我還發(fā)現(xiàn)自身一些毛病。一,前期準備工作做的不夠好,想的還算多,可就是沒落實。先說選題,就表現(xiàn)自己有畏難情緒,其實當時

44、找到好幾個題目,但交通燈最熟悉,所以就選了它。就這,還沒做的很理想,還有好些功能可以加上去,像通過測流量來自動調(diào)整通行時間,加個監(jiān)控電路,看門狗電路等。二,行動起來不是很賣力,雖說動手還算早,但每天的進展卻不大,可以說做與玩相伴而行。通過本次的課程設計,充分意識到自己所學的東西還是非常有限的,不過通過設計,還是學到了一些書本上沒有學到的東西,為自己以后的學習起了很大的幫助。就我個人而言,很深刻地體會到一點,那就是我們在設計過程中一定要有一個整體的清晰的思路,知道自己的設計的對象的基本功能和核心器件的適用及其作用,只要把握住這些主要方面,一些小問題都將圍繞著這些主要問題而逐步得到解決。同時我也懂

45、得,在整個設計過程中,生活中也一樣,一定要意志堅定,克服自己的畏難情緒,這樣才能將事情做好,才能干出一番成就。 我覺得類似這種課程設計的實踐真的不錯,通過這些項目練習,我自學能力,解決實際問題的能力得到提高,可以說是對綜合素質全面提升,我想這也是我們上大學應真正學到的。附錄附錄一:系統(tǒng)總體原理圖附錄二:系統(tǒng)程序清單 ORG 0000H LJMP START ORG 0003H LJMP IINT0 ORG 0013H LJMP IINT1 ORG 0030HSTART: MOV SP,#6FH ;系統(tǒng)初始化 MOV 61H,#20H MOV 60H,61HLIGHT: SETB EA SETB

46、 EX0 SETB EX1 CLR IT1 CLR IT0 MOV P1,#0F3H ;東西紅,南北綠,計時時間為15s MOV 60H,61HA1: MOV R1,#50A2: ACALL BCD ACALL DISPCLK DJNZ R1,A2 MOV A,60H MOV R0,60H ADD A,#99H DA A MOV 60H,A CJNE R0,#05H,A1 MOV P1,#0F5H ; 東西紅,南北黃燈閃爍5s MOV R2,#5 A3: MOV R1,#50 A4: ACALL BCD ACALL DISPCLK DJNZ R1,A4 CPL P1.1 MOV A,60H ADD A,#99H DA A MOV 60H,A DJNZ R2,A3 MOV P1,#0DEH ;東西綠,南北紅,計時時間20s MOV 60H,61HA5: MOV R1,#50A6: ACALL BCD ACALL DISPCLK DJNZ R1,A6 MOV R0,60H MOV A,60H ADD A,#99H DA A MOV 60H,A CJNE R0,#05H,A5 MOV P1,#0EEH ;南北紅,東西黃燈閃爍5s MOV R2,#5A7: MOV R1,#50 A8: A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論