版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> 本設計是一個以微電子技術,計算機和通信技術為先導的,而計算機技術怎樣與實際應用更有效的結合并有效的發(fā)揮其作用是科學界最熱門的話題,也是當今計算機應用中空前活躍的領域。十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實現(xiàn)這井然秩序呢?靠的就是交通信號燈的自動指揮系統(tǒng)。本系統(tǒng)由單片機系統(tǒng)、按鍵、四位數碼管顯示、
2、交通燈演示系統(tǒng)組成。設計一個用于東西、南北走向的交通管理。南北方向(主干道)車道和東西方向(支干道)車道兩條交叉道路上的車輛交替運行,主干道每次通行時間都設為30秒、支干道每次通行間為20秒。系統(tǒng)除基本交通燈功能外,還具有倒計時、時間設置、緊急情況處理、分時段調整信號燈的點亮時間以及根據具體情況手動控制等功能。本系統(tǒng)結構簡單,操作方便;可實現(xiàn)自動控制,具有一定的智能性;對優(yōu)化城市交通具有一定的意義。本設計將各任務進行細分包裝,使各任務保
3、持相對獨立;能有效改善程序結構,便于模塊化處理,使程序的可讀性、可維護性和可移植性都得到進一步的提高。近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單</p><p> 關鍵詞:交通燈;單片機;AT89S52</p><p><b> 目錄</b></p><p&g
4、t; 1 概述………………………………………………………………………………3</p><p> 1.1設計背景………………………………………………………………………3</p><p> 1.2設計任務……………………………………………………………………3</p><p> 2 系統(tǒng)總體方案及硬件設計……………………………………………………… 4<
5、/p><p> 2.1 AT89S52單片機簡介…………………………………………………………4</p><p> 2.2 系統(tǒng)硬件電路的設計………………………………………………………4</p><p> 3 軟件設計…………………………………………………………………………7</p><p> 3.1 交通燈的設計程序流程圖……………
6、………………………………………7</p><p> 3.2定時器0及中斷響應…………………………………………………………8</p><p> 4 Proteus軟件仿真…………………………………………………………………10</p><p> 4.1仿真電路圖…………………………………………………………………… 10</p><p>
7、 4.2 仿真步驟………………………………………………………………………10</p><p> 5 課程設計體會……………………………………………………………………11</p><p> 參考文獻……………………………………………………………………………11</p><p> 附1: 源程序代碼……………………………………………………………… 12<
8、/p><p> 附2: 系統(tǒng)原理圖……………………………………………………………… 18</p><p><b> 1 概述</b></p><p><b> 1.1 設計背景</b></p><p> 如今隨著人們生活水平的提高,車輛越來越多,交通事故頻繁發(fā)生。交通信號燈的出現(xiàn),使交通得以有效
9、管制,對于疏導交通流量,提高道路通行能力,減少交通事故有明顯效果。交通燈在城市交通中起著重要的作用,它與人們日常生活密切相關,是人們出行的安全保障。因此提供一個可靠、安全、便捷的多功能交通燈控制系統(tǒng)有著現(xiàn)實的必要性。為了解決這些問題,我們更應該提高交通控制和管理水平,合理使用現(xiàn)有交通設施,充分發(fā)揮其能力,提高交通效率,促進和諧交通的建立。</p><p> 近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷地走向深
10、入,同時帶動傳統(tǒng)控制檢測日新月益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據具體硬件結構,以及針對具體應用對象特點的軟件結合,加以完善。</p><p> 本系統(tǒng)設計一個基于單片機的交通燈控制系統(tǒng)。能方便的對交通燈進行控制,使交通更和諧。</p><p><b> 1.2設計任務 </b>&l
11、t;/p><p> 1)設計一個十字路口的交通燈控制電路,要求南北方向(主干道)車道和東西方向(支干道)車道兩條交叉道路上的車輛交替運行,主干道每次通行時間都設為30秒、支干道每次通行間為20秒,時間可設置修改。</p><p> 2)在綠燈轉為紅燈時,要求黃燈先亮5秒鐘,才能變換運行車道;</p><p> 3)黃燈亮時,要求每秒閃亮一次。</p>
12、<p> 4)東西方向、南北方向車道除了有紅、黃、綠燈指示外,每一種燈亮的時間都用顯示器進行顯示(采用計時的方法)。</p><p> 5)一道有車而另一道無車(實驗時用開關 K0 和 K1 控制),交通燈控制系統(tǒng)能立即讓有車道放行。 </p><p> 6)有緊急車輛要求通過時,系統(tǒng)要能禁止普通車輛通行,A、B道均為紅燈,緊急車由K2 開關模擬。</p>
13、<p> 2 系統(tǒng)總體方案及硬件設計</p><p> 2.1 AT89S52單片機簡介</p><p> AT89S52是一種低功耗、高性能CMOS8位微控制器。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下
14、標準功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路??臻e模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續(xù)工作。鑒于以上的優(yōu)點本系統(tǒng)采用AT89S52作為主控芯片,實現(xiàn)對整個系統(tǒng)的控制。</p><p> 2.2 系統(tǒng)硬件電路的設計</p><p>
15、;<b> ?。?)時鐘電路設計</b></p><p> 圖2-1時鐘電路原理圖</p><p> 如圖2-1所示,采用內部時鐘產生方式,在XTAL1和XTAL2兩端跨接晶體或陶瓷振蕩器,與內部反相器構成穩(wěn)定的自擊蕩器。其發(fā)出的時鐘脈沖直接送入片內定時控制部件。</p><p><b> (2)復位電路設計</b>
16、</p><p> 圖2-2上電+按鈕電平復位電路原理圖</p><p> 如圖2-2所示,采用上電+按鈕電平復位方式,當按下按鈕時,RST管腳高電平觸發(fā)。為保證復位可靠,RC時間常數應大于兩個機器周期,一般電容去22uF,電阻取1K。</p><p> ?。?)燈控制電路設計</p><p> 圖2-3交通燈狀態(tài)顯示電路</p&
17、gt;<p> 如圖2-3所示,交通燈狀態(tài)顯示電路由東西南北四個方向各三個LED燈組成,分別顯示四個方向上紅、黃、綠三個狀態(tài),用以指示十字路口各方向車輛的行駛。通過軟件編程,可使路口交通變化情況為:南北方向(主干道)車道和東西方向(支干道)車道兩條交叉道路上的車輛交替運行,主干道每次通行時間都設為30秒、支干道每次通行間為20秒;在綠燈轉為紅燈時,要求黃燈先亮5秒鐘,才能變換運行車道;黃燈亮時每秒閃亮一次。</p&
18、gt;<p> ?。?)倒計時顯示電路設計</p><p> 圖2-4 數碼管顯示電路原理圖</p><p> 如圖2-4所示,由一個共陽極四位數碼管來實現(xiàn)倒計時。由于P0口輸出電流小,需外接上拉電阻,COME端接5V電源。</p><p> ?。?)按鍵控制電路設計</p><p> 圖2-5鍵盤電路原理圖</p&
19、gt;<p> 如圖2-5所示,開光控制由PD1-PD5四個連接到單片機的控制按鈕組成。通過軟件編程,按下PD1電路進入外部中斷響應,數碼顯示時間將停止倒計時,此時,可通過按鈕PD3和PD4設置通行時間,每按一下PD3時間增加1s,而按下PD4時間減少1s。按下PD5將使程序重新進入循環(huán)點亮狀態(tài)。</p><p><b> 3軟件設計</b></p><
20、p> 3.1 交通燈的設計程序流程圖</p><p> 3.2定時器0及中斷響應</p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y&
21、lt;/b></p><p> 4 Proteus軟件仿真</p><p><b> 4.1 仿真圖</b></p><p><b> 4.2 仿真步驟</b></p><p> ?。?)根據電路圖選擇器件連接電路</p><p> ?。?)雙擊AT89S52裝
22、入源程序編譯生成的HEX文件</p><p> ?。?)單擊運行按鈕運行仿真</p><p> (4)根據仿真情況與程序實現(xiàn)任務對比,對于不能實現(xiàn)的任務修改并調試程序,重新裝載重新運行調試仿真,直到能完全實現(xiàn)所要求的功能為止</p><p> ?。?)進一步改進和簡化程序在進行調試仿真</p><p><b> 5 課程設計體會
23、</b></p><p> 通過這次單片機實訓課程學習,才深刻體會到自己實際操作能力的匱乏。從剛開始老師對單片機的整體介紹及其應用前景,對單片機產生了濃厚的興趣,并利用自己的課余時間提前學習有關單片機的基本知識。但空有理路知識,卻無半點的實際操作經驗。后來在老師的建議下,選擇運用單片機設計一個交通燈控制系統(tǒng),從簡單開始,后期逐步復雜化。</p><p> 從給定電路圖的分析
24、到實際電路元件的識別、焊接,再到后期的程序設計以及系統(tǒng)調試,初步掌握了運用單片機系統(tǒng)設計特定功能的設計步驟,也對單片機有了更深的體會。了解和掌握了一些簡單的編程思想,對單片機各管腳的功能,I/O口的使用條件都有了更深的理解。這次的課程設計讓我把單片機的理論知識運用的實踐中,實現(xiàn)了理論與實踐的相結合,從中更懂得了理論是實踐的基礎,實踐更能檢驗理論的真實性,讓我受益匪淺。</p><p><b> 參考文
25、獻:</b></p><p> [1] 李朝青.單片機原理及接口技術(修訂版).北京:北京航空航天大學出版社,1998[2] 李廣弟.單片機基礎.北京:北京航空航天大學出版社,1992[3] 何立民.單片機應用技術大全.北京:北京航空航天大學出版社, 1994[4] 張毅剛. 單片機原理及接口技術.哈爾濱:哈爾濱工業(yè)大學出版社,1990[5] 譚浩強.單片機課程設計. 北京:清華大學出版社,
26、1989</p><p> [6] 余發(fā)山.單片機原理及應用技術 焦作:中國礦業(yè)大學出版社,2007</p><p><b> 附錄1 源程序代碼</b></p><p> //#include<REG51.H> </p><p> #include<AT89X51.H> /
27、/ 對單片機的口進行了定義</p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段碼組合,共陰極</p&
28、gt;<p> uchar code b[4]={0xfe,0xfd,0xfb,0xf7}; //位碼組合 低有效</p><p> uchar code c[4]={0xcc,0xd4,0x78,0xb8};/*P1 綠紅、黃紅、紅綠、紅黃*/ </p><p> //12MHz </p><p> //*************
29、************************************************************************</p><p> uchar NB=25,DX=30,NBG=25,DXG=15,H=5; /*數碼管顯示值設置*/</p><p> uchar i,k=0,cnt=0,j=0; </p><p> sbi
30、t K0=P3^5; /*支干道通行*/</p><p> sbit K1=P3^6; /*主干道通行*/</p><p> sbit K4=P3^7; /*返回*/</p><p> sbit K3=P3^2;/*設置時間*/</p><p> sbit K2=P3^3;/*緊急剎車*/&l
31、t;/p><p> void delay(uchar t);/*定義延時程序*/</p><p> void key();/*定義鍵盤程序*/</p><p> void display();/*定義顯示程序*/</p><p> void settime();/*定義時間設置顯示程序*/</p>&l
32、t;p> //*************************程序初始*********************************************</p><p> void init(void)</p><p><b> {</b></p><p> TMOD=0x01; /*使用定時器0模式一*/<
33、;/p><p> TH0=0x3c; /*(65536-5000)/256*/</p><p> TL0=0xb0; /*(65536-5000)%256*/</p><p> IT0=1; //開中斷</p><p><b> ET0=1;</b></p><p>
34、<b> TR0=1;</b></p><p><b> EA=1;</b></p><p><b> EX0=1;</b></p><p><b> EX1=1;</b></p><p> P1=c[k]; //開啟交通燈</p
35、><p><b> }</b></p><p> //*************************中斷0處理程序***************************************</p><p> void int0(void) interrupt 0 //通行時間設置</p><p><
36、b> { </b></p><p><b> EA=0;</b></p><p> P1=0xd8;/*紅燈全亮*/</p><p><b> for(;;)</b></p><p><b> {</b></p><p&
37、gt; settime();</p><p> if(K1==0) /*P3^6=0設置主干道通行時間*/</p><p><b> { </b></p><p> delay(40);</p><p><b> if(K1==0)</b></p><p&
38、gt;<b> {</b></p><p> while(!K1)</p><p><b> { </b></p><p> settime();</p><p><b> }</b></p><p> NBG++;/*主干道通行時間
39、加1*/</p><p> if(NBG==100)</p><p><b> NBG=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(K0==0) /*P3
40、^5=0設置支干道通行時間*/</p><p><b> { </b></p><p> delay(40);</p><p><b> if(K0==0)</b></p><p><b> {</b></p><p> while(!K0)
41、</p><p><b> {</b></p><p> settime();</p><p><b> }</b></p><p> DXG++;/*支干道通行時間加1*/</p><p> if(DXG==100)</p><p&
42、gt;<b> DXG=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(K4==0) /*P3^7=0返回*/ </p><p><b> { </b>&l
43、t;/p><p> delay(40);</p><p><b> if(K4==0)</b></p><p><b> {</b></p><p> while(!K4)</p><p><b> {</b></p><p&
44、gt;<b> }</b></p><p> k=0;P1=c[k];</p><p> NB=NBG,DX=NBG+H;</p><p> display(); </p><p><b> EA=1;</b></p><p><b> break;&
45、lt;/b></p><p> } </p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /******************
46、*****************中斷1處理程序********************</p><p> void int1(void) interrupt 2 //緊急情況</p><p> { </p><p> /*東西南北紅燈亮*/</p><p> EA=0;</
47、p><p> TR0=!TR0; /*停止計數*/</p><p> for(;;) /*主支干道顯示全為0*/</p><p> { P1=0xd8,P0=a[0];</p><p><b> P2=0xfe;</b></p><p> delay(
48、20);</p><p><b> P2=0xfd;</b></p><p> delay(20);</p><p><b> P2=0xfb;</b></p><p> delay(20);</p><p><b> P2=0xf7;</b>
49、</p><p> delay(20);</p><p> if(K4==0) /*返回*/</p><p><b> { </b></p><p> delay(20);</p><p><b> EA=1;</b></p><
50、p> P1=c[k]; /*返回緊急前狀態(tài)開始計數*/</p><p> TR0=!TR0;/*重啟計數*/</p><p> break; </p><p><b> }</b></p><p><b> }</b></p>
51、<p><b> }</b></p><p> void time1(void) interrupt 1/*交通燈控制程序*/</p><p><b> {</b></p><p> TH0=0x3c;/*定時50ms*/</p><p> TL0
52、=0xb0; </p><p><b> cnt++;</b></p><p> if(cnt>=20) /*每20*50ms=1s自減一*/</p><p><b> {</b></p><p><b> NB--;</b&
53、gt;</p><p><b> DX--;</b></p><p><b> cnt=0;</b></p><p> if(NB==0||DX==0)</p><p><b> {</b></p><p><b> k++;<
54、/b></p><p> if(k>3)/*k取0,1,2,3*/</p><p><b> k=0;</b></p><p><b> switch(k)</b></p><p><b> {</b></p><p&
55、gt; case 0:NB=NBG,DX=NBG+H;j=0;P1=c[k];break; /*主干道通行顯示綠紅*/</p><p> case 1:NB=H;j=1;P1=c[k];break; /*主干道黃燈閃爍*/</p><p> case 2:NB=DXG+H,DX=DXG;j=0;P1=c[k];break; /*支干道通行顯示紅綠*/</p
56、><p> case 3:DX=H;j=2;P1=c[k];break; /*支干道黃燈閃爍*/</p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p>&
57、lt;b> }</b></p><p> void delay(uchar t) //延時程序延時0.1*nms </p><p><b> { </b></p><p><b> uchar i; </b></p><p><b> do <
58、/b></p><p><b> { </b></p><p> for(i=0;i<20;i++) </p><p><b> ;;; </b></p><p> } while(t--); </p><p><b> } </b>
59、;</p><p> void settime()</p><p><b> {</b></p><p> P2=0xfe,P0=a[(NBG+H)%10];/*顯示主干道通行時間 */</p><p> delay(20); </p><p> P2=0xfd,P0=a[(NBG+
60、H)/10];</p><p> delay(20); </p><p> P2=0xfb,P0=a[(DXG+H)%10];/*顯示支干道通行時間*/</p><p> delay(20); </p><p> P2=0xf7,P0=a[(DXG+H)/10];</p><p> delay(20)
61、;</p><p><b> }</b></p><p> void key()//鍵盤程序用KO K1模擬一道有車一道無車</p><p><b> {</b></p><p> if(K1==0) /*主干道有車支干道無車*/</p><p&g
62、t;<b> { </b></p><p> delay(40);</p><p> if(K1==0) </p><p><b> { </b></p><p> while(!K1)</p><p><b> { </b><
63、;/p><p> display();</p><p><b> }</b></p><p> k=0,P1=c[k];cnt=0;</p><p> NB=NBG, DX=NBG+H;</p><p> display();</p><p><b> }
64、</b></p><p><b> }</b></p><p> if(K0==0) /*支干道有車主干道無車*/</p><p><b> { </b></p><p> delay(40);</p><p><b> if
65、(K0==0)</b></p><p><b> {</b></p><p> while(!K0)</p><p><b> {</b></p><p> display(); </p><p><b> }</b></p&
66、gt;<p> k=2,P1=c[k];cnt=0;</p><p> NB=DXG+H,DX=DXG;</p><p> display(); </p><p><b> }</b></p><p><b> }</b></p><p><b&
67、gt; }</b></p><p> void display()//顯示程序</p><p><b> {</b></p><p> P2=0xfe,P0=a[NB%10]; /*由k的不同值進入確定顯示數值*/</p><p> delay(20);</p>
68、<p> P2=0xfd,P0=a[NB/10];</p><p> delay(20);</p><p> P2=0xfb,P0=a[DX%10];</p><p> delay(20);</p><p> P2=0xf7,P0=a[DX/10];</p><p> delay(20);<
69、;/p><p><b> }</b></p><p> void main(void)</p><p><b> {//主程序</b></p><p><b> init();</b></p><p><b> for(;;)<
70、/b></p><p><b> {</b></p><p> display();</p><p><b> key();</b></p><p><b> //黃燈閃爍程序</b></p><p> while(j==1)
71、/*主干道黃燈閃爍*/</p><p> {</p><p> P1=0xdc;/*給黃燈一高電平黃燈滅*/ </p><p> for(i=83;i>0;i--){display();}/*執(zhí)行for循環(huán)延時*/</p><p> P1=c[k];
72、/*再給黃燈一低電平黃燈亮*/</p><p> for(i=83;i>0;i--){display();}</p><p><b> }</b></p><p> while(j==2)</p><p> { /*支干道黃燈閃爍*/</p><
73、;p><b> P1=0xf8;</b></p><p> for(i=83;i>0;i--){display();}</p><p><b> P1=c[k];</b></p><p> for(i=83;i>0;i--){display();}</p><p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機交通燈課程設計--基于單片機的交通燈系統(tǒng)的設計
- 交通燈單片機課程設計--基于單片機的交通燈顯示系統(tǒng)
- 交通燈單片機課程設計--基于單片機的交通燈顯示系統(tǒng)
- 單片機交通燈課程設計--基于單片機的交通燈系統(tǒng)的設計
- 單片機課程設計--基于單片機的交通燈設計
- 基于單片機的交通燈課程設計
- 基于單片機的交通燈課程設計
- 單片機交通燈課程設計
- 單片機課程設計---交通燈
- 單片機交通燈課程設計
- 單片機課程設計-交通燈
- 單片機課程設計--交通燈
- 單片機課程設計(交通燈)
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 基于單片機的交通燈課程設計
- 課程設計---基于單片機的交通燈設計
- 單片機課程設計--基于51單片機的交通燈
評論
0/150
提交評論