畢業(yè)論文-基于80c51單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)【精校排版】_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  本科畢業(yè)設(shè)計(jì)(論文)</p><p><b>  (20 屆)</b></p><p>  基于80C51單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)</p><p><b>  目錄</b></p><p><b>  摘要III</b></p><

2、;p>  AbstractIV</p><p><b>  第一章 緒論1</b></p><p>  1.1 選題背景1</p><p>  1.2 國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢1</p><p>  1.3 研究的主要內(nèi)容2</p><p>  第二章 系統(tǒng)總體方案及硬件

3、設(shè)計(jì)3</p><p>  2.1 系統(tǒng)方案設(shè)計(jì)3</p><p>  2.2 方案的實(shí)現(xiàn)6</p><p>  2.3 總體硬件設(shè)計(jì)6</p><p>  2.4 AT89C51單片機(jī)簡介6</p><p>  2.4.1 AT89C51芯片內(nèi)部結(jié)構(gòu)簡介7</p><p>

4、;  2.4.2 系統(tǒng)時(shí)鐘電路8</p><p>  2.4.3 系統(tǒng)復(fù)位電路8</p><p>  2.5 計(jì)時(shí)器顯示電路9</p><p>  2.6 信號燈顯示控制電路10</p><p>  2.7 按鍵電路設(shè)計(jì)11</p><p>  第三章 軟件系統(tǒng)設(shè)計(jì)13</p>&

5、lt;p>  3.1 設(shè)計(jì)思路及關(guān)鍵技術(shù)13</p><p>  3.2 軟件流程13</p><p>  3.3 軟件設(shè)計(jì)程序說明14</p><p>  3.4 延時(shí)函數(shù)14</p><p>  3.5 讀狀態(tài)函數(shù)程序及流程圖15</p><p>  3.6 顯示函數(shù)16</p&

6、gt;<p>  3.7 定時(shí)器0中斷函數(shù)17</p><p>  第四章 系統(tǒng)仿真19</p><p>  4.1 Proteus仿真軟件介紹19</p><p>  4.2 Proteus軟件的功能特點(diǎn)與模塊19</p><p>  4.3 Keil C51軟件簡介19</p><p&

7、gt;  4.4 Keil uVision2編譯程序20</p><p>  4.5 Proteus軟件仿真21</p><p>  第五章 總結(jié)與展望24</p><p><b>  參考文獻(xiàn)25</b></p><p><b>  附錄A26</b></p><

8、;p><b>  附錄B27</b></p><p><b>  致謝33</b></p><p><b>  交通燈控制系統(tǒng)設(shè)計(jì)</b></p><p><b>  摘要</b></p><p>  交通燈控制系統(tǒng)是近現(xiàn)代經(jīng)濟(jì)快速發(fā)展下的產(chǎn)物,

9、隨著社會經(jīng)濟(jì)的發(fā)展,城市交通問題越來越引起人們的關(guān)注。人、車、路三者關(guān)系的和諧,已經(jīng)成為了交通治理部分需要解決的主要問題之一。交通工具的爆炸性的增加和道路資源的有限性產(chǎn)生了一套獨(dú)特的公共管理系統(tǒng)。要保證高效安全的交通秩序,還需要通過一定的科技手段加以實(shí)現(xiàn)。本文對目前交通控制進(jìn)行了深入的分析之后,提出以單片機(jī)為核心,以雙色LED發(fā)光管箭頭作為直行和左右拐彎指示,以LED數(shù)碼管作為倒計(jì)時(shí),LED行人通行指示的系統(tǒng)方案,并對十字路口的直行做了

10、模擬仿真。設(shè)計(jì)過程中對在編寫軟件程序的時(shí),對各種情況下的函數(shù)做了簡要的分析,和對于編譯程序Keil軟件和仿真軟件Proteus關(guān)鍵使用做了說明。</p><p>  基于80C51單片機(jī)的交通燈控制系統(tǒng)是由80C51單片機(jī)、交通燈顯示、LED倒計(jì)時(shí)等模塊組成。系統(tǒng)除基本交通燈功能外,還具有通行按鍵緊急狀況處理、可倒計(jì)時(shí)顯示等相關(guān)功能。理論證明該系統(tǒng)能夠簡單、經(jīng)濟(jì)、有效地疏導(dǎo)交通,提高交通路口的通行能力。</

11、p><p>  關(guān)鍵詞:交通控制;MCS-51單片機(jī);LED顯示;Proteus</p><p>  Traffic control system design</p><p><b>  Abstract</b></p><p>  Traffic light control system is the modern pr

12、oduct of rapid economic development, </p><p>  with the social and economic development, urban transport problems has drawn increasing attention. People, vehicles, road three harmony between the traffic cont

13、rol has become part of one of the main issues to be resolved. The explosive increase in transport and road limited resources had a unique set of public management systems. To ensure safe and efficient traffic order, but

14、also scientific and technological means by some to be realized. In this paper, traffic control is currently conducted in</p><p>  80C51 microcontroller based traffic light control system is a 80C51 microcont

15、roller, traffic lights display, LED countdown and other modules. In addition to basic traffic light system function, but also has the access key emergency treatment, the countdown display and other related functions. The

16、oretical proof that the system is simple, economical and effective way to ease the traffic junction to improve traffic capacity.</p><p>  Keywords: Traffic control, MCS-51 microcontroller, LED display, Prote

17、us</p><p><b>  第一章 緒論</b></p><p><b>  1.1 選題背景</b></p><p>  近年來,人口的快速增長,經(jīng)濟(jì)水平的快速發(fā)展。人們的生活水平也日益好了起來,因此交通工具爆炸性的增加了。由于道路資源的有限,所以交通控制就應(yīng)運(yùn)而生,在人類的生活、工作環(huán)境中,交通扮演著極其重要

