版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 單片機(jī)控制交通燈控制系統(tǒng)設(shè)計(jì)</p><p><b> 目錄</b></p><p> 引言……………………………………………………………-5 -</p><p> 第1章 概述- 6 -</p><p> 1.1單片機(jī)認(rèn)識- 6 -</p><p> 1.2
2、 單片機(jī)的應(yīng)用- 6 -</p><p> 1.3設(shè)計(jì)任務(wù)- 7 -</p><p> 第2章 系統(tǒng)總體方案及硬件設(shè)計(jì)- 7 -</p><p> 2.1交通管理的方案- 7 -</p><p> 2.2總體硬件設(shè)計(jì)- 7 -</p><p> 2.3系統(tǒng)時鐘電路- 8 -</p>
3、<p> 2.4系統(tǒng)復(fù)位電路- 9 -</p><p> 2.5數(shù)碼管顯示電路- 10 -</p><p> 2.6路燈指示電路- 11 -</p><p> 2.7按鍵電路設(shè)計(jì)- 12 -</p><p> 第3章 軟件系統(tǒng)設(shè)計(jì)- 13 -</p><p> 3.1設(shè)計(jì)思路及關(guān)鍵技術(shù)
4、- 13 -</p><p> 3.2 軟件流程- 13 -</p><p> 3.3 交通燈的設(shè)計(jì)程序說明- 14 -</p><p> 3.4 延時函數(shù)- 14 -</p><p> 3.5 延時函數(shù)- 15 -</p><p> 3.6 顯示函數(shù)- 15 -</p>
5、<p> 3.7定時器0中斷函數(shù)- 16 -</p><p> 第4章 Proteus軟件仿真- 16 -</p><p> 4.1 Proteus軟件仿真- 17 -</p><p> 4.2 南北路燈切換時仿真- 17 -</p><p> 4.3 緊急情況下的仿真- 17 -</p><
6、p> 4.4東西緊急情況下的仿真- 18 -</p><p> 第5章 心得體會- 19 -</p><p> 參考文獻(xiàn)- 19 -</p><p> 附1 源程序代碼- 20 -</p><p> 附2 系統(tǒng)原理圖- 26 -</p><p> 單片機(jī)控制交通燈控制系統(tǒng)設(shè)計(jì)</
7、p><p><b> 摘要</b></p><p> 本設(shè)計(jì)是根據(jù)我們所學(xué)習(xí)的單片機(jī)課程,按照大綱要求對我們進(jìn)行的一次課程檢驗(yàn),是進(jìn)行單片機(jī)課程訓(xùn)練的必要任務(wù),也對我們掌握單片機(jī)應(yīng)用有很大的幫助。掌握單片機(jī)技術(shù)是一門不可或缺的技術(shù),對我們將來的工作以及生活和學(xué)習(xí)都有很密切的聯(lián)系。當(dāng)今世界的發(fā)展是以科學(xué)技術(shù)為基礎(chǔ)的,微控技術(shù)在生產(chǎn)中所占的比重也越來越大。單片機(jī)的出現(xiàn)是近
8、代計(jì)算機(jī)技術(shù)發(fā)展史上的一個重要里程碑。近年來,隨著電子技術(shù)和微機(jī)計(jì)算機(jī)的迅速發(fā)展,單片機(jī)的檔次不斷提高,其應(yīng)用領(lǐng)域也在不斷的擴(kuò)大,已在工業(yè)控制、尖端科學(xué)、智能儀器儀表、日用家電、汽車電子系統(tǒng)、辦公自動化設(shè)備、個人信息終端及通信產(chǎn)品中得到了廣泛的應(yīng)用,成為現(xiàn)代電子系統(tǒng)中最重要的智能化的核心部件。</p><p><b> 摘要不要</b></p><p><b&
9、gt; 引言</b></p><p> 我的這次單片機(jī)課程設(shè)計(jì)就是利用單片機(jī)的基本特點(diǎn),使用C語言實(shí)現(xiàn)一個簡易的交通燈電路,但由于能力的有限,編出的程序只能實(shí)現(xiàn)課程設(shè)計(jì)的最基本的要求,沒有對其進(jìn)行更多的擴(kuò)展,以后有能力的時候再去完善它?,F(xiàn)就我這次課程設(shè)計(jì)的主要內(nèi)容及主要方法概括一下。本設(shè)計(jì)設(shè)計(jì)的是一個交通燈控制系統(tǒng),以單片機(jī)為核心,采用目前比較流行的AT89S51單片機(jī),對十字路口交通燈電路進(jìn)行了
10、仿真制作,主要完成十字路口交通燈的紅、綠、黃燈的點(diǎn)亮?xí)r間控制,并模擬了兩道均有車輛要求通過時、一道有車輛要求通過時、以及在緊急情況下三種狀態(tài)下交通燈的時間控制方式。在模擬系統(tǒng)中,采用了兩組紅、黃、綠三種發(fā)光二極管分別代表兩道上的紅綠燈,采用了數(shù)碼管顯示每種燈點(diǎn)亮的時間;并采用了三個按鈕開關(guān)來模擬系統(tǒng)要求的三種狀態(tài)。在本次設(shè)計(jì)中,程序并沒有采用原來學(xué)習(xí)書本上的匯編語言,而是采用了C51編寫, 程序仿真采用流行的PROTEUS軟件,和kei
11、l聯(lián)合仿真,方便調(diào)試程序和修改硬件,結(jié)果證明方案的硬件設(shè)計(jì)正確,程序也符合要求。</p><p><b> 第1章 概述</b></p><p><b> 1.1單片機(jī)認(rèn)識</b></p><p> MCS-51單片機(jī)是Intel公司在1980年繼MCS-48系列8位單片機(jī)之后推出的高檔8位單片機(jī)。MCS-51單片機(jī)
12、在性能和片內(nèi)功能方面大大優(yōu)于MCS-48系列單片機(jī)。</p><p> MCS-51的典型產(chǎn)品有:8051、8031、8751、80C51、80C31、87C51等,8051內(nèi)部有4kB ROM,8751內(nèi)部有4kB EPROM,8031片內(nèi)無ROM。除此之外,三者的內(nèi)部結(jié)構(gòu)及引腳完全相同。</p><p> 89S51是一種低功耗、高性能CMOS8位微控制器,具有4K 在系統(tǒng)可編程F
13、lash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,AT89S51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。</p><p> 1.2 單片機(jī)的應(yīng)用</p><p> 單片機(jī)是應(yīng)工業(yè)測控需要而產(chǎn)
14、生的,最能反映其功能及形態(tài)的名稱是在一個應(yīng)用系統(tǒng)中,Single-chip Micro-controller。按照測控系統(tǒng)的特點(diǎn)和要求,單片機(jī)的應(yīng)用可分為單機(jī)應(yīng)用和多機(jī)應(yīng)用兩大類。我們這次要完成的單片機(jī)課程設(shè)計(jì)就是它的單機(jī)應(yīng)用,下面在介紹一下單片機(jī)在單機(jī)應(yīng)用領(lǐng)域內(nèi)的主要內(nèi)容。</p><p><b> ?。?)智能產(chǎn)品</b></p><p> 單片機(jī)與傳統(tǒng)機(jī)械產(chǎn)品
15、相結(jié)合,使傳統(tǒng)機(jī)械產(chǎn)品結(jié)構(gòu)簡化,控制智能化,購成新一代機(jī)電一體化產(chǎn)品。目前,利用單片機(jī)構(gòu)成的智能產(chǎn)品已廣泛應(yīng)用于家用電器、辦公設(shè)備、數(shù)控機(jī)床、紡織機(jī)械、工業(yè)設(shè)備等行業(yè)。</p><p><b> ?。?)智能儀表</b></p><p> 目前,各種傳感器、變送器、控制儀表已普遍采用單片機(jī)應(yīng)用系統(tǒng)。它集測量、處理、控制功能于一體,具有各種智能化功能,如存儲、數(shù)據(jù)處理
16、、查找、判斷、聯(lián)網(wǎng)和語音等功能。</p><p> 單片機(jī)構(gòu)成的智能儀表,能使儀表具有數(shù)字化、智能化、多功能化、綜合化、柔性化等優(yōu)點(diǎn),賦予測量儀表以嶄新的面貌,使傳統(tǒng)的儀器、儀表發(fā)生根本性的變革,它代表了儀器儀表的發(fā)展趨勢。</p><p><b> ?。?)測控技術(shù)</b></p><p> 用單片機(jī)構(gòu)成的各種工業(yè)控制系統(tǒng)中的數(shù)據(jù)采集系統(tǒng)
17、具有工作穩(wěn)定可靠、抗干擾能力強(qiáng)的優(yōu)點(diǎn),如爐溫恒溫控制系統(tǒng)、電鍍生產(chǎn)自動控制系統(tǒng)等。</p><p><b> ?。?)智能接口</b></p><p> 在計(jì)算機(jī)系統(tǒng),特別是較大型的工業(yè)測控系統(tǒng)中,除通用外部設(shè)備外,還由許多外部通信、采集、多路分配管理、驅(qū)動控制等接口。這些外部設(shè)備與接口如果完全由主機(jī)進(jìn)行管理,勢必會造成主機(jī)負(fù)擔(dān)過重,運(yùn)行速度降低,接口的管理水平也不
18、可能提高。如果用單片機(jī)進(jìn)行接口的控制與管理,單片機(jī)與主機(jī)可并行加工處理,可以大量降低接口的通信密度,極大的提高了接口控制管理水平。在一些通用計(jì)算機(jī)外部設(shè)備上,已實(shí)現(xiàn)了單片機(jī)的鍵盤管理、打印機(jī)控制、繪圖儀控制、硬盤驅(qū)動控制等。</p><p><b> 1.3設(shè)計(jì)任務(wù)</b></p><p> 1) A道和B道上均有車輛要求通過時,A ,B 道輪流放行。A 道放行5
19、分鐘(調(diào)試時改為5秒鐘),B 道放行4分鐘(調(diào)試時改為4秒鐘)。</p><p> 2) 一道有車而另一道無車(實(shí)驗(yàn)時用開關(guān)K0 和K1 控制),交通燈控制系統(tǒng)能立即讓有車道放行。</p><p> 3) 有緊急車輛要求通過時,系統(tǒng)要能禁止普通車輛通行,A ,B 道均為紅燈,緊急車由 K2 開關(guān)模擬。</p><p> 4)綠燈轉(zhuǎn)為紅燈時,黃燈亮1秒</
20、p><p> 第2章 系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p> 2.1交通管理的方案</p><p> A、B兩干道交于一個十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮?xí)r間為A、B兩干道的公共停車時間。設(shè)A道比B道的車流量大,指示燈燃亮的方案如表2-1-1
21、。</p><p><b> 表2-1-1</b></p><p><b> 說明:</b></p><p> ?。?)當(dāng)為黃燈時 A、B兩道同時為黃燈;以提示行人或車輛下一個燈色即將到來 時間 1秒。 </p><p> ?。?)當(dāng)A到為紅燈,A 道車輛禁止通行,A 道行人
22、可通過;B 道為綠燈,B 道車輛通過,行人禁止通行。時間為4秒。</p><p> ?。?)當(dāng)A道綠燈,A 道車輛通行;B 道為紅燈,B 道車輛禁止通過,行人通行。時間為5秒。 A道車流大 通行時間長</p><p> (4)這樣如上表的時間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車輛就能安全暢通的通行。</p><p> ?。?)此表可根據(jù)車流量動態(tài)設(shè)定<
23、/p><p> 在沒有特殊情況下,即在兩道均有車輛要求通過時,交通燈按常規(guī)運(yùn)行。通過控制開關(guān)可以輸入要模擬的其它狀態(tài),交通燈將按照其輸入狀態(tài)的情況進(jìn)行運(yùn)行。</p><p><b> 2.2總體硬件設(shè)計(jì)</b></p><p> 交通燈控制系統(tǒng)的結(jié)構(gòu)框圖如圖2-2-1所示??傮w設(shè)計(jì)方案共有五個部分組成,分別是:單片機(jī)AT89C51、紅、綠、黃
24、燈顯示電路、LED數(shù)顯時間電路、晶振及復(fù)位控制電路、控制與調(diào)時開關(guān)電路。在進(jìn)行仿真調(diào)試過程中,程序運(yùn)行正確,五個部分就同時工作,從而實(shí)現(xiàn)了交通燈的基本功能及調(diào)時功能。系統(tǒng)的總的原理框圖如圖2-1所示。</p><p> 圖2-2-1 硬件設(shè)計(jì)方案</p><p><b> 2.3系統(tǒng)時鐘電路</b></p><p> 晶振采用了內(nèi)部時鐘信
25、號源的方式。對于時間要求不是很高的系統(tǒng),只要按圖進(jìn)行設(shè)計(jì)就能使系統(tǒng)可靠起振并穩(wěn)定運(yùn)行。但由于圖中的C1、C2電容起著系統(tǒng)時鐘頻率微調(diào)和穩(wěn)定的作用,因此,在本系統(tǒng)的實(shí)際應(yīng)用中一定要注意正確選擇參數(shù)(30±10 PF),并保證對稱性(盡可能匹配)。</p><p> 圖2-3-1 系統(tǒng)時鐘電路</p><p><b> 2.4系統(tǒng)復(fù)位電路</b></p
26、><p> 復(fù)位電路我采用上電+按鈕復(fù)位的方式。當(dāng)開關(guān)打開時,RST通過電阻接地,當(dāng)有開關(guān)閉合時由于電容的作用使電源VCC通過電阻施加在單片機(jī)復(fù)位端RST上,實(shí)現(xiàn)單片機(jī)復(fù)位。只是可惜,在進(jìn)行仿真器調(diào)試過程中,該復(fù)位電路是不起作用的。具體電路如圖2-4-1所示。</p><p> 圖2-4-1 系統(tǒng)復(fù)位電路</p><p> 2.5數(shù)碼管顯示電路</p>
27、<p> 數(shù)碼管工作原理 這里我們介紹8段數(shù)碼管的工作原理。8段數(shù)碼管又稱為8字型數(shù)碼管,分為8段:A、B、C、D、E、F、G、DP。其中,DP為小數(shù)點(diǎn)。數(shù)碼管常用的有10根管腳,每一段有一根管腳,另外兩根管腳為一個數(shù)碼管的公共段,兩根之間相互連通。 </p><p> 發(fā)光二極管的發(fā)光原理,我們已經(jīng)介紹過了,同理,8段LED數(shù)碼管,則是在一定形狀的絕緣材料上,利用不同形狀點(diǎn)劃的發(fā)光二極管組合,
28、排列成“8”字型的數(shù)碼管,分別引出它們的電極,點(diǎn)亮相應(yīng)的點(diǎn)劃來顯示0-9的數(shù)字。 </p><p> 從電路上,按數(shù)碼管的接法不同又分為共陰和共陽兩種。圖2-5-1是共陰和共陽極數(shù)碼管的內(nèi)部電路,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。</p><p> 圖2-5-1 數(shù)碼管的內(nèi)部電路接法</p><p> 在設(shè)計(jì)時,為了系統(tǒng)圖的美觀,我采用了6個
29、數(shù)碼管組成的數(shù)碼管組,采用共陰極接法。如圖2-5-2。</p><p> 圖2-5-2 系統(tǒng)數(shù)碼管電路</p><p><b> 2.6路燈指示電路</b></p><p> 在設(shè)計(jì)路燈時,采用了發(fā)光二極管代替路燈。先介紹一下二極管,見圖 2-6-1。二極管工作原理是單向?qū)ǎ粗挥姓龢O電壓高于負(fù)極電壓某特定值時才會導(dǎo)通,而負(fù)極電壓高于正
30、極電壓是不導(dǎo)通的。</p><p> 圖 2-6-1 發(fā)光二極管示意圖</p><p> 發(fā)光二極管是一種特殊的二極管,導(dǎo)通時會發(fā)光(發(fā)光二極管導(dǎo)通壓降一般為1.7V~1.9V)。此外,工作電流要滿足該二極管的工作電流。 </p><p> 發(fā)光二極管的正負(fù)極可以用萬用表進(jìn)行判斷,把萬用表撥至二極管檔或電阻擋,用兩個表筆分別接觸二極管的兩個引出腳。若發(fā)光二極管
31、被點(diǎn)亮,則與紅表筆相接的引出腳為正極。從外觀上看,發(fā)光二極管的正極引腳的長度也比較長。 </p><p> 一般發(fā)光二極管與I/O端口之間都會再連接一個電阻,其作用在于限制通過二極管的電流,從而達(dá)到減少功耗或者滿足端口對最大電流的限制。一般發(fā)光二極管的點(diǎn)亮電流為5mA至10mA。 </p><p> 路燈設(shè)計(jì)時我采用了紅、黃、綠三種發(fā)光二級管。如圖2-6-2所示。</p>
32、<p> 圖2-6-2 路燈設(shè)計(jì)電路</p><p><b> 2.7按鍵電路設(shè)計(jì)</b></p><p> 按鍵工作方式可以是中斷方式也可以是掃描方式,對掃描方式來說,掃描是一直調(diào)用按鍵掃描程序,也可以用定時調(diào)用按鍵掃描程序,不管哪一種,都需要占用系統(tǒng)寶貴的時間資源,相比較而言中斷就有優(yōu)勢,中斷鍵盤只有在有按鍵按下時才去執(zhí)行鍵盤程序,在沒有按鍵按下
33、的情況下,可以處理其他的事務(wù),使資源得到充分的利用,故中斷鍵盤有占用資源少,響應(yīng)速度快的優(yōu)點(diǎn),但在有按鍵按下時有數(shù)碼管閃爍的缺點(diǎn),這是因?yàn)樘幚碇袛鄷r,數(shù)碼管停止了掃描,對顯示要求不高的場合下,這也是完全可以滿足要求的。但實(shí)際應(yīng)用中,為了保證安全查詢鍵值和響應(yīng),通常還要進(jìn)行按鍵去抖和等待鍵釋放(查詢按鍵是否抬起)的動作, 由于按鍵本身是機(jī)械開關(guān),所以在觸點(diǎn)閉合或斷開的瞬間會出現(xiàn)電壓抖動的現(xiàn)象。按鍵設(shè)計(jì)如圖2-7-1所示。</p>
34、;<p> 圖2-7-1 按鍵電路</p><p> 第3章 軟件系統(tǒng)設(shè)計(jì)</p><p> 3.1設(shè)計(jì)思路及關(guān)鍵技術(shù) </p><p> 一個完整的交通燈相當(dāng)于一個簡單的單片機(jī)系統(tǒng),該系統(tǒng)有交通燈設(shè)置電路、單片機(jī)、顯示電路等構(gòu)成。單片機(jī)是集成的IC芯片,只需根據(jù)實(shí)際設(shè)計(jì)要求選型。其他部分都需要根據(jù)應(yīng)用要求和性能指標(biāo)自行設(shè)計(jì)。首先了解實(shí)際交通燈
35、的變化規(guī)律。假設(shè)一個十字路口為東西南北走向。初始狀態(tài)0為東西紅燈,南北紅燈。然后轉(zhuǎn)狀態(tài)1南北綠燈通車,東西紅燈。過一段時間轉(zhuǎn)狀態(tài)2,南北綠燈閃幾次轉(zhuǎn)亮黃燈,延時幾秒,東西仍然紅燈。再轉(zhuǎn)狀態(tài)3,東西綠燈通車,南北紅燈。過一段時間轉(zhuǎn)狀態(tài)4,東西綠燈閃幾次轉(zhuǎn)亮黃燈,延時幾秒,南北仍然紅燈。最后循環(huán)至狀態(tài)1。 </p><p><b> 3.2 軟件流程</b></p><p
36、> 系統(tǒng)總體流程圖如圖3-2-1所示: </p><p> 圖3-2-1整體軟件設(shè)計(jì)流程圖</p><p> 3.3 交通燈的設(shè)計(jì)程序說明</p><p> 這部分中定義了一些全局變量的數(shù)組和變量以及位標(biāo)志,只是些定義的東西不需要畫流程圖了。這部分程序如下:</p><p> #include<reg51.h&
37、gt;</p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit nom=P3^7;</p><p> uchar code led_table[10]={0x3f,0x06,0x5b,0
38、x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p><b> //顯示數(shù)碼表</b></p><p> uchar code light_state[]={0x21,0x12,0x0c,0x12};//交通燈狀態(tài)存儲表</p><p> uchar code em_state[3]={0x24
39、,0x21,0x0c};//緊急燈狀態(tài)顯示表</p><p> uchar light_time[][2]={{0,4},{0,1},{0,5},{0,1}};//顯示時間存儲表</p><p> uchar statebef,time1s=100,state=0;//存儲緊急燈狀態(tài),定時基數(shù),狀態(tài)基數(shù)</p><p> uint time;//顯
40、示時間變量</p><p> bit md_flag,state_flag=1,red;//顯示時間更改狀態(tài),狀態(tài)切換標(biāo)志位,紅綠切換標(biāo)志位</p><p><b> 3.4 延時函數(shù)</b></p><p> 延時函數(shù)的流程圖如圖3-4-1。</p><p><b> 延時程序如下:</b&
41、gt;</p><p> /*--------------------------------</p><p><b> 延時函數(shù)</b></p><p> ------------------------*/</p><p> void delay(void)</p><p><
42、b> {</b></p><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>
43、;<b> }</b></p><p> 圖3-4-1 延時函數(shù)的流程圖</p><p><b> 3.5 延時函數(shù)</b></p><p> 讀狀態(tài)函數(shù)的流程圖如圖3-5-1。 </p><p><b> 讀狀態(tài)函數(shù)如下:</b></p><p&
44、gt; /*--------------------------</p><p> 讀狀態(tài)函數(shù):判斷是否有緊急燈狀況出現(xiàn)</p><p> ---------------------*/</p><p> uchar rd_emstate(void)</p><p><b> {</b></p>
45、<p> uchar value;</p><p><b> value=P3;</b></p><p> value>>=4;</p><p> value&=0x07;</p><p> if(value!=statebef){statebef=value;return
46、 1;}</p><p> //判斷是否有緊急燈狀況發(fā)生,</p><p> //保存按鍵值,置返回標(biāo)志為1</p><p> else return 0;</p><p><b> }</b></p><p><b> 3.6 顯示函數(shù)</b></p>
47、;<p><b> 顯示函數(shù)如下:</b></p><p> void display(void)</p><p><b> {</b></p><p> if(md_flag==1)//顯示更改時間狀態(tài)</p><p><b> {</b></
48、p><p> if(1==red) {// 南北方向紅燈時間顯示</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>
49、 P2=0xdb; P0=led_table[light_time[0][1]%10];delay();//秒的個位</p><p><b> }</b></p><p><b> ……</b></p><p> else //正常狀態(tài),顯示時間</p><p><b> {&l
50、t;/b></p><p> P2=0xf6; P0=led_table[time/100]; delay();//分鐘</p><p> P2=0xed; P0=led_table[time/10%10];delay();// 秒的十位</p><p> P2=0xdb; P0=led_table[time%10]; delay();//秒的個
51、位</p><p><b> } }</b></p><p> 3.7定時器0中斷函數(shù)</p><p> 定時器0中斷函數(shù)如下:</p><p> void Time0int(void) interrupt 1</p><p><b> { EA=0;</
52、b></p><p> TH0=-10000/256;</p><p> TL0=-10000%256;</p><p><b> time1s--;</b></p><p> if(time1s==0){//一秒中到,重新置數(shù) </p><p> time1s=100;</
53、p><p> time--;//顯示時間自減</p><p> if(time==0){//顯示時間減到0時切換顯示時間狀態(tài)</p><p> state++;//四個狀態(tài)輪流切換</p><p> if(state==4) state=0;</p><p> state_flag=1;//置狀態(tài)切換標(biāo)志位&l
54、t;/p><p> } } EA=1; }</p><p> 第4章Proteus軟件仿真</p><p> 4.1 Proteus軟件仿真</p><p> Proteus軟件用于系統(tǒng)的仿真,編譯軟件采用keil UV3。程序的仿真用英國的labcenter公司的Protens V7.13。其果如下:加電后的結(jié)果如圖4-
55、3-1。此時時間已經(jīng)走過一秒,南北是紅燈,東西是綠燈。</p><p> 圖4-3-1 加電后仿真</p><p> 4.2 南北路燈切換時仿真</p><p> 切換時,轉(zhuǎn)為黃燈亮,時間為一秒鐘。如圖4-2-1。</p><p> 圖4-2-1 黃燈亮?xí)r</p><p> 4.3 緊急情況下的仿真</
56、p><p> 此時,全部為紅燈,所用車輛禁行,時間被鎖定,此時允許特殊車輛經(jīng)過。如圖4-3-1。</p><p> 圖4-3-1 緊急情況下的路燈顯示</p><p> 4.4東西緊急情況下的仿真</p><p> 此時,南北為紅燈,東西為綠燈,南北車輛禁行,東西可以通過。時間被鎖定,此時允許東西車輛經(jīng)過。如圖4-4-1。</p&g
57、t;<p> 圖4-4-1 東西緊急情況下的路燈顯示</p><p><b> 第6章 心得體會</b></p><p> 通過此次課程設(shè)計(jì)讓我能夠親身參與電子產(chǎn)品的設(shè)計(jì)使我更加深深地體會到:現(xiàn)代的社會是信息的社會,很多與人們生活緊密相關(guān)的產(chǎn)品都是電子產(chǎn)品。要熟練地掌握單片機(jī)的基本知識,這樣才能對試驗(yàn)中出現(xiàn)的問題進(jìn)行分析解決。通過這次對交通燈系統(tǒng)的
58、設(shè)計(jì),我們掌握了設(shè)計(jì)一個實(shí)用裝置電路的基本方法和基本步驟,掌握了實(shí)用裝置工作的基本原理,實(shí)際解決了設(shè)計(jì)中出現(xiàn)的問題,增強(qiáng)了尋找問題,解決問題的能力。此次電子設(shè)計(jì)的成功不僅幫助我們更好地掌握書本知識,尤其重要的是增強(qiáng)了我們的自信,培養(yǎng)了我們獨(dú)立思考的能力!</p><p> 通過這周緊張而充實(shí)的課程設(shè)計(jì),我學(xué)到了很多東西,讓我重新認(rèn)識自己,收益匪淺,并對我以后所要做的畢業(yè)設(shè)計(jì)有了一個初步的了解。做好一個課程設(shè)計(jì)或
59、畢業(yè)設(shè)計(jì)不僅要具備扎實(shí)的書本知識并會善于應(yīng)用,還要學(xué)會查閱資料,對以前學(xué)過的知識不清楚的地方還要進(jìn)行復(fù)習(xí),實(shí)在搞不明白的地方要向老師或同學(xué)請教,這樣才可能做出一個比較不錯的課程設(shè)計(jì)。在這里我要感謝我們的指導(dǎo)老師,非常感謝老師的指導(dǎo)和幫助。希望以后還能參加這樣的課程設(shè)計(jì)。我想我會做的更好的。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]余發(fā)山
60、.單片機(jī)原理及應(yīng)用技術(shù).中國礦業(yè)大學(xué).2002</p><p> [2]李朝青.單片機(jī)原理及接口技術(shù)(修訂版).北京:北京航空航天大學(xué)出版社,1998</p><p> [3]李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出版社,1992</p><p><b> 附1 源程序代碼</b></p><p> #in
61、clude<reg51.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit nom=P3^7;</p><p> uchar code led_table[10]=
62、{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> uchar code em_state[3]={0x24,0x21,0x0c};//緊急燈狀態(tài)顯示表<
63、;/p><p> uchar light_time[][2]={{0,4},{0,1},{0,5},{0,1}};//顯示時間存儲表</p><p> uchar statebef,time1s=100,state=0;//存儲緊急燈狀態(tài),定時基數(shù),狀態(tài)基數(shù)</p><p> uint time;//顯示時間變量</p><p>
64、; bit md_flag,state_flag=1,red;//顯示時間更改狀態(tài),狀態(tài)切換標(biāo)志位,紅綠切換標(biāo)志位</p><p> /*--------------------------------</p><p><b> 延時函數(shù)</b></p><p> ------------------------*/</p&g
65、t;<p> void delay(void)</p><p><b> {</b></p><p> uchar i,j;</p><p> for(i=100;i>0;i--)</p><p><b> {</b></p><p> f
66、or(j=100;j>0;j--);</p><p><b> }</b></p><p><b> }</b></p><p> /*--------------------------</p><p> 讀狀態(tài)函數(shù):判斷是否有緊急燈狀況出現(xiàn)</p><p>
67、 ---------------------*/</p><p> uchar rd_emstate(void)</p><p><b> {</b></p><p> uchar value;</p><p><b> value=P3;</b></p><p
68、> value>>=4;</p><p> value&=0x07;</p><p> if(value!=statebef){statebef=value;return 1;}//判斷是否有緊急燈狀況發(fā)生,保存按鍵值,置返回標(biāo)志為1</p><p> else return 0;</p><p><
69、b> }</b></p><p> /*------------------------</p><p><b> 顯示函數(shù)</b></p><p> ----------------------*/</p><p> void display(void)</p><p&
70、gt;<b> {</b></p><p> if(md_flag==1)//顯示更改時間狀態(tài)</p><p><b> {</b></p><p> if(1==red) {// 南北方向紅燈時間顯示</p><p> P2=0xf6; P0=led_table[light_time[0
71、][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();//秒的個位</p><p><b> }</b>
72、;</p><p> else {//南北綠燈東西紅燈亮?xí)r間顯示</p><p> P2=0xf6;P0=led_table[light_time[2][0]]; delay();//分鐘</p><p> P2=0xed;P0=led_table[light_time[2][1]/10]; delay();//秒的十位</p><
73、;p> P2=0xdb;P0=led_table[light_time[2][1]%10]; delay();//秒的個位</p><p><b> } </b></p><p><b> }</b></p><p> else //正常狀態(tài),顯示時間</p><p><b&g
74、t; {</b></p><p> P2=0xf6; P0=led_table[time/100]; delay();//分鐘</p><p> P2=0xed; P0=led_table[time/10%10];delay();// 秒的十位</p><p> P2=0xdb; P0=led_table[time%10]; delay(
75、);//秒的個位</p><p><b> } </b></p><p><b> }</b></p><p> /*---------------------------</p><p><b> 主函數(shù)</b></p><p> -----
76、---------------*/</p><p> void main()</p><p><b> {</b></p><p> //初始化定時器0,外部中斷1 </p><p><b> EA=1;</b></p><p><b> EX1=1;&
77、lt;/b></p><p><b> IT1=1;</b></p><p><b> ET0=1;</b></p><p> TMOD=0x01;</p><p> TH0=-10000/256;</p><p> TL0=-10000%256;</p
78、><p><b> TR0=1; </b></p><p> while(1){ </p><p> if(rd_emstate())//如果有緊急燈按下,進(jìn)行如下緊急處理</p><p><b> {</b></p><p> switch(statebef)<
79、/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)急燈亮</p><p> case 0x01:P1=em_state
80、[2];TR0=0;break;//南北應(yīng)急燈亮</p><p> case 0x00:TR0=1;break;</p><p> default: break;</p><p> } </p><p><b> }</b></p>
81、<p> if(state_flag)//正常狀態(tài)下時間切換,如果狀態(tài)標(biāo)志為1,進(jìn)行如下處理,進(jìn)行狀態(tài)間切換</p><p><b> {</b></p><p> switch(state)</p><p><b> {</b></p><p> case 0:time=li
82、ght_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><p> P1=light_state[1];break;//黃燈亮?xí)r間&l
83、t;/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]*60+light_time[1][1];</p><p>
84、; P1=light_state[1];break;//黃燈亮?xí)r間</p><p> default: break;</p><p><b> }</b></p><p> state_flag=0;//清標(biāo)志位</p><p><b> }</b></p><p&g
85、t; if(nom==0) { md_flag=0;}//恢復(fù)時間狀態(tài),更改為最近更改的值</p><p> display();</p><p><b> }</b></p><p><b> }</b></p><p> /*-----------------</p>
86、<p><b> 定時器0</b></p><p> --------------------*/</p><p> void Time0int(void) interrupt 1</p><p><b> {</b></p><p><b> EA=0;&l
87、t;/b></p><p> TH0=-10000/256;</p><p> TL0=-10000%256;</p><p><b> time1s--;</b></p><p> if(time1s==0){//一秒中到,重新置數(shù)</p><p> time1s=100;<
88、;/p><p> time--;//顯示時間自減</p><p> if(time==0){//顯示時間減到0時切換顯示時間狀態(tài)</p><p> state++;//四個狀態(tài)輪流切換</p><p> if(state==4) state=0;</p><p> state_flag=1;//置狀態(tài)切換標(biāo)志位
89、</p><p><b> }</b></p><p><b> } </b></p><p><b> EA=1; </b></p><p><b> }</b></p><p> /*-----------
90、----------</p><p><b> 外部中斷1</b></p><p> ----------------------*/</p><p> void Exint1(void) interrupt 2</p><p><b> {</b></p>
91、<p><b> EA=0; </b></p><p> md_flag=1;//置更改時間標(biāo)志位</p><p><b> if(red)</b></p><p><b> {</b></p><p> switch(P3&0X07)</p
92、><p><b> {</b></p><p> case 6: light_time[0][1]++;</p><p> if(light_time[0][1]==60) light_time[0][1]=0;break;//南北方向綠燈時間 秒加 小于60s</p><p> case 5: light_ti
93、me[0][0]++;</p><p> if(light_time[0][0]==10) light_time[0][0]=0;break;//分加 小于10m</p><p> case 3: red=0;break;//紅綠燈切換</p><p><b> }</b></p><p><b>
94、}</b></p><p><b> else </b></p><p> switch(P3&0X07)</p><p><b> {</b></p><p> case 6: light_time[2][1]++;</p><p> if
95、(light_time[2][1]==60) light_time[2][1]=0;break;</p><p> //南北方向紅燈時間 秒加 小于60</p><p> case 5: light_time[2][0]++;</p><p> if(light_time[2][0]==10) light_time[2][0]=0;break;//分加 小
96、于10</p><p> case 3: red=1;break;//紅綠燈切換</p><p><b> }</b></p><p><b> EA=1;</b></p><p><b> } </b></p><p> 附2 系統(tǒng)
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)-----單片機(jī)控制交通燈控制系統(tǒng)設(shè)計(jì)
- 交通燈畢業(yè)設(shè)計(jì)--基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)的交通燈控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---單片機(jī)的交通燈控制系統(tǒng)
- 單片機(jī)交通燈控制畢業(yè)設(shè)計(jì)
- 單片機(jī)控制交通燈畢業(yè)設(shè)計(jì)
- 單片機(jī)控制交通燈畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----單片機(jī)控制交通燈
- 單片機(jī)控制交通燈畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-單片機(jī)控制交通燈
- 畢業(yè)設(shè)計(jì)---單片機(jī)控制交通燈
- 單片機(jī)畢業(yè)設(shè)計(jì)---單片機(jī)控制交通燈
- 畢業(yè)設(shè)計(jì)---單片機(jī)控制交通燈設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----單片機(jī)控制交通燈
- 單片機(jī)交通燈控制畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)交通燈控制系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的交通燈控制系統(tǒng)
- 城市交通燈畢業(yè)設(shè)計(jì)---基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----單片機(jī)控制交通燈設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)報(bào)告單片機(jī)控制的交通燈控制系統(tǒng)設(shè)計(jì)
評論
0/150
提交評論