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