18、的角色,人們的出行都無時(shí)不刻與交通打著交道。自18世紀(jì)工業(yè)革命以來,工業(yè)發(fā)展帶動整個(gè)交通運(yùn)輸?shù)陌l(fā)展,從而催生了單獨(dú)的交通控制學(xué)問與管理機(jī)構(gòu)。</p><p>  然而隨著近現(xiàn)代社會物流、出行等交通的發(fā)展產(chǎn)生了一套獨(dú)特的公共管理系統(tǒng)—交通控制系統(tǒng)。要保證高效安全的交通秩序,除了制定一系列的交通規(guī)則,還需要通過一定的技術(shù)手段加以實(shí)現(xiàn)。就目前人類的科學(xué)技術(shù),特別是電子科學(xué)技術(shù)的發(fā)展和成熟能比較好的解決系統(tǒng)建立中硬軟件方

19、面要求的技術(shù)難題。</p><p>  交通對于社會的工業(yè)經(jīng)濟(jì)和人們的生活生產(chǎn)中有著十分重要的意義。城市道路交通自動控制的發(fā)展與汽車工業(yè)是并行發(fā)展的。在其各個(gè)發(fā)展階段,由于交通的各種矛盾不斷出現(xiàn),人們總是盡可能地把各個(gè)歷史階段當(dāng)時(shí)的最新科技成果應(yīng)用到交通自動控制中來,從而促進(jìn)了交通自動控制技術(shù)的不斷發(fā)展。</p><p>  交通控制研究的發(fā)展,旨在解決人類交通因需求的增多而日益繁重帶來的

20、問題,局限于道路建設(shè)的暫時(shí)不足和交通工具的快速增長,就要使更多的車輛安全高效的利用有限的道路資源,避免因無序和搶行等無控制原因造成的不必要阻塞甚至癱瘓。</p><p>  1.2 國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢</p><p>  近年來,交通紅綠燈已經(jīng)安裝在各個(gè)城市的道口上,成為了疏導(dǎo)交通的最常見有效的方法。但這以技術(shù)早在19世紀(jì)就已經(jīng)出現(xiàn)了。19世紀(jì)50年代倫敦街頭安裝的是以燃煤氣為光源

21、的紅藍(lán)信號燈。隨后60年代英國機(jī)械工程師納伊特在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩以旋轉(zhuǎn)式方形玻璃提燈組成。紅色表示“停止”,綠色表示“注意”。1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。</p><p>  1914年,美國紐約出現(xiàn)了電器啟動的紅綠燈,它由紅綠黃三色圓形的投光器組成。紅色表示“停止”,綠色表示“通行”。1918年又出現(xiàn)了帶控制的紅綠燈和紅外線

22、紅綠燈。帶控制的紅綠燈,一種是把壓力探測器安在地下,車輛一接近紅燈便變?yōu)榫G燈;另一種是用擴(kuò)音器來啟動紅綠燈,司機(jī)遇紅綠燈時(shí)按一下喇叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當(dāng)行人踏上對壓力敏感的路面時(shí),它就能察覺到有人要過馬路。紅外光速能把信號燈的紅燈延長一段時(shí)間,推遲汽車放行,以免發(fā)生交通事故。</p><p>  信號燈的出現(xiàn),使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。目前設(shè)計(jì)交

23、通燈的方案有很多,有應(yīng)用CPLD設(shè)計(jì)實(shí)現(xiàn)交通信號燈控制器方法;有應(yīng)用PLC實(shí)現(xiàn)對交通燈控制系統(tǒng)的設(shè)計(jì);有應(yīng)用單片機(jī)實(shí)現(xiàn)對交通信號燈設(shè)計(jì)的方法。目前,國內(nèi)的交通燈一般設(shè)在十字路門,在醒目位置用紅、綠、黃三種顏色的指示燈加上倒計(jì)時(shí)顯示計(jì)時(shí)器來控制行車。</p><p>  1.3 研究的主要內(nèi)容</p><p>  基于整個(gè)交通控制系統(tǒng)的發(fā)展情況,這次設(shè)計(jì)主要進(jìn)行如下方面的研究,用智能,集成

24、,且功能強(qiáng)大的單片機(jī)芯片為控制空心,設(shè)計(jì)出一套簡單、有效并且經(jīng)濟(jì)的十字路口的交通控制系統(tǒng),以指揮該路口的實(shí)時(shí)通行狀態(tài)。并且對十字路口車輛通行方案做了全面、深入、具體的剖析及論證。使在道路中通行的車輛,人能夠和諧有規(guī)律的流動。然后就是。確定系統(tǒng)交通控制的總體設(shè)計(jì),包括,十字路口具體的通行方案設(shè)計(jì)以及系統(tǒng)應(yīng)擁有的各項(xiàng)功能,本次設(shè)計(jì)除了有信號燈狀態(tài)控制能實(shí)現(xiàn)基本的交通功能,還增加了倒計(jì)時(shí)顯示提示和按鍵緊急處理等功能。對于硬件系統(tǒng)的各個(gè)硬件分開

25、進(jìn)行了簡單的介紹和分析其使用性能。然后進(jìn)行了顯示電路等的設(shè)計(jì)對各器件的選擇及連接,大體分配各個(gè)器件及模塊的基本要求。最后進(jìn)行系統(tǒng)軟件的設(shè)計(jì),對于這次系統(tǒng)的設(shè)計(jì),采用了C語言進(jìn)行編寫,通過keil uVision2進(jìn)行編譯。在對單片機(jī)內(nèi)部結(jié)構(gòu)和工作情況做了充足的研究,了解定時(shí)器,中斷以及延時(shí)原理。采用流行的proteus軟件進(jìn)行電路圖的繪制與仿真。</p><p>  第二章 系統(tǒng)總體方案及硬件設(shè)計(jì)</p&

26、gt;<p>  2.1 系統(tǒng)方案設(shè)計(jì)</p><p>  在城市的各個(gè)路口都由交通控制系統(tǒng)來指揮車輛和行人的安全,各道上都有一組LED紅、黃、綠指示燈,紅燈用來表示禁止通行,綠燈用來表示允許通行,黃燈用來人們注意紅綠燈狀態(tài)即將切換。對于城市的十字路口,不同的城市的不同路段所設(shè)計(jì)的交通控制系統(tǒng)方案是有區(qū)別的,對于道路寬敞,車流量小的城市的十字路口所設(shè)計(jì)系統(tǒng)則比較簡單,而且倒計(jì)時(shí)時(shí)間長。然而對于道路

