基于C語言實現(xiàn)的單片機控制交通燈畢業(yè)設計word格式_第1頁
基于C語言實現(xiàn)的單片機控制交通燈畢業(yè)設計word格式_第2頁
基于C語言實現(xiàn)的單片機控制交通燈畢業(yè)設計word格式_第3頁
基于C語言實現(xiàn)的單片機控制交通燈畢業(yè)設計word格式_第4頁
基于C語言實現(xiàn)的單片機控制交通燈畢業(yè)設計word格式_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、i目 錄摘要 1一、 設計目的 2二、 設計任務和要求 2三、 設計原理分析 2四、 硬件模塊及功能 31、個模塊功能 32、材料清單43、硬件圖 5五、 軟件模塊及功能 61、個模塊功能原理 62、程序清單63、程序流程圖 9六、 調(diào)試運行 10ii1、程序編譯鏈接102、觀察模擬仿真11七、 心得體會 12參考文獻 12致謝 131摘 要:單片微型計算機(單片機)自問世以來,因其小巧靈活、成本低、控制能力強、易于產(chǎn)品化等優(yōu)勢,在社會各領域中得到廣泛的應用。根據(jù) 89c52 單片機的特點及交通燈在實際控制中的特點,本文提出一種利用單片機自動控制交通燈及時間倒計時顯示的方法,將整個系統(tǒng)縮小在一

2、塊小小的單片機上,大大提高了產(chǎn)品的經(jīng)濟性和輕便性。設計過程包括硬件電路設計和程序設計兩大步驟。硬件電路其結(jié)構(gòu)比較簡單,主要包括核心器件單片機、12 只二極管組成的模擬交通燈、復位電路、振蕩電路、顯示數(shù)碼管模塊。單片機開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)?cpu 可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼,用于 mcs-51 單片機的匯編軟件有早期的 a51,隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機的開發(fā)軟件也在不斷發(fā)展,keil 軟件是

3、目前最流行開發(fā) mcs-51 系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持 keil 即可看出。keil 提供了包括 c 編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uvision)將這些部份組合在一起。本文就用 keil 編程,相比硬件設計程序設計較為復雜,必需同時考慮燈控制、時間顯示、緊急開關(guān)等問題,并且具有一定的 c 語言基礎和一定的思維能力及邏輯能力。本文對十字路口狀態(tài)預設為兩種,一種是正常狀態(tài),即倒計時 60 秒,交通燈循環(huán)亮,另一種是故障或緊急狀態(tài),即無論交通燈處于何種狀態(tài)只要按下緊急開關(guān),就立即打開相應的綠燈,另

4、一方向則亮紅燈,當再按起開關(guān)則反向,并從 60 秒倒計時,恢復正常狀態(tài),分別用黃、紅、綠色燈的不同組合來表示。本系統(tǒng)采用單片機at89c52 為核心器件來設計交通燈控制器,模擬現(xiàn)實中的交通燈控制方法,具有較強的實用性。關(guān)鍵詞:89c51 單片機;交通燈;自動控制;時間顯示器;軟件;硬件;定時器;延時;外部中斷2一、設計目的1 1、通過單片機課程設計,熟練掌握 c 語言的編程方法,將理論聯(lián)系到實踐中去,提高我們的動腦和動手的能力。2 2、通過交通信號燈控制系統(tǒng)的設計,掌握定時/計數(shù)器、中斷的使用方法,和簡單程序的編寫,最終提高我們的邏輯抽象能力。二、設計任務和要求任務:任務:設計一個能夠控制十二

