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

下載本文檔

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

文檔簡介

1、 . . . 1.1. 設計思路設計思路 1 12.1 電源提供方案 12.2 顯示界面方案 22.3 輸入方案:23 3 單片機交通控制系統(tǒng)總體設計單片機交通控制系統(tǒng)總體設計 2 23.1 單片機交通控制系統(tǒng)的通行方案設計 23.2 單片機交通控制系統(tǒng)的功能要求 33.3 單片機交通控制系統(tǒng)的基本構成與原理 44 4 智能交通燈控制系統(tǒng)的硬件設計智能交通燈控制系統(tǒng)的硬件設計 4 44.1 AT89C51AT89C51 單片機簡介 44.1.1 AT89C51 單片機的主要特性 54.1.2 主要引腳功能 54.2 交通燈中的中斷處理流程 74.3 系統(tǒng)硬件總電路構成與原理 84.3.1 系統(tǒng)

2、硬件電路構成 84.3.2 系統(tǒng)工作原理 84.4 其它硬件介紹與連接 94.4.1 八段 LED 數(shù)碼管 95 5 系統(tǒng)軟件程序的設計系統(tǒng)軟件程序的設計 11115.1 程序主體設計流程 115.2 理論基礎知識 125.2.1 定時器原理 125.2.2 軟件延時原理 135.2.3 中斷原理 135.3 子程序模塊設計 135.3.1 狀態(tài)燈顯示與判斷 135.3.2 LED 倒計時顯示 145.3.3 緊停與調(diào)整時間中斷子程序 145.3.4 紅綠燈時間調(diào)整程序 155.4 系統(tǒng)軟件調(diào)試 175.4.1 TKS 仿真器 175.4.2 集成開發(fā)環(huán)境 KEIL17 參考文獻參考文獻.17

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

4、對路面狀況的智能控制。從一定程度上解決了交通路口堵塞、車輛停車等待時間不合理、急車強通等問題。系統(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)基本的交通功能,還

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

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

7、與鍵盤,顯示等。該方案的優(yōu)點是:使用靈活可編程,并且有 RAM,與計數(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)過短暫的過渡時間,將通行禁行方向?qū)Q。其具體狀態(tài)如下圖所示。說明:黑色表示亮,白色表示滅。交通狀態(tài)從狀態(tài) 1 開始變換,直至狀態(tài) 6 然后

8、循環(huán)至狀態(tài) 1,周而復始,即如圖 2.1 所示: . . . 4 / 27圖 1 交通狀態(tài)通過具體的路口交通燈狀態(tài)的演示分析我們可以把這四個狀態(tài)歸納如下:東西方向紅燈滅,同時綠燈亮,南北方向黃燈滅,同時紅燈亮,倒計時 20 秒。此狀態(tài)下,東西向禁止通行,南北向允許通行。東西方向綠燈滅,同時黃燈亮,南北方向紅燈亮,倒計時 5 秒。此狀態(tài)下,除了已經(jīng)正在通行中的其他所以車輛都需等待狀態(tài)轉換。南北方向紅燈滅,同時綠燈亮,東西方向黃燈滅,同時紅燈亮,倒計時 20 秒。此狀態(tài)下,東西向允許通行,南北向禁止通行。南北方向綠燈滅,同時黃燈亮,東西方向紅燈亮,倒計時 5 秒。此狀態(tài)下,除了已經(jīng)正在通行中的其他

9、所以車輛都需等待狀態(tài)轉換。下面我們可以用圖表表示燈狀態(tài)和行止狀態(tài)的關系如下:表 1 交通狀態(tài)與紅綠燈狀態(tài)狀態(tài) 1狀態(tài) 3狀態(tài) 4狀態(tài) 6東西向禁行等待變換通行等待變換南北向通行等待變換禁行等待變換東西紅燈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ā)生,還能

10、進行倒計時顯示,通行時間調(diào)整和緊急處理等功能。(1)倒計時顯示 . . . 5 / 27倒計時顯示可以提醒駕駛員在信號燈燈色發(fā)生改變的時間、在“停止”和“通過”兩者間作出合適的選擇。駕駛員和行人普遍都愿意選擇有倒計時顯示的信號控制方式,并且認為有倒計時顯示的路口更安全。倒計時顯示是用來減少駕駛員在信號燈色改變的關鍵時刻做出復雜判斷的 1 種方法,它可以提醒駕駛員燈色發(fā)生改變的時間,幫助駕駛員在“停止”和“通過”兩者間作出合適的選擇 。(2)時間的設置本設計中可通過鍵盤對時間進行手動設置,增加了人為的可控性,避免自動故障和意外發(fā)生,并再緊急狀態(tài)下,可設置所有燈變?yōu)榧t燈。鍵盤是單片機系統(tǒng)中最常用的

