版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 摘 要1</b></p><p> 1 系統(tǒng)硬件設(shè)計2</p><p> 1.1 80C51單片機引腳圖及引腳功能介紹2</p><p> 1.2 74LS245引腳圖及功能4</p><p&
2、gt; 1.3 八段LED數(shù)碼管5</p><p> 1.4 硬件系統(tǒng)總控制電路6</p><p> 1.5各模塊控制電路8</p><p> 1.5.1 交通燈控制電路8</p><p> 1.5.2 倒計時顯示電路9</p><p> 1.5.3 緊急通行電路12</p>&
3、lt;p> 1.5.4 聲音警示裝置13</p><p> 2 系統(tǒng)程序設(shè)計14</p><p> 2.1 主程序流程圖14</p><p> 2.2 顯示子程序流程圖15</p><p> 3 心得體會16</p><p><b> 參考文獻17</b><
4、;/p><p><b> 附錄 源程序18</b></p><p><b> 摘 要 </b></p><p> 近年來隨著科技的飛速發(fā)展,一個以微電子技術(shù)、計算機技術(shù)和通信技術(shù)為先導(dǎo)的信息革命正在蓬勃發(fā)展。計算機技術(shù)作為三者之一,怎樣與實際應(yīng)用更有效的結(jié)合并發(fā)揮其作用。單片機作為計算機技術(shù)的一個分支,正在不斷的應(yīng)用到
5、實際生活中,同時帶動傳統(tǒng)控制檢測的更新。在實時檢測和自動控制的應(yīng)用系統(tǒng)中,單片機往往是作為一個核心部件使用,針對具體應(yīng)用對象的特點,配以其它器件來加以完善。 </p><p> 十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實現(xiàn)交通的井然秩序呢?靠的是交通信號燈的自動指揮系統(tǒng),來實現(xiàn)交通的井然有序。交通信號燈控制方式很多。本系統(tǒng)采用美國ATMEL公司生產(chǎn)的單片機AT80S51,
6、以及其它芯片來設(shè)計交通燈控制。實現(xiàn)了通過AT89S51芯片的P1口設(shè)置紅、綠燈點亮的功能,輸出設(shè)置顯示時間。交通燈的點亮采用發(fā)光二極管實現(xiàn),時間的顯示采用七段數(shù)碼管實現(xiàn)。單片機系統(tǒng)采用的直流供電。</p><p> 關(guān)鍵詞:AT89S51單片機;智能交通燈控制系統(tǒng);</p><p> 基于51單片機智能交通燈設(shè)計</p><p><b> 1 系統(tǒng)硬
7、件設(shè)計</b></p><p> 1.1 80C51單片機引腳圖及引腳功能介紹</p><p> 80C51系列中,用CHMOS工藝制造的單片機都采用雙列直插式(DIP)40腳封裝,引腳信號完全相同。圖1-1為引腳圖</p><p> 圖1-1 80C51引腳圖</p><p> 這40根引腳大致可分為:電源(VCC、VS
8、S、VPP、VPD)、時鐘(XTAL1、XTAL2)、I/O口(P0~P3)、地址總線(P0口、P2口)和控制總線(ALE、RST、 、 、 )等幾部分。它們的功能簡述如下:</p><p><b> 1.電源 </b></p><p> Vcc(引腳號40),芯片電源,接+5V;Vss(引腳號20),電源接地端。</p><p><
9、b> 2.時鐘 </b></p><p> XTAL1(引腳號18)內(nèi)部振蕩電路反相放大器的輸入端,是外接晶振的一個引腳。當(dāng)采用外部振蕩器時,此引腳接地。</p><p> XTAL2(引腳號19)內(nèi)部振蕩器的反相放大器輸出端,是外接晶振的另一端。當(dāng)采用外部振蕩器時,此引腳接外部振蕩源。</p><p><b> 3. 控制總線&
10、lt;/b></p><p> ?。?)ALE/ (引腳號30): 正常操作時為ALE功能(允許地址鎖存),用來把地址的低字節(jié)鎖存到外部鎖存器。ALE引腳以不變的頻率(振蕩器頻率的1/6)周</p><p> 期性地發(fā)出正脈沖信號。因此,它可用作對外輸出的時鐘信號或用于定時。但要注意,每當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。ALE端可以驅(qū)動(吸收或輸出電</p>
11、<p> 流)8個LSTTL電路。在8751單片機EPROM編程期間,此引腳接編程脈沖( 功能)。</p><p> ?。?) (引腳號29):外部程序存儲器讀選通信號。在從外部程序存儲器取指令(或數(shù)據(jù))期間, 在每個機器周期內(nèi)兩次有效。 可以</p><p> 驅(qū)動8個LSTTL電路。</p><p> ?。?)RST/VPD(引腳號9):復(fù)位信
12、號輸入端。振蕩器工作時,該引腳上持續(xù)2個機器周期的高電平可實現(xiàn)復(fù)位操作。此引腳還可接上備用電源。在Vcc掉電期間,</p><p> 由 向內(nèi)部RAM提供電源,以保持內(nèi)部RAM中的數(shù)據(jù)。</p><p> (4) /Vpp(引腳號31): 為內(nèi)部程序存儲器和外部程序存儲器的選擇端。當(dāng) 為高電平時,訪問內(nèi)部程序存儲器(PC值小于4K);當(dāng) 為低</p><p>
13、 電平時,訪問外部程序存儲器。對于87C51單片機,在EPROM編程期間,此端為21V編程電源輸入端。</p><p><b> 4. I/O線 </b></p><p> (1)P0口(引腳號32~39):單片機的雙向數(shù)據(jù)總線和低8位地址總線。在訪問外部存儲器時實現(xiàn)分時操作,先用作地址總線,在ALE信號的下降沿,地址被鎖存;</p><p&g
14、t; 然后用作為數(shù)據(jù)總線。它也可以用作雙向輸入/輸出口。P0口能驅(qū)動8個LSTTL負載。</p><p> ?。?)P1口(引腳號1~8):準(zhǔn)雙向輸入/輸出口,它能驅(qū)動4個LSTTL負載。</p><p> ?。?)P2口(引腳號21~28):準(zhǔn)雙向輸入/輸出口。在訪問外部存儲器時,用作高8位地址總線。P2口能驅(qū)動4個LSTTL負載。</p><p> (4)P
15、3口(引腳號10~17):準(zhǔn)雙向輸入/輸出口,它能驅(qū)動4個LSTTL負載。P3口的每一引腳還有另外一種功能:</p><p> P3.0——RXD:串行口輸入端</p><p> P3.1——TXD:串行口輸出端</p><p> P3.2—— :外部中斷0中斷請求輸入端</p><p> P3.3—— :外部中斷1中斷請求輸入端&l
16、t;/p><p> P3.4——T0:定時器/計數(shù)器0外部輸入端</p><p> P3.5——T1:定時器/計數(shù)器1外部輸入端</p><p> P3.6—— :外部數(shù)據(jù)存儲器寫選通信號</p><p> P3.7—— :外部數(shù)據(jù)存儲器讀選通信號</p><p> 1.2 74LS245引腳圖及功能</
17、p><p> 74LS245是我們常用的芯片,用來驅(qū)動led或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。它的功能引腳圖如圖1-2所示。</p><p> 圖1-2 74LS245引腳圖</p><p> 74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。</p><p> 當(dāng)8051單片機的P0口總線負載
18、達到或超過P0最大負載能力時,必須接入74LS245等總線驅(qū)動器。</p><p> 當(dāng)片選端/CE低電平有效時,DIR=“0”,信號由 B 向 A 傳輸;(接收)</p><p> DIR=“1”,信號由 A 向 B 傳輸;(發(fā)送)當(dāng)CE為高電平時,A、B均為高阻態(tài)。</p><p> 由于P2口始終輸出地址的高8位,接口時74LS245的三態(tài)控制端1G和2
19、G接地,P2口與驅(qū)動器輸入線對應(yīng)相連。P0口與74LS245輸入端相連,E端接地,保證數(shù)據(jù)線暢通。8051的/RD和/PSEN相與后接DIR,使得RD且PSEN有效時,74LS245輸入(P0.1←D1),其它時間處于輸出(P0.1→D1)。</p><p> 1.3 八段LED數(shù)碼管</p><p> LED顯示屏作為大型顯示設(shè)備的一種,具有亮度高、價格低、壽命長、維護簡便等優(yōu)點。
20、LED數(shù)碼管的結(jié)構(gòu)簡單,分為七段和八段兩種形式,也有共陽和共陰之分。以八段共陽管為例,它有8個發(fā)光二極管(比七段多一個發(fā)光二極管,用來顯示dP,即點),每個發(fā)光二極管的陽極連在一起,如圖1-3所示。這樣,一個LED數(shù)碼管就有I根位選線和8根段選線,要想顯示一個數(shù)值,就要分別對它們的高低電平來加以控制。為方便起見,本文主要討論共陽八段LED數(shù)碼顯示管,其他類形的顯示管與其類似。</p><p> 圖1-3 八段共
21、陽管示意圖</p><p> LED 燈的顯示原理:通過同名管腳上所加電平的高低來控制發(fā)光二極管是否點亮而顯示不同的字形,如 dp,g,f,e,d,c,b,a全亮顯示為8,采用共陽極連接驅(qū)動代碼,代碼表如表1所示。</p><p><b> 表1 驅(qū)動代碼表</b></p><p> 相應(yīng)在程序軟件上,可以通過調(diào)用程序給定的秒值經(jīng)過特定計
22、算算出需要顯示的個位和十位,然后有DPTR調(diào)取LEDMAP的代碼。</p><p> LED8段數(shù)碼管的設(shè)置為每個方位上的一對2為顯示器。四個方位上總共用4個LED接在單片機的IO口上。雖然路口不一樣,但是顯示的時間在數(shù)字上是一樣的,所以兩邊連接的IO口是對稱的。</p><p> 1.4 硬件系統(tǒng)總控制電路</p><p> 本系統(tǒng)以單片機為核心,系統(tǒng)硬件電
23、路由狀態(tài)燈,LED顯示,按鍵,組成。其具體的硬件電路總原理圖如圖1-4所示。</p><p> 其中P0用于送顯四片LED數(shù)碼管,P2用于控制紅綠黃發(fā)光二極管,P1.0,P1.1,與P1.1和P1.2對數(shù)碼管進行片選,P3口為緊急情況處理按鍵,既根據(jù)車流量控制紅綠黃發(fā)光二極管通斷時間。</p><p> 系統(tǒng)上電或手動復(fù)位之后,系統(tǒng)先顯示狀態(tài)燈及LED數(shù)碼管,將狀態(tài)碼值送顯P2口,將要
24、顯示的時間值的個位和十位分別送顯P0口,在此同時用軟件方法計時1秒,到達1s就要將時間值減1,刷新LED數(shù)碼管。</p><p> 時間到達一個狀態(tài)所要全部時間,則要進行下一狀態(tài)判斷及銜接,并裝入次狀態(tài)的相應(yīng)狀態(tài)碼值以及時間值,</p><p> 當(dāng)然,還要開啟三個外部中斷,其一為全部路口緊急情況處理中斷,一旦信號有效,即按鍵為低電平時進入中斷服務(wù)子程序,東西南北路口的狀態(tài)禁止通行。其
25、二為東西方向或南北方向禁止通行,一旦信號有效將進入相應(yīng)中斷服務(wù)子程序,某一方向狀態(tài)禁止通行。其三為通行時間調(diào)整中斷,若按鍵有效,進入相應(yīng)的中斷子程序,對時間進行調(diào)整,可延長或減少某一路段的通行時間,此后再按確定鍵則中斷結(jié)束返回。</p><p> 圖1-4 控制系統(tǒng)總原理圖</p><p> 1.5各模塊控制電路</p><p> 1.5.1 交通燈控制電路&
26、lt;/p><p> 這里我們采用發(fā)光二極管作為交通燈來使用,單片機的I/O接口直接和交通燈(發(fā)光二極管)連接。在十字路口的四組紅、黃、綠三色交通燈中,東西方向道路上的兩組同色燈連接在一起,南北方向道路上的兩組同色的燈也彼此連接在,控制受單片機P2.1~P2.6控制。單片機的I/O接口與交通燈電路的具體連接方式為:P2.1~P2.3分別接?xùn)|西方向的紅、黃、綠共6個放光二極管,P2.4~P2.6分別接南北方向的紅、黃
27、、綠共6個發(fā)光二極管。12個發(fā)光二極管采用了共陰極的連接方式,因此I/O口輸出高電平時,與之相連的發(fā)光二極管會亮,I/O口輸出低電平是,相應(yīng)的發(fā)光二極管會滅。</p><p> 初始東西綠燈亮,南北紅燈亮,東西路口車通行,時隔20s,黃燈閃爍5次。之后,南北綠燈亮,東西紅燈亮,方向開始通車,時隔20s,南北黃燈閃爍5次,然后又切換成東西方向通車,如此重復(fù)。</p><p> 當(dāng)某一方向
28、發(fā)生交通意外或者需要停止方向通行是,這一方向亮紅燈。處理完之后,按下確定鍵,重新按上述方式工作。</p><p> 當(dāng)發(fā)生交通意外(中斷產(chǎn)生)時,全部亮紅燈,進行交通事故的處理。當(dāng)事故處理完畢,按下確定鍵,重新按上述方式工作。</p><p> 當(dāng)南北路口的流量大時,可以增加南北路口亮綠燈的時間,當(dāng)東西路口的流量大時,可以增加?xùn)|西路口亮綠燈的時間,結(jié)束后調(diào)回正常狀態(tài)。交通燈電路如圖1-
29、5所示。</p><p> 圖1-5 交通燈電路</p><p> 1.5.2 倒計時顯示電路</p><p> 倒計時顯示可以提醒駕駛員在信號燈燈色發(fā)生改變的時間、在“停止”和“通過”兩者間作出合適的選擇。駕駛員和行人普遍都愿意選擇有倒計時顯示的信號控制方式,并且認為有倒計時顯示的路口更安全。倒計時顯示是用來減少駕駛員在信號燈色改變的關(guān)鍵時刻做出復(fù)雜判斷的1
30、種方法,它可以提醒駕駛員燈色發(fā)生改變的時間,幫助駕駛員在“停止”和“通過”兩者間作出合適的選擇 。四個路口的計時顯示都是由P0口控制,又P1口的P1.0~P1.2片選這些顯示管,而東西兩個方向的顯示時間一樣,南北方向時間也一樣,片選信號能控制東西也南北顯示不同的時間。當(dāng)某一方向為綠燈時,在綠燈倒計時結(jié)束后會再顯示一個5S的倒計時,以供黃燈顯示使用。顯示管連接圖如圖1-5所示。在單片機與顯示器之間加了一個8*4.7k的排阻與一個74LS2
31、45芯片,排阻的作用是上拉電阻,防止電流過高燒掉顯示管,起到保護顯示管的作用,其連接圖如圖1-6所示。74LS245的作用是驅(qū)動顯示管點亮。其連接圖如圖1-7所示。</p><p> 圖1-5 顯示管連接圖</p><p> 圖1-6 排阻連接圖</p><p> 圖1-7 74LS245驅(qū)動芯片連接圖</p><p> 1.5.3
32、緊急通行電路</p><p> 該電路為緊急情況和根據(jù)車流量調(diào)節(jié)紅綠燈時間長度控制電路。通過單片機的P3.1~P3.7口的七個接口來控制。在緊急情況下,需要停止所有方向上的車的行駛,按下P3.1接口上的開關(guān),接低電平,使其發(fā)生作用,發(fā)出令所有路口的紅燈點亮的脈沖,禁止所有車輛通行。當(dāng)需要禁止東西方向或者南北方向通行時,按下P3.2或者P3.3可以使其方向上的紅燈亮起,禁止該方向車輛通行,而另一方向上則綠燈常量,
33、車輛通行。例如,按下P3.2上的開關(guān),此時南北方向上的紅燈常亮,而東西方向上綠燈常亮,這就起到了南北禁止東西通行的效果,按下P3.3上的開關(guān)則與之相反。有時候某個方向上的車流量比較大,另一個方向上的車流量比較少,這就需要調(diào)整通行時間,P3.5是加時間端口,P3.6為減時間端口,按下一次開關(guān)則會增加或者減少1S,P3.7接的是切換方向開關(guān),按下開關(guān)可以切換方向時間的調(diào)整,例如現(xiàn)在切換開關(guān)是東西方向,而東西方向車流量比較少,南北方向車流量比
34、較大,這就需要增加南北方向通行時間,減少東西方向通行時間。首先通過P3.6口減少東西方向通行時間,然后按下切換方向鍵,這就切換到了南北方向時間調(diào)整狀態(tài),這是按下P3.5,可以增加</p><p> 圖1-6 按鍵電路控制電路圖</p><p> 1.5.4 聲音警示裝置</p><p> 當(dāng)發(fā)生緊急情況需要全面停止通行時,需要聲音警示裝置來提醒車輛,這個警示裝
35、置由P3.0口控制,其電路圖如圖1-7所示。</p><p> 圖1-7聲音警示控制電路</p><p><b> 2 系統(tǒng)程序設(shè)計</b></p><p> 2.1 主程序流程圖</p><p> 圖2-1主程序路程圖</p><p> 2.2 顯示子程序流程圖</p>
36、<p> 圖2-2 顯示子程序流程圖</p><p><b> 3 心得體會</b></p><p> 這次課程設(shè)計,我們小組做的智能交通等控制系統(tǒng)。如往常每一次實訓(xùn),我獲得了很大的收獲。</p><p> 首先,我要說說我學(xué)到的團隊精神,這次課設(shè)需要多人協(xié)作完成,我有幸找到三位認真負責(zé)且樂于交流討論的隊友。</p
37、><p> 這次選交通燈為題目來做課設(shè)一是經(jīng)驗不足,二是信心不足。通過這次課設(shè),我既積累了經(jīng)驗,也獲取了信心,今后會找尋機會再做一些與拖動相關(guān)的電子設(shè)計,因為我們自動化專業(yè)和電機是息息相關(guān)的,很大程度研究的是電機的拖動問題。</p><p> 通過這兩周的單片機課程設(shè)計,我們運用所學(xué)的知識,利用單片機控制原理設(shè)計了一個交通燈控制系統(tǒng),我們對單片機有了更深的體會。我們了解和掌握了一些簡單的編
38、程思想和對I/O口的使用。這次課設(shè)通過單片機的I/O口來控制交通燈。實現(xiàn)一些具體的功能和對特殊情況的處理。</p><p> 通過這次的實踐,我們對單片機的I/O口的使用的條件有更深的理解,對單片機的各個管腳功能的理解也加深了,以及在常用編程設(shè)計思路技巧,特別是匯編語言的掌握方面都能向前邁了一大步。這次的課程設(shè)計讓我們把單片機的理論知識用在實踐中,實現(xiàn)了理論和實踐相結(jié)合,從中更懂得理論是實踐的基礎(chǔ),實踐有著能檢
39、驗理論的正確性,讓我們受益非淺,對我們以后參加工作或者繼續(xù)學(xué)習(xí)將會產(chǎn)生巨大的幫助和影響。</p><p> 在課設(shè)過程中遇到的硬件和軟件問題都通過詢問老師、同學(xué)和去圖書館、上網(wǎng)得到了解決。</p><p><b> 參考文獻</b></p><p> [1]陳大欽 電子技術(shù)基礎(chǔ)實驗 [M].北京:高等教育出版社 2004</p>
40、;<p> [2]陳梓城 電子技術(shù)實訓(xùn) [M].北京:機械工業(yè)出版社 2003</p><p> [3]吳黎明 單片機原理及應(yīng)用技術(shù)[M].北京:科學(xué)出版社 2003</p><p> [4]李學(xué)海 標(biāo)準(zhǔn)80C51單片機基礎(chǔ)教程[M].北京: 北京航空航天大學(xué)出版社 2006</p><p> [5]劉樂善 微型計算機接口技術(shù)及應(yīng)用[M].北京
41、: 華中科技大學(xué)出版社 2004</p><p> [6] 陳炳權(quán) 曾慶六 EDA技術(shù)實用教程[M].北京: 湘潭大學(xué)出版社 2010</p><p> [7] 先鋒工作室. 單片機程序?qū)嵗齕M].北京:清華大學(xué)出版社,2002.</p><p> [8] 李伯成.基于MCS-51單片機的嵌入式系統(tǒng)的設(shè)計[M].北京:電子工業(yè)出版社,2004.<
42、;/p><p> [9] 吳洪潭,肖艷萍,趙偉國.單片機原理及應(yīng)用系統(tǒng)設(shè)計[M].北京:國防工業(yè)出版社,2005.</p><p> [10] 吳黎明, 王桂棠, 洪添勝, 等. 單片機原理及應(yīng)用技術(shù)[ M ] . 北京: 科學(xué)出版社,2005.</p><p><b> 附錄 源程序</b></p><p> #i
43、nclude <reg51.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> uchar data buf[4];</p><p> uchar data sec_dx=20;//東西數(shù)默認</p&
44、gt;<p> uchar data sec_nb=30;//南北默認值</p><p> uchar data set_timedx=20;</p><p> uchar data set_timenb=30;</p><p><b> int n;</b></p><p> uchar dat
45、a countt0;//定時器0中斷次數(shù)</p><p><b> //定義5組開關(guān)</b></p><p> sbit k4=P3^7; //切換方向</p><p> sbit k1=P3^5;//時間加</p><p> sbit k2=P3^6;//時間減</p>&
46、lt;p> sbit k3=P3^4;//確認</p><p> sbit k5=P3^1;//禁止</p><p> // P3^2//只允許東西方向通行,中斷0</p><p> // P3^3//只允許南北方向通行,中斷1</p><p> sbit Yellow_nb=P2^
47、5;//南北黃燈標(biāo)志</p><p> sbit Yellow_dx=P2^2;//東西黃燈標(biāo)志</p><p> sbit Green_nb=P2^4;</p><p> sbit Green_dx=P2^1;</p><p> sbit Buzz=P3^0;</p><p> bit Buzze
48、r_Indicate;</p><p> bit time=0;//燈狀態(tài)循環(huán)標(biāo)志</p><p> bit set=1;//調(diào)時方向切換鍵標(biāo)志</p><p> uchar code table[11]={//共陰極字型碼</p><p> 0x3f, //--0</p><p> 0
49、x06, //--1</p><p> 0x5b, //--2</p><p> 0x4f, //--3</p><p> 0x66, //--4</p><p> 0x6d, //--5</p><p> 0x7d, //--6</p><p> 0x07, //--
50、7</p><p> 0x7f, //--8</p><p> 0x6f, //--9</p><p> 0x00 //--NULL</p><p><b> };</b></p><p><b> //函數(shù)的聲明部分</b></p><
51、p> void delay(int ms);//延時子程序</p><p> void key();//按鍵掃描子程序</p><p> void key_to1();//鍵處理子程序</p><p> void key_to2();</p><p> void key_to3();</p>
52、<p> void display();//顯示子程序</p><p> void logo(); //開機LOGO</p><p> void Buzzer();</p><p><b> //主程序</b></p><p> void main()</p>&
53、lt;p><b> {</b></p><p> TMOD=0X11; //定時器設(shè)置</p><p> TH0=0X3C;//定時器0置初值 0.05S</p><p><b> TL0=0XB0;</b></p><p> EA=1;//開總中
54、斷</p><p> ET0=1;//定時器0中斷開啟</p><p> TR0=1;//啟動定時0</p><p> EX0=1;//開外部中斷0</p><p> EX1=1;//開外部中斷1</p><p><b> logo();</b&
55、gt;</p><p> P2=0Xc3;// 開始默認狀態(tài),東西綠燈,南北黃燈 </p><p> sec_nb=sec_dx+5; //默認南北通行時間比東西多5秒</p><p><b> while(1)</b></p><p><b> { </b></
56、p><p> key(); //調(diào)用按鍵掃描程序</p><p> display(); //調(diào)用顯示程序</p><p><b> Buzzer();</b></p><p><b> }</b></p><p><b> }</b
57、></p><p><b> //函數(shù)的定義部分</b></p><p> void key()//按鍵掃描子程序</p><p><b> { </b></p><p> if(k1!=1)//時間加按下時</p><p><b>
58、{</b></p><p> delay(10);//延時消抖</p><p> if(k1!=1)</p><p><b> {</b></p><p> while(k1!=1)//當(dāng)按鍵未彈起時,一直執(zhí)行</p><p><b> { &l
59、t;/b></p><p> key_to1();//調(diào)用按鍵1功能</p><p> for(n=0;n<40;n++)//調(diào)用40次顯示,用于延時</p><p> { display();}</p><p><b> }</b></p><p><b>
60、 }</b></p><p><b> }</b></p><p> if(k2!=1)//當(dāng)K2按鍵按下時</p><p><b> {</b></p><p> delay(10);//延時消抖</p><p><b>
61、 if(k2!=1)</b></p><p><b> {</b></p><p> while(k2!=1)//按鍵按下未彈起時一直執(zhí)行</p><p><b> { </b></p><p> key_to2();//調(diào)用key2功能</p><
62、;p> for(n=0;n<40;n++)//調(diào)用40次顯示,用于延時</p><p> { display();}</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
63、<p> if(k3!=1)//當(dāng)K3(確認)鍵按下時</p><p><b> {</b></p><p> TR0=1; //啟動定時器</p><p> Buzzer_Indicate=0;</p><p> sec_nb=set_timenb;//從中斷回復(fù)
64、,仍顯示設(shè)置過的數(shù)值</p><p> sec_dx=set_timedx;//顯示設(shè)置過的時間</p><p> if(set==1)//時間倒時到0時</p><p><b> { </b></p><p> //P2=0X99;//東西紅燈,南北綠燈</p>&
65、lt;p> sec_nb=sec_dx+5; //回到初值</p><p><b> }</b></p><p><b> else </b></p><p><b> { </b></p><p> //P2=0xC3;//東西綠燈,南北紅燈
66、</p><p> sec_dx=sec_nb+5; </p><p><b> }</b></p><p><b> } </b></p><p> if(k4!=1)//當(dāng)K4(切換)鍵按下</p><p><b> {</b&g
67、t;</p><p> delay(5);//延時消抖</p><p><b> if(k4!=1)</b></p><p><b> { </b></p><p> while(k4!=1);</p><p> set=!set;//取反s
68、et標(biāo)志位,以切換調(diào)節(jié)方向</p><p><b> }</b></p><p><b> }</b></p><p> if(k5!=1)//當(dāng)K5(禁止)鍵按下時</p><p><b> {</b></p><p> del
69、ay(5);//延時消抖</p><p><b> if(k5!=1)</b></p><p><b> {</b></p><p> while(k5!=1)</p><p> key_to3();</p><p><b> }&
70、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p> void display() //顯示子程序</p><p><b> {</b></p><p> buf[1]=sec_d
71、x/10; //第1位 東西秒十位</p><p> buf[2]=sec_dx%10; //第2位 東西秒個位</p><p> buf[3]=sec_nb/10; //第3位 南北秒十位</p><p> buf[0]=sec_nb%10; //第4位 南北秒個位</p><p> P1=0xff;
72、 // 初始燈為滅的</p><p><b> P0=0x00;</b></p><p> P1=0xfe; //片選LED1</p><p> P0=table[buf[1]];//送東西時間十位的數(shù)碼管編碼</p><p> delay(1);//延時</p
73、><p> P1=0xff;//關(guān)顯示</p><p> P0=0x00;</p><p> P1=0xfd; //片選LED2</p><p> P0=table[buf[2]];</p><p><b> delay(1);</b></p&
74、gt;<p><b> P1=0xff;</b></p><p><b> P0=0x00;</b></p><p> P1=0Xfb; //片選LED3</p><p> P0=table[buf[3]];</p><p><b> delay(1);&
75、lt;/b></p><p><b> P1=0xff;</b></p><p><b> P0=0x00;</b></p><p><b> P1=0Xf7;</b></p><p> P0=table[buf[0]];//片選LED4</p>
76、<p><b> delay(1);</b></p><p><b> }</b></p><p> void time0(void) interrupt 1 using 1 //定時中斷子程序</p><p><b> {</b></p><p>
77、 TH0=0X3C;//重賦初值</p><p><b> TL0=0XB0;</b></p><p> TR0=1;//重新啟動定時器</p><p> countt0++;//軟件計數(shù)加1</p><p> if(countt0==20)
78、 // 定時器中斷次數(shù)=20時(即1秒時)</p><p> {countt0=0;//清零計數(shù)器</p><p> sec_dx--;//東西時間減1</p><p> sec_nb--;//南北時間減1</p><p> if(sec_nb<=5&&time==0)
79、 //東西黃燈閃</p><p><b> {</b></p><p> Green_dx=0;</p><p> Yellow_dx=!Yellow_dx;</p><p> } </p><p> if(sec_dx<=5&&time==
80、1) //南北黃燈閃</p><p><b> { </b></p><p> Green_nb=0;</p><p> Yellow_nb=!Yellow_nb;</p><p> } </p><p> if(sec_dx==0&&sec_
81、nb==5) //當(dāng)東西倒計時到0時,重置5秒,用于黃燈閃爍時間</p><p><b> sec_dx=5;</b></p><p> if(sec_nb==0&&sec_dx==5)//當(dāng)南北倒計時到0時,重置5秒,用于黃燈閃爍時間</p><p><b> sec_nb=5;</b>&l
82、t;/p><p> if(time==0&&sec_nb==0)//當(dāng)黃燈閃爍時間倒計時到0時,</p><p><b> { </b></p><p> P2=0x99;//重置東西南背方向的紅綠燈</p><p> time=!time;</p><p>
83、 sec_nb=set_timenb;//重賦南北方向的起始值</p><p> sec_dx=set_timenb+5;//重賦東西方向的起始值</p><p><b> }</b></p><p> if(time==1&&sec_dx==0)//當(dāng)黃燈閃爍時間到</p><p&
84、gt;<b> {</b></p><p> P2=0Xc3;//重置東西南北的紅綠燈狀態(tài)</p><p> time=!time;</p><p> sec_dx=set_timedx;//重賦東西方向的起始值</p><p> sec_nb=set_timedx+5;}//重賦南北方向的
85、起始值</p><p><b> }</b></p><p><b> }</b></p><p> void key_to1()//鍵盤處理子程序之+</p><p><b> {</b></p><p> TR0=0;
86、 //關(guān)定時器</p><p> if(set==0)</p><p> set_timenb++; //南北加1S</p><p><b> else</b></p><p> set_timedx++; //東西加1S</p><p> if(set_time
87、nb==100)</p><p> set_timenb=1;</p><p> if(set_timedx==100)</p><p> set_timedx=1; //加到100置1</p><p> sec_nb=set_timenb ; //設(shè)置的數(shù)值賦給東西南北</p><p> sec_
88、dx=set_timedx;//</p><p><b> }</b></p><p> void key_to2() //鍵盤處理子程序之-</p><p><b> {</b></p><p> TR0=0; //關(guān)定時器</p>&
89、lt;p> if(set==0)</p><p> set_timenb--; //南北減1S</p><p><b> else</b></p><p> set_timedx--; //東西減1S</p><p> if(set_timenb==0)</p><p>
90、; set_timenb=99;</p><p> if(set_timedx==0 )</p><p> set_timedx=99; //減到1重置99</p><p> sec_nb=set_timenb ; //設(shè)置的數(shù)值賦給東西南北</p><p> sec_dx=set_timedx;</p>
91、<p><b> }</b></p><p> void key_to3() //鍵盤處理之緊急車通行</p><p><b> {</b></p><p> TR0=0;//關(guān)定時器</p><p> P2=0Xc9;//全部置紅燈</p><
92、p> sec_dx=00;//四個方向的時間都為00</p><p> sec_nb=00;</p><p> Buzzer_Indicate=1;</p><p><b> }</b></p><p><b> //外部中斷0</b></p><p>
93、void int0(void) interrupt 0 using 1 //只允許東西通行</p><p><b> {</b></p><p> TR0=0;//關(guān)定時器</p><p> P2=0Xc3;//東西方向置綠燈</p><p> Buzzer_Indicate=
94、0;</p><p> sec_dx=00;//四個方向的時間都為00</p><p> sec_nb=00;</p><p><b> }</b></p><p><b> //外部中斷1</b></p><p> void int1(void)
95、interrupt 2 using 1 //只允許南北通行 </p><p><b> {</b></p><p> TR0=0;//關(guān)定時器</p><p> P2=0X99;//置南北方向為綠燈</p><p> Buzzer_Indicate=0;</p>
96、<p> sec_nb=00;//四個方向的時間都為00</p><p> sec_dx=00;</p><p><b> }</b></p><p> void logo()//開機的Logo "- - - -"</p><p><b> { <
97、/b></p><p> for(n=0;n<50;n++)</p><p><b> {</b></p><p><b> P0=0x40;</b></p><p><b> P1=0xfe;</b></p><p><b&g
98、t; delay(1);</b></p><p><b> P1=0xfd;</b></p><p><b> delay(1);</b></p><p><b> P1=0Xfb;</b></p><p><b> delay(1);</
99、b></p><p><b> P1=0Xf7;</b></p><p><b> delay(1);</b></p><p> P1 = 0xff;</p><p><b> }</b></p><p><b> }</
100、b></p><p> void Buzzer()</p><p><b> {</b></p><p> if(Buzzer_Indicate==1)</p><p> Buzz=!Buzz;</p><p> else Buzz=0;</p><p>&
101、lt;b> }</b></p><p> void delay(int ms)//延時子程序</p><p><b> {</b></p><p><b> uint j,k;</b></p><p> for(j=0;j<ms;j++)//延時ms<
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于51單片機的智能交通燈課程設(shè)計
- 基于51單片機的智能交通燈課程設(shè)計
- 51單片機交通燈課程設(shè)計
- 單片機課程設(shè)計--基于51單片機的交通燈
- 課程設(shè)計---基于51單片機的交通燈設(shè)計
- 單片機交通燈課程設(shè)計--基于單片機的交通燈控制設(shè)計
- 單片機交通燈課程設(shè)計--基于單片機的交通燈系統(tǒng)的設(shè)計
- 交通燈單片機課程設(shè)計--基于單片機的交通燈顯示系統(tǒng)
- 交通燈單片機課程設(shè)計--基于單片機的交通燈顯示系統(tǒng)
- 基于51單片機控制的交通燈的課程設(shè)計
- 單片機課程設(shè)計--模擬智能交通燈
- 單片機交通燈課程設(shè)計--基于單片機的交通燈系統(tǒng)的設(shè)計
- c51單片機交通燈課程設(shè)計
- 單片機課程設(shè)計--基于單片機的交通燈設(shè)計
- 基于89c51單片機交通燈課程設(shè)計
- 基于單片機的交通燈課程設(shè)計
- 基于單片機的交通燈課程設(shè)計
- 單片機交通燈課程設(shè)計
- 單片機課程設(shè)計---交通燈
- 單片機交通燈課程設(shè)計
評論
0/150
提交評論