27、資源窄,車流量大的路口則需要一套能夠在某時(shí)間段能最大限度的疏通車輛的系統(tǒng)。</p><p>  第一套方案:城市十字路口,雙向通車。十字路口被分為路口1、路口2、路口3、路口4四個(gè)路口2個(gè)干道。圖中用A、B、C、K分別來表示各個(gè)路口主車道的左行車道,直行車道,右行車道以及人行道。然后分別用小寫a、b、c、d來表示LED信號燈的左轉(zhuǎn)、直行、右轉(zhuǎn)和人行道。(a、b、c信號燈都有紅、黃、綠三個(gè)狀態(tài)的燈色)。</p

28、><p>  將車輛運(yùn)行通行狀態(tài)分為四種S1、S2、S3、S4四種狀態(tài),交通燈以這四種狀態(tài)為一個(gè)周期,循環(huán)執(zhí)行。下面狀態(tài)S1→狀態(tài)S4都可以看到,各個(gè)路口直行時(shí),其各個(gè)路口LED信號燈的閃亮情況,如下圖2.1—2.4所示,:</p><p>  圖2.1 狀態(tài)S1 圖2.2 狀態(tài)S2</p><p> 

29、 圖2.3 狀態(tài)S3 圖2.4 狀態(tài)S4</p><p>  第二套方案:下面的方案主要介紹的是在道路資源有限,且車流量大的十字路口。能最大限度的疏通較大的車流量。以緩解交通壓力[1]。</p><p>  兩干道相交于一個(gè)十字路口,各干道有一組LED信號顯示燈(如下圖所示),用來指揮行人和車輛的安全通行。設(shè)南北方向?yàn)橹鞲傻?,東西為次

30、干道。南北干道比東西干道的車流量大,交通燈以以下四種狀態(tài)循環(huán)。</p><p>  圖2.5 狀態(tài)S5 圖2.6 狀態(tài)S6</p><p>  圖2.7 狀態(tài)S7 圖2.8 狀態(tài)S8</p><p>  狀態(tài)S5,當(dāng)南北顯示綠燈的時(shí)候,南北車道車輛通行;東西車道

31、顯示紅燈,東西車道禁止車輛通行,此時(shí)東西車道上行人通行。時(shí)間為30秒(調(diào)試時(shí)時(shí)間改為5秒),南北為主干道,車流量大,所以通行時(shí)間長。</p><p>  狀態(tài)S6和狀態(tài)S8都沒有直行的情況,而且這2個(gè)狀態(tài),人行道都禁止通行。所有的車輛只有轉(zhuǎn)彎狀態(tài)。</p><p>  狀態(tài)S7,當(dāng)東西顯示綠燈的時(shí)候,東西車道車輛通行;南北車道顯示紅燈,南北車道禁止車輛通行,此時(shí)南北車道行人通過。時(shí)間為20

32、秒(調(diào)試時(shí)時(shí)間改為4秒),東西車道為次干道,車流量小,所以通行時(shí)間短。</p><p>  注意狀態(tài)S6與狀態(tài)S8,它們在一個(gè)時(shí)間段四個(gè)方向都可以通車,這種狀態(tài)能在一定的時(shí)間內(nèi)疏通較大的車流量,效率特別高。其循環(huán)流程圖如下圖2.9所示:</p><p>  圖2.9 狀態(tài)流程圖</p><p>  2.2 方案的實(shí)現(xiàn)</p><p>  

33、本文采用的單片機(jī)核心是用AT89C51為中心器件來設(shè)計(jì)交通燈控制器,采用C語言為程序編譯語言,是用Keil軟件和當(dāng)下流行的Proteus軟件按聯(lián)合完成編輯、編譯、連接、調(diào)試、仿真等流程。該系統(tǒng)具體分為電源部分,緊急按鍵,復(fù)位,系統(tǒng)時(shí)鐘等4個(gè)輸入模塊。和LED數(shù)碼管,信號燈2個(gè)輸出模塊。</p><p>  2.3 總體硬件設(shè)計(jì)</p><p>  交通燈控制系統(tǒng)的結(jié)構(gòu)框圖如圖2.8所示。

34、總體設(shè)計(jì)方案共有五個(gè)部分組成,分別是:單片機(jī)AT89C51、紅、綠、黃燈顯示電路、LED數(shù)顯時(shí)間電路、晶振及復(fù)位控制電路、控制與調(diào)時(shí)開關(guān)電路。在進(jìn)行仿真調(diào)試過程中,程序運(yùn)行正確,五個(gè)部分就同時(shí)工作,從而實(shí)現(xiàn)了交通燈的基本功能及調(diào)時(shí)功能。系統(tǒng)的總的原理框圖[3]如下圖2.10所示。</p><p>  圖2.10 硬件設(shè)計(jì)方案</p><p>  2.4 AT89C51單片機(jī)簡介<

35、/p><p>  單片機(jī)所具有的特點(diǎn)是具有優(yōu)異的性能價(jià)格比;集成度高、體積小、可靠性高;控制功能強(qiáng);低電壓,低功耗。然而AT89C51是美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS8位單片機(jī)微處理器,片內(nèi)含4K bytes的可系統(tǒng)編程的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51產(chǎn)品指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU),功能強(qiáng)大的AT89C51單片機(jī)可

36、以提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域[2]。</p><p>  2.4.1 AT89C51芯片內(nèi)部結(jié)構(gòu)簡介</p><p><b>  ·中央處理器:</b></p><p>  中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)

37、協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。</p><p>  ·數(shù)據(jù)存儲器、程序存儲器:</p><p>  數(shù)據(jù)存儲器(內(nèi)部RAM)用于存放變化的數(shù)據(jù)。AT89C51中數(shù)據(jù)存儲器的地址空間為128*8字節(jié)內(nèi)部RAM。程序存儲器(內(nèi)部ROM)用于存放程序和固定不變的常數(shù)等。通常采用只讀存儲器,且其有多種類型,在89系列單片機(jī)中全部采用閃存。AT89C51內(nèi)部配置了4KB可重

