版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 單片機課程設計論文</b></p><p><b> 智</b></p><p><b> 能</b></p><p><b> 交</b></p><p><b> 通</b></p>
2、;<p><b> 燈</b></p><p><b> 模擬智能交通燈</b></p><p><b> 摘 要</b></p><p> 本設計是針對交通燈系統(tǒng)的設計,由于車輛的增多,所以交燈在現代道路交通中起著越來越重要的作用。為了解決這些問題,我們更應該提高交通控制和管
3、理水平,合理使用現有交通設施,充分發(fā)揮其能力,提高交通效率,促進和諧交通的建立。本次設計由單片機AT89C52、鍵盤、LED顯示、交通燈演示系統(tǒng)組成。本設計中的數碼管的選通采用的方法是動態(tài)顯示,對每一位數碼分時輪流通電顯示,復位電路采用上電+按鈕電平復位,時鐘電路采用內部時鐘產生方式。對特殊情況的處理采用中斷處理方式,在中斷處理程序中采用對管腳的狀態(tài)查詢掃描,已采取相應情況的處理。對設計方案進行電路硬件設計,并將已編程的程序載入調試,可
4、以得到理想的實驗效果。系統(tǒng)包括基本的交通燈的功能.具體功能是假如東西道和南北道交替紅綠燈控制通行,有緊急車輛要求通過時,系統(tǒng)要能禁止普通車輛通行,所有道均為紅燈,緊急車由K1開關模擬。當道路系統(tǒng)出現掉電等突發(fā)事故時會有報警功能,掉電報警由開關K2模擬實現。綠燈轉換為紅燈時黃燈亮5秒鐘。系統(tǒng)除基本交通燈功能外,還具有倒計時、緊急情況處理、以及根據具體情況手動控制等功能。</p><p> 關鍵詞:AT89C52;
5、中斷;定時器</p><p><b> 1 引言</b></p><p> 交通燈在城市交通中起著重要的作用,它與人們日常生活密切相關,是人們出行的安全保障。如今隨著人們生活水平的提高,對交通管制也提出了更高的要求,因此提供一個可靠、安全、便捷的多功能交通燈控制系統(tǒng)有著現實的必要性。本設計是根據單片使機原理就交通燈的系統(tǒng)作出的,該設計在熟練掌握單片機原理及其應用技
6、術的使用方法基礎上,綜合應用單片機原理、微機原理、微機接口技術、proteus軟件等課程方面的知識,設計一個采用AT89C51單片機控制的交通燈控制電路。能方便的對交通燈進行控制,使交通更和諧。</p><p><b> 2方案設計與論證</b></p><p> 2.1 總體方案描述</p><p> 本次設計是通過單片機最小系統(tǒng)對外部
7、設備進行控制來實現的,具體是用單片機內部的定時器中斷進行一秒定時,讓數碼管顯示當前的倒計時時間,當定時器計時到一秒時控制數碼管顯示低位減一,低位減到零時高位數碼管減一。根據預設的紅綠燈時間當到預定時間時切換相應的紅綠黃三個燈的亮滅,來實現交通燈的功能。為了能夠應對突發(fā)情況,設置了兩個外部中斷,一個是當出現外部設備掉電貨損壞時觸發(fā)報警,提醒及時維修防止意外發(fā)生。第二個是當有特殊車輛如救護車等時四個路口的紅燈全部亮數碼管全部亮,特殊車輛通過
8、時恢復原來的情況,保證特殊車輛順利通過。</p><p> 圖2.1 總體方案原理圖</p><p> 2.2 微處理器模塊的比較與論證</p><p> 方案一:用單片機MSP430F169作為系統(tǒng)的主控核心。此單片機具有體積小,使用靈活的,易于人機對話和良好的數據處理,有較強的指令尋址和運算功能等優(yōu)點。</p><p> 方案二:
9、89C51單片機是MC-51中的子系列,是一組高性能兼容型單片機,AT89C51是一個低功耗高性能的CMOS8位單片機,40個引腳,片內含4KB的FlashROM和128B的RAM,它是一個全雙工的串行通行口,既可以用常規(guī)編程,又可以在線編程。</p><p> 本次設計是模擬交通燈程序不是很復雜所以采用方案二。</p><p> 2.3 顯示數碼管的選用</p><
10、;p> 方案一:雙位一體數碼管。具有體積小功耗小電路簡單等特點</p><p> 方案二:單位的數碼管。顯示清晰,不易損壞。</p><p> 綜合考慮采用方案一。</p><p> 3 系統(tǒng)硬件、軟件的實現</p><p> 3.1 系統(tǒng)硬件實現</p><p> 本次設計使用了四個共陽極雙位一體數
11、碼管,在四個路口各有一個顯示倒計時,四個路口各有一組交通燈,用P0口進行位選控制,選擇具體是那個路口和那個位的選通,再用P2口進行段選,選擇相關位具體顯示什么數字。P1口進行控制三個燈的選通,P3.2口和P3.3口作為外部中斷觸發(fā)的接口。P0.5口和P0.6口作為蜂鳴器和指示燈的控制接口。具體電路如下圖所示。</p><p> 圖3.1.1 系統(tǒng)總體電路圖</p><p> 3.2 單
12、片機時鐘電路</p><p> 本次單片機時鐘采用的是12M晶振,每個時鐘周期是1µs,定時器設置初值為50000,每次定時中斷時間是50ms,進20次為一秒。具體電路下圖所示。</p><p> 圖3.2.1 單片機時鐘電路圖</p><p> 3.3 單片機復位電路</p><p> 單片機采用外部按鍵復位,使單片機能夠
13、在出現不正常反應是能夠重新開始,恢復正常。具體電路如下所示。</p><p> 圖3.3.1 .復位電路圖</p><p> 3.4 蜂鳴器報警電路</p><p> 蜂鳴器采用單片機P0.5口控制三極管的b端,來控制三極管的導通與關斷來實現對蜂鳴器通斷設置的來控制的。具體蜂鳴器驅動電路如下圖所示。</p><p> 圖3.4.1 蜂
14、鳴器驅動電路圖</p><p> 3.2 系統(tǒng)軟件實現</p><p> 3.2.1 系統(tǒng)軟件流程圖</p><p><b> 圖3.1軟件流程圖</b></p><p> 交通燈控制系統(tǒng)在默認工作情況下,每30秒變換一次,為方便提示路上行人及車輛交通燈轉換的剩余時間,專門為控制系統(tǒng)提供了一個倒計時的顯示裝置。該
15、裝置采用七段數碼管來顯示,每個路口需要兩個,共八個,在設計電路時,只用了兩個進行模擬。本系統(tǒng)由于使用P2口提供字形,所以采用動態(tài)顯示,用上拉電阻方式驅動。所謂動態(tài)顯示,就是當顯示器顯示多字符時,相應的數碼管快速交替的導通或截止。</p><p> 表3.2.1.1 紅黃綠燈亮滅表</p><p><b> 具體實現步驟:</b></p><p&
16、gt; (1)當東西方向為紅燈,此道車輛禁止通行,東西道行人可通過;南北道為綠燈,此道車輛通過,行人禁止通行。時間為30秒。</p><p> 黃燈亮5秒,警示車輛和行人紅、綠燈的狀態(tài)即將切換。</p><p> ?。?)當東西方向為綠燈,此道車輛通行;南北方向為紅燈,南北道車輛禁止通過,行人通行。綠燈時間為25秒。</p><p> ?。?)這樣如上面表所示的
17、時間和紅、綠、黃出現的順序依次出現這樣行人和車輛就能安全。暢通的通行。</p><p> ?。?)此表可根據車流量動態(tài)設定紅綠燈初始值。 </p><p> 4 系統(tǒng)功能及使用說明</p><p> 功能:該系統(tǒng)除了能夠實現基本交通等功能外還有兩項拓展功能,一個是當出現外部設備掉電貨損壞時觸發(fā)報警,提醒及時維修防止意外發(fā)生。第二個是當有特殊車輛如救護車等時四個路
18、口的紅燈全部亮數碼管全部亮,特殊車輛通過時恢復原來的情況,保證特殊車輛順利通過。</p><p> 使用說明:該系統(tǒng)單片機采用5V之流電源供電,兩個拓展功能通過兩個外部開關進行模擬控制。</p><p><b> 5 總結及實習心得</b></p><p><b> 設計心得體會</b></p><
19、;p> 本學期的課程設計是老師給多個課程設計的題目,根據學生的喜好自己選擇進行設計。我覺得這樣有利于提高學生的興趣,來更好的培養(yǎng)我們的實踐能力和學習能力。三個人一組更是提高了我們與人合作的能力和共同解決問題的能力。</p><p> 我認為,在這學期的實驗中,在收獲知識的同時,還收獲了閱歷,收獲了成熟,在此過程中,我們通過查找大量資料,請教老師,以及不懈的努力,不僅培養(yǎng)了獨立思考、動手操作的能力,在各種
20、其它能力上也都有了提高。更重要的是,在實驗課上,我們學會了很多學習的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學習、實踐,再學習、再實踐。</p><p> 做了兩周的課程設計有很多的心得體會。剛開始拿到題目的時候一頭霧水,不知道從哪下手,后來靜下心來仔細考慮了下,才有頭緒。我們選擇用C語言來編程,因為這樣實現起來容易一些。在編程的過程中出現了很多錯誤,但通過同學的幫助和老師的幫助解
21、決了這些并且也學習到了很多知識。有很長時間沒有接觸單片機了,所以對單片機的知識頗有些生疏,首先我做的是熟系單片機系統(tǒng)及其單元內容和作用。然后與我的課程題目聯系起來,需要用哪些都記下來。參考課本上的C語言程序進行匯編。我覺得在整個匯編中遇到最大的問題是如何去控制計時,后來是向同學請教才能順利完成。</p><p> 在設計與制作的過程中,有時也會令我很沮喪,總是出現錯誤,同學都會在一邊鼓勵我,我想沒有同學的鼓勵和
22、老師的幫助,我也不會順利的完成這次課程設計。與隊友的合作更是一件快樂的事情,只有彼此都付出,彼此都努力維護才能將作品做的更加完美。而團隊合作也是當今社會最提倡的。</p><p> 課程設計結束了,雖說有成功的喜悅,但也有遺憾,本應該準備的更充分些。認真對待每一個實驗,珍惜每一分一秒,學到最多的知識和方法,鍛煉自己的能力,這個是我們在課程設計中學到的最重要的東西,也是以后都將受益匪淺的!</p>
23、<p><b> 參考文獻:</b></p><p> [1] 單片機原理與應用技術[M].余發(fā)山.中國礦大出版社.2007.</p><p> [2] 微型計算機控制技術[M].賴壽宏.機械工業(yè)出版社.2002.</p><p> [3] 單片機原理及應用[M].丁元杰.機械工業(yè)出版社.2001.</p>&l
24、t;p> [4] 單片機中級教程[M].張迎春.北京航空航天出版社.2004.</p><p> [5] 新編MCS-51單片機應用設計[M].張毅剛.哈爾濱.哈爾濱工業(yè)大學出版社.2003.</p><p> [6] C程序設計[M].譚浩強.北京.清華大學出版社.1991.</p><p><b> 附錄:</b></p
25、><p><b> 1 相關程序:</b></p><p> #include<reg51.H></p><p> #define uchar unsigned char </p><p> #define uint unsigned int </p><p> uchar co
26、de table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff };</p><p> void delay(uint x);//延時函數 </p><p> void display(uchar,uchar,uchar,uchar); //數碼管顯示函數 </p><p> sbit wa
27、r=P0^6;</p><p> sbit K1 =P0^7; </p><p> void traffic(); //交通燈函數 </p><p> void led_werg(); //東西紅燈 南北綠燈</p><p> void led_wery(); //東西紅燈 南北黃燈</p><p&g
28、t; void led_nsrg(); //東西綠燈 南北紅燈</p><p> void led_nsry(); //東西黃燈 南北紅燈</p><p> void led_war(); //全燈</p><p> uchar num,num1,num2,// //1南北 2東西 </p><p> shi1,ge1,
29、shi2,ge2, value1,value2,//南北 綠燈時間 黃燈時間 </p><p> value3,value4,//東西 綠燈時間 黃燈時間 </p><p> count1,count2,flag1,flag2; //南北標記 東西標記</p><p> sbit R1=P1^0;</p><p> sbit Y1=P
30、1^1;</p><p> sbit G1=P1^2;</p><p> sbit R2=P1^3;</p><p> sbit Y2=P1^4;</p><p> sbit G2=P1^5;</p><p> void main() </p><p><b> { &
31、lt;/b></p><p><b> P1=0x00;</b></p><p> TMOD=0x01; </p><p> TH0=(65536-50000)/256; </p><p> TL0=(65536-50000)%256; </p><p> EA=1; ET0=1;
32、 TR0=1; /*初狀態(tài)*/</p><p> EX0=1;IT0=1;IE0=0;PX0=1; //外部中斷0掉電報警</p><p> EX1=1;IT1=1;// //外部中斷1特殊情況 </p><p> value1=25; //南北 黃綠燈默認值 </p><p> value2=5; value3=20; //東西 黃
33、綠燈默認值 </p><p> value4=5; num1=value1; //南北數碼管先綠燈時間 </p><p> num2=value2+value1;//東西紅燈時間 </p><p> shi1=num1/10; </p><p> ge1=num1%10; </p><p> shi2=num
34、2/10; </p><p> ge2=num2%10; </p><p> led_werg();//初始狀態(tài):東西紅燈 南北綠燈</p><p><b> while(1)</b></p><p><b> { </b></p><p> if(num==20)
35、 //定時器1s </p><p><b> { </b></p><p> num=0; num1--; num2--;</p><p> traffic(); </p><p> shi1=num1/10; ge1=num1%10; shi2=num2/10; ge2=num2%10; </p>
36、<p><b> }</b></p><p> display(shi1,ge1,shi2,ge2);//調用數碼管顯示函數 </p><p><b> }</b></p><p><b> }</b></p><p> void traffic() //
37、紅綠燈主控制程序 </p><p><b> { </b></p><p> if(num1==0)</p><p><b> { </b></p><p> count1++; </p><p> if(count1==1) </p><p
38、><b> {</b></p><p> led_wery();//東西紅燈 南北黃燈 </p><p> num1=value2; </p><p><b> } </b></p><p> if(count1==2)</p><p><b>
39、{ </b></p><p> num1=value3+value4;//東西綠燈 南北紅燈 </p><p> led_nsrg();</p><p><b> }</b></p><p> if(count1==3)</p><p><b> {</b&g
40、t;</p><p> led_nsry();// 東西黃燈 南北紅燈 </p><p> num1=value4; count1=0;</p><p><b> } </b></p><p><b> } </b></p><p> if(num2==0)&
41、lt;/p><p><b> {</b></p><p> count2++; </p><p> if(count2==1)</p><p><b> {</b></p><p> led_nsrg();//東西綠燈 南北紅燈 </p><p&
42、gt; num2=value3; </p><p><b> }</b></p><p> if(count2==2)</p><p><b> {</b></p><p> led_nsry();//東西黃燈 南北紅燈 </p><p> num2=value4
43、;</p><p><b> }</b></p><p> if(count2==3)</p><p><b> {</b></p><p> led_werg();</p><p> num2=value1+value2; //東西紅燈 南北綠燈 </p&g
44、t;<p> num1=value1; count2=0; </p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void display(uchar shi1,uchar
45、ge1,uchar shi2,uchar ge2) //數碼管顯示子函數 </p><p><b> { </b></p><p> uchar temp; temp=P0; P0=0x01; P2=table[shi1];</p><p><b> delay(5);</b></p><p>
46、; P0=0x02; P2=table[ge1]; </p><p><b> delay(5);</b></p><p><b> P0=0x04;</b></p><p> P2=table[shi2]; </p><p><b> delay(5);</b>&l
47、t;/p><p><b> P0=0x08; </b></p><p> P2=table[ge2]; </p><p><b> delay(5);</b></p><p><b> }</b></p><p> void delay(uint
48、x)//延時子函數 </p><p><b> { </b></p><p><b> uint i,j;</b></p><p> for(i=x;i>0;i--)</p><p> for(j=110;j>0;j--);</p><p><b&g
49、t; } </b></p><p> void T0_time() interrupt 1 //定時器T0 中斷子程序 </p><p><b> { </b></p><p> TH0=(65536-50000)/256; </p><p> TL0=(65536-50000)%256; <
50、/p><p><b> num++;</b></p><p><b> }</b></p><p> void int0() interrupt 0</p><p><b> {</b></p><p><b> while(1)<
51、/b></p><p><b> { </b></p><p><b> K1=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> void int1()
52、interrupt 2</p><p><b> {</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> led_war(); //全燈</p><p><b> P
53、0=0x0f;</b></p><p><b> P2=0x00;</b></p><p><b> war=1;</b></p><p><b> IE1=0;</b></p><p><b> }</b></p>&l
54、t;p><b> }</b></p><p> void led_werg() //東西紅燈 南北綠燈</p><p><b> {</b></p><p><b> R1=0;</b></p><p><b> Y1=0;</b>&l
55、t;/p><p><b> G1=1;</b></p><p><b> R2=1;</b></p><p><b> Y2=0;</b></p><p><b> G2=0;</b></p><p><b> }&
56、lt;/b></p><p> void led_wery() //東西紅燈 南北黃燈</p><p><b> {</b></p><p><b> R1=0;</b></p><p><b> Y1=1;</b></p><p>&
57、lt;b> G1=0;</b></p><p><b> R2=1;</b></p><p><b> Y2=0;</b></p><p><b> G2=0;</b></p><p><b> }</b></p>
58、<p> void led_nsrg() //東西綠燈 南北紅燈</p><p><b> {</b></p><p><b> R1=1;</b></p><p><b> Y1=0;</b></p><p><b> G1=0;</
59、b></p><p><b> R2=0;</b></p><p><b> Y2=0;</b></p><p><b> G2=1;</b></p><p><b> }</b></p><p> void led
60、_nsry() //東西黃燈 南北紅燈</p><p><b> {</b></p><p><b> R1=1;</b></p><p><b> Y1=0;</b></p><p><b> G1=0;</b></p><
61、;p><b> R2=0;</b></p><p><b> Y2=1;</b></p><p><b> G2=0;</b></p><p><b> }</b></p><p> void led_war() //全燈</p&
62、gt;<p><b> {</b></p><p><b> R1=1;</b></p><p><b> Y1=0;</b></p><p><b> G1=0;</b></p><p><b> R2=1;</b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計--模擬交通燈
- 模擬交通燈單片機課程設計
- 單片機課程設計--模擬交通燈
- 單片機交通燈課程設計
- 單片機課程設計---交通燈
- 單片機交通燈課程設計
- 單片機課程設計-交通燈
- 單片機課程設計--交通燈
- 單片機課程設計(交通燈)
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機課程設計--模擬交通燈電路課程設計
- 單片機課程設計---模擬交通燈的設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計--基于單片機的交通燈控制設計
- 交通燈單片機課程設計--基于單片機的交通燈顯示系統(tǒng)
- 交通燈單片機課程設計--基于單片機的交通燈顯示系統(tǒng)
- 單片機交通燈課程設計--基于單片機的交通燈系統(tǒng)的設計
- 單片機交通燈課程設計--基于單片機的交通燈系統(tǒng)的設計
評論
0/150
提交評論