11、人機接口,一般情況下有獨立式和行列式兩種。前者軟件編寫簡單,但在按鍵數(shù)量較多時特別浪費 I0 口資源,一般用于按鍵數(shù)量少的系統(tǒng)。后者適用于按鍵數(shù)量較多的場合,但是在單片機 I0 口資源相對較少而需要較多按鍵時,此方法仍不能滿足設計要求。本系統(tǒng)要求的按鍵控制不多,且 I0 口足夠,可直接采用獨立式。(3)緊急處理 交通路口出現(xiàn)緊急狀況在所難免,如特大事件發(fā)生,救護車等急行車通過等,我們都必須盡量允許其暢通無阻,畢竟在這種情況下是分秒必爭的,時時刻刻關系著公共財產(chǎn)安全,個人生死攸關等。由此在交通控制中增設禁停按鍵,就可達到想此目的。3.3 單片機交通控制系統(tǒng)的基本構成與原理單片機設計交通燈控制系統(tǒng)

12、,可用單片機直接控制信號燈的狀態(tài)變化,基本上可以指揮交通的具體通行,當然,接入 LED 數(shù)碼管就可以顯示倒計時以提醒行使者,更具人性化。本系統(tǒng)在此基礎上,加入了緊急情況處理與時間調(diào)整功能。單片機最小系統(tǒng)外圍接口電路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 智能交通燈控制

13、系統(tǒng)的硬件設計4.1 AT89C51AT89C51 單片機簡介 . . . 6 / 27AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能 CMOS8 位微處理器,俗稱單片機。AT89C2051 是一種帶 2K 字節(jié)閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除 100 次。該器件采用 ATMEL 高密度非易失存儲器制造技術制造,與工業(yè)標準的 MCS-51 指令集和輸出管腳相兼容。由于將多功能 8 位 CPU 和閃爍存儲器組合在單

14、個芯片中,ATMEL 的 AT89C51 是一種高效微控制器,AT89C2051 是它的一種精簡版本。AT89C 單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。4.1.1 AT89C51 單片機的主要特性與 MCS-51 兼容 ,4K 字節(jié)可編程閃爍存儲器 ,壽命:1000 寫/擦循環(huán),數(shù)據(jù)保留時間:10 年,全靜態(tài)工作:0Hz-24Hz,三級程序存儲器鎖定,128*8 位部 RAM,32 可編程 I/O線,兩個 16 位定時器/計數(shù)器,5 個中斷源(兩個外部中斷源和 3 個部中斷源),可編程串行通道,低功耗的閑置和掉電模式,片振蕩器和時鐘電路。時鐘電路:時鐘電路的作用是產(chǎn)生單片機

15、工作所需要的時鐘脈沖序列。中斷系統(tǒng):中斷系統(tǒng)的作用主要是對外部或部的終端請求進行管理與處理。AT89S51 共有 5 個中斷源,其中又 2 個外部中斷源和 3 個部中斷源。圖 3 AT89C51 系列單片機的部結構示意圖4.1.2 主要引腳功能 . . . 7 / 27 圖 4 AT89C51 引腳圖VCC:電源電壓GND:接地P0 口:P0 口是一組 8 位雙向 I0 口。P0 口即可作地址數(shù)據(jù)總線使用,又可以作為通用的 I/O 口使用。當 CPU 訪問片外存儲器時,P0 口分時先作低 8 位地址總線,后作雙向數(shù)據(jù)總線,此時,P0 口就不能再作 I/O 口使用了。在訪問期間激活要使用上拉電阻

16、。P1 口:Pl 是一個帶部上拉電阻的 8 準位雙向 IO 口,P1 作為通用的 I/O 口使用。P2 口:P2 是一個帶有部上拉電阻的 8 位準雙向 IO 口,P2 即可作為通用的 I/O口使用,也可以作為片外存儲器的高 8 位地址總線,與 P0 口配合,組成 16 位片外存儲器單元地址。P3 口:P3 口是一組帶有部上拉電阻的 8 位準雙向 I0 口。P3 口除了作為通用的 I/O 口使用之外,每個引腳還具有第二功能,具體分配如表 2表 2 具有第二功能的 P3 口引腳端口引腳第二功能:P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外中斷 0)P3.3/ IN

