2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論