38、復(fù)寫flash閃存存儲器。</p><p>  ·定時(shí)/計(jì)數(shù)器(ROM)</p><p>  定時(shí)/計(jì)數(shù)器用于實(shí)現(xiàn)定時(shí)和計(jì)數(shù)功能。AT89C51共有2個(gè)16位定時(shí)/計(jì)數(shù)器。</p><p>  ·并行輸入輸出(I/O口)</p><p>  80C51共有4組8位I/O口(P0、P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。每

39、個(gè)口都由1個(gè)鎖存器和一個(gè)驅(qū)動器組成。它們主要用于實(shí)現(xiàn)與外部設(shè)備中數(shù)據(jù)的并行輸入與輸出,有些I/O口還有其它功能。</p><p><b>  ·全雙工串行口</b></p><p>  AT89C51內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。</p><p>&

40、lt;b>  ·時(shí)鐘電路</b></p><p>  時(shí)鐘電路的作用是產(chǎn)生單片機(jī)工作所需要的時(shí)鐘脈沖序列。</p><p><b>  ·中斷系統(tǒng)</b></p><p>  中斷系統(tǒng)的作用主要是對外部或內(nèi)部的終端請求進(jìn)行管理與處理。AT89C51有5個(gè)中斷源,其中2個(gè)是外部中斷源,分別是外部中斷0和外部中

41、斷1,和3個(gè)內(nèi)部中斷源,分別是T0、T1、串行中斷[3](包括串行接收中斷RI和串行發(fā)送中斷TI)。</p><p>  AT89C51的引腳圖如下圖2.11所示:</p><p>  圖2.11 AT89C51引腳圖</p><p>  2.4.2 系統(tǒng)時(shí)鐘電路</p><p>  晶振采用了內(nèi)部時(shí)鐘信號源的方式。對于時(shí)間要求不是很高的

42、系統(tǒng),只要按圖進(jìn)行設(shè)計(jì)就能使系統(tǒng)可靠起振并穩(wěn)定運(yùn)行。但由于圖中的C1、C2電容起著系統(tǒng)時(shí)鐘頻率微調(diào)和穩(wěn)定的作用,因此,在本系統(tǒng)的實(shí)際應(yīng)用中一定要注意正確選擇參數(shù)(30±10 PF),并保證對稱性(盡可能匹配)。電路圖如下圖2.12。</p><p>  圖2.12 系統(tǒng)時(shí)鐘電路</p><p>  2.4.3 系統(tǒng)復(fù)位電路</p><p>  復(fù)位電路

43、我采用上電+按鈕復(fù)位的方式。當(dāng)開關(guān)打開時(shí),RST通過電阻接地,當(dāng)有開關(guān)閉合時(shí)由于電容的作用使電源VCC通過電阻施加在單片機(jī)復(fù)位端RST上,實(shí)現(xiàn)單片機(jī)復(fù)位。在仿真器調(diào)試過程中,該復(fù)位電路是不起作用的,有點(diǎn)可惜。具體電路如下圖2.13。</p><p>  圖2.13 系統(tǒng)復(fù)位電路</p><p>  2.5 計(jì)時(shí)器顯示電路</p><p>  LED,發(fā)光二極管,

44、它是一種固態(tài)的半導(dǎo)體器件,可以直接把電轉(zhuǎn)化為光。LED的心臟是一個(gè)半導(dǎo)體晶片,晶片的一端附在一個(gè)支架上,一端是負(fù)極,另一端連接電源的正極,使整個(gè)晶片被環(huán)氧樹脂封裝起來,半導(dǎo)體晶片由三部分組成,一部分是P型半導(dǎo)體,在它里面空穴占主導(dǎo)地位,另一端是N型半導(dǎo)體,在這邊主要是電子,中間通常是1至5個(gè)周期的量子阱。當(dāng)電流通過導(dǎo)線作用于這個(gè)晶片的時(shí)候,電子和空穴就會被推向量子阱,在量子阱內(nèi)電子跟空穴復(fù)合,然后就會以光子的形式發(fā)出能量,這就是LED發(fā)

45、光原理。而光的波長也就是光的顏色,是由形成P-N結(jié)的材料決定的。根據(jù)發(fā)光二極管的個(gè)數(shù)可將數(shù)碼管分成7段數(shù)碼管和8段數(shù)碼管,8段數(shù)碼管比7段數(shù)碼管多一個(gè)用于顯示小數(shù)點(diǎn)的發(fā)光二極管,根據(jù)內(nèi)部連接形式可將數(shù)碼管分成共陽數(shù)碼管與共陰數(shù)碼管[4]。8段LED是一種常用的數(shù)碼顯示屏。這種數(shù)碼管的每個(gè)線段都是一個(gè)發(fā)光二極管,因而把它叫做LED數(shù)碼管。由于在數(shù)碼管的右下角增加了一個(gè)小數(shù)點(diǎn),形成了所謂的8段數(shù)碼管。E10501是屬于共陰極類型的數(shù)碼管,只

46、要公共端接地,其它端送上高電平就能點(diǎn)亮。E10501不僅具有工作電壓低,體積小,壽命長,可靠性高等優(yōu)</p><p>  圖2.14 LED數(shù)碼管</p><p>  在這次設(shè)計(jì)中,為了系統(tǒng)圖的美觀,我采用了6個(gè)數(shù)碼管組成的數(shù)碼管組,采用共陰極接法。如下圖2.15所示:</p><p>  圖2.15 系統(tǒng)數(shù)碼管電路</p><p>  

47、2.6 信號燈顯示控制電路</p><p>  自從六十年代末LED作為商品面市以來已有三十年,發(fā)光二極管在高亮度化和多色化方面取得了長足的進(jìn)步,發(fā)光效率幾乎每十年提高十倍,至今已提高了一千倍以上。由于LED有長達(dá)10年的壽命,省電和耐震動等突出的優(yōu)點(diǎn),早在九十年代初就有人開始研究LED交通信號燈,由于亮度低和色度不對,難以做出合格的樣品來,隨著LED超高亮度化和多色化的實(shí)現(xiàn),于1995年研制成了整套的LED交

48、通信號燈[5]。在設(shè)計(jì)路燈時(shí),采用了發(fā)光二極管代替路燈。先介紹一下二極管,如下圖 2.16。二極管工作原理是單向?qū)?,即只有正極電壓高于負(fù)極電壓某特定值時(shí)才會導(dǎo)通,而負(fù)極電壓高于正極電壓是不導(dǎo)通的。</p><p>  圖2.16 發(fā)光二極管示意圖</p><p>  發(fā)光二極管是一種特殊的二極管,導(dǎo)通時(shí)會發(fā)光(發(fā)光二極管導(dǎo)通壓降一般為1.7V~1.9V)。此外,工作電流要滿足該二極管的

