基于單片機(jī)做簡易的交通燈_第1頁
基于單片機(jī)做簡易的交通燈_第2頁
基于單片機(jī)做簡易的交通燈_第3頁
基于單片機(jī)做簡易的交通燈_第4頁
基于單片機(jī)做簡易的交通燈_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

4、計(jì)時(shí),恢復(fù)正常狀態(tài),分別用黃、紅、綠色燈的不同組合來表示。本系統(tǒng)采用單片機(jī)AT89C52為核心器件來設(shè)計(jì)交通燈控制器,模擬現(xiàn)實(shí)中的交通燈控制方法,具有較強(qiáng)的實(shí)用性。關(guān)鍵詞:89C51單片機(jī);交通燈;自動(dòng)控制;時(shí)間顯示器; 一、設(shè)計(jì)目的1、通過單片機(jī)課程設(shè)計(jì),熟練掌握C語言的編程方法,將理論聯(lián)系到實(shí)踐中去,提高我們的動(dòng)腦和動(dòng)手的能力。2、通過交通信號燈控制系統(tǒng)的設(shè)計(jì),掌握定時(shí)/計(jì)數(shù)器、中斷的使用方法,和簡單程序的編寫,最終提高我們的邏輯抽象能力。二、設(shè)計(jì)任務(wù)和要求任務(wù):設(shè)計(jì)一個(gè)能夠控制十二盞交通信號燈及顯示時(shí)間60秒倒計(jì)時(shí)的模擬系統(tǒng)要求:利用單片機(jī)的定時(shí)器定時(shí)和中斷功能,令十字路口的紅綠燈交替點(diǎn)

5、亮和熄滅,并用共陽極數(shù)碼管顯示倒計(jì)時(shí)間。三、設(shè)計(jì)原理分析紅 黃 綠綠 黃 紅綠 黃 紅紅 黃 綠1、根據(jù)實(shí)際交通燈的變化情況和規(guī)律。假設(shè)一個(gè)十字路口如上圖所以,為東南西北走向。初始狀態(tài)1東西綠燈通車,南北紅燈亮。過一段時(shí)間后,轉(zhuǎn)狀態(tài)2,東西綠燈滅,黃燈閃幾下,南北還是紅燈。再轉(zhuǎn)狀態(tài)3,南北綠燈通車,東西紅燈亮。過一段時(shí)間后轉(zhuǎn)狀態(tài)4,南北綠燈滅,閃幾個(gè)黃燈,東西還是為紅燈亮,一段時(shí)間后,又循環(huán)至狀態(tài)1。列出交通信號燈的狀態(tài)表如下:(其中,1代表燈亮,0代表燈滅)狀態(tài)北西南東綠黃紅綠黃紅綠黃紅綠黃紅10011000011002001010001010310000110000140100010100

6、012、對于交通信號燈來說,應(yīng)該有東西南北共四組燈,但由于同一道上的兩組的信號燈的顯示情況是相同的,所以只要用兩組就行了,因此,采用單片機(jī)內(nèi)部的I/O口上的P1口中的6個(gè)引腳即可來控制12個(gè)信號燈。3、通過編寫程序,實(shí)現(xiàn)對發(fā)光二極管的控制,來模擬交通信號燈的管理。每延時(shí)一段時(shí)間,燈的顯示情況都會按交通燈的顯示規(guī)律進(jìn)行狀態(tài)轉(zhuǎn)換。4、通過延時(shí)時(shí)間送顯,可以在原有的交通信號燈系統(tǒng)的基礎(chǔ)上,增添其倒計(jì)時(shí)間的顯示功能,實(shí)現(xiàn)其功能的擴(kuò)展。四、硬件模塊及功能主要用到的硬件:P1口、P3口、P2口、LED數(shù)碼管、發(fā)光二級管、定時(shí)器T0、外部中斷0和外部中斷1、復(fù)位開關(guān)1、個(gè)模塊功能:發(fā)光二極管電路:根據(jù)發(fā)光二

