已閱讀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ì)題目。做而論道以前寫過一個,功能十分簡單。最近,綜合了一些百度知道中的題目要求,寫出了一個稍稍復(fù)雜一點(diǎn)設(shè)計(jì)方案,使用了大家比較喜歡的C語言編寫程序?;竟δ苋缦拢?1)東西、南北方向各設(shè)有一個綠、黃、紅指示燈,兩個顯示數(shù)碼管。(2)兩個方向交替允許通行,基本放行時間為25s,另外有黃燈閃爍5s。(3)控制人員可以暫停自動的交替,使某個方向可以無限長時間的通行。(4)暫停期間,控制人員可以調(diào)整通行的時間,程序中還設(shè)置了調(diào)整的上下限。(5)暫停之后,燈光將按照設(shè)置的通行時間自動變換通行方向。(6)在正常通行期間,可以強(qiáng)制變換通行方向。強(qiáng)制變換的時候,也是要先顯示閃爍的黃燈,然后切換到指定的方向。程序用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ù)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)時方向切換鍵標(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);/延時子程序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; /啟動定時器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位 東西秒個位buf3=sec_nb/10; /第3位 南北秒十位buf0=sec_nb%10; /第4位 南北秒個位 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 /定時中斷子程序b+;if(b=19) / 定時器中斷次數(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)定時器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)定時器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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025四川建筑安全員-B證考試題庫附答案
- 2025天津市安全員《A證》考試題庫及答案
- 《it推動商業(yè)變革》課件
- 大匠文化精神課件(增)
- 多項(xiàng)式與多項(xiàng)式相乘的課件
- 【物理課件】測定金屬的電阻率 練習(xí)使用螺旋測微器課件
- 江蘇省無錫市2024-2025學(xué)年高二上學(xué)期期終教學(xué)質(zhì)量調(diào)研測試歷史試卷(含答案)
- 單位管理制度展示大全【職員管理】十篇
- 單位管理制度收錄大全【員工管理】十篇
- 單位管理制度收錄大合集人事管理篇
- 青島版四年級上冊簡便計(jì)算400道及答案
- 員工積分制管理實(shí)施方案細(xì)則
- 和員工簽股權(quán)合同范本
- 大灣區(qū)2023一2024學(xué)年第一學(xué)期末普通高中一年級聯(lián)合考試地理附有答案
- 07FD02 防空地下室電氣設(shè)備安裝
- 美的簡單高效的管理邏輯
- 魯科版小學(xué)英語三年級下冊全冊教案
- 《工程倫理》題集
- 江蘇2024年江蘇省新聞出版學(xué)校招聘人員筆試歷年典型考題及考點(diǎn)附答案解析
- 四川省成都市2023-2024學(xué)年高二歷史上學(xué)期期末聯(lián)考試題
- 醫(yī)院精神科住院醫(yī)師病歷書寫考核評分表
評論
0/150
提交評論