49、工作電流。 </p><p>  發(fā)光二極管的正負(fù)極可以用萬用表進(jìn)行判斷,把萬用表撥至二極管檔或電阻擋,用兩個(gè)表筆分別接觸二極管的兩個(gè)引出腳。若發(fā)光二極管被點(diǎn)亮,則與紅表筆相接的引出腳為正極。從外觀上看,發(fā)光二極管的正極引腳的長度也比較長。 </p><p>  一般發(fā)光二極管與I/O端口之間都會再連接一個(gè)電阻,其作用在于限制通過二極管的電流,從而達(dá)到減少功耗或者滿足端口對最大電流的限制。

50、一般發(fā)光二極管的點(diǎn)亮電流為5mA至10mA。 路燈設(shè)計(jì)時(shí)我采用了紅、黃、綠三種發(fā)光二級管。如下圖2.17所示。</p><p>  圖2.17 LED信號燈二極管電路</p><p>  2.7 按鍵電路設(shè)計(jì)</p><p>  按鍵工作方式可以是中斷方式也可以是掃描方式,對掃描方式來說,掃描是一直調(diào)用按鍵掃描程序,也可以用定時(shí)調(diào)用按鍵掃描程序,不管哪一種,都需

51、要占用系統(tǒng)寶貴的時(shí)間資源,相比較而言中斷就有優(yōu)勢,中斷鍵盤只有在有按鍵按下時(shí)才去執(zhí)行鍵盤程序,在沒有按鍵按下的情況下,可以處理其他的事務(wù),使資源得到充分的利用,故中斷鍵盤有占用資源少,響應(yīng)速度快的優(yōu)點(diǎn),但在有按鍵按下時(shí)有數(shù)碼管閃爍的缺點(diǎn),這是因?yàn)樘幚碇袛鄷r(shí),數(shù)碼管停止了掃描,對顯示要求不高的場合下,這也是完全可以滿足要求的。但實(shí)際應(yīng)用中,為了保證安全查詢鍵值和響應(yīng),通常還要進(jìn)行按鍵去抖和等待鍵釋放(查詢按鍵是否抬起)的動作, 由于按鍵本

52、身是機(jī)械開關(guān),所以在觸點(diǎn)閉合或斷開的瞬間會出現(xiàn)電壓抖動的現(xiàn)象。此次的按鍵設(shè)計(jì)是一種TTL電路,它是電路原理圖中比較簡單的電路,這類電路一般可分成三個(gè)主要部分,輸入級、輸出級和中間級[6]。按鍵設(shè)計(jì)如下圖2.18所示。</p><p>  圖2.18 應(yīng)急按鍵電路</p><p>  第三章 軟件系統(tǒng)設(shè)計(jì)</p><p>  3.1 設(shè)計(jì)思路及關(guān)鍵技術(shù)</

53、p><p>  51的編程語言常用的有兩種。一種是匯編語言,一種是C語言。雖然匯編語言的機(jī)器代碼生成效率很高但可讀性卻不強(qiáng),復(fù)雜一點(diǎn)的程序很難讀懂。不過C語言在大多數(shù)情況下其機(jī)器代碼生成效率和匯編語言相當(dāng),但是可讀性和可移植性遠(yuǎn)遠(yuǎn)超過了匯編語言。C語言還可以嵌入?yún)R編來解決高時(shí)效性的代碼編寫程序。綜合以上C語言的優(yōu)點(diǎn),本次交通燈控制程序的設(shè)計(jì)程序在編寫時(shí)選擇C語言來作為編譯語言。</p><p>

54、;  一個(gè)完整的交通燈相當(dāng)于一個(gè)簡單的單片機(jī)系統(tǒng),該系統(tǒng)有交通燈設(shè)置電路、單片機(jī)、顯示電路等構(gòu)成。單片機(jī)是集成的IC芯片,只需根據(jù)實(shí)際設(shè)計(jì)要求選型。其他部分都需要根據(jù)應(yīng)用要求和性能指標(biāo)自行設(shè)計(jì)。首先了解實(shí)際交通燈的變化規(guī)律。交通等紅、綠、燈色的變化規(guī)律已經(jīng)在提出方案時(shí),車輛通行狀態(tài)S5—S8中提出了。然后這次的系統(tǒng)程序只針對直行方案的編寫,程序設(shè)計(jì)過程將原來的30秒縮短到5秒,20秒縮短到4秒,黃燈5秒縮短到1秒。</p>

55、<p><b>  3.2 軟件流程</b></p><p>  系統(tǒng)總體流程圖如下圖3.1所示:</p><p>  圖3.1 整體軟件設(shè)計(jì)流程圖</p><p>  3.3 軟件設(shè)計(jì)程序說明</p><p>  這部分定義了一些全局變量的數(shù)組和變量以及位標(biāo)志,只是些定義的東西不需要畫流程圖。這部分程

56、序如下:</p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit nom=P3^7;</p><p>

57、  uchar code led_table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p><b>  //顯示數(shù)碼表</b></p><p>  uchar code light_state[]={0x21,0x12,0x0c,0x12};//交通燈狀態(tài)存儲表</p&

58、gt;<p>  uchar code em_state[3]={0x24,0x21,0x0c};//緊急燈狀態(tài)顯示表</p><p>  uchar light_time[][2]={{0,20},{0,6},{0,30},{0,6}};//顯示時(shí)間存儲表</p><p>  uchar statebef,time1s=100,state=0;//存儲緊急燈狀

59、態(tài),定時(shí)基數(shù),狀態(tài)基數(shù)</p><p>  uint time;//顯示時(shí)間變量</p><p>  bit md_flag,state_flag=1,red;//顯示時(shí)間更改狀態(tài),狀態(tài)切換標(biāo)志位,紅綠切換標(biāo)志位</p><p><b>  3.4 延時(shí)函數(shù)</b></p><p>  通常,延時(shí)可以使用Sle

