




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 桂林電子科技大學(xué)信息科技學(xué)院單片機(jī)交通燈實(shí)訓(xùn)報(bào)告學(xué) 號 0951100231 姓 名 賈小丹 指導(dǎo)教師:韓劍 易藝 李德明 2011 年 09 月 22 日交通燈控制系統(tǒng)一、 任務(wù)利用AT89S52單片機(jī)控制各個路口紅綠燈及時間顯示,設(shè)計(jì)一個交通燈控制系統(tǒng)。 二、 基本原理利用51單片機(jī)控制各個路口紅綠燈及時間顯示。模擬交通燈示意圖:設(shè)計(jì)的重點(diǎn):1、各個路口紅綠燈亮滅的規(guī)則,暫不考慮左轉(zhuǎn)方向;2、倒計(jì)時的實(shí)現(xiàn),利用單片機(jī)的定時器進(jìn)行計(jì)數(shù)得到秒信號;3、時間顯示:東西南北四個方向的時間一致,當(dāng)東西方向?yàn)?0秒綠燈通行時間,同時南北方向?yàn)?0秒紅燈禁止時間,因此硬件連接時可考慮東西南北方向可采用
2、同一接法;最后相當(dāng)于2個數(shù)碼管動態(tài)顯示,具體見參考電路框圖。4、按鍵設(shè)置(擴(kuò)展要求):設(shè)置鍵按一次,設(shè)置主干道通信時間(即次干道禁止時間),按第二次,設(shè)置主干道禁止時間(即次干道通信時間),按第三次,可作為緊急通信鍵。設(shè)置時間需要確定,可通過確定鍵實(shí)現(xiàn),也可通過延時確定,如10秒。當(dāng)然也可根據(jù)需要增加相應(yīng)的按鍵。 參考電路框圖2位一體共陰數(shù)碼管12只發(fā)光二極管 (紅、黃、綠) 單片機(jī)按鍵(設(shè)置、+、-、確定)三、性能指標(biāo)要求1、各方向的紅、綠色信號燈能按照設(shè)定規(guī)則運(yùn)行;2、綠燈亮之前,黃燈閃爍5次;3、紅燈和綠燈倒計(jì)時間能夠正確顯示;4、兩干道的車輛不會會車沖突。5、可以擴(kuò)展其他功能(如按鍵設(shè)
3、置時間,按鍵模擬警車。四 方案論證一、 方案比較論證方案一:純數(shù)字電路方式 用數(shù)電器件設(shè)計(jì):時鐘分頻模塊,交通燈亮滅控制模塊,交通燈顯示模塊,倒計(jì)時計(jì)數(shù)模塊,倒計(jì)時顯示模塊,實(shí)現(xiàn)交通燈的控制和顯示功能。優(yōu)點(diǎn)是不需要軟件編程控制,缺點(diǎn)是硬件規(guī)模龐大且不能實(shí)現(xiàn)延時可調(diào)。方案二:FPGA/CPLD方式FPGA/CPLD除了完成交通燈控制、存儲和顯示功能外,還可進(jìn)行人機(jī)交互,實(shí)現(xiàn)定時器延時可調(diào)。這種方案系統(tǒng)結(jié)構(gòu)緊湊,但調(diào)試過程繁瑣。方案三:單片機(jī)方式利用單片機(jī)控制相應(yīng)并口,模擬交通燈顯示,利用其并口P2口實(shí)現(xiàn)數(shù)碼管顯示。利用外部中斷功能,完成交通燈主干次道通行時間任意可調(diào)。此方案占用硬件資源少、功能齊
4、全、調(diào)試過程簡單。本設(shè)計(jì)采用方案三。二、 原理圖,交通燈原理圖為下圖所示:部分原理圖分析:東西、南北方向的數(shù)碼管對角線放置,發(fā)光二極管連一個1K的電阻,防止燈燒。這里的按鍵是實(shí)現(xiàn)復(fù)位清零的功能。這里的按鍵P3.4按一下,進(jìn)入倒計(jì)時時間設(shè)置,P3.5是實(shí)現(xiàn)顯示時間減一功能,P3.6實(shí)現(xiàn)顯示時間加一功能,P3.7實(shí)現(xiàn)確認(rèn)功能。交通燈五、 交通燈C語言程序?yàn)椋?include /*-/【賈小丹 (AdvancyYP)制作】/-*/* 名稱 : 交通燈 單片機(jī)型號 :51系列單片機(jī) 晶振 : 12MHz*/*-/【賈小丹 (AdvancyYP)制作】/-*/*定義名稱*/#define unint u
5、nsigned int#define unchar unsigned char /*定義管腳*/#define SMG_SEG P1 /定義數(shù)碼管段選口為:P0#define SMG_BIT P2 /定義數(shù)碼管位選口為:P2#define LIGHT P0 /定義紅綠燈口為:P1#define KEY P3 /定義按鍵口為:P3sbit BEEP = P27; /定義蜂鳴器管腳為P3.7/*定義行為*/#define LIGHT_RED (LIGHT = 0xDE)/紅燈亮起/#define LIGHT_YELLOW (LIGHT = 0xED)/黃燈亮起/#define LIGHT_GREE
6、N (LIGHT = 0xF3)/綠燈亮起/#define LIGHT_OFF (LIGHT = 0xFF)/全部熄滅#define KEY1 0xEF/KEY1按下#define KEY2 0xDF/KEY2按下#define KEY3 0xBF/KEY3按下#define KEY4 0x7F/KEY4按下/*定義數(shù)碼管編碼*/數(shù)碼管段碼/(共陽)unchar code SMG_SEG_CODE=0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F;/數(shù)碼管段碼/數(shù)碼管位碼/(共陰)unchar code SMG_BIT_COD
7、E=0xFD, 0xFE;/數(shù)碼管位碼/*定義時間變量*/unchar th, tl;/定時計(jì)數(shù)器初值變量unchar t_10ms, stop_time, run_time, set_stop_time, set_run_time;/時間變量/*定義模式、狀態(tài)標(biāo)識符*/unchar now_mode;/定義當(dāng)前模式標(biāo)識符/(注:0.系統(tǒng)運(yùn)行模式 1.系統(tǒng)設(shè)置主干道通行時間 2.系統(tǒng)設(shè)置主干道禁止時間 3.系統(tǒng)設(shè)置主干道緊急通行)unchar stop_run;/定義:禁止通行標(biāo)識符/(注:0.禁止 非0.通行)/*/ /函數(shù)聲明/*/void _1ms();/1ms延時函數(shù)void _Nms
8、(unsigned int N);/N*1ms延時函數(shù)void T0_INITIAL(void);/定時計(jì)數(shù)器T0初始化void SMG(unchar x_seg, unchar x_bit);/數(shù)碼管函數(shù)void DISPLAY_TIME(unchar t);/顯示時間函數(shù)void MODE(void);/模式函數(shù)/*/ /時間函數(shù)/*/void _1ms()/1ms延時函數(shù)unsigned char a,b,c;for(c=1;c0;c-)for(b=142;b0;b-)for(a=2;a0;a-);void _Nms(unsigned int N)/N*1ms延時函數(shù)while(N)_1
9、ms();N-;/*/ /定時計(jì)數(shù)器T0初始化/*/void T0_INITIAL(void)EA=0;/總中斷關(guān)閉ET0=0;/定時器0關(guān)閉TR0=0;/關(guān)閉TR0TMOD = 0x01;/設(shè)置定時器工作方式為16位定時器自動重裝(方式1)th=(65536-10000)/256;/定時計(jì)數(shù)器初值計(jì)算(定時10ms)tl=(65536-10000)%256;/定時計(jì)數(shù)器初值計(jì)算(定時10ms)TH0=th;/定時器0附初始值(定時10ms)TL0=tl;/定時器0附初始值(定時10ms)stop_time = set_stop_time;/獲取設(shè)定好的禁止時間run_time = set_r
10、un_time;/獲取設(shè)定好的通行時間t_10ms=0;/初始化10ms定時計(jì)數(shù)變量TR0=1;/開啟TR0ET0=1;/定時器0開啟EA=1;/總中斷開啟/*/ /定時計(jì)數(shù)器T0中斷/*/void T0_INTERRUPT(void) interrupt 1 using 1if(stop_run=0)/如果當(dāng)前狀態(tài)為:禁止t_10ms+;/10ms變量自增if(t_10ms=100)/如果定時計(jì)數(shù)到1st_10ms=0;/10ms定時計(jì)數(shù)變量清0stop_time-;/禁止時間自減if(stop_time=0)/禁止時間等于0時run_time = set_run_time;/獲取設(shè)定好的通
11、行時間stop_run = stop_run;/轉(zhuǎn)換到通行狀態(tài)if(stop_time0)/當(dāng)禁止時間小于等于5秒并且大于0秒的時候if(t_10ms=50)/0.5秒外LIGHT_YELLOW;/黃燈亮elseLIGHT_RED;/紅燈亮TH0=th;/定時器0附初始值(定時10ms)TL0=tl;/定時器0附初始值(定時10ms)elseif(stop_run!=0)/如果當(dāng)前狀態(tài)為:通行t_10ms+;/10ms變量自增if(t_10ms=100)/如果定時計(jì)數(shù)到1st_10ms=0;/10ms定時計(jì)數(shù)變量清0run_time-;/通行時間自減if(run_time=0)/通行時間等于0
12、時stop_time = set_stop_time;/獲取設(shè)定好的禁止時間stop_run = stop_run;/轉(zhuǎn)換到禁止?fàn)顟B(tài)if(run_time0)/當(dāng)通行時間小于等于5秒并且大于0秒的時候if(t_10ms=50)/0.5秒外LIGHT_YELLOW;/黃燈亮elseLIGHT_GREEN;/綠燈亮TH0=th;/定時器0附初始值(定時10ms)TL0=tl;/定時器0附初始值(定時10ms)/*/ /數(shù)碼管函數(shù)/*/void SMG(unchar x_seg, unchar x_bit)SMG_SEG = SMG_SEG_CODEx_seg;/數(shù)碼管段選SMG_BIT = SMG
13、_BIT_CODEx_bit;/數(shù)碼管位選/*/ /顯示時間函數(shù)/*/void DISPLAY_TIME(unchar t)SMG(t/10), 1);/時間的十位_Nms(1);/1ms延時函數(shù)SMG(t%10), 0);/時間的個位_Nms(1);/1ms延時函數(shù)/*/ /模式函數(shù)/*/void MODE(void)if(now_mode=0)/0.系統(tǒng)運(yùn)行模式while(now_mode=0)/0.系統(tǒng)運(yùn)行模式if(stop_run=0)/當(dāng)前狀態(tài):禁止DISPLAY_TIME(stop_time);/禁止時時間顯示函數(shù)elseif(stop_run!=0)/當(dāng)前狀態(tài):通行DISPLAY
14、_TIME(run_time);/通行時時間顯示函數(shù)if(KEY=KEY1)/如果按鍵1被按下_Nms(10);/10ms延時去抖if(KEY=KEY1)/如果按鍵1被按下now_mode+;/移動到下一模式if(now_mode=4)/如果增到模式4now_mode = 1;/回到模式1(注:只有模式 0、1、2、3 可選)while(KEY=KEY1);/等待按鍵1釋放_Nms(10);/10ms延時去抖elseif(now_mode=1)/1.系統(tǒng)設(shè)置主干道通行時間ET0=0;/定時器0關(guān)閉LIGHT_GREEN;/綠燈亮起while(now_mode=1)/1.系統(tǒng)設(shè)置主干道通行時間D
15、ISPLAY_TIME(set_run_time);/顯示設(shè)定的通行時間if(KEY!=0xFF)/有按鍵按下_Nms(10);/10ms延時函數(shù)if(KEY!=0xFF)/有按鍵按下switch(KEY)/獲取鍵值case KEY1 : /如果按鍵1被按下now_mode+;/移動到下一模式if(now_mode=4)/如果增到模式4now_mode = 1;/回到模式1break;/退出case KEY2 : /如果按鍵2被按下if(set_run_time6)/如果通行時間大于6秒set_run_time-;/設(shè)置的通行時間減小break;/退出case KEY3 : /如果按鍵3被按下
16、if(set_run_time6)/如果禁止時間大于6秒set_stop_time-;/設(shè)置的禁止時間減小break;/退出case KEY3 : /如果按鍵3被按下if(set_stop_time60)/如果禁止時間小于60秒set_stop_time+;/設(shè)置的通行時間增大break;/退出case KEY4 : /如果按鍵4被按下now_mode = 0;/確定鍵按下,回到模式 /0.系統(tǒng)運(yùn)行模式T0_INITIAL();/定時計(jì)數(shù)器T0初始化break;/退出default : break;/其它while(KEY!=0xFF);/等待按鍵釋放_Nms(10);/10ms延時函數(shù)els
17、eif(now_mode=3)/3.系統(tǒng)設(shè)置主干道緊急通行ET0=0;/定時器0關(guān)閉LIGHT_GREEN;/綠燈亮起while(now_mode=3)/3.系統(tǒng)設(shè)置主干道緊急通行DISPLAY_TIME(0);/顯示0if(KEY!=0xFF)/有按鍵按下_Nms(10);/10ms延時函數(shù)if(KEY!=0xFF)/有按鍵按下switch(KEY)/獲取鍵值case KEY1 : /如果按鍵1被按下now_mode+;/移動到下一模式if(now_mode=4)/如果增到模式4now_mode = 1;/回到模式1break;/退出case KEY2 : /如果按鍵2被按下:主干道緊急通行
18、LIGHT_GREEN;/綠燈亮起break;/退出case KEY3 : /如果按鍵3被按下:次干道緊急通行LIGHT_RED;/紅燈亮起break;/退出case KEY4 : /如果按鍵4被按下now_mode = 0;/確定鍵按下,回到模式 /0.系統(tǒng)運(yùn)行模式ET0=1;/定時器0開啟break;/退出default : break;/其它while(KEY!=0xFF);/等待按鍵釋放_Nms(10);/10ms延時函數(shù)/*/ /主函數(shù)/*/void main(void)set_stop_time = 60;/禁止時間:60sset_run_time = 60;/通行時間:60sst
19、op_run = 0;/當(dāng)前狀態(tài):禁止T0_INITIAL();/定時計(jì)數(shù)器T0初始化while(1)MODE();/模式函數(shù)六、 制作與調(diào)試過程1.狀態(tài)燈顯示測試由于在剛焊接好電路板的時候,沒有下載程序,而且有虛焊的線路,所以,狀態(tài)指示燈都沒有亮。然后,我仔細(xì)的檢查電路板,終于,接上電源以后,狀態(tài)指示燈都可以亮。2數(shù)碼管的測試測試數(shù)碼管的時候,我將下好的程序下載到電路板上檢測。由于,我焊的板子下載口有虛焊的地方。所以,導(dǎo)致下載不了。于是,我又重新檢測板子,再次確認(rèn)下載口焊接好了后,下載好程序,數(shù)碼管顯示正確。3整體電路測試在確認(rèn)硬件和軟件都正確的情況下,我把程序下載在板子里。檢測題目的要求是
20、否完成。首先,是紅,黃,綠燈在主干道和次干道顯示正確。然后,測試附加按鍵功能,都能夠?qū)崿F(xiàn)模塊選擇,主干道通行時間和次干道通行時間,緊急通行。所以,整體電路測試成功。七、實(shí)訓(xùn)心得體會 通過這幾天的單片機(jī)實(shí)訓(xùn),我覺得我的收獲很大。說實(shí)話,我的單片機(jī)知識基礎(chǔ)不好,因?yàn)?,在之前的單片機(jī)理論課和實(shí)驗(yàn)課的學(xué)習(xí)中我沒有認(rèn)真學(xué)習(xí),所以,沒有打好基礎(chǔ)。在實(shí)訓(xùn)的時候,我沒有信心可以做好本次實(shí)訓(xùn)。但是,我依舊努力的去查資料,把單片機(jī)的實(shí)驗(yàn)認(rèn)真復(fù)習(xí),開始我的單片機(jī)實(shí)訓(xùn)。首先,是從原理圖開始,我上網(wǎng)查了很多關(guān)于AT89S52單片機(jī)芯片的資料,包括管腳和功能。開始畫原理圖?;趯rotel 99軟件的應(yīng)用,所以,原理圖很快就畫好了,在拿給老師檢查之后,我開始焊板。焊板是比較復(fù)雜的一個過程
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- XXXX小學(xué)校服專項(xiàng)問題整治自查情況報(bào)告范文
- 2025年醫(yī)院電子病歷系統(tǒng)在醫(yī)療科研中的應(yīng)用優(yōu)化報(bào)告
- 2025年醫(yī)院電子病歷系統(tǒng)優(yōu)化構(gòu)建醫(yī)療信息化安全防護(hù)體系與技術(shù)創(chuàng)新報(bào)告
- 2025年醫(yī)藥市場醫(yī)藥電商發(fā)展趨勢:仿制藥一致性評價下的機(jī)遇報(bào)告
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)與臨床試驗(yàn)監(jiān)管政策報(bào)告
- 咨詢工程師2019課件
- 鄉(xiāng)村振興視角下2025年職業(yè)技能培訓(xùn)的職業(yè)技能標(biāo)準(zhǔn)制定報(bào)告
- 新型頁巖氣開采技術(shù)2025環(huán)境影響評估與綠色礦山建設(shè)標(biāo)準(zhǔn)研究報(bào)告
- 原始點(diǎn)健康講座課件
- 預(yù)制菜行業(yè)2025年市場細(xì)分與消費(fèi)者購買行為研究報(bào)告
- 2025年青島市即墨區(qū)衛(wèi)生健康局所屬事業(yè)單位和公立醫(yī)院招考聘用358人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025版國際貿(mào)易大宗商品交易平臺合作合同3篇
- 沙漠治理防塵網(wǎng)安裝協(xié)議
- 2023-2024學(xué)年人教版數(shù)學(xué)八年級下冊期末復(fù)習(xí)試卷(含答案)
- 2024年租賃業(yè)務(wù)操作手冊3篇
- 我的植物朋友向日葵400字
- 作家助手簽約標(biāo)準(zhǔn)合同范例
- 工廠供電期末試題A附答案
- 醫(yī)院培訓(xùn)課件:《外科手術(shù)部位感染預(yù)防與控制》
- 臨床輸血技術(shù)規(guī)范培訓(xùn)課件
- 國家開放大學(xué)《酒店餐飲服務(wù)與管理》形考任務(wù)1-4參考答案
評論
0/150
提交評論