17、T1(外中斷 1)P3.4T0(定時計數(shù)器 0 外部輸入)P3.5T1(定時計數(shù)器 1 外部輸入)P3.6/ WR(外部數(shù)據(jù)存儲器寫選通)P3.7/ RD 外部數(shù)據(jù)存儲器讀選通) . . . 8 / 27RST:復位輸入。當振蕩器工作時,RST 引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。WDT 溢出將使該引腳輸出高電平,設置 SFR AUXR 的 DISRT0 位(地址 8EH)可打開或關閉該功能。DISRT0 位缺省為 RESET 輸出高電平打開狀態(tài)。ALE:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低 8 位字節(jié)。即使不訪問外部存儲器,ALE 仍以

18、時鐘振蕩頻率的 16 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個 ALE 脈沖。對 F1ash 存儲器編程期間,該引腳還用于輸入編程脈沖(PROG) 。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的 8EH 單元的 D0 位置位,可禁止 ALE 操作。該位置位后,只有一條 M0VX 和 M0VC 指令 ALE 才會被激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置 ALE 無效。程序儲存允許()輸出是外部程序存儲器的讀選通信號,當 AT89S51 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次有效,即輸出兩個脈沖

19、。當訪問外部數(shù)據(jù)存儲器,沒有兩次有效的信號。VPP:外部訪問允許。欲使 CPU 僅訪問外部程序存儲器(地址為 0000HFFFFH) ,EA 端必須保持低電平(接地) 。需注意的是:如果加密位 LB1 被編程,復位時部會鎖存EA 端狀態(tài)。如 EA 端為高電平(接 VCC 端) ,CPU 則執(zhí)行部程序存儲器中的指令。F1ash 存儲器編程時,該引腳加上+12V 的編程電壓 Vcc。XTAL1:振蕩器反相放大器與部時鐘發(fā)生器的輸入端。4.1.3 MCS51 的中斷源8051 有 5 個中斷源,它們是兩個外中斷 INT0(P3.2)和 INT1(P3.3)、兩個片定時/計數(shù)器溢出中斷 TF0 和 T

20、F1,一個是片串行口中斷 TI 或 RI,這幾個中斷源由 TCON 和SCON 兩個特殊功能寄存器進行控制,其中 5 個中斷源的程序入口地址如表 4 所示:表 3 中斷源程序入口中斷源的服務程序入口地址中斷源入口地址外中斷 00003H定時/計數(shù)器 0000BH外中斷 10013H定時/計數(shù)器 0001BH串行口中斷0023H4.2 交通燈中的中斷處理流程()現(xiàn)場保護和現(xiàn)場恢復:有特殊車輛要通過時就要進行中斷,在中斷之前,先將交通燈中斷前情況保護好,當中斷執(zhí)行后再恢復現(xiàn)場,包括信號燈和時間顯示電路。()中斷打開和中斷關閉:為了使特殊車輛通行按一下打開中斷開關就可以打開中斷,關閉中斷開關就關閉中

21、斷。()中斷服務程序:有中斷產(chǎn)生,就必然有其具體的需執(zhí)行的任務,中斷服務程序就是執(zhí)行中斷處理的具體容:即如果南北方向有特殊車輛要求通過,南北方向轉換為綠燈,東西方向為紅燈;如果東西方向有特殊車輛要求通過,東西方向轉換為綠燈,南北方向為紅燈。() 中斷返回: . . . 9 / 27執(zhí)行完中斷服務程序后,必然要返回,即回交通燈信號回到中斷前狀態(tài),顯示時間也和中斷前一樣。4.3 系統(tǒng)硬件總電路構成與原理實現(xiàn)本設計要求的具體功能,可以選用 AT89C51 單片機與外圍器件構成最小控制系統(tǒng),12 個發(fā)光二極管分成 4 組紅綠黃三色燈構成信號燈指示模塊,8 個 LED 東西南北各兩個構成倒計時顯示模塊,

22、若干按鍵組成時間設置和緊急按鈕。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)碼值送顯 P1 口,將要顯示的時間值的個位和十位分別送顯 P0 口,