7、極管的特性,將二極管的正極與電源相接(+5V),其中與一個(gè)500歐姆的電阻串聯(lián)。而發(fā)光二極管的負(fù)極與單片機(jī)的P1的八個(gè)端口相接,這樣只要P1口的某個(gè)端口出現(xiàn)低電平,即二極管導(dǎo)通發(fā)光。復(fù)位電路:本電路采用的是按鍵電平復(fù)位,按復(fù)位鍵后復(fù)位端通過電阻與VCC電源接通,此時(shí)復(fù)位端由低電平變?yōu)榱烁唠娖剑瑥亩_(dá)到復(fù)位的效果。復(fù)位電路關(guān)系到一個(gè)系統(tǒng)能否可靠地工作,一般由電阻、電容和門電路組成。晶振電路:80C51系列單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,用于構(gòu)成振蕩器,但要形成時(shí)鐘,外部需附加電路,引腳XTAL1是為反相放大器和時(shí)鐘發(fā)生電路的輸入端,XATL2為反相放大器的輸入端。本電路是由一個(gè)12M晶振和兩個(gè)

8、22pF的無極性電容組成。數(shù)碼管驅(qū)動(dòng)顯示電路:由于數(shù)碼管是四位一體的,所以必須采用動(dòng)態(tài)掃描方式,其基本原理是利用人眼的“視覺暫留”效應(yīng)。接口電路把所有顯示器的8個(gè)筆端ab分別并聯(lián)在一起,本電路時(shí)接單片機(jī)的P2口。每一個(gè)顯示器的公共端COM各自獨(dú)立地受I/O線控制,本電路采用的是單片機(jī)P0.0、P0.1、P0.2、P0.3。CPU向字段輸出口送出字型碼時(shí),所有的顯示器都能接收到,再利用循環(huán)掃描的方式分時(shí)選通個(gè)顯示器的公共極,是各個(gè)顯示器輪流導(dǎo)通。當(dāng)掃描的速度達(dá)到一定程度時(shí),人眼就分辨不出來了,認(rèn)為各個(gè)顯示器同時(shí)發(fā)光了。緊急開關(guān)電路:緊急開關(guān)電路很簡單,只需要兩個(gè)開關(guān)。為了便于中斷想象的產(chǎn)生,開關(guān)

9、一端接于P3.2P3.3口,因?yàn)槠渚哂兄袛嗟墓δ?,另一端接地就行。?dāng)按鍵按下時(shí)相應(yīng)的端口就會接受到低電平從而程序產(chǎn)生中斷。2、材料清單:STC89C52+40腳底座1個(gè)12MHz晶振1個(gè)四位共陽極數(shù)碼管+14腳底座1個(gè)PNP(9012)4個(gè)8X8按鍵1個(gè)LED發(fā)光二極管12個(gè)無極性電容22pF2個(gè)極性電容10uF1個(gè)4.7K電阻4個(gè)500歐電阻6個(gè)10K電阻3個(gè)自鎖按鍵2個(gè)3、硬件圖五、軟件模塊及功能1、各模塊功能及原理數(shù)碼管顯示:程序進(jìn)入主程序后在顯示程序中一直循環(huán),通過定時(shí)器中斷改變aa、bb的值,使得數(shù)碼管顯示不同的數(shù)字。顯示程序利用動(dòng)態(tài)掃描原理:首先將共陽極編碼送入P2口,同時(shí)打開P0

10、口的第一個(gè)數(shù)碼管關(guān)閉其他數(shù)碼管,然后將下一個(gè)編碼送入P2口,同時(shí)打開P0口的第二個(gè)數(shù)碼管關(guān)閉其他數(shù)碼管,以此類推。讓人的視覺產(chǎn)生誤差,這樣就看到了四位數(shù)碼管同時(shí)顯示并且不斷變化。定時(shí)器中斷:本程序采用定時(shí)/計(jì)數(shù)器0,定時(shí)時(shí)間為50ms,讓它50ms產(chǎn)生一次中斷,進(jìn)入中斷后把(6000-5000)/256賦給高八位,把(6000-5000)%256賦給底八位,然后shu加1,判斷shu的情況:如果shu等于1140即從開始到57s就將0XF5賦給P1口(南北點(diǎn)亮黃燈,東西依然紅燈)。如果shu等于1200即過了60s,將0xDE賦給P1口(南北亮紅燈東西綠燈)。如果shu等于2340即過了60+

