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

下載本文檔

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

文檔簡介

.PAGE.目錄摘要……………1設計目的………2設計任務和要求………………2設計原理分析…………………2硬件模塊及功能………………31、個模塊功能……………………32、材料清單…………43、硬件圖………5軟件模塊及功能………………61、個模塊功能原理………………62、程序清單…………63、程序流程圖……………………9調試運行………10程序編譯………………10觀察模擬仿真………………11心得體會………12參考文獻………12致……………13..摘要:單片微型計算機(單片機)自問世以來,因其小巧靈活、本錢低、控制能力強、易于產品化等優(yōu)勢,在社會各領域中得到廣泛的應用。根據(jù)89C52單片機的特點及交通燈在實際控制中的特點,本文提出一種利用單片機自動控制交通燈及時間倒計時顯示的方法,將整個系統(tǒng)縮小在一塊小小的單片機上,大大提高了產品的經濟性和輕便性。設計過程包括硬件電路設計和程序設計兩大步驟。硬件電路其構造比擬簡單,主要包括核心器件單片機、12只二極管組成的模擬交通燈、復位電路、振蕩電路、顯示數(shù)碼管模塊。單片機開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼,用于MCS-51單片機的匯編軟件有早期的A51,隨著單片機開發(fā)技術的不斷開展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機的開發(fā)軟件也在不斷開展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境〔uVision〕將這些部份組合在一起。本文就用Keil編程,相比硬件設計程序設計較為復雜,必需同時考慮燈控制、時間顯示、緊急開關等問題,并且具有一定的C語言根底和一定的思維能力及邏輯能力。本文對十字路口狀態(tài)預設為兩種,一種是正常狀態(tài),即倒計時60秒,交通燈循環(huán)亮,另一種是故障或緊急狀態(tài),即無論交通燈處于何種狀態(tài)只要按下緊急開關,就立即翻開相應的綠燈,另一方向那么亮紅燈,當再按起開關那么反向,并從60秒倒計時,恢復正常狀態(tài),分別用黃、紅、綠色燈的不同組合來表示。本系統(tǒng)采用單片機AT89C52為核心器件來設計交通燈控制器,模擬現(xiàn)實中的交通燈控制方法,具有較強的實用性。關鍵詞:89C51單片機;交通燈;自動控制;時間顯示器;一、設計目的1、通過單片機課程設計,熟練掌握C語言的編程方法,將理論聯(lián)系到實踐中去,提高我們的動腦和動手的能力。2、通過交通信號燈控制系統(tǒng)的設計,掌握定時/計數(shù)器、中斷的使用方法,和簡單程序的編寫,最終提高我們的邏輯抽象能力。二、設計任務和要求任務:設計一個能夠控制十二盞交通信號燈及顯示時間60秒倒計時的模擬系統(tǒng)要求:利用單片機的定時器定時和中斷功能,令十字路口的紅綠燈交替點亮和熄滅,并用共陽極數(shù)碼管顯示倒計時間。三、設計原理分析紅黃綠紅黃綠綠黃紅綠黃紅紅黃綠1、根據(jù)實際交通燈的變化情況和規(guī)律。假設一個十字路口如上圖所以,為東南西北走向。初始狀態(tài)1東西綠燈通車,南北紅燈亮。過一段時間后,轉狀態(tài)2,東西綠燈滅,黃燈閃幾下,南北還是紅燈。再轉狀態(tài)3,南北綠燈通車,東西紅燈亮。過一段時間后轉狀態(tài)4,南北綠燈滅,閃幾個黃燈,東西還是為紅燈亮,一段時間后,又循環(huán)至狀態(tài)1。列出交通信號燈的狀態(tài)表如下:〔其中,1代表燈亮,0代表燈滅〕狀態(tài)北西南東綠黃紅綠黃紅綠黃紅綠黃紅10011000011002001010001010310000110000140100010100012、對于交通信號燈來說,應該有東西南北共四組燈,但由于同一道上的兩組的信號燈的顯示情況是一樣的,所以只要用兩組就行了,因此,采用單片機部的I/O口上的P1口中的6個引腳即可來控制12個信號燈。3、通過編寫程序,實現(xiàn)對發(fā)光二極管的控制,來模擬交通信號燈的管理。每延時一段時間,燈的顯示情況都會按交通燈的顯示規(guī)律進展狀態(tài)轉換。4、通過延時時間送顯,可以在原有的交通信號燈系統(tǒng)的根底上,增添其倒計時間的顯示功能,實現(xiàn)其功能的擴展。四、硬件模塊及功能主要用到的硬件:P1口、P3口、P2口、LED數(shù)碼管、發(fā)光二級管、定時器T0、外部中斷0和外部中斷1、復位開關1、個模塊功能:發(fā)光二極管電路:根據(jù)發(fā)光二極管的特性,將二極管的正極與電源相接〔+5V〕,其中與一個500歐姆的電阻串聯(lián)。而發(fā)光二極管的負極與單片機的P1的八個端口相接,這樣只要P1口的某個端口出現(xiàn)低電平,即二極管導通發(fā)光。復位電路:本電路采用的是按鍵電平復位,按復位鍵后復位端通過電阻與VCC電源接通,此時復位端由低電平變?yōu)榱烁唠娖?,從而到達復位的效果。復位電路關系到一個系統(tǒng)能否可靠地工作,一般由電阻、電容和門電路組成。晶振電路:80C51系列單片機部有一個高增益反相放大器,用于構成振蕩器,但要形成時鐘,外部需附加電路,引腳XTAL1是為反相放大器和時鐘發(fā)生電路的輸入端,XATL2為反相放大器的輸入端。本電路是由一個12M晶振和兩個22pF的無極性電容組成。數(shù)碼管驅動顯示電路:由于數(shù)碼管是四位一體的,所以必須采用動態(tài)掃描方式,其根本原理是利用人眼的"視覺暫留〞效應。接口電路把所有顯示器的8個筆端a—b分別并聯(lián)在一起,本電路時接單片機的P2口。每一個顯示器的公共端各自獨立地受I/O線控制,本電路采用的是單片機P0.0、P0.1、P0.2、P0.3。CPU向字段輸出口送出字型碼時,所有的顯示器都能接收到,再利用循環(huán)掃描的方式分時選通個顯示器的公共極,是各個顯示器輪流導通。當掃描的速度到達一定程度時,人眼就分辨不出來了,認為各個顯示器同時發(fā)光了。緊急開關電路:緊急開關電路很簡單,只需要兩個開關。為了便于中斷想象的產生,開關一端接于P3.2P3.3口,因為其具有中斷的功能,另一端接地就行。當按鍵按下時相應的端口就會承受到低電平從而程序產生中斷。2、材料清單:STC89C52+40腳底座1個12MHz晶振1個四位共陽極數(shù)碼管+14腳底座1個PNP(9012)4個8X8按鍵1個LED發(fā)光二極管12個無極性電容22pF2個極性電容10uF1個4.7K電阻4個500歐電阻6個10K電阻3個自鎖按鍵2個3、硬件圖五、軟件模塊及功能1、各模塊功能及原理數(shù)碼管顯示:程序進入主程序后在顯示程序中一直循環(huán),通過定時器中斷改變aa、bb的值,使得數(shù)碼管顯示不同的數(shù)字。顯示程序利用動態(tài)掃描原理:首先將共陽極編碼送入P2口,同時翻開P0口的第一個數(shù)碼管關閉其他數(shù)碼管,然后將下一個編碼送入P2口,同時翻開P0口的第二個數(shù)碼管關閉其他數(shù)碼管,以此類推。讓人的視覺產生誤差,這樣就看到了四位數(shù)碼管同時顯示并且不斷變化。定時器中斷:本程序采用定時/計數(shù)器0,定時時間為50ms,讓它50ms產生一次中斷,進入中斷后把〔6000-5000〕/256賦給高八位,把〔6000-5000〕%256賦給底八位,然后shu加1,判斷shu的情況:如果shu等于1140即從開場到57s就將0XF5賦給P1口〔南北點亮黃燈,東西依然紅燈〕。如果shu等于1200即過了60s,將0xDE賦給P1口〔南北亮紅燈東西綠燈〕。如果shu等于2340即過了60+57s,就將0xEE賦給P1口〔東西亮黃燈,南北紅燈〕。如果shu等于2400即過了兩分鐘,就將0xF3賦給P1口〔點亮南北綠燈,東西紅燈〕,同時將shu、xianshi重新賦值并且進入下一階段定時中斷。外部中斷:本程序采用外部中斷0和外部中斷1,即P3.2和P3.3口,由于定時器中斷0比外部中斷2優(yōu)先級高,所以初始化程序中將PX1=1設定外部中斷1為高優(yōu)先級,這樣就可以到達緊急開關的作用,當按下緊急開關1時,即P3.2口由高電平變?yōu)榈碗娖?,程序立即進入中斷程序,將東西方向變?yōu)榫G燈,南北方向紅燈,同時在中斷程序中判斷P3.2口是否有低電平信號,如果有〔將開關按起〕即將東西方向點亮綠燈南北方向紅燈并且重新給shu、xianshi、aa、bb賦值,使得數(shù)碼管從60秒重新倒計時。緊急開關2與其相似。2、程序清單:#include<reg52.h>#define uintunsignedint#define ucharunsignedchar sbitP32=P3^2;sbitP33=P3^3;uintshu;ucharxianshi,xianshi2;ucharaa,bb;//帶小數(shù)點的共陽極數(shù)碼管的段編碼0--9ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voidinit()//初始化函數(shù){ shu=0; xianshi=60; aa=6; bb=0; P0=0xff; P1=0; TMOD=0x01;//用定時器0方式1 EA=1;//翻開中斷 ET0=1; //翻開定時器0中斷 TL0=15536/256; TH0=15536%256; EX0=1;//外部中斷0 EX1=1;//外部中斷1 IT0=0;//外部中斷0電平觸發(fā) IT1=0;//外部中斷1電平觸發(fā) PX1=1;//設定外部中斷1為高優(yōu)先級}voidDelay(unsignedinti)//延時程序{unsignedintj; for(;i>0;i--) for(j=0;j<125;j++) {;}}voiddisplay(uchara,ucharb,ucharc,uchard){ P2=table[a];//北十位 P0=0xfe; Delay(2); P2=table[b];//北個位P0=0xfd; Delay(2); P2=table[c];//西十位P0=0xfb; Delay(2); P2=table[d];//西個位P0=0xf7; Delay(2);}voidmain(){ init(); TR0=1;//啟動定時器0 P1=0xff; P1=0xf3;//點亮南北綠燈,東西紅燈 while(1) { display(aa,bb,aa,bb); }}voidtimer0()interrupt1using1{ TH0=(65536-50000)/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;//點亮南北綠燈,東西紅燈 } }voidinter0()interrupt0using2//南北方向綠燈{ P0=0xff; P1=0xf3;//南北綠東西紅 while(P32==0){}; P1=0xDE; xianshi=60; shu=1200; aa=6; bb=0;}voidinter1()interrupt2using3 //東西方向綠燈{ P0=0xff; P1=0xDE;//東西綠南北紅 while(P33==0){}; P1=0xf3; xianshi=60; shu=0; aa=6; bb=0;}3、程序流程圖六、調試運行1、程序編譯程序完成后,確保無誤,然后進展編譯。編譯無錯并將程序生成.hex文件圖:2、觀察模擬仿真利用模擬仿真觀察現(xiàn)象,將外圍設備中P0、P1、P2、P3口翻開。程序正常運行:利用模擬仿真,模擬緊急開關作用,即在程序運行,將P3.2和P3.3口變?yōu)榈碗娖剑^察其現(xiàn)象。七、心得體會在一個多月的單片機課程設計,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新,是要我們學會將理論很好地聯(lián)系實際,并不斷地去開動自己的大腦,從為人類造福的意愿出發(fā),做自己力所能及的,別人卻沒想到的事。使之不斷地戰(zhàn)勝別人,超

溫馨提示

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

評論

0/150

提交評論