23、在此同時用軟件方法計時 1 秒,到達 1s就要將時間值減 1,刷新 LED 數(shù)碼管。時間到達一個狀態(tài)所要全部時間,則要進行下一狀態(tài)判斷與銜接,并裝入次狀態(tài)的相應狀態(tài)碼值以與時間值,當然,還要開啟兩個外部中斷,其一為緊急情況處理中斷,一旦信號有效,即 K3 鍵為低電平時進入中斷服務子程序,東西南北路口的紅燈全亮禁止全部通行,再按一下鍵,中斷結束返回。其二為通行時間調(diào)整中斷,若 K4 按鍵有效,進入相應的中斷子程序,對時間進行調(diào)整,此后再按 K4 鍵則中斷結束返回。 . . . 10 / 2720pFC120pFC21KR134.7KR1422uFC31212MHZS?SW-PBVCCVCCGND

24、GNDGNDVD12VD11VD10VD9VD8VD7VD6VD5VD4VD3VD2VD14.7KR124.7KR114.7KR104.7KR94.7KR84.7KR74.7KR64.7KR54.7KR34.7KR44.7KR14.7KR2東 東 東東 東 東東 東 東東 東 東東 東 東東 東 東P1.5P1.4P1.3P1.2P1.1P1.0東東東東東P1.0/T21P1.1/T2EX2P1.2/ECI3P1.3/CEX04P1.4/CEX15P1.5/CEX26P1.6/CEX37P1.7/CEX48RST9P3.0/RxD10P3.1/TxD11P3.2/INT012P3.3/INT1

25、13P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119VSS20P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P2.7/A1528PSEN29ALE/PROG30EA/VPP31P0.7/AD732P0.6/AD633P0.5/AD534P0.4/AD435P0.3/AD336P0.2/AD237P0.1/AD138P0.0/AD039VCC40IC1P80C51RA+5NK1K2K3東東東東東東東東東東A1f2g3e4d5A6c8DP7b9a10DS1A

26、1f2g3e4d5A6c8DP7b9a10DS30.2KR150.2KR160.2KR170.2KR180.2KR190.2KR200.2KR210.2KR22東東東東東東東Q?2N3904Q?2N3904VCC圖 5 基于單片機的交通燈控制系統(tǒng)電路圖4.4 其它硬件介紹與連接4.4.1 八段 LED 數(shù)碼管LED 顯示屏作為大型顯示設備的一種,具有亮度高、價格低、壽命長、維護簡便等優(yōu)點。LED 數(shù)碼管的結構簡單,分為七段和八段兩種形式,也有共陽和共陰之分。以八段共陽管為例,它有 8 個發(fā)光二極管(比七段多一個發(fā)光二極管,用來顯示 dP,即點),每個發(fā)光二極管的陽極連在一起,如圖 3.6 所示

27、。這樣,一個 LED 數(shù)碼管就有 I 根位選線和8 根段選線,要想顯示一個數(shù)值,就要分別對它們的高低電平來加以控制。為方便起見,本文主要討論共陽八段 LED 數(shù)碼顯示管,其他類形的顯示管與其類似。圖 6 LED 數(shù)碼管LED 燈的顯示原理:通過同名管腳上所加電平的高低來控制發(fā)光二極管是否點亮而顯 . . . 11 / 27示不同的字形,如 dp,g,f,e,d,c,b,a 全亮顯示為,采用共陽極連接驅(qū)動代碼,代碼表如下表 5 所示。表 5 驅(qū)動代碼表顯示數(shù)值dp,g,f,e,d,c,b,a驅(qū)動代碼011010000C0H111111001F9H210100100A4H310110000B0H4

28、1001100199H51001001092H61000001082H711111000F8H81000000080H91001000090H相應在程序軟件上,可以通過調(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ù)本設計的特點,紅

29、綠燈的顯示不可少,紅綠燈的顯示采用普通的發(fā)光二極管。每個方向上設置紅綠黃燈,總共 4 組。如果東西紅燈亮,那南北方向就是綠燈亮,反之亦然,所以在硬件上連接圖上也是對稱分布的,如下圖 8 所示。 . . . 12 / 27圖 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 程序主體設計流程全部控制程序?qū)嶋H上分為若干模塊:鍵盤設置處理程序

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

31、斷按鍵按下則轉入中斷服務子程序進行相關操作。5.2 理論基礎知識5.2.1 定時器原理定時器工作的基本原理其實就是給初值,讓它不斷加 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)T

