




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于51單片機(jī)的交通燈C語言程序設(shè)計(jì)2011-05-07 07:57十字交叉路口的交通燈控制器,是很常見的課程設(shè)計(jì)題目。做而論道以前寫過一個(gè),功能十分簡單。最近,綜合了一些百度知道中的題目要求,寫出了一個(gè)稍稍復(fù)雜一點(diǎn)設(shè)計(jì)方案,使用了大家比較喜歡的C語言編寫程序。基本功能如下:(1)東西、南北方向各設(shè)有一個(gè)綠、黃、紅指示燈,兩個(gè)顯示數(shù)碼管。(2)兩個(gè)方向交替允許通行,基本放行時(shí)間為25s,另外有黃燈閃爍5s。(3)控制人員可以暫停自動(dòng)的交替,使某個(gè)方向可以無限長時(shí)間的通行。(4)暫停期間,控制人員可以調(diào)整通行的時(shí)間,程序中還設(shè)置了調(diào)整的上下限。(5)暫停之后,燈光將按照設(shè)置的通行時(shí)間自動(dòng)變換通行方向。(6)在正常通行期間,可以強(qiáng)制變換通行方向。強(qiáng)制變換的時(shí)候,也是要先顯示閃爍的黃燈,然后切換到指定的方向。程序用PROTEUS仿真成功,并沒有進(jìn)行硬件實(shí)驗(yàn)。仿真截圖畫面如下。C語言的控制程序如下:/-#include #define uchar unsigned char#define uint unsigned intuchar data buf4;uchar data sec_dx=30;/東西數(shù)默認(rèn)uchar data sec_nb=30;/南北默認(rèn)值uchar data set_timedx=30;uchar data set_timenb=30;int n;uchar data b;/定時(shí)器中斷次數(shù)sbit k1=P16;/定義5組開關(guān)sbit k2=P17;sbit k3=P27;sbit k4=P30;sbit k5=P31;sbit Yellow_nb=P25;/南北黃燈標(biāo)志sbit Yellow_dx=P22;/東西黃燈標(biāo)志sbit Green_nb=P24;sbit Green_dx=P21;sbit Red_nb=P26;sbit Red_dx=P23;sbit Buzz=P37;bit Buzzer_Indicate;bit time=0;/燈狀態(tài)循環(huán)標(biāo)志bit set=1;/調(diào)時(shí)方向切換鍵標(biāo)志uchar code table10= /共陰極字型碼0x3f, /-00x06, /-1?0x5b, /-2?0x4f, /-30x66, /-4?0x6d, /-50x7d, /-60x07, /-7?0x7f, /-80x6f, /-9/0x00 /-NULL;/函數(shù)的聲明部分void delay(int ms);/延時(shí)子程序void key();/按鍵掃描子程序void key_to1();/鍵處理子程序void key_to2();void key_to3();void display();/顯示子程序void logo(); /開機(jī)LOGOvoid Buzzer();/主程序void main()TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1; EX0=1;EX1=1; logo();P2=0Xc3;/ 開始默認(rèn)狀態(tài),東西綠燈,南北黃燈 sec_nb=sec_dx+5; while(1) key(); /調(diào)用按鍵掃描程序display(); /調(diào)用顯示程序Buzzer();/函數(shù)的定義部分void key()/按鍵掃描子程序 if(k1!=1)delay(10);if(k1!=1)while(k1!=1) key_to1(); for(n=0;n40;n+) display(); if(k2!=1)delay(10);if(k2!=1)while(k2!=1) key_to2(); for(n=0;n40;n+) display();if(k3!=1) TR0=1; /啟動(dòng)定時(shí)器Buzzer_Indicate=0;sec_nb=set_timenb;/從中斷回復(fù),仍顯示設(shè)置過的數(shù)值sec_dx=set_timedx;if(time=0) P2=0X99;sec_nb=sec_dx+5; else P2=0xC3;sec_dx=sec_nb+5; if(k4!=1) delay(10);if(k4!=1) while(k4!=1);set=!set; if(k5!=1) delay(10); if(k5!=1) while(k5!=1) key_to3(); void display() /顯示子程序buf1=sec_dx/10; /第1位 東西秒十位buf2=sec_dx%10; /第2位 東西秒個(gè)位buf3=sec_nb/10; /第3位 南北秒十位buf0=sec_nb%10; /第4位 南北秒個(gè)位 P1=0xff; / 初始燈為滅的 P0=0x00; P1=0xfe; /片選LCD1 P0=tablebuf1; delay(1); P1=0xff; P0=0x00; P1=0xfd; /片選LCD2 P0=tablebuf2; delay(1); P1=0xff; P0=0x00; P1=0Xfb; /片選LCD3P0=tablebuf3; delay(1);P1=0xff; P0=0x00;P1=0Xf7;P0=tablebuf0; /片選LCD4 delay(1);void time0(void) interrupt 1 using 1 /定時(shí)中斷子程序b+;if(b=19) / 定時(shí)器中斷次數(shù)b=0;sec_dx-;sec_nb-;if(sec_nb=5&time=0) /東西黃燈閃 Green_nb=0 ;Yellow_nb=!Yellow_nb; if(sec_dx=5&time=1) /南北黃燈閃 Green_dx=0 ;Yellow_dx=!Yellow_dx; if(sec_dx=0&sec_nb=5) sec_dx=5;if(sec_nb=0&sec_dx=5)sec_nb=5;if(time=0&sec_nb=0) P2=0x99;time=!time;sec_nb=set_timenb;sec_dx=set_timenb+5;if(time=1&sec_dx=0)P2=0Xc3;time=!time;sec_dx=set_timedx;sec_nb=set_timedx+5;void key_to1()/鍵盤處理子程序之+TR0=0; /關(guān)定時(shí)器if(set=0)set_timenb+; /南北加1Selseset_timedx+; /東西加1Sif(set_timenb=100)set_timenb=1;if(set_timedx=100)set_timedx=1; /加到100置1sec_nb=set_timenb ; /設(shè)置的數(shù)值賦給東西南北sec_dx=set_timedx;void key_to2() /鍵盤處理子程序之-TR0=0; /關(guān)定時(shí)器if(set=0)set_timenb-; /南北減1Selseset_timedx-; /東西減1Sif(set_timenb=0)set_timenb=99;if(set_timedx=0 )set_timedx=99; /減到1重置99sec_nb=set_timenb; /設(shè)置的數(shù)值賦給東西南北sec_dx=set_timedx;void key_to3() /鍵盤處理之緊急車通行 TR0=0; P2=0Xc9; sec_dx=00; sec_nb=00; Buzzer_Indicate=1;void int0(void) interrupt 0 using 1 /只允許東西通行TR0=0;P2=0Xc3;Buzzer_Indicate=0;sec_dx=00;sec_nb=00;void int1(void) interrupt 2 using 1 /只允許南北通行 TR0=0;P2=0X99;Buzzer_Indicate=0;sec_nb=00;sec_dx=00;void logo()/開機(jī)的Logo - - - - for(n=0;n50;n+) P0=0x40; P1=0xfe;delay(1); P1=0xfd;dela
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)構(gòu)晚會活動(dòng)策劃方案
- 晉中特色活動(dòng)方案
- 智能春聯(lián)活動(dòng)方案
- 村公益志愿活動(dòng)方案
- 晚餐分享系列活動(dòng)方案
- 李滄區(qū)親子拓展活動(dòng)方案
- 機(jī)關(guān)清明踏青活動(dòng)方案
- 景區(qū)征名活動(dòng)方案
- 機(jī)關(guān)會議活動(dòng)方案
- 松江小公司年會策劃方案
- 本草食養(yǎng):養(yǎng)生藥膳餐廳商業(yè)計(jì)劃書
- 2025至2030石墨電極行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 2024-2025學(xué)年山東省濟(jì)南市市中區(qū)八年級(下)期末數(shù)學(xué)試卷(含解析)
- 2025年七一黨課-作風(fēng)建設(shè)永遠(yuǎn)在路上學(xué)習(xí)教育黨課
- 2025年高考數(shù)學(xué)全國二卷試題真題及答案詳解(精校打?。?/a>
- 《公路橋梁預(yù)應(yīng)力鋼絞線用錨具夾具和連接器 JTT 329-2025》知識培訓(xùn)
- 山東省2024年藝術(shù)類本科批美術(shù)與設(shè)計(jì)類第1次志愿投檔情況表(公布)
- 2025年江蘇省惠隆資產(chǎn)管理有限公司招聘筆試參考題庫含答案解析
- (正式版)SHT 3075-2024 石油化工鋼制壓力容器材料選用規(guī)范
- 人教版高一數(shù)學(xué)必修1課件【全冊】
- 反習(xí)慣性違章重在班組長
評論
0/150
提交評論