資源描述:
《51單片機用c語言實現(xiàn)交通燈(紅綠燈)源程序》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、51單片機用C語言實現(xiàn)交通燈(紅綠燈)源程序2009-10-2923:00交通燈,紅黃綠燈交替亮,怎樣實現(xiàn)呢?其實就是根據(jù)單片機定時器及倒計時的程序修改。源程序如下:/*1、程序目的:使用定時器學(xué)習(xí)倒計時紅綠燈原理主要程序和倒計時一樣2、硬件要求:數(shù)碼管、晶振12M*/#includebitred,green,yellow,turnred;?????????//定義紅、黃、綠及轉(zhuǎn)紅標(biāo)志codeunsignedchartab[]=???{0x3f,0x06,0x5b,0x4f,0x
2、66,0x6d,0x7d,0x07,0x7f,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-1
4、0000=55535=D8F0(十六進制)TL0=0xf0;IE=0x82;//中斷控制,EA=1開總中斷,ET0=1:定時器0中斷允許TR0=1;???//開定時器0中斷P1=0xfc;//紅燈亮,根據(jù)紅黃綠接燈的順序。red=1;while(1){P0=Dis_Shiwei;//顯示十位,這里實現(xiàn)用8位數(shù)碼管,即左1位P2=0;delay(300);//短暫延時P0=Dis_Gewei;//顯示個位,左數(shù),2位P2=1;delay(300);}}/***********************
5、*********//*?????定時中斷???????????????*//********************************/voidtim(void)interrupt1using1{staticunsignedcharsecond=60,count;//初值60TH0=0xd8;//重新賦值,10毫秒定時TL0=0xf0;count++;if(count==100)???{???count=0;???second--;//秒減1if(second==0)???{//這里添加定
6、時到0的代碼,可以是燈電路,繼電器吸合等,或者執(zhí)行一個程序??????if(red)??//紅滅,先轉(zhuǎn)黃?????{???red=0;yellow=1;?????????second=4;???P1=0xF3;//黃燈亮4秒,黃燈為過渡燈,再根據(jù)情況轉(zhuǎn)綠或轉(zhuǎn)紅??}???elseif(yellow&&!turnred)?????{???yellow=0;green=1;?????????second=25;???P1=0xCF;//綠燈亮25秒,??}???elseif(green)?????{?
7、?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[second/10];//十位顯示值處理???
8、Dis_Gewei=tab[second%10];//個位顯示處理開始延時3s程序流程圖:輸出red(縱)yellow(橫)清屏延時30s輸出red(縱)green(橫)清屏延時3s輸出yellow(縱)red(橫)清屏延時30sTrue=1輸出green(縱)red(橫)清屏Y結(jié)束N算法描述:1、定義green函數(shù)(清屏顯示(縱==green橫==red延時30s)定義red函數(shù)(清屏顯示(橫==green縱==red)延時30s)定義yellow1yellow2函數(shù)(清屏顯示延時3s)2、建立
9、循環(huán):調(diào)用green函數(shù)3、調(diào)用yellow1函數(shù)4、調(diào)用red函數(shù)5、調(diào)用yellow2函數(shù)6、返回繼續(xù)循環(huán)執(zhí)行。源程序代碼:#include#include#includevoidgreen(){system("cls");printf("縱==green橫==red");Sleep(30000);}voidred(){system("cls");printf("縱==red橫==green");Sleep(30000