5、盞交通信號燈及顯示時間 60 秒倒計時的模擬系統(tǒng)要求:要求:利用單片機的定時器定時和中斷功能,令十字路口的紅綠燈交替點亮和熄滅,并用共陽極數(shù)碼管顯示倒計時間。三、設計原理分析紅 黃 綠綠 黃 紅綠 黃 紅紅 黃 綠1 1、根據(jù)實際交通燈的變化情況和規(guī)律。假設一個十字路口如上圖所以,為東南西北走向。初始狀態(tài) 1 東西綠燈通車,南北紅燈亮。過一段時間后,轉(zhuǎn)狀態(tài)2,東西綠燈滅,黃燈閃幾下,南北還是紅燈。再轉(zhuǎn)狀態(tài) 3,南北綠燈通車,東西紅燈亮。過一段時間后轉(zhuǎn)狀態(tài) 4,南北綠燈滅,閃幾個黃燈,東西還是為紅燈亮,一段時間后,又循環(huán)至狀態(tài) 1。列出交通信號燈的狀態(tài)表如下列出交通信號燈的狀態(tài)表如下:(其中,1

6、 代表燈亮,0 代表燈滅)北北西西南南東東狀態(tài)狀態(tài)綠 黃 紅綠 黃 紅綠 黃 紅綠 黃 紅1 10011000011002 200101000101033 31000011000014 40100010100012 2、對于交通信號燈來說,應該有東西南北共四組燈,但由于同一道上的兩組的信號燈的顯示情況是相同的,所以只要用兩組就行了,因此,采用單片機內(nèi)部的 i/o 口上的 p1 口中的 6 個引腳即可來控制 12 個信號燈。3 3、通過編寫程序,實現(xiàn)對發(fā)光二極管的控制,來模擬交通信號燈的管理。每延時一段時間,燈的顯示情況都會按交通燈的顯示規(guī)律進行狀態(tài)轉(zhuǎn)換。4 4、通過延時時間送顯,可以在原有的交

7、通信號燈系統(tǒng)的基礎上,增添其倒計時間的顯示功能,實現(xiàn)其功能的擴展。四、硬件模塊及功能主要用到的硬件:主要用到的硬件:p1 口、p3 口、p2 口、led 數(shù)碼管、發(fā)光二級管、定時器t0、外部中斷 0 和外部中斷 1、復位開關(guān)1、個模塊功能:發(fā)光二極管電路:根據(jù)發(fā)光二極管的特性,將二極管的正極與電源相接(+5v) ,其中與一個 500 歐姆的電阻串聯(lián)。而發(fā)光二極管的負極與單片機的p1 的八個端口相接,這樣只要 p1 口的某個端口出現(xiàn)低電平,即二極管導通發(fā)光。復位電路:本電路采用的是按鍵電平復位,按復位鍵后復位端通過電阻與vcc 電源接通,此時復位端由低電平變?yōu)榱烁唠娖?,從而達到復位的效果。復位電

8、路關(guān)系到一個系統(tǒng)能否可靠地工作,一般由電阻、電容和門電路組成。晶振電路:80c51 系列單片機內(nèi)部有一個高增益反相放大器,用于構(gòu)成振蕩器,但要形成時鐘,外部需附加電路,引腳 xtal1 是為反相放大器和時鐘發(fā)生電路的輸入端,xatl2 為反相放大器的輸入端。本電路是由一個 12m 晶振和兩個 22pf 的無極性電容組成。數(shù)碼管驅(qū)動顯示電路:由于數(shù)碼管是四位一體的,所以必須采用動態(tài)掃描方式,其基本原理是利用人眼的“視覺暫留”效應。接口電路把所有顯示器的8 個筆端 ab 分別并聯(lián)在一起,本電路時接單片機的 p2 口。每一個顯示器的公共端 com 各自獨立地受 i/o 線控制,本電路采用的是單片機p

