




已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于51單片機(jī)的交通燈C語(yǔ)言程序設(shè)計(jì)2011-05-07 07:57十字交叉路口的交通燈控制器,是很常見(jiàn)的課程設(shè)計(jì)題目。做而論道以前寫(xiě)過(guò)一個(gè),功能十分簡(jiǎn)單。最近,綜合了一些百度知道中的題目要求,寫(xiě)出了一個(gè)稍稍復(fù)雜一點(diǎn)設(shè)計(jì)方案,使用了大家比較喜歡的C語(yǔ)言編寫(xiě)程序。基本功能如下:(1)東西、南北方向各設(shè)有一個(gè)綠、黃、紅指示燈,兩個(gè)顯示數(shù)碼管。(2)兩個(gè)方向交替允許通行,基本放行時(shí)間為25s,另外有黃燈閃爍5s。(3)控制人員可以暫停自動(dòng)的交替,使某個(gè)方向可以無(wú)限長(zhǎng)時(shí)間的通行。(4)暫停期間,控制人員可以調(diào)整通行的時(shí)間,程序中還設(shè)置了調(diào)整的上下限。(5)暫停之后,燈光將按照設(shè)置的通行時(shí)間自動(dòng)變換通行方向。(6)在正常通行期間,可以強(qiáng)制變換通行方向。強(qiáng)制變換的時(shí)候,也是要先顯示閃爍的黃燈,然后切換到指定的方向。程序用PROTEUS仿真成功,并沒(méi)有進(jìn)行硬件實(shí)驗(yàn)。仿真截圖畫(huà)面如下。C語(yǔ)言的控制程序如下:/-#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組開(kāi)關(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(); /開(kāi)機(jī)LOGOvoid Buzzer();/主程序void main()TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1; EX0=1;EX1=1; logo();P2=0Xc3;/ 開(kāi)始默認(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è)置過(guò)的數(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()/鍵盤(pán)處理子程序之+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() /鍵盤(pán)處理子程序之-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() /鍵盤(pán)處理之緊急車通行 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()/開(kāi)機(jī)的Logo - - - - for(n=0;n50;n+) P0=0x40; P1=0xfe;delay(1); P1=0xfd;dela
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)典模具設(shè)計(jì)師考試試題及答案
- 電梯設(shè)計(jì)安裝維保合同協(xié)議
- 疫情物資配送合同協(xié)議
- 生產(chǎn)活動(dòng)板房合同協(xié)議
- 足球裁判員技術(shù)培訓(xùn)試題及答案
- 珠寶供貨協(xié)議書(shū)范本
- 環(huán)衛(wèi)分包合同協(xié)議書(shū)范本
- 電源供應(yīng)合同協(xié)議版
- 留學(xué)服務(wù)傭金合同協(xié)議
- 用工安全合同協(xié)議格式
- 年產(chǎn)16.6萬(wàn)噸工業(yè)涂料用樹(shù)脂、2.8萬(wàn)噸裝配式建筑用硅烷改性膠粘劑用樹(shù)脂、2萬(wàn)噸高性能防水涂料用樹(shù)脂項(xiàng)目(一期)公眾參與說(shuō)明
- 員工食堂就餐協(xié)議書(shū)
- 創(chuàng)傷緊急救護(hù)知識(shí)課件
- 醫(yī)院?jiǎn)挝粏挝粌?nèi)部控制自我評(píng)價(jià)報(bào)告
- 湖北省第十屆湖北省高三(4月)調(diào)研模擬考試數(shù)學(xué)試題及答案
- 五一勞動(dòng)節(jié)前安全檢查重點(diǎn)
- 2025年03月廣東深圳市光明區(qū)科技創(chuàng)新局公開(kāi)招聘專干5人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 內(nèi)蒙古通遼市科左中旗實(shí)驗(yàn)小學(xué)2025屆數(shù)學(xué)三下期末質(zhì)量檢測(cè)試題含解析
- 高溫急救知識(shí)培訓(xùn)
- 學(xué)前教育學(xué) 課件 第1、2章 緒論;學(xué)前教育的目標(biāo)、內(nèi)容的方法
- 2025北京豐臺(tái)高三一模物理試題及答案
評(píng)論
0/150
提交評(píng)論