60、ep()函數(shù)。但是在執(zhí)行該函數(shù)時(shí),用戶界面將得不到更新,為了解決該問題,使用Delay()函數(shù)。通過再循環(huán)等待期間檢測消息變化,防止界面出現(xiàn)假死機(jī)現(xiàn)象。在延時(shí)語句中,我們使用了for語句,for語句是有限循環(huán)語句,一個(gè)有限的循環(huán)需要三個(gè)條件,表達(dá)式1定義了循環(huán)的起始值,表達(dá)式2表示結(jié)束值,表達(dá)式3表示增量值[7]。</p><p>  延時(shí)函數(shù)的程序如下,流程圖如下圖3.2所示:</p><p

61、>  /*---------------------------</p><p><b>  延時(shí)函數(shù)</b></p><p>  ------------------*/</p><p>  void delay(void)</p><p><b>  {</b></p>&l

62、t;p>  uchar i,j;</p><p>  for(i=100;i>0;i--)</p><p>  {for(j=100;j>0;j--); //循環(huán)10000次</p><p><b>  }</b></p><p><b>  { </b></p>

63、<p>  3.2 延時(shí)函數(shù)流程圖 </p><p>  3.5 讀狀態(tài)函數(shù)程序及流程圖</p><p>  讀取狀態(tài)函數(shù)如下,程序如下圖3.3:</p><p>  /*----------------------</p><p>  讀狀態(tài)函數(shù):判斷是否有緊急燈狀況出現(xiàn)</p><p>  

64、-----------------*/</p><p>  Uchar rd emstate(void)</p><p><b>  { </b></p><p>  Uchar value;</p><p><b>  value=p3;</b></p><p>  

65、value>>=4;</p><p>  value&=0x07;</p><p>  if(value!=statebef){statebef=value;return 1;}</p><p>  //判斷是否有緊急燈狀況發(fā)生,</p><p>  //保存按鍵值,置返回標(biāo)志為1</p><p>

66、  else return 0;</p><p><b>  } </b></p><p>  圖3.3 延時(shí)函數(shù)讀取流程圖 </p><p><b>  3.6 顯示函數(shù)</b></p><p><b>  顯示函數(shù)如下:</b></p><p>

67、;  void display(void)</p><p><b>  {</b></p><p>  if(md_flag==1)//顯示更改時(shí)間狀態(tài)</p><p><b>  {</b></p><p>  if(1==red) {// 南北方向紅燈時(shí)間顯示</p><p

68、>  P2=0xf6; P0=led_table[light_time[0][0]];delay();//分鐘</p><p>  P2=0xed; P0=led_table[light_time[0][1]/10];delay();//秒的十位</p><p>  P2=0xdb; P0=led_table[light_time[0][1]%10];delay();//秒的個(gè)位&l

69、t;/p><p><b>  }</b></p><p><b>  ……</b></p><p>  else //正常狀態(tài),顯示時(shí)間</p><p><b>  {</b></p><p>  P2=0xf6; P0=led_table[time/1

70、00]; delay();//分鐘</p><p>  P2=0xed; P0=led_table[time/10%10];delay();// 秒的十位</p><p>  P2=0xdb; P0=led_table[time%10]; delay();//秒的個(gè)位</p><p><b>  } }</b></p>

71、<p>  3.7 定時(shí)器0中斷函數(shù)</p><p>  定時(shí)器中斷函數(shù)是利用單片機(jī)的定時(shí)中斷,實(shí)現(xiàn)每隔1S點(diǎn)亮一個(gè)LED,即先點(diǎn)亮第一個(gè),后點(diǎn)亮第二個(gè),再點(diǎn)亮第三個(gè),……,直到點(diǎn)亮第八個(gè),又重新開始[8]。</p><p>  定時(shí)器0中斷函數(shù)如下:</p><p>  void Time0int(void) interrupt 1<

72、/p><p><b>  { EA=0;</b></p><p>  TH0=-10000/256;</p><p>  TL0=-10000%256;</p><p><b>  time1s--;</b></p><p>  if(time1s==0){//一秒中到,重新置數(shù)

73、 </p><p>  time1s=100;</p><p>  time--;//顯示時(shí)間自減</p><p>  if(time==0){//顯示時(shí)間減到0時(shí)切換顯示時(shí)間狀態(tài)</p><p>  state++;//四個(gè)狀態(tài)輪流切換</p><p>  if(state==4) state=0;</p&g

74、t;<p>  state_flag=1;//置狀態(tài)切換標(biāo)志位</p><p>  } } EA=1; } </p><p><b>  第四章 系統(tǒng)仿真</b></p><p>  4.1 Proteus仿真軟件介紹</p><p>  Proteus軟件是英國Labcenter el

75、ectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但是已經(jīng)受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。它是世界上著名的EDA工具,從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)

76、軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等等。在編譯方面也支持IAR、Keil和MPLAB等多種編譯器。</p><p>  4.2 Proteus軟件的功能特點(diǎn)與模塊</p><p>  Proteus軟件具有其它EDA工具軟件的功能,這些功能分別是原理布

77、圖、PCB自動或人工布線、SPICE電路仿真。它的革命性特點(diǎn)是互動的電路仿真(可實(shí)時(shí)采用諸如RAM、ROM、鍵盤、馬達(dá)、LED、LCD、AD/DA,部分SPI器件,部分IIC器件)和仿真處理器及其外圍電路(可仿真51系列、AVR、PIC、ARM、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型)。它的功能模塊有智能原理圖設(shè)計(jì)(ISIS)、完善的電路仿真功能(Prospice)、獨(dú)特的單片機(jī)協(xié)同仿真功能(VSM)、實(shí)用的PCB設(shè)計(jì)平臺[

78、9]。</p><p>  4.3 Keil C51軟件簡介</p><p>  Keil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)上、可讀性、可維護(hù)性上有明顯的優(yōu)勢。Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完

79、整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。掌握這一款軟件的使用對于使用51系列單片機(jī)的愛好者來說是十分必要的,如果要使用C語言編程,那么Keil幾乎就是你的不二之選。Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級語言的優(yōu)勢[10]。 </p><p>  4.4 Keil uVision2編譯程序</p>

80、<p>  Keil uVision2,生成HEX文件,如下圖4.1所示:</p><p>  圖4.1 生成HEX文件</p><p>  最后編譯程序無誤如下圖4.2所示:</p><p>  圖4.2 程序編譯無誤圖</p><p>  4.5 Proteus軟件仿真</p><p>  1.

81、打開Proteus軟件,將各個(gè)元器件按照系統(tǒng)總電路圖連接起來,如下圖4.3所示:</p><p>  圖4.3 Proteus總體電路連接圖</p><p>  2.雙擊AT89C51芯片,添加編譯好的HEX文件,通電之后,開始仿真。此時(shí)的狀態(tài)是S3(南北紅燈,東西綠燈),時(shí)間已經(jīng)走過2秒。如下圖4.4所示:</p><p>  圖4.4 通電之后仿真</

82、p><p>  3.如下圖4.5所示,顯示的是黃燈,顯示時(shí)間為1秒。說明下一個(gè)燈色即將到來,也就是兩個(gè)干道的紅、綠燈即將切換。</p><p>  圖4.5 兩干道燈色切換等待 </p><p>  4.當(dāng)南北方向綠燈走過1秒的時(shí)候,合上按鍵K0,東西、南北兩道均顯示紅燈,LED倒計(jì)時(shí)暫停在4秒。此時(shí)只允許救護(hù)車、警車等特殊車輛通過。如下圖4.6所示:</p&g

83、t;<p>  圖4.6 應(yīng)急燈特殊車輛通過</p><p>  5.當(dāng)東西方向綠燈要切換到紅燈時(shí),但是此時(shí)東西方向的車兩量很大,南北方向車流量稀疏,此時(shí)就得合上按鍵K2,讓時(shí)間暫停來緩解東西方向的交通輸送壓力?;蛘咴谀媳狈较蝻@示綠燈時(shí),并且車多的情況下,合上開關(guān)K1再打開開關(guān)K2會使綠燈切換到南北方向上。仿真圖如下圖4.7所示。同樣,按鍵開關(guān)K1是用來控制應(yīng)急南北方向燈色的。</p>

84、<p>  圖4.7 按鍵控制緩解交通壓力 </p><p>  第五章 總結(jié)與展望</p><p>  系統(tǒng)方案理論上能實(shí)時(shí)有效的疏導(dǎo)交通,此系統(tǒng)在對單片機(jī)系統(tǒng),按鍵電路,信號燈電路等的足夠了解的情況下,完成了軟件程序的編寫與總電路圖的繪制,最后通過Proteus仿真測試后,實(shí)現(xiàn)了基本交通燈直行控制功能,按鍵開關(guān)控制能實(shí)現(xiàn)特殊車輛的通行,還能使用按鍵使東西或者南北的車輛

85、的通行量增加。設(shè)計(jì)中不足的地方就是在仿真的過程中只實(shí)現(xiàn)了道路直行的情況。還有系統(tǒng)設(shè)計(jì)時(shí)沒有涉及車輛流量的檢測電路。</p><p>  雖然畢業(yè)設(shè)計(jì)已經(jīng)接近尾聲,但是我想我的這個(gè)設(shè)計(jì)不會因?yàn)楫厴I(yè)設(shè)計(jì)的結(jié)束而停止。對于現(xiàn)在電子行業(yè)技術(shù)發(fā)展迅速,知識更新?lián)Q代加快,以及車輛不斷的增加。然而在道路的資源有限的情況下,我需要更加系統(tǒng)的去學(xué)習(xí)這方面的知識,來設(shè)計(jì)出更人性化,簡單、方便的服務(wù)于人們的交通控制系統(tǒng)。</p&

