版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p> 摘要 ……………………………………………………………1</p><p> 設(shè)計目的 ………………………………………………………2</p><p> 設(shè)計任務(wù)和要求 ………………………………………………2</p><p> 設(shè)計原理分析 …
2、………………………………………………2</p><p> 硬件模塊及功能 ………………………………………………3</p><p> 1、個模塊功能 …………………………………………………… 3</p><p> 2、材料清單…………………………………………………………4</p><p> 3、硬件圖 …………………………………
3、……………………5</p><p> 軟件模塊及功能 ………………………………………………6</p><p> 1、個模塊功能原理 ………………………………………………6</p><p> 2、程序清單…………………………………………………………6</p><p> 3、程序流程圖 ……………………………………………………9&l
4、t;/p><p> 調(diào)試運行 ………………………………………………………10</p><p> 程序編譯鏈接………………………………………………10</p><p> 觀察模擬仿真………………………………………………11</p><p> 心得體會 ………………………………………………………12</p><p>
5、 參考文獻 ………………………………………………………12</p><p> 致謝 ……………………………………………………………13</p><p><b> 摘 要:</b></p><p> 單片微型計算機(單片機)自問世以來,因其小巧靈活、成本低、控制能力強、易于產(chǎn)品化等優(yōu)勢,在社會各領(lǐng)域中得到廣泛的應(yīng)用。根據(jù)89C52單片機的特
6、點及交通燈在實際控制中的特點,本文提出一種利用單片機自動控制交通燈及時間倒計時顯示的方法,將整個系統(tǒng)縮小在一塊小小的單片機上,大大提高了產(chǎn)品的經(jīng)濟性和輕便性。設(shè)計過程包括硬件電路設(shè)計和程序設(shè)計兩大步驟。硬件電路其結(jié)構(gòu)比較簡單,主要包括核心器件單片機、12只二極管組成的模擬交通燈、復(fù)位電路、振蕩電路、顯示數(shù)碼管模塊。單片機開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另
7、一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼,用于MCS-51單片機的匯編軟件有早期的A51,隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大</p>
8、<p> 關(guān)鍵詞:89C51單片機;交通燈;自動控制;時間顯示器;軟件;硬件;定時器;延時;外部中斷</p><p><b> 一、設(shè)計目的</b></p><p> 1、通過單片機課程設(shè)計,熟練掌握C語言的編程方法,將理論聯(lián)系到實踐中去,提高我們的動腦和動手的能力。</p><p> 2、通過交通信號燈控制系統(tǒng)的設(shè)計,掌握
9、定時/計數(shù)器、中斷的使用方法,和簡單程序的編寫,最終提高我們的邏輯抽象能力。</p><p><b> 二、設(shè)計任務(wù)和要求</b></p><p> 任務(wù):設(shè)計一個能夠控制十二盞交通信號燈及顯示時間60秒倒計時的模擬系統(tǒng)</p><p> 要求:利用單片機的定時器定時和中斷功能,令十字路口的紅綠燈交替點亮和熄滅,并用共陽極數(shù)碼管顯示倒計時
10、間。</p><p><b> 三、設(shè)計原理分析</b></p><p> 1、根據(jù)實際交通燈的變化情況和規(guī)律。假設(shè)一個十字路口如上圖所以,為東南西北走向。初始狀態(tài)1東西綠燈通車,南北紅燈亮。過一段時間后,轉(zhuǎn)狀態(tài)2,東西綠燈滅,黃燈閃幾下,南北還是紅燈。再轉(zhuǎn)狀態(tài)3,南北綠燈通車,東西紅燈亮。過一段時間后轉(zhuǎn)狀態(tài)4,南北綠燈滅,閃幾個黃燈,東西還是為紅燈亮,一段時間后
11、,又循環(huán)至狀態(tài)1。</p><p> 列出交通信號燈的狀態(tài)表如下:(其中,1代表燈亮,0代表燈滅)</p><p> 2、對于交通信號燈來說,應(yīng)該有東西南北共四組燈,但由于同一道上的兩組的信號燈的顯示情況是相同的,所以只要用兩組就行了,因此,采用單片機內(nèi)部的I/O口上的P1口中的6個引腳即可來控制12個信號燈。</p><p> 3、通過編寫程序,實現(xiàn)對發(fā)光二
12、極管的控制,來模擬交通信號燈的管理。每延時一段時間,燈的顯示情況都會按交通燈的顯示規(guī)律進行狀態(tài)轉(zhuǎn)換。</p><p> 4、通過延時時間送顯,可以在原有的交通信號燈系統(tǒng)的基礎(chǔ)上,增添其倒計時間的顯示功能,實現(xiàn)其功能的擴展。</p><p><b> 四、硬件模塊及功能</b></p><p> 主要用到的硬件:P1口、P3口、P2口、LE
13、D數(shù)碼管、發(fā)光二級管、定時器T0、</p><p> 外部中斷0和外部中斷1、復(fù)位開關(guān)</p><p><b> 1、個模塊功能:</b></p><p> 發(fā)光二極管電路:根據(jù)發(fā)光二極管的特性,將二極管的正極與電源相接(+5V),其中與一個500歐姆的電阻串聯(lián)。而發(fā)光二極管的負極與單片機的P1的八個端口相接,這樣只要P1口的某個端口出現(xiàn)
14、低電平,即二極管導(dǎo)通發(fā)光。</p><p> 復(fù)位電路:本電路采用的是按鍵電平復(fù)位,按復(fù)位鍵后復(fù)位端通過電阻與VCC電源接通,此時復(fù)位端由低電平變?yōu)榱烁唠娖剑瑥亩_到復(fù)位的效果。復(fù)位電路關(guān)系到一個系統(tǒng)能否可靠地工作,一般由電阻、電容和門電路組成。</p><p> 晶振電路:80C51系列單片機內(nèi)部有一個高增益反相放大器,用于構(gòu)成振蕩器,但要形成時鐘,外部需附加電路,引腳XTAL1是為
15、反相放大器和時鐘發(fā)生電路的輸入端,XATL2為反相放大器的輸入端。本電路是由一個12M晶振和兩個22pF的無極性電容組成。</p><p> 數(shù)碼管驅(qū)動顯示電路:由于數(shù)碼管是四位一體的,所以必須采用動態(tài)掃描方式,其基本原理是利用人眼的“視覺暫留”效應(yīng)。接口電路把所有顯示器的8個筆端a—b分別并聯(lián)在一起,本電路時接單片機的P2口。每一個顯示器的公共端COM各自獨立地受I/O線控制,本電路采用的是單片機P0.0、P
16、0.1、P0.2、P0.3。CPU向字段輸出口送出字型碼時,所有的顯示器都能接收到,再利用循環(huán)掃描的方式分時選通個顯示器的公共極,是各個顯示器輪流導(dǎo)通。當掃描的速度達到一定程度時,人眼就分辨不出來了,認為各個顯示器同時發(fā)光了。</p><p> 緊急開關(guān)電路:緊急開關(guān)電路很簡單,只需要兩個開關(guān)。為了便于中斷想象的產(chǎn)生,開關(guān)一端接于P3.2P3.3口,因為其具有中斷的功能,另一端接地就行。當按鍵按下時相應(yīng)的端口就
17、會接受到低電平從而程序產(chǎn)生中斷。</p><p><b> 2、材料清單:</b></p><p><b> 3、硬件圖</b></p><p><b> 五、軟件模塊及功能</b></p><p> 1、各模塊功能及原理</p><p> 數(shù)
18、碼管顯示:程序進入主程序后在顯示程序中一直循環(huán),通過定時器中斷改變aa、bb的值,使得數(shù)碼管顯示不同的數(shù)字。顯示程序利用動態(tài)掃描原理:首先將共陽極編碼送入P2口,同時打開P0口的第一個數(shù)碼管關(guān)閉其他數(shù)碼管,然后將下一個編碼送入P2口,同時打開P0口的第二個數(shù)碼管關(guān)閉其他數(shù)碼管,以此類推。讓人的視覺產(chǎn)生誤差,這樣就看到了四位數(shù)碼管同時顯示并且不斷變化。</p><p> 定時器中斷:本程序采用定時/計數(shù)器0,定時
19、時間為50ms,讓它50ms產(chǎn)生一次中斷,進入中斷后把(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口(東西亮黃燈,南北紅燈)。如果
20、shu等于2400即過了兩分鐘,就將0xF3賦給P1口(點亮南北綠燈,東西紅燈),同時將shu、xianshi重新賦值并且進入下一階段定時中斷。</p><p> 外部中斷:本程序采用外部中斷0和外部中斷1,即P3.2和P3.3口,由于定時器中斷0比外部中斷2優(yōu)先級高,所以初始化程序中將PX1=1設(shè)定外部中斷1為高優(yōu)先級,這樣就可以達到緊急開關(guān)的作用,當按下緊急開關(guān)1時,即P3.2口由高電平變?yōu)榈碗娖?,程序立?/p>
21、進入中斷程序,將東西方向變?yōu)榫G燈,南北方向紅燈,同時在中斷程序中判斷P3.2口是否有低電平信號,如果有(將開關(guān)按起)即將東西方向點亮綠燈 南北方向紅燈并且重新給shu、xianshi、aa、bb賦值,使得數(shù)碼管從60秒重新倒計時。緊急開關(guān)2與其相似。</p><p><b> 2、程序清單:</b></p><p> #include <reg52.h>
22、;</p><p> #defineuint unsigned int </p><p> #defineuchar unsigned char</p><p> sbit P32=P3^2;</p><p> sbit P33=P3^3;</p><p><b> uint shu;<
23、/b></p><p> uchar xianshi,xianshi2;</p><p> uchar aa,bb;</p><p> uchar code table[9]={0xc0,0xf9,0xa4,0xb0,0x99,</p><p> 0x92,0x82,0xf8,0x80,0x90};//帶小數(shù)點的共陽極數(shù)碼管的段
24、編碼0--9</p><p> void init()//初始化函數(shù)</p><p><b> {</b></p><p><b> shu=0;</b></p><p> xianshi=20;</p><p><b> aa=2;</b>&
25、lt;/p><p><b> bb=0;</b></p><p><b> P0=0xff;</b></p><p><b> P1=0;</b></p><p> TMOD=0x01; //用定時器0方式1</p><p> EA=1; //打開
26、中斷</p><p> ET0=1;//打開定時器0中斷</p><p> TL0=15536/256;</p><p> TH0=15536%256;</p><p> EX0=1;//外部中斷0</p><p> EX1=1;//外部中斷1</p><p> IT0=0;//外
27、部中斷0電平觸發(fā)</p><p> IT1=0;//外部中斷1電平觸發(fā)</p><p> PX1=1;//設(shè)定外部中斷1為高優(yōu)先級</p><p><b> }</b></p><p> void Delay(unsigned int i)//延時程序</p><p><b>
28、 {</b></p><p> unsigned int j;</p><p> for(;i>0;i--)</p><p> for(j=0;j<125;j++)</p><p><b> {;}</b></p><p><b> }</b>
29、;</p><p> void display(uchar a,uchar b,uchar c,uchar d)</p><p><b> {</b></p><p> P2=table[a]; //北十位</p><p><b> P0=0xfe;</b></p><p
30、><b> Delay(2);</b></p><p> P2=table[b]; //北個位</p><p><b> P0=0xfd;</b></p><p><b> Delay(2);</b></p><p> P2=table[c]; //西十位<
31、;/p><p><b> P0=0xfb;</b></p><p><b> Delay(2);</b></p><p> P2=table[d]; //西個位</p><p><b> P0=0xf7;</b></p><p><b>
32、 Delay(2);</b></p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p><b> init();</b></p><p> TR0=1;/
33、/啟動定時器0 </p><p><b> P1=0xff;</b></p><p> P1=0xf3;//點亮南北綠燈,東西紅燈 </p><p><b> while(1)</b></p><p><b> {</b></p><p>
34、display(aa,bb,aa,bb); </p><p><b> }</b></p><p><b> }</b></p><p> void timer0() interrupt 1 using 1 </p><p><b> {</b></p>
35、<p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> shu++;</b></p><p> if(shu%20==0)</p><p><b> {</b></p><
36、;p> xianshi--;</p><p> xianshi2--; </p><p> aa=xianshi/10;</p><p> bb=xianshi%10;</p><p><b> }</b></p><p> if(shu==1140)</p>&l
37、t;p><b> {</b></p><p> P1=0xf5;//南北黃亮,東西依然紅燈</p><p><b> }</b></p><p> if(shu==1200)</p><p><b> {</b></p><p>
38、P1=0xDE;//南北亮紅燈,東西綠燈</p><p> xianshi=60;</p><p><b> }</b></p><p> if(shu==2340)</p><p><b> {</b></p><p> P1=0xee;//東西亮黃燈,南北紅燈
39、 </p><p><b> }</b></p><p> if(shu==2400)//再過3s返回</p><p><b> {</b></p><p><b> shu=0;</b></p><p> xianshi=60;<
40、;/p><p> P1=0xf3;//點亮南北綠燈,東西紅燈</p><p><b> }</b></p><p><b> }</b></p><p> void inter0() interrupt 0 using 2 //南北方向綠燈</p><p><
41、b> {</b></p><p><b> P0=0xff;</b></p><p> P1=0xf3;//南北綠 東西紅</p><p> while(P32==0){};</p><p><b> P1=0xDE;</b></p><p>
42、xianshi=60;</p><p><b> shu=1200;</b></p><p><b> aa=6;</b></p><p><b> bb=0;</b></p><p><b> }</b></p><p>
43、 void inter1() interrupt 2 using 3 //東西方向綠燈</p><p><b> {</b></p><p><b> P0=0xff;</b></p><p> P1=0xDE;// 東西綠 南北紅 </p><p> while(P33==0){}
44、;</p><p><b> P1=0xf3;</b></p><p> xianshi=60;</p><p><b> shu=0;</b></p><p><b> aa=6;</b></p><p><b> bb=0;<
45、;/b></p><p><b> } </b></p><p><b> 3、程序流程圖</b></p><p><b> 六、調(diào)試運行</b></p><p><b> 1、程序編譯鏈接</b></p><p>
46、 程序完成后,確保無誤,然后進行編譯鏈接。</p><p> 編譯鏈接無錯并將程序生成.hex文件圖:</p><p><b> 2、觀察模擬仿真</b></p><p> 利用模擬仿真觀察現(xiàn)象,將外圍設(shè)備中P0、P1、P2、P3口打開。程序正常運行:</p><p> 利用模擬仿真,模擬緊急開關(guān)作用,即在程序運
47、行,將P3.2和P3.3口變?yōu)榈碗娖?,觀察其現(xiàn)象。</p><p><b> 七、心得體會</b></p><p> 在一個多月的單片機課程設(shè)計,我不僅加深了對單片機理論的理解,將理論很好地應(yīng)用到實際當中去,而且我還學(xué)會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新,是要我們學(xué)會將理論很好地聯(lián)系實際,并不斷地去開動自己的大腦,從為人類造福的意愿出發(fā)
48、,做自己力所能及的,別人卻沒想到的事。使之不斷地戰(zhàn)勝別人,超越前人。同時,更重要的是,我在這一設(shè)計過程中,學(xué)會了堅持不懈,不輕易言棄。設(shè)計過程,也好比是我們?nèi)祟惓砷L的歷程,常有一些不如意,也許這就是在對我們提出了挑戰(zhàn),勇敢過,也戰(zhàn)勝了,勝利的鐘聲也就一定會為我們而敲響。</p><p> 這個設(shè)計過程中,我遇到過許多次失敗的考驗,就比如,自己對實際生活中的交通秩序的不了解給整個設(shè)計帶來的困擾,真想要就此罷休,然
49、而,就在想要放棄的那一刻,我明白了,原來結(jié)果并不那么重要,我們更應(yīng)該注重的是這一整個過程。于是,我堅持了下來。當然最終,這個設(shè)計很成功,主要體現(xiàn)在,這一整個系統(tǒng),參考多了多本資料書,程序由自己獨立完成,與用匯編語言制作的交通燈控制系統(tǒng)程序相比,簡單易讀,結(jié)構(gòu)清楚,層次分明。但我深知單片機還有更深奧的知識,我將繼續(xù)學(xué)習(xí)單片機及其編程語言,盡量去學(xué)習(xí)匯編語言鍛煉思維能力。</p><p><b> 參考文
50、獻:</b></p><p> 《單片機原理與應(yīng)用》主編:張迎新等 電子工業(yè)出版社出版</p><p> 《從零開始學(xué)單片機C語言》主編:劉建清 國防工業(yè)出版社</p><p> 《單片機C語言輕松入門》主編:周堅 北京航空航天大學(xué)出版社 </p><p><b> 致謝:</b></p&g
51、t;<p> 本文是在xx老師精心指導(dǎo)和大力支持下完成的。在課題設(shè)計中xx老師,細心教導(dǎo),以其嚴謹求實的治學(xué)態(tài)度、高度的敬業(yè)精神、兢兢業(yè)業(yè)、孜孜以求的工作作風和大膽創(chuàng)新的進取精神對我產(chǎn)生重要影響。他淵博的知識、開闊的視野和敏銳的思維給了我深深的啟迪,還有要感謝實驗室的老師給我提供了實驗設(shè)備,感謝他們的支持與幫助。同時,在此次畢業(yè)設(shè)計過程中我也學(xué)到了許多了關(guān)于單片機方面的知識,實踐技能有了很大的提高。 </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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言單片機交通燈畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---單片機交通燈設(shè)計
- 交通燈畢業(yè)設(shè)計---- 基于單片機的交通燈設(shè)計
- 單片機畢業(yè)設(shè)計---單片機控制交通燈
- 單片機模擬交通燈畢業(yè)設(shè)計
- 單片機交通燈控制畢業(yè)設(shè)計
- 單片機模擬交通燈畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----單片機控制交通燈
- 單片機控制交通燈畢業(yè)設(shè)計
- 畢業(yè)設(shè)計-單片機控制交通燈
- 畢業(yè)設(shè)計---單片機控制交通燈
- 單片機控制交通燈畢業(yè)設(shè)計
- 單片機控制交通燈畢業(yè)設(shè)計
- 單片機交通燈畢業(yè)設(shè)計6
- 畢業(yè)設(shè)計-----單片機控制交通燈
- 單片機交通燈控制畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---單片機控制交通燈設(shè)計
- 畢業(yè)設(shè)計----單片機控制交通燈設(shè)計
- 單片機控制交通燈畢業(yè)設(shè)計 (2)
- 基于51單片機交通燈畢業(yè)設(shè)計
評論
0/150
提交評論