目 錄 1設(shè)計任務(wù)---------------------------------------------------------- 1 2 設(shè)計方案--------------------------------------------------------- 1 2.1任務(wù)分析---------------------------------------------------- 1 2.2方案設(shè)計---------------------------------------------------- 1 2.3硬件方案---------------------------------------------------- 1 2.4軟件方案---------------------------------------------------- 2 3 系統(tǒng)硬件設(shè)計----------------------------------------------------- 3 3.1單片機的最小系統(tǒng)-------------------------------------------- 3 3.2電源電路設(shè)計------------------------------------------------ 3 3.3數(shù)碼管顯示電路---------------------------------------------- 3 4 系統(tǒng)軟件設(shè)計----------------------------------------------------- 4 4.1 主程序設(shè)計-------------------------------------------------- 4 4.2系統(tǒng)程序---------------------------------------------------- 4 5 調(diào)試及性能分析--------------------------------------------------- 4 5.1軟件調(diào)試---------------------------------------------------- 4 5.2硬件調(diào)試---------------------------------------------------- 4 5.3系統(tǒng)功能調(diào)試------------------------------------------------ 5 6 遇到的問題及解決------------------------------------------------- 5 7 心得體會--------------------------------------------------------- 5 附錄:------------------------------------------------------------- 6 總結(jié)-------------------------------------------------------------- 10 1設(shè)計任務(wù) 利用單片機完成交通信號燈控制器的設(shè)計,該交通信號燈控制器由一條主干道和一條支干道匯合成十字路口,在每個入口處設(shè)置紅、綠、黃三色信號燈,紅燈亮禁止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時間停在禁行線外。用紅、綠、黃發(fā)光二極管作信號燈。 2 設(shè)計方案2.1任務(wù)分析 模擬交通燈控制器就是使用單片機來控制一些LED 和數(shù)碼管,模擬真實交通燈的功能。紅、黃、綠交替點亮,利用數(shù)碼管倒計數(shù)顯示間隔等,用于管理十字路口的車輛及行人交通,計時牌顯示路口通行轉(zhuǎn)換剩余時間等。 2.2方案設(shè)計 我們設(shè)計的是十字路口的紅綠燈,有東西,南北兩個走向,前兩個燈是東西的紅燈和綠燈,后兩個是南北的紅燈和綠燈,前兩個燈不會同時亮,后兩個燈不會同時亮,第1個和第3個不會同時亮,暫時沒有黃燈的功能。 2.3硬件方案 根據(jù)設(shè)計的要求可知,系統(tǒng)的硬件原理框圖如下圖所示
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif |
圖1 硬件原理框圖 單片機可選用STC89C52,它與8051系列單片機全兼容,但其內(nèi)部帶有8KB的FLASH ROM,設(shè)計時無需外接程序存儲器,為設(shè)計和調(diào)試帶來極大的方便。南北向和東西向各采用2個數(shù)碼管計時,同時需要對該方向的指示燈的點亮?xí)r間進行倒計時。按鍵可以根據(jù)系統(tǒng)的需要進行復(fù)位。用三極管驅(qū)動數(shù)碼管顯示,三極管控制共陽位選端,控制數(shù)碼管的顯示。 2.4 軟件方案 首先南北方向紅燈、東西方向綠燈亮,南北方向紅燈15秒、東西方向綠燈10秒,相應(yīng)的數(shù)碼管顯示對應(yīng)的數(shù)字并讀秒,同時南北方向紅色的二極管和東西方向的綠色二極管接通點亮顯示,當(dāng)東西方向的綠燈時間到,則東西方向的綠燈轉(zhuǎn)為黃燈,同時數(shù)碼管顯示黃燈的時間5秒,東西方向的黃色二極管接通點亮,此時南北方向的紅燈不變。南北方向的紅燈和東西方向的黃燈時間同時到,此時南北方向的紅燈跳轉(zhuǎn)為綠燈,時間同樣為10秒,東西方向有黃燈跳轉(zhuǎn)為紅燈,時間為15秒。當(dāng)南北方向的綠燈時間到,南北綠燈跳轉(zhuǎn)為黃燈,東西方向的紅燈不變,當(dāng)南北方向的黃燈和東西方向的紅燈時間到,南北方向的黃燈跳轉(zhuǎn)為紅燈,東西方向的紅燈跳轉(zhuǎn)為綠燈。進入開始的狀態(tài),循環(huán)執(zhí)行。 根據(jù)設(shè)計要求,程序框圖如圖所示。軟件可由匯編語言完成,也可由C語言完成。軟件設(shè)計可以分為以下幾個功能模塊: 數(shù)碼管顯示模塊 動態(tài)顯示方式:動態(tài)顯示方式是指一位一位地輪流點亮每位顯示器(稱為掃描),即每個數(shù)碼管的位選被輪流選中,多個數(shù)碼管公用一組段選,段選數(shù)據(jù)僅對位選選中的數(shù)碼管有效。對于每一位顯示器來說,每隔一段時間點亮一次。顯示器的亮度既與導(dǎo)通電流有關(guān),也與點亮?xí)r間和間隔時間的比例有關(guān)。通過調(diào)整電流和時間參數(shù),可以既保證亮度,又保證顯示。若顯示器的位數(shù)不大于8位,則顯示器的公共端只需一個8位I/O口進行動態(tài)掃描(稱為掃描口),控制每位顯示器所顯示的字形也需一個8位口(稱為段碼輸出)。 LED紅綠燈顯示模塊 狀態(tài)1, 東西綠燈亮,南北紅燈亮 狀態(tài)2, 東西黃燈亮,南北紅燈亮 狀態(tài)3, 東西紅燈亮,南北綠燈亮 狀態(tài)4, 東西紅燈亮,南北黃燈亮 結(jié)構(gòu)框圖file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image002.giffile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image003.giffile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image004.giffile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image005.giffile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image003.giffile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image006.giffile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image007.giffile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image008.giffile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image009.gif file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif
圖2 LED紅綠燈顯示框圖 3 系統(tǒng)硬件設(shè)計3.1單片機的最小系統(tǒng) STC公司生產(chǎn)的AT89C52單片機它是硬件電路的核心部分,時鐘電路晶振使用12MHz,復(fù)位電路采取按鍵復(fù)位方式。 3.2電源電路設(shè)計 電源用5V直流變壓器直接供電,usb接口供電。 3.3數(shù)碼管顯示電路 顯示電路采用4個共陽數(shù)碼管,用74HC244做驅(qū)動器,P0口作為數(shù)碼管的輸入,ULN2803作為控制位選端,P2.0,P2.1,P2.2, P2.3分別作為東西,南北四路數(shù)碼管的位選端。 4 系統(tǒng)軟件設(shè)計4.1 主程序設(shè)計 系統(tǒng)程序流程圖
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image011.gif |
圖3 系統(tǒng)程序流程圖 4.2系統(tǒng)程序 根據(jù)設(shè)計方案,設(shè)計滿足要求的程序,并將程序燒寫進單片機,運行程序,觀察現(xiàn)象是否符合要求,若不符合要求繼續(xù)修改程序。直至能達到要求。程序清單見附錄 5 調(diào)試及性能分析5.1軟件調(diào)試 軟件調(diào)試主要是利用protus仿真軟件完成電路的搭建,運行以發(fā)現(xiàn)設(shè)計中的錯誤及時改正。 5.2硬件調(diào)試 硬件調(diào)試主要是檢測硬件電路是否有短路、斷路、虛焊等。具體步驟及測試結(jié)果如下: (1)檢查電源與地線是否全部連接上,用萬用表對照電路原理圖測試各導(dǎo)線是否完全連接,對未連接的進行修復(fù)。(2)參照原理圖,檢查各個器件之間的連接是否連接正確,是否存在虛焊,經(jīng)測試,各連接不存在問題。(3)以上兩項檢查并修復(fù)完后,給該硬件電路上電,電源指示燈點亮。 5.3系統(tǒng)功能調(diào)試 通過通電調(diào)試系統(tǒng)的功能,觀察系統(tǒng)是否正常運行,是否達到設(shè)計指標(biāo),通過修改軟件完成系統(tǒng)的系能指標(biāo),也可以通過仿真軟件進行仿真運行,調(diào)試并修改系統(tǒng),以便達到最佳水準(zhǔn)。讓系統(tǒng)最大限度的發(fā)揮其功效。 6 遇到的問題及解決 在設(shè)計過程中,會出現(xiàn)了一些問題,但都是常見的小問題,如:代碼中雙引號的使用并不是在英語書寫狀態(tài)下,輸入字母出錯等,在調(diào)試時出現(xiàn)異常,不過這些都是經(jīng)常性錯誤,經(jīng)過調(diào)試修改都一一解決,程序順利完成,并實現(xiàn)了其功能。 綜合課程設(shè)計讓我把以前學(xué)習(xí)到的知識得到鞏固和進一步的提高認(rèn)識,對已有知識有了更進一步的理解和認(rèn)識。在此,由于自身能力有限,在課程設(shè)計中碰到了很多的問題,我通過查閱相關(guān)書籍、資料以及和周圍同學(xué)交流。 由于使用的是單片機作為核心的控制元件,使得電路的可靠性比較高,功能也比較強大,而且可以隨時的更新系統(tǒng),進行不同狀態(tài)的組合。但是在我們設(shè)計和調(diào)試的過程中,也發(fā)現(xiàn)了一些問題,譬如紅燈和綠燈的切換還不夠迅速,紅綠燈規(guī)則不完善效率還不是很高等等,這需要在實踐中進一步完善。 7 心得體會這學(xué)期是我們首次接觸單片機這門課程,大一的時候?qū)W長為我們展示了單片機,告訴我們這是我們以后要學(xué)習(xí)的很重要的東西,那時候只看到一塊板子上可以顯示數(shù)字,現(xiàn)在我知道了那個叫數(shù)碼管。單片機剛剛學(xué)習(xí)的時候我覺得很難,代碼都看不懂,更別說編程了,所以這次課設(shè)對我們來說很困難,可是隨著組員之間的討論我們解決了一些問題,也更深的了解了單片機的原理,交通燈在所有課設(shè)里面不算是難的,可是對我們來說都一樣很困難。問題雖然很多但我們還是努力去解決,從計時到LED亮都很難,從書本學(xué)習(xí)的東西用在實際中才知道有多重要,最后我們只實現(xiàn)了簡單的紅綠燈而沒有黃燈,這是我們的課設(shè)需要改進的。在以后的學(xué)習(xí)中我們應(yīng)該勤動手,多動腦,遇到問題思考怎么解決,并且要有合作意識,團隊的能力總是比一個人要大的,我們會改進作品,更好的使用單片機。 附錄: ORG 0000H LJMP MAIN ORG 0003H LJMP INTT0 ORG 0013H LJMP INTT1 ORG 001BH LJMP TT1 ORG 0100H TT1: MOV TH1,#0D8H ;定時器1,定時10us MOV TL1,#0F0H DJNZ R6,EXIT MOV R6,#100 ;定時器定時100次 MOV R1,#0FFH EXIT: RETI INTT0:MOV P1,#0BEH ;外部中斷0, JB P3.4,$ RETI INTT1:MOV P1,#0BBH ;外部中斷1, JB P3.4,$ RETI ORG 1000H MAIN: MOV R6,#100 ;主程序; MOV R1,#00H MOV TMOD,#10H ;初始化 MOV TH1,#0D8H MOV TL1,#0F0H MOV IE,#8DH MOV 20H,#10 MOV 21H,#5 MOV 22H,#10 MOV 23H,#15 MOV 24H,#15 SETB TR1 ST1: MOV P1,#0EBH CJNE R1,#0FFH,TZ1 MOV R1,#00H DEC 20H DEC 23H TZ1: MOV R2,20H MOV R3,23H LCALL DISP MOV A,20H CJNE A,#00H,ST1 MOV 20H,#10 ST2: MOV P1,#0EDH CJNE R1,#0FFH,TZ2 MOV R1,#00H DEC 21H DEC 23H TZ2: MOV R2,21H MOV R3,23H LCALL DISP MOV A,21H CJNE A,#00H,ST2 MOV 21H,#05 MOV 23H,#15 ST3: MOV P1,#0BEH CJNE R1,#0FFH,TZ3 MOV R1,#00H DEC 24H DEC 22H TZ3: MOV R2,24H MOV R3,22H LCALL DISP MOV A,22H CJNE A,#00H,ST3 MOV 22H,#10 ST4: MOV P1,#0DEH CJNE R1,#0FFH,TZ4 MOV R1,#00H DEC 24H DEC 21H TZ4: MOV R2,24H MOV R3,21H LCALL DISP MOV A,21H CJNE A,#00H,ST4 MOV 21H,#05 MOV 24H,#15 LJMP ST1 DISP: MOV A,R2 MOV B,#10 DIV AB MOV 60H,A MOV 61H,B MOV A,R3 MOV B,#10 DIV AB MOV 62H,A MOV 63H,B MOV 40H,#04H MOV R5,#01H MOV R0,#60H LLP: MOV A,@R0 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,R5 MOV P2,A LCALL DELAY1 MOV P2, #00H; RL A MOV R5,A INC R0 DJNZ 40H,LLP RET DELAY1: ;延時子程序 MOV R4,#12 DL2: MOV R7,#12 DJNZ R7,$ DJNZ R4,DL2 RET TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H END 總結(jié) 交通燈的設(shè)計總結(jié): 通過此次課程設(shè)計,使我更加扎實的掌握了有關(guān)電子線路方面的知識,在設(shè)計過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經(jīng)驗不足。實踐出真知,通過自己親手實踐,是我們掌握的知識不再是紙上談兵。 過而能改,善莫大焉。在課程設(shè)計過程中,我們不斷發(fā)現(xiàn)錯誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢測調(diào)試環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多問題,最后在老師的指導(dǎo)下,終于游逆而解。在今后社會的發(fā)展和學(xué)習(xí)實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠不可能收獲成功,收獲喜悅,也永遠不可能得到社會極大人的認(rèn)可。 課程設(shè)計誠然是一門專業(yè)課,給我很多專業(yè)知識以及專業(yè)技能上的提升,同時又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時,設(shè)計讓我感觸很深。使我對抽象的理論有了具體的認(rèn)識。通過這次課程設(shè)計,我掌握了NI Multisim軟件的使用方法,了解了紅綠燈的實際控制過程,以及如何提高電路的性能等等。
|