




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 桂林電子科技大學(xué)信息科技學(xué)院?jiǎn)纹瑱C(jī)交通燈實(shí)訓(xùn)報(bào)告學(xué) 號(hào) 0951100231 姓 名 賈小丹 指導(dǎo)教師:韓劍 易藝 李德明 2011 年 09 月 22 日交通燈控制系統(tǒng)一、 任務(wù)利用AT89S52單片機(jī)控制各個(gè)路口紅綠燈及時(shí)間顯示,設(shè)計(jì)一個(gè)交通燈控制系統(tǒng)。 二、 基本原理利用51單片機(jī)控制各個(gè)路口紅綠燈及時(shí)間顯示。模擬交通燈示意圖:設(shè)計(jì)的重點(diǎn):1、各個(gè)路口紅綠燈亮滅的規(guī)則,暫不考慮左轉(zhuǎn)方向;2、倒計(jì)時(shí)的實(shí)現(xiàn),利用單片機(jī)的定時(shí)器進(jìn)行計(jì)數(shù)得到秒信號(hào);3、時(shí)間顯示:東西南北四個(gè)方向的時(shí)間一致,當(dāng)東西方向?yàn)?0秒綠燈通行時(shí)間,同時(shí)南北方向?yàn)?0秒紅燈禁止時(shí)間,因此硬件連接時(shí)可考慮東西南北方向可采用
2、同一接法;最后相當(dāng)于2個(gè)數(shù)碼管動(dòng)態(tài)顯示,具體見(jiàn)參考電路框圖。4、按鍵設(shè)置(擴(kuò)展要求):設(shè)置鍵按一次,設(shè)置主干道通信時(shí)間(即次干道禁止時(shí)間),按第二次,設(shè)置主干道禁止時(shí)間(即次干道通信時(shí)間),按第三次,可作為緊急通信鍵。設(shè)置時(shí)間需要確定,可通過(guò)確定鍵實(shí)現(xiàn),也可通過(guò)延時(shí)確定,如10秒。當(dāng)然也可根據(jù)需要增加相應(yīng)的按鍵。 參考電路框圖2位一體共陰數(shù)碼管12只發(fā)光二極管 (紅、黃、綠) 單片機(jī)按鍵(設(shè)置、+、-、確定)三、性能指標(biāo)要求1、各方向的紅、綠色信號(hào)燈能按照設(shè)定規(guī)則運(yùn)行;2、綠燈亮之前,黃燈閃爍5次;3、紅燈和綠燈倒計(jì)時(shí)間能夠正確顯示;4、兩干道的車輛不會(huì)會(huì)車沖突。5、可以擴(kuò)展其他功能(如按鍵設(shè)
3、置時(shí)間,按鍵模擬警車。四 方案論證一、 方案比較論證方案一:純數(shù)字電路方式 用數(shù)電器件設(shè)計(jì):時(shí)鐘分頻模塊,交通燈亮滅控制模塊,交通燈顯示模塊,倒計(jì)時(shí)計(jì)數(shù)模塊,倒計(jì)時(shí)顯示模塊,實(shí)現(xiàn)交通燈的控制和顯示功能。優(yōu)點(diǎn)是不需要軟件編程控制,缺點(diǎn)是硬件規(guī)模龐大且不能實(shí)現(xiàn)延時(shí)可調(diào)。方案二:FPGA/CPLD方式FPGA/CPLD除了完成交通燈控制、存儲(chǔ)和顯示功能外,還可進(jìn)行人機(jī)交互,實(shí)現(xiàn)定時(shí)器延時(shí)可調(diào)。這種方案系統(tǒng)結(jié)構(gòu)緊湊,但調(diào)試過(guò)程繁瑣。方案三:?jiǎn)纹瑱C(jī)方式利用單片機(jī)控制相應(yīng)并口,模擬交通燈顯示,利用其并口P2口實(shí)現(xiàn)數(shù)碼管顯示。利用外部中斷功能,完成交通燈主干次道通行時(shí)間任意可調(diào)。此方案占用硬件資源少、功能齊
4、全、調(diào)試過(guò)程簡(jiǎn)單。本設(shè)計(jì)采用方案三。二、 原理圖,交通燈原理圖為下圖所示:部分原理圖分析:東西、南北方向的數(shù)碼管對(duì)角線放置,發(fā)光二極管連一個(gè)1K的電阻,防止燈燒。這里的按鍵是實(shí)現(xiàn)復(fù)位清零的功能。這里的按鍵P3.4按一下,進(jìn)入倒計(jì)時(shí)時(shí)間設(shè)置,P3.5是實(shí)現(xiàn)顯示時(shí)間減一功能,P3.6實(shí)現(xiàn)顯示時(shí)間加一功能,P3.7實(shí)現(xiàn)確認(rèn)功能。交通燈五、 交通燈C語(yǔ)言程序?yàn)椋?include /*-/【賈小丹 (AdvancyYP)制作】/-*/* 名稱 : 交通燈 單片機(jī)型號(hào) :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ù)碼管段碼/(共陽(yáng))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ù)碼管位碼/*定義時(shí)間變量*/unchar th, tl;/定時(shí)計(jì)數(shù)器初值變量unchar t_10ms, stop_time, run_time, set_stop_time, set_run_time;/時(shí)間變量/*定義模式、狀態(tài)標(biāo)識(shí)符*/unchar now_mode;/定義當(dāng)前模式標(biāo)識(shí)符/(注:0.系統(tǒng)運(yùn)行模式 1.系統(tǒng)設(shè)置主干道通行時(shí)間 2.系統(tǒng)設(shè)置主干道禁止時(shí)間 3.系統(tǒng)設(shè)置主干道緊急通行)unchar stop_run;/定義:禁止通行標(biāo)識(shí)符/(注:0.禁止 非0.通行)/*/ /函數(shù)聲明/*/void _1ms();/1ms延時(shí)函數(shù)void _Nms
8、(unsigned int N);/N*1ms延時(shí)函數(shù)void T0_INITIAL(void);/定時(shí)計(jì)數(shù)器T0初始化void SMG(unchar x_seg, unchar x_bit);/數(shù)碼管函數(shù)void DISPLAY_TIME(unchar t);/顯示時(shí)間函數(shù)void MODE(void);/模式函數(shù)/*/ /時(shí)間函數(shù)/*/void _1ms()/1ms延時(shí)函數(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í)函數(shù)while(N)_1
9、ms();N-;/*/ /定時(shí)計(jì)數(shù)器T0初始化/*/void T0_INITIAL(void)EA=0;/總中斷關(guān)閉ET0=0;/定時(shí)器0關(guān)閉TR0=0;/關(guān)閉TR0TMOD = 0x01;/設(shè)置定時(shí)器工作方式為16位定時(shí)器自動(dòng)重裝(方式1)th=(65536-10000)/256;/定時(shí)計(jì)數(shù)器初值計(jì)算(定時(shí)10ms)tl=(65536-10000)%256;/定時(shí)計(jì)數(shù)器初值計(jì)算(定時(shí)10ms)TH0=th;/定時(shí)器0附初始值(定時(shí)10ms)TL0=tl;/定時(shí)器0附初始值(定時(shí)10ms)stop_time = set_stop_time;/獲取設(shè)定好的禁止時(shí)間run_time = set_r
10、un_time;/獲取設(shè)定好的通行時(shí)間t_10ms=0;/初始化10ms定時(shí)計(jì)數(shù)變量TR0=1;/開啟TR0ET0=1;/定時(shí)器0開啟EA=1;/總中斷開啟/*/ /定時(shí)計(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)/如果定時(shí)計(jì)數(shù)到1st_10ms=0;/10ms定時(shí)計(jì)數(shù)變量清0stop_time-;/禁止時(shí)間自減if(stop_time=0)/禁止時(shí)間等于0時(shí)run_time = set_run_time;/獲取設(shè)定好的通
11、行時(shí)間stop_run = stop_run;/轉(zhuǎn)換到通行狀態(tài)if(stop_time0)/當(dāng)禁止時(shí)間小于等于5秒并且大于0秒的時(shí)候if(t_10ms=50)/0.5秒外LIGHT_YELLOW;/黃燈亮elseLIGHT_RED;/紅燈亮TH0=th;/定時(shí)器0附初始值(定時(shí)10ms)TL0=tl;/定時(shí)器0附初始值(定時(shí)10ms)elseif(stop_run!=0)/如果當(dāng)前狀態(tài)為:通行t_10ms+;/10ms變量自增if(t_10ms=100)/如果定時(shí)計(jì)數(shù)到1st_10ms=0;/10ms定時(shí)計(jì)數(shù)變量清0run_time-;/通行時(shí)間自減if(run_time=0)/通行時(shí)間等于0
12、時(shí)stop_time = set_stop_time;/獲取設(shè)定好的禁止時(shí)間stop_run = stop_run;/轉(zhuǎn)換到禁止?fàn)顟B(tài)if(run_time0)/當(dāng)通行時(shí)間小于等于5秒并且大于0秒的時(shí)候if(t_10ms=50)/0.5秒外LIGHT_YELLOW;/黃燈亮elseLIGHT_GREEN;/綠燈亮TH0=th;/定時(shí)器0附初始值(定時(shí)10ms)TL0=tl;/定時(shí)器0附初始值(定時(shí)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í)間函數(shù)/*/void DISPLAY_TIME(unchar t)SMG(t/10), 1);/時(shí)間的十位_Nms(1);/1ms延時(shí)函數(shù)SMG(t%10), 0);/時(shí)間的個(gè)位_Nms(1);/1ms延時(shí)函數(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í)時(shí)間顯示函數(shù)elseif(stop_run!=0)/當(dāng)前狀態(tài):通行DISPLAY
14、_TIME(run_time);/通行時(shí)時(shí)間顯示函數(shù)if(KEY=KEY1)/如果按鍵1被按下_Nms(10);/10ms延時(shí)去抖if(KEY=KEY1)/如果按鍵1被按下now_mode+;/移動(dòng)到下一模式if(now_mode=4)/如果增到模式4now_mode = 1;/回到模式1(注:只有模式 0、1、2、3 可選)while(KEY=KEY1);/等待按鍵1釋放_(tái)Nms(10);/10ms延時(shí)去抖elseif(now_mode=1)/1.系統(tǒng)設(shè)置主干道通行時(shí)間ET0=0;/定時(shí)器0關(guān)閉LIGHT_GREEN;/綠燈亮起while(now_mode=1)/1.系統(tǒng)設(shè)置主干道通行時(shí)間D
15、ISPLAY_TIME(set_run_time);/顯示設(shè)定的通行時(shí)間if(KEY!=0xFF)/有按鍵按下_Nms(10);/10ms延時(shí)函數(shù)if(KEY!=0xFF)/有按鍵按下switch(KEY)/獲取鍵值case KEY1 : /如果按鍵1被按下now_mode+;/移動(dòng)到下一模式if(now_mode=4)/如果增到模式4now_mode = 1;/回到模式1break;/退出case KEY2 : /如果按鍵2被按下if(set_run_time6)/如果通行時(shí)間大于6秒set_run_time-;/設(shè)置的通行時(shí)間減小break;/退出case KEY3 : /如果按鍵3被按下
16、if(set_run_time6)/如果禁止時(shí)間大于6秒set_stop_time-;/設(shè)置的禁止時(shí)間減小break;/退出case KEY3 : /如果按鍵3被按下if(set_stop_time60)/如果禁止時(shí)間小于60秒set_stop_time+;/設(shè)置的通行時(shí)間增大break;/退出case KEY4 : /如果按鍵4被按下now_mode = 0;/確定鍵按下,回到模式 /0.系統(tǒng)運(yùn)行模式T0_INITIAL();/定時(shí)計(jì)數(shù)器T0初始化break;/退出default : break;/其它while(KEY!=0xFF);/等待按鍵釋放_(tái)Nms(10);/10ms延時(shí)函數(shù)els
17、eif(now_mode=3)/3.系統(tǒng)設(shè)置主干道緊急通行ET0=0;/定時(shí)器0關(guān)閉LIGHT_GREEN;/綠燈亮起while(now_mode=3)/3.系統(tǒng)設(shè)置主干道緊急通行DISPLAY_TIME(0);/顯示0if(KEY!=0xFF)/有按鍵按下_Nms(10);/10ms延時(shí)函數(shù)if(KEY!=0xFF)/有按鍵按下switch(KEY)/獲取鍵值case KEY1 : /如果按鍵1被按下now_mode+;/移動(dòng)到下一模式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;/定時(shí)器0開啟break;/退出default : break;/其它while(KEY!=0xFF);/等待按鍵釋放_(tái)Nms(10);/10ms延時(shí)函數(shù)/*/ /主函數(shù)/*/void main(void)set_stop_time = 60;/禁止時(shí)間:60sset_run_time = 60;/通行時(shí)間:60sst
19、op_run = 0;/當(dāng)前狀態(tài):禁止T0_INITIAL();/定時(shí)計(jì)數(shù)器T0初始化while(1)MODE();/模式函數(shù)六、 制作與調(diào)試過(guò)程1.狀態(tài)燈顯示測(cè)試由于在剛焊接好電路板的時(shí)候,沒(méi)有下載程序,而且有虛焊的線路,所以,狀態(tài)指示燈都沒(méi)有亮。然后,我仔細(xì)的檢查電路板,終于,接上電源以后,狀態(tài)指示燈都可以亮。2數(shù)碼管的測(cè)試測(cè)試數(shù)碼管的時(shí)候,我將下好的程序下載到電路板上檢測(cè)。由于,我焊的板子下載口有虛焊的地方。所以,導(dǎo)致下載不了。于是,我又重新檢測(cè)板子,再次確認(rèn)下載口焊接好了后,下載好程序,數(shù)碼管顯示正確。3整體電路測(cè)試在確認(rèn)硬件和軟件都正確的情況下,我把程序下載在板子里。檢測(cè)題目的要求是
20、否完成。首先,是紅,黃,綠燈在主干道和次干道顯示正確。然后,測(cè)試附加按鍵功能,都能夠?qū)崿F(xiàn)模塊選擇,主干道通行時(shí)間和次干道通行時(shí)間,緊急通行。所以,整體電路測(cè)試成功。七、實(shí)訓(xùn)心得體會(huì) 通過(guò)這幾天的單片機(jī)實(shí)訓(xùn),我覺(jué)得我的收獲很大。說(shuō)實(shí)話,我的單片機(jī)知識(shí)基礎(chǔ)不好,因?yàn)?,在之前的單片機(jī)理論課和實(shí)驗(yàn)課的學(xué)習(xí)中我沒(méi)有認(rèn)真學(xué)習(xí),所以,沒(méi)有打好基礎(chǔ)。在實(shí)訓(xùn)的時(shí)候,我沒(méi)有信心可以做好本次實(shí)訓(xùn)。但是,我依舊努力的去查資料,把單片機(jī)的實(shí)驗(yàn)認(rèn)真復(fù)習(xí),開始我的單片機(jī)實(shí)訓(xùn)。首先,是從原理圖開始,我上網(wǎng)查了很多關(guān)于AT89S52單片機(jī)芯片的資料,包括管腳和功能。開始畫原理圖?;趯?duì)Protel 99軟件的應(yīng)用,所以,原理圖很快就畫好了,在拿給老師檢查之后,我開始焊板。焊板是比較復(fù)雜的一個(gè)過(guò)程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 多波束測(cè)深系統(tǒng)數(shù)據(jù)同步精度測(cè)試考核試卷
- 人教版2025-2026學(xué)年小學(xué)五年級(jí)下數(shù)學(xué)期末試卷及答案
- 2025-2030中國(guó)魚食品擠壓市場(chǎng)銷售態(tài)勢(shì)與營(yíng)銷前景預(yù)測(cè)報(bào)告
- 2024年度海南省二級(jí)注冊(cè)建筑師之法律法規(guī)經(jīng)濟(jì)與施工押題練習(xí)試卷A卷附答案
- 克拉瑪依職業(yè)技術(shù)學(xué)院《土木工程專業(yè)基礎(chǔ)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 遂寧能源職業(yè)學(xué)院《高爾夫球童學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 幼兒園師徒結(jié)對(duì)教學(xué)研討計(jì)劃
- 四川華新現(xiàn)代職業(yè)學(xué)院《建筑表達(dá)》2023-2024學(xué)年第一學(xué)期期末試卷
- 大連工業(yè)大學(xué)《中國(guó)當(dāng)代文學(xué)專題》2023-2024學(xué)年第一學(xué)期期末試卷
- 智能停車系統(tǒng)車位出售與數(shù)據(jù)服務(wù)合同
- 2024年高考真題-物理(貴州卷) 含解析
- 雨污水工程安全培訓(xùn)
- 華南理工大學(xué)《機(jī)器學(xué)習(xí)》2022-2023學(xué)年期末試卷
- 2024年人教版八年級(jí)語(yǔ)文下冊(cè)期末考試卷(附答案)
- 影視劇組場(chǎng)地租賃合同
- 個(gè)體工商戶食品安全管理制度
- TSXCAS 015-2023 全固廢低碳膠凝材料應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 北京交通大學(xué)《交通系統(tǒng)建模與測(cè)試技術(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 耳穴考核試題及答案
- 2024年浙江省中考社會(huì)試卷真題(含標(biāo)準(zhǔn)答案及評(píng)分標(biāo)準(zhǔn))
- 廣東省廣州市白云廣雅2024-2025學(xué)年七年級(jí)上學(xué)期開學(xué)測(cè)英語(yǔ)試題+(無(wú)答案)
評(píng)論
0/150
提交評(píng)論