




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機的控制系統(tǒng)課程設計 目錄第1章 緒論1.1 交通燈研究的背景和意義1.2 交通燈國內外發(fā)展概況第2章系統(tǒng)工作原理及設計方案2.1 交通燈的工作原理2.2 交通燈總體設計方案第3章 硬件系統(tǒng)設計3.1 硬件系統(tǒng)組成第4章 交通燈軟件設計4.1 軟件總體設計思想4.2 交通控制算法實現(xiàn)4.3 系統(tǒng)初始化模塊4.4信息顯示模塊4.5鍵盤掃描模塊第5章 調式總結參考文獻附 錄附錄一 程序清單附錄二 交通燈電路原理圖第1章 緒論1.1 交通燈研究的背景和意義交通是城市經濟活動的命脈,對城市經濟發(fā)展、人民生活水平的提高起著十分重要的作用。城市交通問題是困擾城市發(fā)展、制約城市經濟建設的重要因素。城市道
2、路增長的有限與車輛增加的無限這一對矛盾是導致城市交通擁擠的根本原因。城市街道網絡上的交通容量的不斷增加,表明車輛對道路容量的要求仍然很高,短期內還不可能改變。自從開始使用計算機控制系統(tǒng)后,不管在控制硬件里取得什么樣的實際進展,交通控制領域的控制邏輯方面始終沒能取得重大突破??梢钥隙ǖ恼f,對于減輕交通擁塞及其副作用一特別是對于大的交通網絡而言,仍然缺乏一種真正的交通響應控制策略。計算機硬件能力與控制軟件能力很不相符,由此造成的影響是很多交通控制策略根本不能實現(xiàn)。在少數(shù)幾個例子中,一些新的控制策略確實能得以實現(xiàn),但他們卻沒能對早期的控制策略進行改進。由于缺乏能提高交通狀況、特別是缺乏擁塞網絡交通狀
3、況的實時控制策略,幾乎可以說真正成熟的控制策略仍然不存在.智能化和集成化是城市交通信號控制系統(tǒng)的發(fā)展趨勢和研究前沿,而針對交通系統(tǒng)規(guī)模復雜性特征的控制結構和針對城市交通瓶頸問題并代表智能決策的阻塞處理則是智能交通控制優(yōu)化管理的關鍵和突破口。因此,研究基于智能集成的城市交通信號控制系統(tǒng)具有相當?shù)膶W術價值和實用價值。把智能控制引入到城市交通控制系統(tǒng)中,未來的城市交通控制系統(tǒng)才能適應城市交通的發(fā)展。從長遠來看該研究具有巨大的現(xiàn)實意義。1.2 交通燈國內外發(fā)展概況隨著經濟的發(fā)展,城市現(xiàn)代化程度不斷提高,交通需求和交通量迅速增長,城市交通網絡中交通擁擠日益嚴重,道路運輸所帶來的交通擁堵、交通事故和環(huán)境污
4、染等負面效應也日益突出,逐步成為經濟和社會發(fā)展中的全球性共同問題。交通問題已經日益成為世界性的難題,城市交通事故、交通阻塞和交通污染問題愈加突出。為了解決車和路的矛盾,常用的有兩種方法:一是控制需求,最直接的辦法就是限制車輛的增加;二是增加供給,也就是修路。但是這兩個辦法都有其局限性。交通是社會發(fā)展和人民生活水平提高的基本條件,經濟的發(fā)展必然帶來出行的增加,而且在我國汽車工業(yè)正處在起步階段的時期,因此限制車輛的增加不是解決問題的好方法。而采取增加供給,即大量修筑道路基礎設施的方法,在資源、環(huán)境矛盾越來越突出的今天,面對越來越擁擠的交通,有限的源和財力以及環(huán)境的壓力,也將受到限制。這就需要依靠除
5、限制需求和提供道路設施之外的其他方法來滿足日益增長的交通需求。交通系統(tǒng)正是解決這一矛盾的途徑之一。智能交通系統(tǒng)是將先進的信息技術、數(shù)據(jù)通訊傳輸技術、電子傳感技術、電子控制技術及計算機處理技術等有效的集成運用于整個地面交通管理系統(tǒng)而建立的一種在大范圍內、全方位發(fā)揮作用的實時、準確、高效的綜合交通運輸管理系統(tǒng)。對城市交通流進行智能控制,可以使道路暢通,提高交通效率。合理進行交通控制可以對交通流進行有效的引導和調度,使交通保持在一個平穩(wěn)的運行狀態(tài),從而避免或緩和交通擁擠狀況,大大提高交通運輸?shù)倪\行效率,還可以減少交通事故,增加交通安全,降低污染程度,節(jié)省能源消耗,本文就是通過對交叉路口交通信號的智能
6、控制,達到優(yōu)化路口交通流的目的 進入20世紀70年代,隨著計算機技術和自動控制技術的發(fā)展,以及交通流理論的不斷完善,交通運輸組織與優(yōu)化理論和技術水平不斷提高,控制手段越來越先進,形成了一批商水平有實效的城市道路交通控制系統(tǒng)。早在1977年,Pappis等人就將模糊控制運用到交通控制上,通過建立規(guī)則庫或是專家系統(tǒng)對各種交通狀況進行模糊控制,并取得了很好的效果。近年來,歐美日本等相繼建立了智能交通控制系統(tǒng)。在這些系統(tǒng)中,大部分都在路口附近安裝磁性環(huán)路檢測器,還使用了新型檢測器等技術和設備。這些現(xiàn)代化設備技術加上控制理論和現(xiàn)代化科學管理技術,使得交通控制系統(tǒng)日益完善。隨著一些研究控制理論的學者投身到
7、交通控制的研究中,在交通信號控制領域提出了一些新方法、新思路。如靜態(tài)多段配時控制、準動態(tài)多段配時控制、最優(yōu)控制、大系統(tǒng)遞階控制、模糊控制、神經網絡控制,網絡路由控制等。模糊交通控制已經成為了交通信號控制的主流方向之一。國內外很多學者都進行了此類研究。 交通系統(tǒng)作為一個時變的、具有隨機性的復雜系統(tǒng),傳統(tǒng)的人為設定多種方案或是建立各種預測模型均比較困難。城市交通控制研究的起源比較早。1868年,英國倫敦燃汽信號燈的問世,標志著城市交通控制的開始。1913年,在美國俄亥俄州的Cleveland市出現(xiàn)了世界上最早的交通信號控制。1926年美國的芝加哥市采用了交通燈控制方案,每個交叉口設有唯一的交通燈,
8、適用于單一的交通流。從此,交通控制技術和相關的控制算法得到了發(fā)展和改善,提高了交通控制的安全性、有效性,并減少了對環(huán)境的影響。雖然模糊控制能有效處理模糊信息,但是產生的規(guī)則比較粗糙,利用規(guī)則表查表進行控制,運算速度雖然比較快,但沒有自學習功能。而且這些研究有些以相序固定為前提。不能保證相序與實際交通流狀況的一致性,影響了綠燈時間的利用率。有些研究則提出了可變相序的模糊控制方法,提高了綠燈時間的利用率,彌補了相序固定的缺點,但同時也存在一些不足。例如目前應用比較好的交通系統(tǒng):SCOOT(經典交通系統(tǒng)),他們都是主要采用統(tǒng)計模型和經典算法。但城市交通系統(tǒng)是一個復雜的、隨機性很強的巨型系統(tǒng),要想建立
9、實用性較強的數(shù)學模型是十分困難。利用模糊控制智能控制技術進行交叉口信號燈控制能取得比定時控制與感應控制更好的效果,是今后單交叉路口信號燈控制的主要研究方向。第2章系統(tǒng)工作原理及設計方案2.1 交通燈的工作原理采用單片機的I/O口P1、P2和P3.6、P3.7直接和交通燈連接,P0、P4口通過限流電阻和三極管接LED數(shù)碼管??刂瞥绦蚍旁赟TC10F04單片機的ROM中,在十字路口的四組紅、黃、綠交通燈中,由單片機P1.0-P1.7,P2.0-P2.7和P3.6、P3.7控制,由于交通燈為發(fā)光二極管且陽極通過限流電阻和電源正極連接,因此I/O口輸出低電平時,與之相連的相應指示燈會亮,并通過LED數(shù)
10、碼管顯示時間倒計時。I/O輸出高電平時,相應指示燈會滅。緊急車請求通過的信號由人工控制,以中斷方式輸入單片機,無緊急車通過時,中斷引腳INT0(P3.2)通過電阻和電源正極連接為高電平,不產生中斷,單片機執(zhí)行主程序,有緊急車通過時,中斷引腳INT0(P3.2)采用人工方法接地為低電平,產生中斷請求,單片機執(zhí)行中斷服務程序,讓緊急車通過,緊急車通過后,中斷引腳INT0(P3.2)變?yōu)楦唠娖?,返回主程序。方程式控制通過的信號由人工控制,以中斷方式輸入單片機,不需調整周期時,中斷引腳INT1(P3.3)通過電阻和電源正極連接為高電平,不產生中斷請求,單片機執(zhí)行主程序,當車輛多需要增加主干道通車時間時
11、,中斷引腳INT1(P3.3)采用人工方法接地為低電平,產生中斷請求,單片機執(zhí)行中斷服務程序,系統(tǒng)以方程式控制,按一次開關按鈕A1執(zhí)行方程式A,按兩次開關按鈕A1時執(zhí)行方程式B,按三次開關按鈕A1時執(zhí)行方程式C。當按四次時,中斷引腳為高電平,返回主程序。 2.2 交通燈總體設計方案目前設計交通燈的方案有很多,有應用CPLD實現(xiàn)交通信號燈控制器的設計,有應用PLC實現(xiàn)對交通燈控制系統(tǒng)的設計。有應用單片機實現(xiàn)對交通信號燈設計的方法。由于STC10F04單片機自帶有2個計數(shù)器,6個中斷源,能滿足系統(tǒng)的設計要求。用單片機設計不但設計簡單,而且成本低。用其設計的交通燈也滿足了要求,所以本文采用單片機設計
12、交通燈。設計一個十字路口交通燈控制電路,根據(jù)設定好的周期時間能夠指揮車輛在十字路口完成左轉和直行交替運行。在相同的時間里提高通車的質量、效率。并能在高峰期根據(jù)實際狀況結合方程式控制按鈕來調整主次干道的通車時間,降低交通擁擠堵塞現(xiàn)象。并使交通控制系統(tǒng)具有緊急控制,使救護車、救護車通過時, 使兩個方向均亮紅燈,救護車和消防車通過后,恢復原來狀態(tài),增加對出現(xiàn)特殊情況的處理能力。采用STC10F04單片機作為控制器,通行倒計時顯示采用LED數(shù)碼管,通行指示燈采用發(fā)光二極管,LED顯示采用動態(tài)掃描,以節(jié)省端口數(shù)。特殊緊急車輛通行采用實時中斷完成。車流量變大時,可通過方程式開關控制按鈕A1改變十字路口各個
13、方向的通車時間,使交通更順暢,減少堵塞。按以上系統(tǒng)構架設計,STC10F04單片機端口剛好滿足要求。該系統(tǒng)具有電路簡單,設計方便,耗電較少,可靠性高等特點。(1)各個方向除了要有紅、黃、綠燈指示外,每一種燈亮的時間都用數(shù)碼管顯示器進行顯示(采用倒計時的方法)。(2)正常狀態(tài)下主干道通車東西向通行時間為80s,南北向通行時間為60s,緩沖時間為3s。(3)車流量增大時通過方程式控制按鈕手動控制延長主干道通車時間,有三個方程式,分別為A、B、C方程。(4)紅、綠信號燈轉換時,需亮3s的黃燈作為過渡,以使行駛中的車輛有時間??康浇芯€以外。第3章 硬件系統(tǒng)設計3.1 硬件系統(tǒng)組成3.1.1 單片機最
14、小系統(tǒng)單片機的最小系統(tǒng)包括電源(地),晶振(一般使用11.0592M或者12M),復位電路,單片機內裝入程序。有了以上三塊內容,單片機就能夠工作了。另外要注意的一點是,EA(31腳)也要接高電平,即接到電源+5V。告訴單片機不使用片外存儲器,這樣單片機系統(tǒng)才會老老實實地執(zhí)行你燒寫進去的程序。下圖3-1就是單片機最小系統(tǒng)示意圖: 圖3-1 最小系統(tǒng)電路圖STC10F04單片機是單時鐘/機器周期(IT)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內部集成高可靠復位電路,針對高速通信,智能控制,強干擾場合。 STC10F04單片機的定
15、時器0 /定時器1/串行口與傳統(tǒng)8051兼容,增加了獨特波特率發(fā)生器,省去了定時器2。傳統(tǒng)8051的1111條指令執(zhí)行速度全面提速,最快的指令快24倍,最慢的指令快3倍。STC10F04單片機采用了40Pin封裝的雙列直接DIP結構,如圖3-2是它們引腳配置圖3-2 STC10F04引腳配置40個引腳中正電源和地線兩根,外置石英震蕩器的時鐘線兩根,共有36個I/O。·VCC:電源電壓·GND:地·P0口:P0口是一組8位漏極開路型雙向I0口,也即地址數(shù)據(jù)總線復用口。作為輸出口用時,每位能驅動8個TTL邏輯門電路,對端口寫“l(fā)”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存
16、儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數(shù)據(jù)總線復用,在訪問期間激活內部上拉電阻。·P1口:Pl 是一個帶內部上拉電阻的8位雙向IO口,Pl的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“l(fā)”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。Flash編程和程序校驗期間,Pl接收低8位地址。·P2 口:P2 是一個帶有內部上拉電阻的8 位雙向IO 口,P2 的輸出緩沖級可驅動(吸收或輸出電流)4 個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把
17、端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVXDPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVXRi 指令)時,P2 口線上的內容(也即特殊功能寄存器(SFR)區(qū)中P2寄存器的內容),在整個訪問期間不改變。Flash編程或校驗時,P2亦接收高位地址和其它控制信號。·P3 口:P3 口是一組帶有內部上拉電阻的8 位雙向I0 口。P3 口輸出緩沖級可驅動(吸收或輸出電流)4 個TTL邏輯門電路。對P3口寫入“
18、l”時,它們被內部上拉電阻拉高并可作為輸入端口。作輸入端時,被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I0口線外,更重要的用途是它的第二功能,如下表3-1所示:表3-1具有第二功能的P1口引腳端口引腳 第二功能:P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外中斷0)P3.3 / INT1(外中斷1)P3.4 T0(定時計數(shù)器0外部輸入)P3.5 T1(定時計數(shù)器1外部輸入)P3.6 / WR(外部數(shù)據(jù)存儲器寫選通)P3.7 / RD外部數(shù)據(jù)存儲器讀選通)P3口還接收一些用于Flash閃速存儲器編程和程序校驗的控制信號。·
19、;RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。WDT 溢出將使該引腳輸出高電平,設置SFR AUXR的DISRT0 位(地址8EH)可打開或關閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態(tài)。·ALE:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE 仍以時鐘振蕩頻率的16 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對F1ash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要
20、,可通過對特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一條M0VX和M0VC指令ALE才會被激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE無效。·程序儲存允許()輸出是外部程序存儲器的讀選通信號,當AT89S51 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次有效,即輸出兩個脈沖。當訪問外部數(shù)據(jù)存儲器,沒有兩次有效的信號。·VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000HFFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態(tài)。
21、如EA端為高電平(接VCC端),CPU則執(zhí)行內部程序存儲器中的指令。F1ash存儲器編程時,該引腳加上+12V的編程電壓Vpp。·XTAL1:振蕩器反相放大器及內部時鐘發(fā)生器的輸入端。·XTAL2:來自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅動器件,XTAL2應不接。有余輸入至內部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。3.1.2 信號顯示驅動電路 圖3-3 三極管電路圖三極管放大作用是通過
22、小電流控制大電流晶體三極管是一種電流控制元件。發(fā)射區(qū)與基區(qū)之間形成的PN結稱為發(fā)射結,而集電區(qū)與基區(qū)形成的PN結稱為集電結。晶體三極管按材料分常見的有兩種:鍺管和硅管。而每一種又有NPN和PNP兩種結構形式,使用最多的是硅NPN和PNP兩種,兩者除了電源極性不同外,其工作原理都是相同的,三極管工作在放大區(qū)時,三極管發(fā)射結處于正偏而集電結處于反偏,集電極電流Ic受基極電流Ib的控制,Ic 的變化量與Ib變化量之比稱作三極管的交流電流放大倍數(shù)(=Ic/Ib, 表示變化量。)在實際使用中常常利用三極管的電流放大作用,通過電阻轉變?yōu)殡妷悍糯笞饔?。三極管是電流放大器件,有三個極,分別叫做集電極C,基極B
23、,發(fā)射極E。分成NPN和PNP兩種。我們僅以NPN三極管的共發(fā)射極放大電路為例來說明一下三極管放大電路的基本原理。 圖3-4 三極管放大電路原理圖下面的分析僅對于NPN型硅三極管。如上圖3-4所示,我們把從基極B流至發(fā)射極E的電流叫做基極電流Ib;把從集電極C流至發(fā)射極E的電流叫做集電極電流Ic。這兩個電流的方向都是流出發(fā)射極的,所以發(fā)射極E上就用了一個箭頭來表示電流的方向。三極管的放大作用就是:集電極電流受基極電流的控制(假設電源能夠提供給集電極足夠大的電流的話),并且基極電流很小的變化,會引起集電極電流很大的變化,且變化滿足一定的比例關系:集電極電流的變化量是基極電流變化量的倍,即電流變化
24、被放大了倍,所以我們把叫做三極管的放大倍數(shù)(一般遠大于1,例如幾十,幾百)。如果我們將一個變化的小信號加到基極跟發(fā)射極之間,這就會引起基極電流Ib的變化,Ib的變化被放大后,導致了Ic很大的變化。如果集電極電流Ic是流過一個電阻R的,那么根據(jù)電壓計算公式U=R*I可以算得,這電阻上電壓就會發(fā)生很大的變化。我們將這個電阻上的電壓取出來,就得到了放大后的電壓信號了。 3.1.3 鍵盤輸入電路單片機鍵盤有獨立鍵盤和矩陣式鍵盤兩種:獨立鍵盤每一個I/O 口上只接一個按鍵,按鍵的另一端接電源或接地(一般接地),這種接法程序比較簡單且系統(tǒng)更加穩(wěn)定;而矩陣式鍵盤式接法程序比較復雜,但是占用的I/O少。根據(jù)本
25、設計的需要這里選用了獨立式鍵盤接法。獨立式鍵盤的實現(xiàn)方法是利用單片機I/O口讀取口的電平高低來判斷是否有鍵按下。將常開按鍵的一端接地,另一端接一個I/O 口,程序開始時將此I/O口置于高電平,平時無鍵按下時I/O口保護高電平。當有鍵按下時,此I/O 口與地短路迫使I/O 口為低電平。按鍵釋放后,單片機內部的上拉電阻使I/O口仍然保持高電平。我們所要做的就是在程序中查尋此I/O口的電平狀態(tài)就可以了解我們是否有按鍵動作了。在用單片機對鍵盤處理的時候涉及到了一個重要的過程,那就是鍵盤的去抖動。這里說的抖動是機械的抖動,是當鍵盤在未按到按下的臨界區(qū)產生的電平不穩(wěn)定正常現(xiàn)象,并不是我們在按鍵時通過注意可
26、以避免的。這種抖動一般10200毫秒之間,這種不穩(wěn)定電平的抖動時間對于人來說太快了,而對于時鐘是微秒的單片機而言則是慢長的。為了提高系統(tǒng)的穩(wěn)定,我們必須去除或避開它。目前的技術有硬件去抖動和軟件去抖動,硬件去抖動就是用部分電路對抖動部分加之處理,但是實現(xiàn)的難度較大又會提高了成本。軟件去抖動不是去掉抖動,而是避抖動部分的時間,等鍵盤穩(wěn)定了再對其處理。所以這里選擇了軟件去抖動,實現(xiàn)法是先查尋按鍵當有低電平出現(xiàn)時立即延時10200毫秒以避開抖動(經典值為20毫秒),延時結束后再讀一次I/O 口的值,這一次的值如果為1 表示低電平的時間不到10200 毫秒,視為干擾信號。當讀出的值是0時則表示有按鍵按
27、下,調用相應的處理程序。硬件電路如圖3-5所示: 圖3-5 鍵盤控制電路圖第4章 交通燈軟件設計4.1 軟件總體設計思想本程序由主程序,定時中斷子程序和外部中斷子程序組成。主程序主要負責系統(tǒng)初始化和等待中斷,定時中斷子程序主要負責數(shù)碼管顯示刷新和紅黃綠燈各種狀態(tài)切換。外部中斷子程序負責緊急情況處理和處理完成恢復。STC10F04計數(shù)的起停由STC10F04的P0和P4口控制,STC10F04的P0和P4口輸出1時,STC10F04開始計數(shù),交通燈按正常狀態(tài)切換工作,P0和P4口輸出0時,計數(shù)器停止工作,交通燈不再按正常狀態(tài)切換。STC10F04開始計數(shù)后每200ms發(fā)出一個中斷申請信號,在中斷
28、子程序中先刷新數(shù)碼管,然后判斷當前狀態(tài),進入相應的處理程序進行處理。當有緊急情況時進入外部中斷服務子程序,先讓STC10F04停止計數(shù),然后點亮所有的紅燈,下一次外部中斷處理時,恢復原來的交通燈狀況。程序流程圖如下圖4-1、4-2所示:設置字型碼和字位碼,完成顯示初始化外部中斷定義狀態(tài)數(shù)組宏定義返回while(1)函數(shù)進入while(1)循環(huán)I/O初始化定義字位碼函數(shù)定義共陰極字型編碼表調用顯示控制函數(shù)statusdis()進入主函數(shù)main()定義函數(shù)變量并初始化定時器0初始化調用dissmg()函數(shù) 圖4-1 主程序流程圖INT1INT0 保護現(xiàn)場保護現(xiàn)場方程式控制顯示紅燈全亮維持10S恢
29、復現(xiàn)場恢復現(xiàn)場中斷返回中斷返回 圖4-2中斷子程序4.2 交通控制算法實現(xiàn)定時中斷子程序是本設計的重點,負責完成數(shù)碼管輸出數(shù)據(jù)刷新和各個狀態(tài)的處理切換。中斷子程序包括數(shù)碼管輸出數(shù)據(jù)刷新程序和各狀態(tài)處理程序。中斷程序的流程圖如圖4-3所示。定義1s定時中斷入口設置字型碼和字位碼,完成數(shù)碼管倒計時顯示啟動定時器中斷 關閉定時器0初始化定時器0 計數(shù)變量自加1 圖4-3 定時中斷流程圖 我們由在主程序中設定的初值可知0定時毫秒這樣每當0到5毫秒時CPU就響應它的溢出中斷請求,進入他的中斷服務子程序。在中斷服務子程序中,CPU先使軟件計數(shù)器加,然后判斷它是否為200。為零表示秒已到可以返回到輸出時間顯
30、示程序。并使計數(shù)器變量清0.4.3 系統(tǒng)初始化模塊主程序負責系統(tǒng)的初始化,然后數(shù)碼管數(shù)據(jù)輸出顯示,同時檢測PC鍵盤按鍵,有按鍵按下就退出程序。系統(tǒng)初始化包括STC10F04的初始化,定時器、外部中斷向量初始化以及設置交通燈工作的初始狀態(tài)。由于定時器/計數(shù)器的各種功能是由軟件來確定的,所以在使用它之前,應對其進行編程初始化。初始化的主要內容是對TCON和TMOD編程,計算和裝載T0和T1的計數(shù)初值。由設計要求可知,定時器T0的工作方式為1。單片機定時/計數(shù)器初值計算公式:T初值=2N 定時時間機器周期時間 ,機器周期=12/fosc。根據(jù)TMOD=0X01、TH0=0xee、TL0=0x00可得
31、出定時器工作在方式1,所以N=16。T初值=0xee00=60928 。又因為fosc=11.0592 ,所以根據(jù)上面的公式得:60928=216定時時間/12/11.0592 最后得出定時時間=5ms。4.4信息顯示模塊4.4.1 信號燈模塊信息顯示模塊包括發(fā)光二極管模塊和LED倒計時顯示子模塊。程序中開始是先定義發(fā)光二極管的I/O口,接著設定各個狀態(tài)量發(fā)光二極管的狀態(tài)數(shù)組。第三,運行main主函數(shù),調用主函數(shù)里的while循環(huán),while循環(huán)語句再通過statusdis函數(shù)調用狀態(tài)數(shù)組變量來顯示各個狀態(tài)下各個發(fā)光二極管的狀態(tài)。其流程圖如圖4-4所示:定義發(fā)光二極管的I/O口While(1)
32、大循環(huán)調用顯示控制函數(shù)statusdis() 調用狀態(tài)數(shù)組賦值完成發(fā)光二極管顯示設定各個狀態(tài)量數(shù)組進入main函數(shù)里的while(1)大循環(huán) 圖4-4 發(fā)光二極管模塊流程圖發(fā)光二極管I/O口的接法如下表4-1所示 表4-1 發(fā)光二極管I/O口的接法P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7北黃 西黃 南黃 東黃 北左黃 南左黃 南左紅 南左綠P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7東綠 東紅 南綠 南紅 西綠 西紅 北綠 北紅P3.0 P31 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7Rxd Txd 緊急
33、按鈕 方式控制 未用 未用 北左紅 北左綠 4.4.2 LED倒計時顯示子程序4.4.2-1 LED數(shù)碼管原理本系統(tǒng)采用8位的動態(tài)數(shù)碼顯示??刂茢?shù)碼顯示的數(shù)據(jù)由兩部分組成,一部分為筆段亮滅控制的信號輸入由“A、B、C、D、E、F、G、DP”端口輸入,而控制位顯示的控制信號由“CS1、CS2、CS3”端口輸入,同時該動態(tài)數(shù)碼顯示采用共陰型數(shù)碼管,單片機芯片的P0口和P4口引腳構成了8位LED數(shù)碼管驅動電路,P0口控制數(shù)碼管的筆段顯示,P4口控制數(shù)碼管的位顯示;共陰型數(shù)碼管的筆段引腳是二極管的正極,所有二極管的負極連在一起,構成了公共端,即片選端,對于這種數(shù)碼管的驅動,要求在片選端提供電流,為此,
34、使用了PNP型三極管作為片選端的驅動,共使用8只三極管,所有三極管的發(fā)射機連在一起,接到負電源端,他們的基極則分別連到P0.0-P0.7和P4.4-P4.6。這樣,當P0.0-P0.7和P4.4-P4.6中某引腳輸出是高電平時,三極管不導通,不能給相應位的數(shù)碼管供電,該位數(shù)碼管的所有筆段都不亮,反之,如果某引腳是低電平時,三極管導通,可以給相應的數(shù)碼管供電,該位數(shù)碼管是否點亮,點亮哪些筆段,取決于這些筆段引腳是高或低電平。所有8位數(shù)碼管的筆段連在一起,通過先留電阻后接到P0口,因此,究竟哪些筆段亮,取決于P0口的8根線是輸出高電平還是低電平。原理理圖中把所有數(shù)碼管的8個筆劃段A-DP同名端連在
35、一起,而每一個顯示器的公共極COM是各自獨立地受I/O線控制。CPU向字段輸出口送出字形碼時,所有顯示器接收到相同的字形碼,由8個NPN的三極管,來控制這8位哪一位工作。具體的數(shù)碼管電路原理圖如下圖4-5 圖4-5 數(shù)碼管電路原理圖4.4.2-2 LED數(shù)碼管引腳連接這里我們利用STC10F04單片機制作一個三位倒計時器作為一個路口的時間顯示器,P0、P4口通過三極管接數(shù)碼管其各引腳接法如下表4-2。其余三個路口可照樣設計,只用稍微修改程序即可。 表4-2 數(shù)碼管引腳連接P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7654321910P4.4(單片機29腳)P4.5(單片機3
36、0腳)P4.6(單片機31腳)7811 數(shù)碼管是怎樣來顯示1,2,3,4呢?數(shù)碼管實際上是由7個發(fā)光管組成8字形構成的,加上小數(shù)點就是8個。我們分別把他命名為A,B,C,D,E,F(xiàn),G,DP。由于接法為共陰接法,那么為1(高電平)是亮,為0(低電平)是滅。從高到低排列,(P0.7-P0.0)寫成二進制,再轉為16進制。我們可以根據(jù)硬件的接線把數(shù)碼管顯示數(shù)字編制成一個表格, 以后直接調用就行了。 4.4.2-3 動態(tài)掃描在本電路中,使用的是動態(tài)掃描顯示方法。在動態(tài)LED顯示程序中,需要不停地掃描字位口,從而實現(xiàn)不同字位的數(shù)據(jù)的動態(tài)顯示效果。動態(tài)借口采用各數(shù)碼管循環(huán)輪流顯示的方法,由于一次只能讓一
37、個數(shù)碼管顯示,因此,要顯示8位的數(shù)據(jù),必須經過讓數(shù)碼管一個一個輪流顯示才可以,同時每個數(shù)碼管顯示的時間大約在1ms到4ms之間,所以為了保證正確顯示,我們必須每隔1ms,就得刷新一個數(shù)碼管。而這刷新時間我們采用單片機的定時/計數(shù)器0來控制,每定時1ms對數(shù)碼管刷新一次,T0采用方式2。在進行數(shù)碼顯示的時候,要對顯示單元開辟8個顯示緩沖區(qū),每個顯示緩沖區(qū)裝有顯示的不同數(shù)據(jù)即可。對于現(xiàn)實的字形碼數(shù)據(jù)我們采用查表方法來完成。數(shù)碼管動態(tài)顯示接口是單片機中應用最為廣泛的一種顯示方式之一,動態(tài)驅動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每
38、個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅動。在輪流顯示過程中,每位數(shù)碼管的點亮時間為12ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應,盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是
39、一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。4.5鍵盤掃描模塊中斷的概念:中斷時指中央處理器CPU正在執(zhí)行程序,處理某件事情的時候,外部發(fā)生了某一件事情,請求CPU馬上處理,CPU暫時中斷當前的工作,轉入處理所發(fā)生的事情,處理完了以后,再返回到原來被中斷的地方,繼續(xù)原來的工作。T0優(yōu)先級最高,然后到外部中斷INT0,最后外部中斷INT1優(yōu)先級最低。當定時器T0運行時,外部中斷INT0、INT1不能打斷T0,被禁止響應。當外部中斷INT1運行期間,假如定時器T0和外部中斷都被響應,按照優(yōu)先級的先后順序,系統(tǒng)先運行定時器T0,待T0運行完后才能運行INT0,待INT0運行完了,INT1才能執(zhí)行
40、中斷服務。外部中斷服務子程序主要用來處理緊急情況,當有緊急車通過時,通過人工控制將2個方向的車都停止運行,點亮所有紅燈,并持續(xù)10s。下次中斷來時恢復以前的狀態(tài)。用一個標志位FLAG半段是第一次進入還是恢復狀態(tài),外部中斷服務子程序的流程圖如下圖4-6CPU響應中斷調用控制函數(shù)statusdis運行緊急控制中斷當前程序,保護斷點 恢復現(xiàn)場轉入INT0中斷服務入口中斷返回保護現(xiàn)場 圖4-6 INT0緊急情況中斷處理流程圖中斷入口 不顯示按0次中斷當前程序,保護斷點YESNO顯示A按1次YES定義變量NO顯示B按2次開中斷YES NO顯示C按3次延時去抖YES按鍵掃描NO返回恢復現(xiàn)場延時去抖 圖4-
41、7 INT1方程式控制中斷流程圖當車流量增大,按照設置的正常系統(tǒng)運行時間來控制交通燈的交替運行未能使路口的車最快通過十字路口,導致交通擁擠、堵塞時,可通過人工手動方程式控制開關按鈕A1來改善路口的交通狀況,使各個方向的車能更快通過路口,達到減輕交通負擔,使交通更合理,具有更實際的作用。 當按一次A1方程式控制按鈕時,交通系統(tǒng)以A方程式狀態(tài)來指揮路口。A方程式控制時,各個方向的狀態(tài)量改變如下: 南北方向通車時間增設為60s;東西方向通車時間增設為30s。按兩次A1方程式控制開關按鈕時,系統(tǒng)以B方程式狀態(tài)量來指揮交通路口。B方程式控制時,兩個方向的狀態(tài)量如下:南北方向通車時間不變,為35s;東西方
42、向通車時間變?yōu)?5s。按三次A1方程式控制開關按鈕時,系統(tǒng)以C方程式狀態(tài)量來指揮交通路口。C方程式控制時,兩個方向的狀態(tài)量如下:南北方向跟東西方向的通車時間都為35s。 針對不同時候十字交通路口的不同狀況,當車流量增大時,我們可根據(jù)實際情況來決定選哪個方程式來控制交通燈能達到最佳效果,避免十字路口經常出現(xiàn)主干道車輛多, 放行時間短, 車流無法在規(guī)定時間內通過的影響。第5章 調式總結 本設計主要設計了一個城鄉(xiāng)十字路口交通燈,在設定幾個正常狀態(tài)的情況下,增加了緊急中斷按鈕,以及方程式控制按鈕。通過這兩個按鈕可解決急車強行,車流量變化增加時狀態(tài)不可改變的問題。在明白設計原理的基礎上,可改變狀態(tài)數(shù)組,
43、適用不同的路口。 在程序調式過程中,由于當程序運行1秒后沒有對計數(shù)變量time清0,導致數(shù)碼管顯示出錯,沒有按預先設定好的時間顯示。當把對設定1秒時把計數(shù)變量time清0,解決了這個問題。因為用到P3口作為I/O口,P3口還有第二功能。開始寫程序時把P3口跟P1、P2一起定義導致了顯示混亂,通過研究單獨定義P3口才解決了這個問題。開始寫程序時,對外部中斷沒有寫延時去抖的語句,導致了單片機沒能準確的讀取外部中斷,加上后很好的解決了這個問題?;赑roteus的簡易仿真圖如下:圖5-1 Proteus的簡易仿真圖參考文獻1 張志良.單片機原理與控制技術.機械工業(yè)出版社2 王守中.51單片機開發(fā)入門
44、與典型實例 人民郵電出版社3 侯俊欽,吳小培,楊一軍. Proteus在電子線路實物模型仿真中的應用J. 電腦知識與技術(學術交流). 2007(02) 4 許文斌. Proteus軟件在單片機系統(tǒng)仿真實驗教學中的應用J. 商業(yè)經濟. 2006(03) 5 劉鳳田,劉玉蘭.虛擬現(xiàn)實技術及其在教育領域中的應用研究J. 河北農業(yè)大學學報(農林教育版). 2005(01) 6 馬正強.單片機虛擬實驗室的建立J.單片機與嵌入式系統(tǒng)應用.2005(03) 7 沙春芳. PROTEUS VSM在單片機系統(tǒng)仿真中的應用J. 現(xiàn)代電子技術. 2004(24) 8 陳科.建構主義學習理論指導下的電工教學J.寧波
45、大學學報(教育科學版). 2003(02) 附 錄附錄一 程序清單以下是用C語言編寫的交通燈控制程序: /晶振11.0592M 定時器0定時,方式1,25ms常數(shù)a600,10ms常數(shù)dc00,5ms常數(shù)ee00, /全紅0x55;全綠0xaa;全黃0x00;南北紅,東西綠0x66;南北綠,東西紅0x99; #include<reg51.h> sfr smdis = 0x80; sfr jtd = 0xa0; sfr jtdh= 0x90; sfr P4 =0xC0; sfr P4SW =0xBB; sbit weishuang0 = P44; sbit weishuang1 =
46、P45; sbit weishuang2 = P46; sbit NLR = P36; sbit NLG = P37; unsigned char code md=0xf5,0x05,0xb3,0x97,0x47,0xd6,0xf6,0x85,0xf7,0xd7,0xe7,0x76,0xf0,0x37,0xf2,0xe2,0x00; /0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F unsigned char time=0; unsigned char sec=10; unsigned char waittime=10; unsigned char p33; unsigned
47、char fangshi=0; bit flag=0; /運行方式控制,立即轉換標志/狀態(tài)數(shù)組中,第一個數(shù)字為P2口的數(shù)據(jù),北紅綠,西紅綠,南紅綠,東紅綠;/第二個數(shù)字為P1口的數(shù)據(jù),北(P1.0)西南東黃燈,南左黃燈,北左黃?/南左紅(P1.6)綠(P1.6)/ 第二個數(shù)字為P3口的數(shù)據(jù),僅P3。6接北左紅,P3.7接北左綠 unsigned char S0=0x59, 0x7f ,0x80,35 ; /狀態(tài)S0 unsigned char S1=0xdd, 0xca ,0xc0,3 ; /狀態(tài)S1 unsigned char S2=0x95, 0xbf ,0x40,35 ; /狀態(tài)S2 unsigned char S3=0xf7, 0xa4 ,0xc0,3 ; /狀態(tài)S3 unsigned char S4=0x66,0xbf ,0x80,20 ; /狀態(tài)S4 /unsigned char S5=0x7f,0xd1 ,0x80,3 ; /狀態(tài)S5 unsigned char S5=0x77,0xb5 ,0x80
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論