9、0.0、p0.1、p0.2、p0.3。cpu 向字段輸出口送出字型碼時,所有的顯示器都能接收到,再利用循環(huán)掃描的方式分時選通個顯示器的公共極,是各個顯示器輪流導通。當掃描的速度達到一定程度時,人眼就分辨不出來了,認為各個顯示器同時發(fā)光了。緊急開關(guān)電路:緊急開關(guān)電路很簡單,只需要兩個開關(guān)。為了便于中斷想象的產(chǎn)生,開關(guān)一端接于 p3.2p3.3 口,因為其具有中斷的功能,另一端接地就行。當按鍵按下時相應的端口就會接受到低電平從而程序產(chǎn)生中斷。42、材料清單:stc89c52+40 腳底座1 個12mhz 晶振1 個四位共陽極數(shù)碼管+14 腳底座1 個pnp(9012)4 個8x8 按鍵1 個led

10、 發(fā)光二極管12 個無極性電容 22pf2 個極性電容 10uf1 個4.7k 電阻4 個500 歐電阻6 個10k 電阻3 個自鎖按鍵2 個53、硬件圖6五、軟件模塊及功能1、各模塊功能及原理數(shù)碼管顯示:程序進入主程序后在顯示程序中一直循環(huán),通過定時器中斷改變 aa、bb 的值,使得數(shù)碼管顯示不同的數(shù)字。顯示程序利用動態(tài)掃描原理:首先將共陽極編碼送入 p2 口,同時打開 p0 口的第一個數(shù)碼管關(guān)閉其他數(shù)碼管,然后將下一個編碼送入 p2 口,同時打開 p0 口的第二個數(shù)碼管關(guān)閉其他數(shù)碼管,以此類推。讓人的視覺產(chǎn)生誤差,這樣就看到了四位數(shù)碼管同時顯示并且不斷變化。定時器中斷:本程序采用定時/計數(shù)

11、器 0,定時時間為 50ms,讓它 50ms 產(chǎn)生一次中斷,進入中斷后把(6000-5000)/256 賦給高八位,把(6000-5000)%256 賦給底八位,然后 shu 加 1,判斷 shu 的情況:如果 shu 等于 1140 即從開始到 57s 就將 0xf5 賦給 p1 口(南北點亮黃燈,東西依然紅燈) 。如果 shu 等于 1200 即過了 60s,將 0 xde 賦給 p1 口(南北亮紅燈東西綠燈) 。如果 shu 等于 2340 即過了 60+57s,就將 0 xee 賦給 p1 口(東西亮黃燈,南北紅燈) 。如果 shu 等于 2400 即過了兩分鐘,就將 0 xf3 賦給

12、 p1 口(點亮南北綠燈,東西紅燈) ,同時將 shu、xianshi 重新賦值并且進入下一階段定時中斷。外部中斷:本程序采用外部中斷 0 和外部中斷 1,即 p3.2 和 p3.3 口,由于定時器中斷 0 比外部中斷 2 優(yōu)先級高,所以初始化程序中將 px1=1 設定外部中斷 1 為高優(yōu)先級,這樣就可以達到緊急開關(guān)的作用,當按下緊急開關(guān) 1 時,即p3.2 口由高電平變?yōu)榈碗娖?,程序立即進入中斷程序,將東西方向變?yōu)榫G燈,南北方向紅燈,同時在中斷程序中判斷 p3.2 口是否有低電平信號,如果有(將開關(guān)按起)即將東西方向點亮綠燈 南北方向紅燈并且重新給shu、xianshi、aa、bb 賦值,使

13、得數(shù)碼管從 60 秒重新倒計時。緊急開關(guān) 2 與其相似。2、程序清單:#include #define uint unsigned int #define uchar unsigned charsbit p32=p32;sbit p33=p33;uint shu;uchar xianshi,xianshi2;7uchar aa,bb;uchar code table9=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/帶小數(shù)點的共陽極數(shù)碼管的段編碼 0-9void init()/初始化函數(shù)shu=0;xianshi=20;

