




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機課程設(shè)計示例交通燈控制系統(tǒng)設(shè)計一、 總體設(shè)計1、設(shè)計要求:交通燈的任務(wù)要求為:模擬十字路口的交通燈的亮、滅及閃爍基本工作原理:根據(jù)交通燈的亮滅情況,可以分為四種狀態(tài),利用定時計數(shù)器每20秒產(chǎn)生一次中斷,每產(chǎn)生一次中斷后由是否有特殊情況決定交通燈的狀態(tài)變換。2、 硬件和軟件功能的劃分本課題要求實現(xiàn)的功能比較簡單。由單片機的定時/計數(shù)器產(chǎn)生八分之一秒的定時時間,通過軟件的方式實現(xiàn)20秒的定時時間。交通燈的亮滅由8255A控制,PA口控制東西向,PB口控制南北向。3、 交通燈狀態(tài)劃分十字路口交通燈如下圖所示,將12個交通燈進行編號這12個交通燈共有四個狀態(tài): 狀態(tài)1(S1):東西紅燈(4、10
2、)亮,南北綠燈(3、9)亮狀態(tài)2(S2):南北綠燈(3、9)滅,黃燈(2、8)閃爍,東西仍為紅燈(4、10)亮狀態(tài)3(S3):南北紅燈(1、7)亮,東西綠燈(6、12)亮狀態(tài)4(S4):東西綠燈(6、12)滅,黃燈(5、11)閃爍,南北仍為紅燈(1、7)亮當(dāng)東西向(或南北向)有特殊情況,開關(guān)K0為低電平則應(yīng)使交通燈處于S3(東西綠燈、南北),開關(guān)K1為低電平則應(yīng)使交通燈處于S1(南北向綠燈、東西向紅燈),當(dāng)K0、K1均為低電平則取消特殊情況,返回正常顯示情況。二、硬件設(shè)計根據(jù)總體設(shè)計要求,確定系統(tǒng)擴展與功能接口,設(shè)計出系統(tǒng)的電路原理圖。1、 系統(tǒng)擴展最小系統(tǒng),由8031、地址鎖存器和程序存儲器
3、組成。根據(jù)課題要求,在此基礎(chǔ)上進行擴展。地址鎖存器選74LS373,程序程序器選2764(8K),盡管本系統(tǒng)程序不長,但考慮以后擴展方便,選用2764??紤]到交通燈數(shù)量比較多,控制信號比較多,對單片機的I/O口進行擴展,使用通用I/O接口芯片8255A來對單片機I/O口進行擴展。2、 功能接口所謂接口是CPU與外界的連接部件,以實現(xiàn)CPU與外部設(shè)備的最佳耦合和匹配。本課題只要求顯示接口。顯示設(shè)備為2位七段數(shù)碼管。要使用七段數(shù)碼管可以利用8031的串行口、可以利用可編程并行I/O擴展芯片8155或8255。由于仿真系統(tǒng)的限制選用8155。2個共陰極數(shù)碼管自左至右以兩位數(shù)的形式顯示秒數(shù)。為了保證數(shù)
4、碼管的亮度,必須保證輸入電流的大小,因此,選用74LS244作為驅(qū)動放大器(實驗系統(tǒng)內(nèi)部已經(jīng)做好)。3、 系統(tǒng)的組成及統(tǒng)一編址CSIO/M PB7 |PB08155 PA7 |PA0PC5 | PC0AD7 |AD0數(shù)碼管A12 CE |A8A7 |A0 2764D7 |D0Q7 D7 | |Q0 D0 74LS373 P2.7P1.0 P2.6P2.5 P2.4 |P2.0P0.7 | P0.0 8031蜂鳴器驅(qū)動器I/O端口是CPU與I/O設(shè)備直接通信的地址。單片機系統(tǒng)對I/O端口是采用端口地址與存儲器地址統(tǒng)一編址的方式,即存儲器映射方式。編址技術(shù)分線選法和譯碼法。由于涉及外圍芯片很少,所
5、以采用線選法。系統(tǒng)簡圖如下:由于是線選法,因此芯片地址不是唯一的。而8155與外部數(shù)據(jù)存儲器統(tǒng)一編址,可以與程序程序器重疊編址。因此,我們?nèi)∷鼈兊牡刂啡缦拢?764:0000H1FFFH 存儲程序8155:命令/狀態(tài)口 7F80H PA口 7F81H 輸出掃描碼(字選碼) PB口 7F82H 輸出字形碼 PC口 7F83H 接收回復(fù)碼 定時器低8位7F84H 沒用 定時器高8位7F85H 沒用 RAM 3F00H3FFFH沒用 工作方式為:定時器不工作,禁止PA、PB中斷,PC口為輸入方式(方式0),PA口、PB口為輸出方式。因此,工作方式字為03H。4、 匯集各芯片及數(shù)碼管的技術(shù)資料,繪制系
6、統(tǒng)原理圖。將8031、74LS373、2764、8155、數(shù)碼管(包括為保證其驅(qū)動電流而添加的驅(qū)動器74LS244)等資料匯集起來,熟悉各芯片的引腳的功能及連接方法,繪制系統(tǒng)原理圖。三、軟件設(shè)計 1、系統(tǒng)定義1.1、各種數(shù)據(jù)類型的定義。秒采用采用BCD碼,八分之一秒計數(shù)采用16進制。1.2、定義和分配存儲空間、定義標(biāo)志位。堆棧區(qū)安放在片內(nèi)RAM的高端60H7FH;0區(qū)為工作寄存器;1區(qū)為顯示程序的工作寄存器;地址為3AH的存儲單元內(nèi)存放LED顯示的數(shù)據(jù),以壓縮BCD碼形式存放設(shè)計一個標(biāo)志單元,地址為3CH,用來標(biāo)示當(dāng)前交通燈的狀態(tài),共四種狀態(tài),00H帶表狀態(tài)1,01H代表狀態(tài)2,02H代表狀態(tài)
7、3,03代表狀態(tài)4存儲單元列表如下:存儲內(nèi)容變量名地址備注通用工作寄存器R0R700H07H0區(qū)顯示程序?qū)S玫墓ぷ骷拇嫫鱎0R708H0FH1區(qū)顯示存儲區(qū)個位LED03AHBCD碼十位LED13BHBCD碼標(biāo)志單元3CH16進制數(shù)堆棧區(qū)60H7FH 位標(biāo)志在設(shè)計過程中,根據(jù)需要再添加。 2、 軟件結(jié)構(gòu)設(shè)計程序總體執(zhí)行過程是:上電后系統(tǒng)自動進行初始化,定時/計數(shù)器開始工作,檢測標(biāo)志單元3CH,根據(jù)3CH單元中的內(nèi)容讓交通燈處于對應(yīng)的狀態(tài), 然后調(diào)用顯示子程序,將3AH和3BH地址內(nèi)的數(shù)據(jù)在七段數(shù)碼管上顯示出來。接著循環(huán)檢測3CH單元中的內(nèi)容以及特殊情況控制信號和調(diào)用顯示子程序,讓交通燈處于對應(yīng)的
8、狀態(tài),將3AH地址內(nèi)的數(shù)據(jù)送七段數(shù)碼管上顯示出來,在整個過程中定時/計數(shù)器中斷始終打開等待定時/計數(shù)器中斷。中斷服務(wù)程序完成狀態(tài)的變換(3CH的值的改變)以及LED顯示內(nèi)容(3AH)的改變。主程序的框圖都如圖所示: 3、 模塊設(shè)計根據(jù)主程序框圖,定義如下幾個模塊:初始化模塊、狀態(tài)1顯示子程序、狀態(tài)2顯示子程序、狀態(tài)3顯示子程序、狀態(tài)4顯示子程序、出錯處理程序、LED顯示程序、中斷服務(wù)程序。由于在程序運行過程中多次出現(xiàn)需要延時的情況,這里將延時程序也作為一個模塊。3.1、初始化模塊功能:完成變量初始化、8155初始化、定時器初始化和中斷初始化。初始化的框圖如圖所示。根據(jù)框圖寫出如下程序:(注意:
9、后面我們要經(jīng)常對以下程序進行補充和修改,利用它對其它模塊或子程序進行調(diào)試。因此,要隨時保存不同的版本。為方便起見,以下程序我們稱版本1.0)ORG 0000H AJMP START ORG 000BH ;T0中斷入口地址 AJMP INT0 ;中斷服務(wù)程序 ORG 0030HSTART: MOV SP,#60H ;置堆棧頂指針 MOV 3AH,#20H;時間存儲區(qū)單元初始化 MOV 3CH,#00H MOV R3,00H MOV R2,00H MOV A,#80H ;8255A初始化,置工作方式 MOV DPTR,#0FF2BH MOVX DPTR,A MOV A,#03H ;置8155命令格
10、式MOV DPTR,#0FF20H ;指向命令口MOVX DPTR,A MOV TMOD,#01H ;置T0為定時器,工作方式1 MOV TH0,0BH MOV TL0,0DCH SETB EA ;中斷初始化 SETB ET0 SETB TR0 程序中的時間常數(shù)是從要求一秒中斷一次,但8051單片機的最大定時時間達不到1秒,所以選擇1/8秒作為定時時間。DVCC的晶振頻率為6MHz,則機器周期為2s。設(shè)時間初值為X,工作方式1時定時器為16位,最大計數(shù)值為216=65536,則:1/8=(65536-X)210-6解得X=3036D=0BDCH則TH0 =0BH,TL0 =0DCH。3.2狀態(tài)
11、1顯示程序模塊功能:交通燈處于狀態(tài)1狀態(tài)1(S1)為東西紅燈(4、10)亮,南北綠燈(3、9)亮,所以本程序模塊即為將3、4、9、10號燈點亮3.2.1、程序由于本模塊的程序比較簡單,只是簡單的將4個高電平打到對應(yīng)的端口就可以了,所以程序框圖略,在這里直接給出程序:DISP1: MOV DPTR,#0FF29H MOV A,#00H MOVX DPTR,A INC DPTR MOV A,00H ;讓所有燈熄滅 MOVX DPTR,AMOV DPTR,#0FF29H MOV A,#03H MOVX DPTR,A INC DPTR MOV A,0CH MOVX DPTR,A ;東西紅燈亮,南北綠燈
12、亮 RET3.3狀態(tài)2顯示程序狀態(tài)2(S2)為東西紅燈(4、10)亮,南北黃燈黃燈(2、8)閃爍,本程序模塊比狀態(tài)1顯示程序稍稍復(fù)雜一點,除了要將高電平打入對應(yīng)的端口外還要控制黃燈的閃爍,黃燈的閃爍采用軟件延時的辦法實現(xiàn),即黃燈亮后延時一段時間再滅,然后再延時一段時間再亮。3.3.1程序程序框圖如下:程序如下:DISP2: MOV DPTR,#0FF29H MOV A,#00H MOVX DPTR,A INC DPTR MOV A,00H ;讓所有燈熄滅 MOVX DPTR,AMOV DPTR,#0FF29H MOV A,#02H MOVX DPTR,A INC DPTR MOV A,8AH
13、MOVX DPTR,A ;東西紅燈亮,南北黃燈亮 ACALL DELAY ;延時1秒 MOV A,08H MOVX DPTR,A ;南北黃燈滅 ACALL DELAY ;延時1秒 RET 3.4狀態(tài)3顯示程序及狀態(tài)4顯示程序狀態(tài)3顯示程序與狀態(tài)1顯示程序類似,狀態(tài)4顯示程序與狀態(tài)2顯示程序類似,請同學(xué)們參照狀態(tài)1和狀態(tài)2顯示程序自行完成狀態(tài)3和狀態(tài)4顯示程序,這里就不詳細敘述了。3.5出錯處程序出錯處理程序指的是狀態(tài)標(biāo)志字節(jié)中的數(shù)據(jù)超過了正常范圍(00H03H)時的處理程序,正常情況下一般不會出現(xiàn)。當(dāng)系統(tǒng)出現(xiàn)故障時,出現(xiàn)這種情況應(yīng)該將所有紅燈變亮。其程序與框圖與狀態(tài)1類似。3.6延時程序延時程
14、序用來實現(xiàn)延時1秒的功能,采用軟件延時的方式。顯然延時程序要用循環(huán)結(jié)構(gòu)來實現(xiàn),由于延時1秒是一個比較長時間的延時所以要采用三重循環(huán)來實現(xiàn)。延時程序是一個比較簡單的純粹的循環(huán)程序,結(jié)構(gòu)比較簡單,框圖就省略,這里直接給出程序。3.6.1延時程序 DEALY: MOV R7,#02H LOOP1: MOV R6,#0FFH LOOP2: MOV R5,0FFH LOOP3: NOP DJNZ R5,LOOP3 DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET當(dāng)然,采用軟件延時由于存在中斷以及其它因素的影響,不可能達到精確的1秒,這里的延時程序大概延時0.9秒,如果需要更加精確請同學(xué)們自
15、己調(diào)整每層循環(huán)的循環(huán)次數(shù)。在實際的應(yīng)用過成中由于LED顯示的需要,LED顯示程序調(diào)用的間隔時間不能太長,所以在實際應(yīng)用中我們常常將上述延時程序改為如下程序: DELAY: MOV R7,#0FFH LOOP1: MOV R6,0FFH LOOP2: ACALL DISP DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET3.7 LED顯示程序LED顯示程序就是將3AH單元的內(nèi)容在兩個LED顯示器上顯示出來。由于3AH單元內(nèi)存儲的是壓縮BCD碼,所以必須在顯示前對其進行拆字,即將一個字節(jié)壓縮BCD碼拆成兩個單字節(jié)BCD碼,如圖所示:3.7.1拆字程序子程序名:CZ功能:將將3AH單元
16、存儲的壓縮BCD碼拆成單字節(jié)BCD碼,存儲到顯示存儲區(qū)3DH、3EH中。入口條件:3AH出口條件:3DH、3EH程序框圖如右:程序清單如下:CZ: MOV R0,#3AH MOV R1,#3DHCZ1: MOV A,R0 ANL A,#0FH MOV R1,A ;存?zhèn)€位 INC R1 MOV A,R0 ANL A,#0F0H SWAP A MOV R1,A ;存十位 RET用下列程序調(diào)試:MOV 3AH,#12H ACALL CZ SJMP $單步執(zhí)行觀察3DH、3EH的值是否為02H和01H。調(diào)試成功后保存子程序CZ備用。3.7.2、顯示子程序顯示的原理如下:從最左邊數(shù)碼管開始,由PA口輸出
17、字選碼(在這里為00100000B,即20H),由8155的PB口輸出欲顯示的字形碼(如字符“0”,共陰極的字形碼為“0C0H”),則在最左邊的數(shù)碼管顯示字符“0”。然后,由PA口輸出字選碼(在這里為00010000B,即40H),由8155的PB口輸出欲顯示的字形碼,則在下一個數(shù)碼管顯示相應(yīng)字符。40H可以由對20H循環(huán)移位得到。共循環(huán)2次,則2個數(shù)碼管自左至右順序顯示一次,調(diào)整好中間的間隔時間(用延時程序?qū)崿F(xiàn)),利用人的視覺暫留,得到同時顯示的效果。由于字形碼無規(guī)律可尋,編程不方便,因此,將字形碼按0、1、,9,A,F(xiàn)的順序排列,其它字符如H、_、空字符(熄滅)排在其后,構(gòu)成字形表。在LE
18、D5LED0存放欲顯示字符在表中的序號,通過查表程序得到相應(yīng)的字形碼,由PB口輸出。如顯示“0”時,在LED5中不是字形碼為“0C0H”,而是“00H”,因為字形碼“0C0H”在字形表中的序號是“0”,16進制表示為“00H”。由此,可繪制程序框圖如右圖所示。顯示子程序名:DISP功能:將3DH3EH中的內(nèi)容在數(shù)碼管上顯示出來。入口條件:3DH、3EH出口條件:無DISP: SETB RS0 ;置工作寄存器1區(qū) MOV R1,#3EH ;指向3EH MOV R4,#02H ;掃描碼00000010B從最左邊開始 MOV DPTR,#DTAB;字形碼表首地址送DPTR MOV A,R1 MOVC
19、 A,A+DPTR ;查表得字形碼 MOV DPTR,#0FF22H MOVX DPTR,A ;PB口送字形碼 MOV DPTR,#0FF21H MOV A,R4 MOVX DPTR,A ;PA口送掃描碼 MOV R5,#30HDISP1: NOPDJNZ R5,DISP2 ;延時 DEC R1 ;指下一顯示存儲單元 MOV A,R4 ;掃描碼循環(huán)右移 RR A MOV R4,A CLR RS0 ;返回工作寄存器0區(qū) RET ;返回DTAB: DB 0C0H,0F9H,0A4H,0B0H ;字形碼表 DB 99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H DB 8EH,0FFH,0C7H,89H DB 0FFH,0C0H,0C7H,0C7H,86H,89H注意要根據(jù)實際情況調(diào)整兩個LED顯示之間的時間間隔。3.8中斷服務(wù)程序這
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車行業(yè)合同樣本:會員服務(wù)協(xié)議
- 移動基站租賃合同書范本
- 城市老舊小區(qū)消防系統(tǒng)改造項目合同
- 幼兒園臨時教師聘任合同
- 新版民間房產(chǎn)抵押權(quán)轉(zhuǎn)讓合同
- 腎性水腫課件
- 智能化煤礦培訓(xùn)課件下載
- 舊貨零售互聯(lián)網(wǎng)+創(chuàng)新實踐考核試卷
- 搪瓷器的創(chuàng)造思維與創(chuàng)意設(shè)計考核試卷
- 建筑施工現(xiàn)場安全監(jiān)測與預(yù)警考核試卷
- 展會展中營銷方案
- 四年級上冊豎式計算100題及答案
- 2024屆遼寧省沈陽市名校中考四?;瘜W(xué)試題含答案解析
- 2024年新高考改革方案政策
- 2024年4月自考00431教學(xué)設(shè)計試題
- 2024年許昌職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 《新媒體創(chuàng)意短視頻制作》課件-運動短視頻制作關(guān)鍵技術(shù)
- JTGT F20-2015 公路路面基層施工技術(shù)細則
- 7S培訓(xùn)管理教材課件(-28張)
- 過橋資金計劃書
- 小學(xué)數(shù)學(xué)計算練習(xí)-一年級上學(xué)期口算練習(xí)(600題打印版)
評論
0/150
提交評論