32、0模值和計數(shù)器工作方式有關。在方式 0 時 M 為 8192;在方式 1 時 M 的值為 65536;在方式 2 和 3 為 256。就此可以算出各種方式的最大延時。如單片機的主脈沖頻率為12MHZ,經(jīng)過 12 分頻后,若采用方式最大延時只有 8.129 毫秒,采用方式最大延時也只有 65.536 毫秒。這就是為什么掃描周期為 50ms 的原因, . . . 14 / 27若使用軟件則會耽擱程序流程,顯然不可行。相反,時間計時方面卻不可能只用計數(shù)器,因為顯然秒鐘已經(jīng)超過了計數(shù)器的最大定時間,所以我們還必須采用定時器和軟件相結合的辦法才能解決這個問題。5.2.2 軟件延時原理MCS-51 的工作

33、頻率為 12MHZ,機器周期與主頻有關,機器周期是主頻的 12 倍,所以一個機器周期的時間為 12*(1/12MHZ)=1us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過指令的執(zhí)行條數(shù)來確定 1 秒的時間,但同時由于單片機的運行速度很快其他的指令執(zhí)行時間可以忽略不計。5.2.3 中斷原理本系統(tǒng)主要使用了外部中斷,中斷信號有引腳 INT0 和 INT1 輸入,低電平有效,CPU每個時鐘周期都會檢測 INT0 和 INT1 上的信號,8051 允許外部中斷以電平方式或負邊沿方式兩種中斷方式輸入中斷請求信號,可由用戶通過設置 TCON 中 IT0 和 IT1 位的狀態(tài)來實現(xiàn)。以 IT0 為

34、例,IT0=0,為電平觸發(fā)方式,IT0=1,為負邊沿觸發(fā)方式,本設計采用電平方式,IE0 為其中斷標志位,有中斷信號則置位,中斷服務子程序響應后,IE0 自動清零。IE 中的 EA 為允許中斷的總控制位,為 1 開啟,EX0 為外部中斷允許控制位,為 1開啟。在優(yōu)先級的允許下,一旦有外部中斷信號產(chǎn)生,單片機 CPU 首先保護斷點,PC 值進棧,然后執(zhí)行相應的中斷服務子程序,執(zhí)行完后,用 RETI 指令返回,此時 CPU 會從堆棧中取保存的斷點地址,送回 PC,程序再正常執(zhí)行。 5.3 子程序模塊設計5.3.1 狀態(tài)燈顯示與判斷在本設計中,實際控制的燈只有 6 個,即:東西紅燈,東西綠燈,東西黃

35、燈,南北紅燈,南北綠燈,南北黃燈。定義 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) ;東西紅燈亮,南北黃燈亮(0F5H) ;東西綠燈亮,南北紅燈亮(0DEH) ;東西黃燈亮,南北紅燈亮(0EEH) 。括號中是 P1 端口 8 個引腳值對應的十六進制碼。用于顯示發(fā)光二極管時,部分程序如下: ;東西紅,南北綠,計時時間為 20s MOV P1,#0F3H MOV

36、60H,61HA1: MOV R1,#50A2: ACALL BCD ACALL DISPCLK DJNZ R1,A2 MOV A,60H . . . 15 / 27 MOV R0,60H ADD A,#99H DA A MOV 60H,A CJNE R0,#05H,A15.3.2 LED 倒計時顯示LED 計時每 1 秒都要刷新 1 次,采用的是動態(tài)顯示,首先將 R4 除以 10H,整數(shù)即十位放在 50H 中,余數(shù)即個位放在 51H 中,設置 7 段 LED 顯示數(shù)據(jù)的數(shù)據(jù)表,用數(shù)據(jù)指針寄存器 DPTR 指向數(shù)據(jù)表的首地址,再加上 A 中的偏移量,就可以指向十位數(shù)字,然后送顯即可,個位顯示同

37、理。具體程序如下:BCD: ;將十位數(shù)送到(51) ,個位數(shù)送到() MOV A,60H;60H 單元放的是倒計時值MOV B,#10HDIV ABMOV 51H,AMOV A,BMOV 50H,ARETDISPCLK: ;顯示部分 MOV DPTR,#TABMOV A,50HMOVCA,A+DPTR MOV P0,A CLR P2.6 LCALLDELAY SETBP2.6 MOV A,51H MOVCA,A+DPTR MOV P0,A CLR P2.7 LCALLDELAY SETBP2.7 RET 5.3.3 緊停與調(diào)整時間中斷子程序緊停按鍵連接到外部中斷引腳 P3.2,即 INT0 捕

