資源描述:
《51單片機(jī)用C語言實(shí)現(xiàn)交通燈(紅綠燈)源程序.pdf》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、51單片機(jī)用C語言實(shí)現(xiàn)交通燈(紅綠燈)源程序2009-10-2923:00交通燈,紅黃綠燈交替亮,怎樣實(shí)現(xiàn)呢?其實(shí)就是根據(jù)單片機(jī)定時器及倒計時的程序修改。源程序如下:/*1、程序目的:使用定時器學(xué)習(xí)倒計時紅綠燈原理主要程序和倒計時一樣2、硬件要求:數(shù)碼管、晶振12M*/#includebitred,green,yellow,turnred;//定義紅、黃、綠及轉(zhuǎn)紅標(biāo)志codeunsignedchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f
2、,0x6f};//共陰數(shù)碼管0-9unsignedcharDis_Shiwei;//定義十位unsignedcharDis_Gewei;//定義個位voiddelay(unsignedintcnt)//用于動態(tài)掃描數(shù)碼管的延時程序{while(--cnt);}main(){TMOD
3、=0x01;//定時器設(shè)置10msin12Mcrystal定時器0,工作方式1,16位定時器TH0=0xd8;//65535-10000=55535=D8F0(十六進(jìn)制)TL0=0xf0;IE=0x82;//中斷控制,EA=1開總中斷,E
4、T0=1:定時器0中斷允許TR0=1;//開定時器0中斷P1=0xfc;//紅燈亮,根據(jù)紅黃綠接燈的順序。red=1;while(1){P0=Dis_Shiwei;//顯示十位,這里實(shí)現(xiàn)用8位數(shù)碼管,即左1位P2=0;delay(300);//短暫延時P0=Dis_Gewei;//顯示個位,左數(shù),2位P2=1;delay(300);}}/********************************//*定時中斷*//********************************/voidtim(void)int
5、errupt1using1{staticunsignedcharsecond=60,count;//初值60TH0=0xd8;//重新賦值,10毫秒定時TL0=0xf0;count++;if(count==100){count=0;second--;//秒減1if(second==0){//這里添加定時到0的代碼,可以是燈電路,繼電器吸合等,或者執(zhí)行一個程序if(red)//紅滅,先轉(zhuǎn)黃{red=0;yellow=1;second=4;P1=0xF3;//黃燈亮4秒,黃燈為過渡燈,再根據(jù)情況轉(zhuǎn)綠或轉(zhuǎn)紅}elseif(
6、yellow&&!turnred){yellow=0;green=1;second=25;P1=0xCF;//綠燈亮25秒,}elseif(green){yellow=1;green=0;second=4;P1=0xF3;//黃燈亮4秒turnred=1;}elseif(yellow&&turnred)//綠燈滅,轉(zhuǎn)黃燈,后紅燈,turnred=1時{red=1;yellow=0;P1=0xFC;//紅燈亮60秒second=60;turnred=0;//接下來是轉(zhuǎn)黃,綠。}}Dis_Shiwei=tab[secon
7、d/10];//十位顯示值處理Dis_Gewei=tab[second%10];//個位顯示處理