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