單片機課程設(shè)計---十字路口的交通燈控制電路
《單片機課程設(shè)計---十字路口的交通燈控制電路》由會員分享,可在線閱讀,更多相關(guān)《單片機課程設(shè)計---十字路口的交通燈控制電路(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 《單片機原理及應(yīng)用課程設(shè)計》報告 ——交通燈設(shè)計 專 業(yè): 班 級: 姓 名: 學(xué) 號: 2013年5月 1 .課程設(shè)計目的 1.1 鞏固和加深對單片機原理和接口技術(shù)知識的理解; 1. 2培養(yǎng)根據(jù)課題需要選學(xué)參考書籍、查閱手冊和文獻(xiàn)資料的能力; 1.3 學(xué)會方案論證的比較方法,拓寬知識,初步掌握工程設(shè)計的基本方法; 1.4 掌握常用儀器、儀表的正確使用方法,學(xué)會軟、硬件的設(shè)計和調(diào)試方法; 1.5 能按課程設(shè)計的要求編寫課程設(shè)計報告,能正確反映設(shè)計和實驗成果,能 用計算機繪制電路圖和流
2、程圖。 2 .課程設(shè)計要求 1)設(shè)計一個十字路I1交通燈控制器。用單片機控制LED燈模擬指示。模擬東西方向 的十字路口交通信號控制情況。東西向通行時間為80s,南北向通行時間為60s,緩沖時 間為3so 2)黃燈亮?xí)r,要求每秒閃亮一次。 3)東西方向、南北方向車道除了有紅、黃、綠燈指示外,每一種燈亮的時間都用顯示器進(jìn) 行顯示(采用計時的方法)。 4)當(dāng)有突發(fā)事情發(fā)生時(如有救護(hù)車通過時),可通過按鍵將各個路口設(shè)置成紅燈,只讓救 護(hù)車通過。 3 .硬件設(shè)計 3.1 設(shè)計思想 單片機選型:AT89C52 3sz都引記J4 mm 平個鴻平汩冶冶冶 陪ZCd ^02 部
3、 貪& ua DSC os 3d zsf awrzd B Nluysd d ;d : ;dd」::Mddddld AT89C52是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復(fù)擦寫的Flash 只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、 非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲 單元,AT89c52單片機在電子行業(yè)中有著廣泛的應(yīng)用。AT89c52具有以下標(biāo)準(zhǔn)功能:8k字 節(jié)Flash, 256字節(jié)RAM, 32位I/O 口線,看門狗定時器,2個數(shù)據(jù)指針
4、,三個16位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路,8位 微控制器8K字節(jié)在系統(tǒng)可編程Flash ROMo PO □: P0 口是一個8位漏極開路的雙向I/O I Io作為輸出口,每位能驅(qū)動8個TTL 邏 輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入端用。 在訪問外部數(shù)據(jù)存儲器或程序存儲器時,P0 口被分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總 線更用,在訪問期間激活內(nèi)部上拉電阻。 在Flash編程時,PO II接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時, 要求外接上拉電阻。 P1 口: P1 口是一個具有內(nèi)部上拉電阻的8位雙向I/O I I, P1
5、輸出緩沖器能驅(qū)動 4個TTL邏輯電平。對P1端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為 輸入口使用。作為輸入使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會 輸出一個電流(IIL)。 此外,P1.0和PL 2分別作定時器/計數(shù)器2的外部計數(shù)輸入(PL0/T2)和時器/計 數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。在flash編程和校驗時,P1 口接 收低8位地址字節(jié)。 P1端口引腳號第二功能: P1.0 T2 (定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出 Pl. 1 T2EX (定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制) P2 口: P2是一
6、個帶有內(nèi)部上拉電阻的8位雙向I/O D, P2的輸出緩沖級可驅(qū)動 (吸收或輸出電流)4個TTL邏輯門電路。對端口 P2寫“1”,通過內(nèi)部的上拉電阻把 端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引 腳被外部信號拉低時會輸出一個電流(IIL)。 在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX@DPTR指令) 時,P2 口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@RI 指令)時,P2 口輸出P2鎖存器的內(nèi)容。 Flash編程或校驗時,P2亦接收高位地址和一些控制信號。 P3 口: P3 口是一組帶有內(nèi)部上拉電阻的8
7、位雙向I/O PL P3 口輸出緩沖級可驅(qū) 動(吸收或輸出電流)4個TTL邏輯門電路。對P3 口寫入“1”時,它們被內(nèi)部上拉 電阻拉高并可作為輸入端口。此時,被外部拉低的P3 門將用上拉電阻輸出電流(IIL)。 P3 口還接收一些用于Flash閃速存儲器編程和程序校驗的控制信號。 P3 口除了作為一般的I/O 口線外,更重要的用途是它的第二功能。 P3「I亦作為AT89s52特殊功能(第二功能)使用,如下表所示。 在flash編程和校驗時,P3 口也接收一些控制信號。 P3端口引腳第二功能: P3. 0 RXD (串行輸入口) P3. 1 TXD (串行輸出口) P3. 2 I
8、NTO (外中斷 0) P3. 3 INT1(外中斷 1) P3.4 T0 (定時/計數(shù)器0) P3.5 T1 (定時/計數(shù)器1) P3.6 WR(外部數(shù)據(jù)存儲器寫選通) P3.7 RD(外部數(shù)據(jù)存儲器讀選通) RST一一復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將是單 片機兔位。 ALE/PROG一一當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE (地址鎖存允許)輸出脈 沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的 脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存 儲器時將跳過一個ALE脈沖。對FL
9、ASH存儲器編程期間,該引腳還用于輸入編程脈沖 (PROG)。 如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止 ALE操作。該位置位后,只有一條MOVX和M0VC指令才能將ALE激活。此外,該引腳會 被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。 PSEN一一程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C52 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖, 在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為OO
10、OOH-FFFFH), EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,更位時內(nèi)部會鎖 存EA端狀態(tài)。
如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。
FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件 是使用12V編程電壓Vpp。
3. 2系統(tǒng)原理圖
3. 3復(fù)位電路:上電+按鈕
1uF
11、C相當(dāng)于瞬間短路,+5V加到了 RST/VPD端,該高電 平使8051全機復(fù)位。若運行過程中,需要程序從頭執(zhí)行,只需按動按鈕開關(guān),則直接把+5V加 到了 RST八TD端,從而復(fù)位.顯然,該電路即可以上電更位,也可以手動復(fù)位,是常用復(fù)位電 路之一。 si ?????? T8KXIPXZCC , 3.4數(shù)碼管顯示:7SEG-MPX2-CC 5 此處采用的數(shù)碼管時共陰極數(shù)碼管,G、F、E、D、C、B、A七個端口是輸入端口,對其各 位進(jìn)行賦值,置位則亮,復(fù)位則滅,用此來顯示出相應(yīng)的數(shù)字;1、2兩端II用來控制高位和低 位的選通顯示,只要對端II置位,便可以選擇該端口,并對其所代表的
12、位進(jìn)行賦值,顯示。
3. 5發(fā)光二極管顯示
每個路I I都采用了三個LED燈來顯示,分別代表了紅黃綠三種燈,來模擬路II交通燈的變
換。
3 . 6鍵盤:獨立鍵盤+中斷
采用開關(guān)來控制進(jìn)入中斷,可以在路口出現(xiàn)緊急情況時,拉動開關(guān),來使得紅綠燈發(fā)生相 應(yīng)的改變,己處理緊急情況下的車輛通行。
4 .軟件設(shè)計
4. 1總體流程圖
4.2緊急中斷子程序流程圖
4. 3循環(huán)流程控制思路:
5. 4源程序
#include
13、char unsigned char uchar temp.aa.mi; sbit rn=P2A0; sbit nb=P2Al; sbit gn=P2A2; sbit rw=P2 八3; sbit dx=P2A4; sbit gw=P2 八 5; sbit shi=P3A6; sbit ge=P3八7; /*對要使用的單片機各個口進(jìn)行定義*/ bit flag=O; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x7
14、1); /*將數(shù)字0123456789的16進(jìn)制數(shù)定義成數(shù)組用以顯示*/ void delay(umt z); void disp(uint n); void nb_flash(void); void dx_flash(void); void xintOQ; void tiinerO(); void LED_ONQ; void xintlQ; void LED_OFF(); void nanbei(); void dongxiO; /*將所使用的子函數(shù)定義*/ void main。 ( umt num; num=0; aa=0; TMOD=0x01; TH0=
15、(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=l; TR0=l; EX0=l; IT0=0; EX1=1; IT1=1; /*中斷初始化*/ 10 naiibeiQ; nb_flash(); dongxiQ; dx_flash(); ) ) void delay(umt z) { umt x,y; fbr(x=z;x>0;x-) for(y=U0;y>0;y-); ) /*主函數(shù)中顯示部分*/ /*延時子函數(shù)*/ void tiiiierO() interrupt 1 { TH0=(
16、65536-50000)/256; TL0=(65536-50000)%256; aa++; if(aa=18) { aa=0; flag=l; ) ) void disp(uint n) { while(lflag) { ge=0; P0=table[n%10]; delay(50); shi=l;ge=l; slii=0; PO=table[ivlO]; delay(50); shi=l;ge=l; } if(flag==l) flag=O; ) void nanbei() /*顯示子函數(shù)*/ /*南北方向的紅綠燈和數(shù)碼管顯示子函數(shù)*/
17、 { uiiit num; num=60; disp(num); wlule(num<=60&&num>0) { num"; P2=0xde; disp(num); } ) void dongxi() /*東西方向的紅綠燈和數(shù)碼管顯示子函數(shù)*/ { uiiit num; num=80; wlule(num<=80&&num>0) { P2
18、=Oxf3; disp(num); num--; } ) void nb_flash(void) /*南北方向的黃燈和數(shù)碼管顯示子函數(shù)*/ ( uint a; fbr(a=3;a>O;a") { P2=Oxdd; nb=l; delay(lOO); nb=O; disp(a); ) ) void dx_flash(void) /*東西方向的黃燈和數(shù)碼管顯示子函數(shù)*/ ( uint a; fbr(a=3;a>O;a") { P2=0xeb; dx=l; delay(100); dx=0: disp(a); ) ) void xintOQ mten
19、upt 2 /* 中斷定義*/ TH0=(65536-50000)/256; TL0=(65536-50000)%256; LED.ONQ; } 產(chǎn)開關(guān)控制燈的子函數(shù)*/ void LED_ON() { uiiit b; rn=0; rw=0; gn=l; gw=l; nb=l; dx=l; fbr(b=5;b>O;b—) ( ge=O;shi=l; PO=table[b]; delay(lOOO); ge=l;shi=l; } xeturn; } 5 .調(diào)試運A 5.1 正常運行狀態(tài)
20、 5.2中斷運行狀態(tài) 5.3黃燈閃爍狀態(tài) 6 .設(shè)計心得體會 課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重 要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的口新口異,單片機已 經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可
21、以說得是無處不在。因此作為二十一世 紀(jì)的大學(xué)來說掌握單片機的開發(fā)技術(shù)是十分重要的。 這次的單片機課程設(shè)計大概用了一周的時間,在這一周的時間當(dāng)中,雖然開始遇到了很多 的困難,但是由于合理地進(jìn)行設(shè)計安排,分工合作,并各自查閱了相關(guān)的資料,最后在大家共 同努力下我們順利地完成了本次單片機課程設(shè)計,同時也學(xué)到了很多東西。 回顧起此次單片機課程設(shè)計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐, 在整整一星期的口子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可 以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。例如我們在設(shè)計 數(shù)碼管顯示的時候,剛開始的時候,
22、由于對數(shù)碼管引腳的不熟悉,我們都無法讓數(shù)字顯示,后 來發(fā)現(xiàn)時十位和個位的置位、兔位發(fā)生了問題,我們對此進(jìn)行了修改,可以正確的顯示出十位 及個位的數(shù)值,但是數(shù)字的顯示不穩(wěn)定,不停的跳動,我們?yōu)榇瞬殚喠撕芏嗟馁Y料,但還是未 能解決,最后我們不停地對程序進(jìn)行修改,終于發(fā)現(xiàn)了問題所在,在顯示子程序上存在缺陷未 能快速的切換對十位、個位的置位和復(fù)位,經(jīng)過這樣的修改,終于可以完美的顯示時間了。我 們也更好地掌握了對數(shù)碼管的使用,這都是課堂上學(xué)不到的知識。 這次的單片機課程設(shè)計是通過實踐操作和理論相結(jié)合,提高動手實踐能力,提高科學(xué)的思 維能力。與此同時,我們也對分工合作有了進(jìn)一步的認(rèn)識,只有通過合理的分工
23、合作,我們們 才能夠在短短一周的時間內(nèi)完成設(shè)計任務(wù),相信這對以后在社會上工作和學(xué)習(xí)會有很多幫助, 讓我們能更好的進(jìn)入工作狀態(tài)。最重要的是,這次課程設(shè)計也增加了我們對問題的研究和探討, 們以后的學(xué)習(xí)中會有更多的幫助。 單片機為我們的主要專業(yè)課之一,對我們還是很有幫助的,課程設(shè)計也是為我們以后的工 作提前進(jìn)行了一次練手,也是我們學(xué)習(xí)生活之中少有的一次自己探索、研究,發(fā)現(xiàn)問題、解決 問題的機會。當(dāng)然要做好一個課程設(shè)計也不是很簡單的,我認(rèn)為有以下幾步: (1)在設(shè)計程序之前,對所用單片機的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片機內(nèi)有哪 些資源; (2)要有一個清晰的思路和一個完整的的軟件流程圖,善
24、于將大的程序段縮小為每個子函 數(shù)來實現(xiàn); (3)在設(shè)計程序時,不能妄想一次就將整個程序設(shè)計好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計 的必經(jīng)之路; (4)要養(yǎng)成注釋程序的好習(xí)慣,寫程序是應(yīng)該思路清晰,結(jié)構(gòu)明了,應(yīng)該讓人一看就能明 白你的思路,方便資料的保存和交流; (5)我們們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題 的; 在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不 夠牢固。我們們通過杳閱大量有關(guān)資料,并在小組中互相討論,交流經(jīng)驗和自學(xué),若遇到實在 搞不明白的問題就會及時請教老師,或者與其他小組成員討論,共同解決,使自己學(xué)到了不少 知
25、識,也經(jīng)歷了不少艱辛,但收獲同樣巨大。通過這次課程設(shè)計我們也發(fā)現(xiàn)了自身存在的不足 之處,雖然感覺理論上已經(jīng)掌握,但在運用到實踐的過程中仍有意想不到的困惑,經(jīng)過一番努 力才得以解決。 通過這次課程設(shè)計使我更加懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的, 只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正將一個東西學(xué)好學(xué)透, 從而提高自己的實際動手能力和獨立思考的能力。我想這對于我今后的學(xué)習(xí)生活和工作都會是 有很大幫助的! 7 .參考書目 [11 .肖金球.單片機原理與接口技術(shù); 【2】.江志紅.51單片機技術(shù)與應(yīng)用系統(tǒng)開發(fā)案例精選; [3] .周潤景.基于PROTEUS的51單片機設(shè)計與仿真; 【4】.王守中.51單片機開發(fā)入門與典型實例; [5] .張齊.朱寧西.單片機系統(tǒng)設(shè)計與開發(fā); 【6】.周立功單片機開發(fā)網(wǎng); 【7】.天津銳志單片機開發(fā)網(wǎng); [8] . ATMEL公司AT89S52單片機中文PDF資料;
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案