86、gt;<p><b>  參考文獻(xiàn)</b></p><p>  [1]謝光前,游慶祥.智能交通信號燈控制器設(shè)計(jì) [J].電腦知識與技術(shù),2009,5(9):2198.</p><p>  [2]鄭毛祥.單片機(jī)原理及應(yīng)用[M].成都:電子科技大學(xué)出版社,2001.261.</p><p>  [3]文健.淺議單片機(jī)在可控交通燈設(shè)計(jì)中

87、的運(yùn)用[J].裝備制造技術(shù),2010,(5):87.</p><p>  [4]楊秀增.基于FPGA的8段數(shù)碼管動態(tài)顯示IP核設(shè)計(jì)[J].電子設(shè)計(jì)工程,2009,17(10):82.</p><p>  [5]方志烈.LED交通信號燈的研究進(jìn)展和市場前景[D].復(fù)旦大學(xué),2000.</p><p>  [6]胡燏.關(guān)于TTL與非門電路原理圖的識讀方法[J].中國外資

88、,2009,(11):258.</p><p>  [7]韓成,張延偉. 拿來就用單片機(jī)[M].北京:人民郵電出版社,2008.27.</p><p>  [8]徐煜明.C51單片機(jī)及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2009.9899.</p><p>  [9]于斌.單片機(jī)原理與接口技術(shù)[M].北京:人民郵電出版社,2008.62.</p>

89、<p>  [10]徐瑋.C51單片機(jī)高效入門[M].北京:機(jī)械工業(yè)出版社,2010.385386. </p><p><b>  附錄A</b></p><p><b>  仿真系統(tǒng)總電路圖</b></p><p><b>  附錄B </b></p><p>

90、;<b>  系統(tǒng)源程序</b></p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit nom=P3^

91、7;</p><p>  uchar code led_table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示數(shù)碼表</p><p>  uchar code light_state[]={0x21,0x12,0x0c,0x12};//交通燈狀態(tài)存儲表</p><p>  ucha

92、r code em_state[3]={0x24,0x21,0x0c};//緊急燈狀態(tài)顯示表</p><p>  uchar light_time[][2]={{0,4},{0,1},{0,5},{0,1}};//顯示時(shí)間存儲表</p><p>  uchar statebef,time1s=100,state=0;//存儲緊急燈狀態(tài),定時(shí)基數(shù),狀態(tài)基數(shù)</p>