38、獲到一個低電平,則進入該中斷進行相關處理。程序如下:;緊急情況處理IINT0: CLR EA P3.2,$ PUSH 60H PUSH P1 . . . 16 / 27 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.6 SETB P2.7 ACALL DELAY JNB P3.2,B0 JMP JE;只允許南北方向車輛通行DH: MOV P1,#0F3H SET

39、B 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 P3.3,$ PUSH P1 PUSH P2B1: JNB P3.1,DDECIINC: JNB P3.0,SINC ;加 1 程序 . . . 17 / 27 ZINC: ;自動加 1 MOV R0,#15 A10: ACALL BCD ACALL

40、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: P3.3,JS JNB P3.4,SINC JMP B2DDEC: ;減 1 程序 JNB P3.0,SDEC ZDEC: MOV R4,#15 A12: ACALL BCD ACALL DISPCLK DJNZ R4,A12 MOV A,6

41、0H ADD A,#99H DA A MOV 60H,A P3.3,JS JMP B1 SDEC: ;手動減 1 程序 MOV R5,#20 A13: ACALL BCD ACALL DISPCLK DJNZ R5,A13 . . . 18 / 27 MOV A,60H ADD A,#99H DA A MOV 60H,A B3: P3.3,JS JNB P3.4,SDEC JMP B3JS: MOV 61H,60H POP P2 POP P1 SETB EA RETI5.4 系統(tǒng)軟件調(diào)試5.4.1 TKS 仿真器仿真的概念其實使用非常廣,最終的含義就是使用可控的手段來模仿真實的情況。單片機系統(tǒng)

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

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

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

45、器(本文使用的文本編輯器是 Ultraedit32), . . . 19 / 27Vision2 能夠自動識別外部改變了的源文件;建立工程,指定針對哪種單片機進行開發(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)試主要分以下幾個步驟進行:功能

46、子程序的調(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)試主要是查看程序運行的步驟是否正確

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

48、次的結果都正確,則說明程序各個部分互相沒有矛盾,反之,則說明算法子程序和其它子程序之間有影響,需要做相應的修改后重新調(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 . . . 20 / 276柴鈺.單片機原理和應用M.電子科技大學.7靖武.單片機系統(tǒng)的 PROTU

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

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

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

52、也一樣,一定要意志堅定,克服自己的畏難情緒,這樣才能將事情做好,才能干出一番成就。我覺得類似這種課程設計的實踐真的不錯,通過這些項目練習,我自學能力,解決實際問題的能力得到提高,可以說是對綜合素質(zhì)全面提升,我想這也是我們上大學應真正學到的。 . . . 21 / 27附錄附錄一:系統(tǒng)總體原理圖20pFC120pFC21KR134.7KR1422uFC31212MHZS?SW-PBVCCVCCVCCGNDGNDGNDVD12VD11VD10VD9VD8VD7VD6VD5VD4VD3VD2VD14.7KR124.7KR114.7KR104.7KR94.7KR84.7KR74.7KR64.7KR54

53、.7KR34.7KR44.7KR14.7KR2東 東 東東 東 東東 東 東東 東 東東 東 東東 東 東P1.5P1.4P1.3P1.2P1.1P1.0東東東東東P1.0/T21P1.1/T2EX2P1.2/ECI3P1.3/CEX04P1.4/CEX15P1.5/CEX26P1.6/CEX37P1.7/CEX48RST9P3.0/RxD10P3.1/TxD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119VSS20P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2

54、.4/A1225P2.5/A1326P2.6/A1427P2.7/A1528PSEN29ALE/PROG30EA/VPP31P0.7/AD732P0.6/AD633P0.5/AD534P0.4/AD435P0.3/AD336P0.2/AD237P0.1/AD138P0.0/AD039VCC40IC1P80C51RA+5NK1K2K3東東東東東東東東東東A1f2g3e4d5A6c8DP7b9a10DS1A1f2g3e4d5A6c8DP7b9a10DS30.2KR150.2KR160.2KR170.2KR180.2KR190.2KR200.2KR210.2KR22東東東東東東東Q?2N3904Q?

55、2N3904VCC附錄二:系統(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 EX0 SETB EX1 . . . 22 / 27 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

溫馨提示

  • 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

提交評論