11、57s,就將0xEE賦給P1口(東西亮黃燈,南北紅燈)。如果shu等于2400即過了兩分鐘,就將0xF3賦給P1口(點(diǎn)亮南北綠燈,東西紅燈),同時(shí)將shu、xianshi重新賦值并且進(jìn)入下一階段定時(shí)中斷。外部中斷:本程序采用外部中斷0和外部中斷1,即P3.2和P3.3口,由于定時(shí)器中斷0比外部中斷2優(yōu)先級高,所以初始化程序中將PX1=1設(shè)定外部中斷1為高優(yōu)先級,這樣就可以達(dá)到緊急開關(guān)的作用,當(dāng)按下緊急開關(guān)1時(shí),即P3.2口由高電平變?yōu)榈碗娖剑绦蛄⒓催M(jìn)入中斷程序,將東西方向變?yōu)榫G燈,南北方向紅燈,同時(shí)在中斷程序中判斷P3.2口是否有低電平信號,如果有(將開關(guān)按起)即將東西方向點(diǎn)亮綠燈 南北方向

12、紅燈并且重新給shu、xianshi、aa、bb賦值,使得數(shù)碼管從60秒重新倒計(jì)時(shí)。緊急開關(guān)2與其相似。2、程序清單:#include <reg52.h>#defineuint unsigned int #defineuchar unsigned charsbit P32=P32;sbit P33=P33;uint shu;uchar xianshi,xianshi2;uchar aa,bb;/帶小數(shù)點(diǎn)的共陽極數(shù)碼管的段編碼0-9uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void init(

13、)/初始化函數(shù)shu=0;xianshi=60;aa=6;bb=0;P0=0xff;P1=0;TMOD=0x01; /用定時(shí)器0方式1EA=1; /打開中斷ET0=1;/打開定時(shí)器0中斷TL0=15536/256;TH0=15536%256;EX0=1;/外部中斷0EX1=1;/外部中斷1IT0=0;/外部中斷0電平觸發(fā)IT1=0;/外部中斷1電平觸發(fā)PX1=1;/設(shè)定外部中斷1為高優(yōu)先級void Delay(unsigned int i)/延時(shí)程序 unsigned int j;for(;i>0;i-)for(j=0;j<125;j+);void display(uchar a,

14、uchar b,uchar c,uchar d)P2=tablea; /北十位P0=0xfe;Delay(2);P2=tableb; /北個(gè)位 P0=0xfd;Delay(2);P2=tablec; /西十位 P0=0xfb;Delay(2);P2=tabled; /西個(gè)位 P0=0xf7;Delay(2);void main() init(); TR0=1;/啟動(dòng)定時(shí)器0 P1=0xff;P1=0xf3;/點(diǎn)亮南北綠燈,東西紅燈 while(1) display(aa,bb,aa,bb); void timer0() interrupt 1 using 1 TH0=(65536-50000)

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

16、0=0xff;P1=0xf3;/南北綠 東西紅while(P32=0); P1=0xDE; xianshi=60; shu=1200; aa=6; bb=0;void inter1() interrupt 2 using 3 /東西方向綠燈 P0=0xff;P1=0xDE;/ 東西綠 南北紅 while(P33=0);P1=0xf3;xianshi=60;shu=0; aa=6; bb=0; 3、程序流程圖 六、調(diào)試運(yùn)行1、程序編譯鏈接程序完成后,確保無誤,然后進(jìn)行編譯鏈接。編譯鏈接無錯(cuò)并將程序生成.hex文件圖:2、觀察模擬仿真利用模擬仿真觀察現(xiàn)象,將外圍設(shè)備中P0、P1、P2、P3口打開。

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

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論