93、<p>  uint time;//顯示時(shí)間變量</p><p>  bit md_flag,state_flag=1,red;//顯示時(shí)間更改狀態(tài),狀態(tài)切換標(biāo)志位,紅綠切換標(biāo)志位</p><p>  /*--------------------------------</p><p><b>  延時(shí)函數(shù)</b></

94、p><p>  ------------------------*/</p><p>  void delay(void)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  for(i=100;i>0;i--)</p><

95、;p><b>  {</b></p><p>  for(j=100;j>0;j--);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*--------------------------</p>

96、<p>  讀狀態(tài)函數(shù):判斷是否有緊急燈狀況出現(xiàn)</p><p>  ---------------------*/</p><p>  uchar rd_emstate(void)</p><p><b>  {</b></p><p>  uchar value;</p><

97、p><b>  value=P3;</b></p><p>  value>>=4;</p><p>  value&=0x07;</p><p>  if(value!=statebef){statebef=value;return 1;}//判斷是否有緊急燈狀況發(fā)生,保存按鍵值,置返回標(biāo)志為1</p>

98、<p>  else return 0;</p><p><b>  }</b></p><p>  /*------------------------</p><p><b>  顯示函數(shù)</b></p><p>  ----------------------*/</p&g

99、t;<p>  void display(void)</p><p><b>  {</b></p><p>  if(md_flag==1)//顯示更改時(shí)間狀態(tài)</p><p><b>  {</b></p><p>  if(1==red) {// 南北方向紅燈時(shí)間顯示</

100、p><p>  P2=0xf6; P0=led_table[light_time[0][0]];delay();//分鐘</p><p>  P2=0xed; P0=led_table[light_time[0][1]/10];delay();//秒的十位</p><p>  P2=0xdb;P0=led_table[light_time[0][1]%10];delay

101、();//秒的個(gè)位</p><p><b>  }</b></p><p>  else {//南北綠燈東西紅燈亮?xí)r間顯示</p><p>  P2=0xf6;P0=led_table[light_time[2][0]]; delay();//分鐘</p><p>  P2=0xed;P0=led_table[

102、light_time[2][1]/10]; delay();//秒的十位</p><p>  P2=0xdb;P0=led_table[light_time[2][1]%10]; delay();//秒的個(gè)位</p><p><b>  } </b></p><p><b>  }</b></p><p

103、>  else //正常狀態(tài),顯示時(shí)間</p><p><b>  {</b></p><p>  P2=0xf6; P0=led_table[time/100]; delay();//分鐘</p><p>  P2=0xed; P0=led_table[time/10%10];delay();// 秒的十位</p>

104、<p>  P2=0xdb; P0=led_table[time%10]; delay();//秒的個(gè)位</p><p><b>  } </b></p><p><b>  }</b></p><p>  /*---------------------------</p><p>&

105、lt;b>  主函數(shù)</b></p><p>  --------------------*/</p><p>  void main()</p><p><b>  {</b></p><p>  //初始化定時(shí)器0,外部中斷1 </p><p><b>  EA=

106、1;</b></p><p><b>  EX1=1;</b></p><p><b>  IT1=1;</b></p><p><b>  ET0=1;</b></p><p>  TMOD=0x01;</p><p>  TH0=-100

107、00/256;</p><p>  TL0=-10000%256;</p><p><b>  TR0=1; </b></p><p>  while(1){ </p><p>  if(rd_emstate())//如果有緊急燈按下,進(jìn)行如下緊急處理</p><p>  { &

108、lt;/p><p>  switch(statebef)</p><p><b>  {</b></p><p>  case 0x04:P1=em_state[0];TR0=0;break;//緊急燈亮</p><p>  case 0x02:P1=em_state[1];TR0=0;break;//東西應(yīng)急燈亮<

109、;/p><p>  case 0x01:P1=em_state[2];TR0=0;break;//南北應(yīng)急燈亮</p><p>  case 0x00:TR0=1;break;</p><p>  default: break;</p><p>  } </p>&

110、lt;p><b>  }</b></p><p>  if(state_flag)//正常狀態(tài)下時(shí)間切換,如果狀態(tài)標(biāo)志為1,進(jìn)行如下處理,進(jìn)行狀態(tài)間切換</p><p><b>  {</b></p><p>  switch(state)</p><p><b>  {</b

111、></p><p>  case 0:time=light_time[0][0]*60+light_time[0][1];</p><p>  P1=light_state[0];break;//南北紅燈亮?xí)r間</p><p>  case 1:time=light_time[1][0]*60+light_time[1][1];</p>&l

112、t;p>  P1=light_state[1];break;//黃燈亮?xí)r間</p><p>  case 2:time=light_time[2][0]*60+light_time[2][1];</p><p>  P1=light_state[2];break;//南北綠燈亮?xí)r間</p><p>  case 3:time=light_time[1][0

113、]*60+light_time[1][1];</p><p>  P1=light_state[1];break;//黃燈亮?xí)r間</p><p>  default: break;</p><p><b>  }</b></p><p>  state_flag=0;//清標(biāo)志位</p><p>

114、;<b>  }</b></p><p>  if(nom==0) { md_flag=0;}//恢復(fù)時(shí)間狀態(tài),更改為最近更改的值</p><p>  display();</p><p><b>  }</b></p><p><b>  }</b></p>

115、<p>  /*-----------------</p><p><b>  定時(shí)器0</b></p><p>  --------------------*/</p><p>  void Time0int(void) interrupt 1</p><p><b>  {</b&

116、gt;</p><p><b>  EA=0;</b></p><p>  TH0=-10000/256;</p><p>  TL0=-10000%256;</p><p><b>  time1s--;</b></p><p>  if(time1s==0){//一秒中到

117、,重新置數(shù)</p><p>  time1s=100;</p><p>  time--;//顯示時(shí)間自減</p><p>  if(time==0){//顯示時(shí)間減到0時(shí)切換顯示時(shí)間狀態(tài)</p><p>  state++;//四個(gè)狀態(tài)輪流切換</p><p>  if(state==4) state=0;<

118、/p><p>  state_flag=1;//置狀態(tài)切換標(biāo)志位</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  EA=1; </b></p><p><b>  }<

溫馨提示

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

最新文檔

評論

0/150

提交評論