14、aa=2;bb=0;p0=0 xff;p1=0;tmod=0 x01; /用定時器 0 方式 1ea=1; /打開中斷et0=1;/打開定時器 0 中斷tl0=15536/256;th0=15536%256;ex0=1;/外部中斷 0ex1=1;/外部中斷 1it0=0;/外部中斷 0 電平觸發(fā)it1=0;/外部中斷 1 電平觸發(fā)px1=1;/設定外部中斷 1 為高優(yōu)先級void delay(unsigned int i)/延時程序 unsigned int j;for(;i0;i-)for(j=0;j125;j+);void display(uchar a,uchar b,uchar c,u

15、char d)p2=tablea; /北十位p0=0 xfe;delay(2);p2=tableb; /北個位 p0=0 xfd;delay(2);p2=tablec; /西十位 p0=0 xfb;delay(2);p2=tabled; /西個位 p0=0 xf7;8delay(2);void main() init(); tr0=1;/啟動定時器 0 p1=0 xff;p1=0 xf3;/點亮南北綠燈,東西紅燈 while(1) display(aa,bb,aa,bb); void timer0() interrupt 1 using 1 th0=(65536-50000)/256;tl0=

16、(65536-50000)%256;shu+;if(shu%20=0) xianshi-;xianshi2-; aa=xianshi/10;bb=xianshi%10; if(shu=1140)p1=0 xf5;/南北黃亮,東西依然紅燈if(shu=1200)p1=0 xde;/南北亮紅燈,東西綠燈xianshi=60;if(shu=2340)p1=0 xee;/東西亮黃燈,南北紅燈 if(shu=2400)/再過 3s 返回 shu=0;xianshi=60; p1=0 xf3;/點亮南北綠燈,東西紅燈9void inter0() interrupt 0 using 2 /南北方向綠燈p0=

17、0 xff;p1=0 xf3;/南北綠 東西紅while(p32=0); p1=0 xde; xianshi=60; shu=1200; aa=6; bb=0;void inter1() interrupt 2 using 3 /東西方向綠燈 p0=0 xff;p1=0 xde;/ 東西綠 南北紅 while(p33=0);p1=0 xf3;xianshi=60;shu=0; aa=6; bb=0; 3、程序流程圖 10六、調(diào)試運行1、程序編譯鏈接程序完成后,確保無誤,然后進行編譯鏈接。編譯鏈接無錯并將程序生成.hex 文件圖:2、觀察模擬仿真利用模擬仿真觀察現(xiàn)象,將外圍設備中 p0、p1、p

18、2、p3 口打開。程序正常運行:利用模擬仿真,模擬緊急開關(guān)作用,即在程序運行,將 p3.2 和 p3.3 口變?yōu)榈碗娖?,觀察其現(xiàn)象。12七、心得體會在一個多月的單片機課程設計,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新,是要我們學會將理論很好地聯(lián)系實際,并不斷地去開動自己的大腦,從為人類造福的意愿出發(fā),做自己力所能及的,別人卻沒想到的事。使之不斷地戰(zhàn)勝別人,超越前人。同時,更重要的是,我在這一設計過程中,學會了堅持不懈,不輕易言棄。設計過程,也好比是我們?nèi)祟惓砷L的歷程,常有一些不如意,也許這就是在對我們提出了挑戰(zhàn),勇敢過,也戰(zhàn)勝了,勝利的鐘聲也就一定會為我們而敲響。這個設計過程中,我遇到過許多次失敗的考驗,就比如,自己對實際生活中的交通秩序的不了解給整個設計帶來的困擾,真想要就此罷休,然而,就在想要放棄的那一刻,我明白了,原來結(jié)果并不那么重要,我們更應該注重的是這一整個過程。于是,我堅持了下來。當然最終,這個設計很成功,主要體現(xiàn)在,這一整個系統(tǒng),參考多了多本資料書,程序由自己獨立完成,與用匯編語言制作的交通燈控制系統(tǒng)程序相比,簡單易讀,結(jié)構(gòu)清楚,層次分明。但我深知單片機還有更深奧的知識,我將繼續(xù)學習單片機及其編程語言,盡量去學習匯編語言鍛煉思維能力。參考文獻:單片機原理與應用主編:張迎新

溫馨提示

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

評論

0/150

提交評論