資源簡介
簡單的單片機交通燈
包含程序+proteus仿真
系統實現的功能:系統電路上電后
(一)東西方向顯示綠燈時,南北方向顯示紅燈,持續20秒鐘后,綠燈變為黃燈并持續3秒鐘;
(二)然后東西方向顯示紅燈,南北方向顯示綠燈,持續20秒鐘后,綠燈變黃燈并持續3秒鐘,然后循環反復。
包含程序+proteus仿真
系統實現的功能:系統電路上電后
(一)東西方向顯示綠燈時,南北方向顯示紅燈,持續20秒鐘后,綠燈變為黃燈并持續3秒鐘;
(二)然后東西方向顯示紅燈,南北方向顯示綠燈,持續20秒鐘后,綠燈變黃燈并持續3秒鐘,然后循環反復。

代碼片段和文件信息
#include
#include
#define?uint?unsigned?int
#define?uchar?unsigned?char???//定義數據類型
uchar?aa;
uint?a;
??sbit?GREEN_dx=P1^1;??????????//定義紅綠燈
??sbit?YELLOW_dx=P1^2;
??sbit?RED_dx=P1^3;
??sbit?GREEN_nb=P1^5;
??sbit?YELLOW_nb=P1^6;
sbit?RED_nb=P1^7;???????????????
sbit?shi=P3^6;????????????????//十位個位
sbit?ge=P3^7;????????????????????????????
bit?flag=0;
uchar?code?table[]={
0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x71};?????????//共陰極數碼管顯示1-16
void?delay(uint?z);
void?disp(uint?n);
void?nb_flash(void);
void?dx_flash(void);
void?nanbei();
void?dongxi();?
void?main()
{
uint?num;
num=0;
aa=0;
TMOD=0x01;???????????//定時器T0為方式一
TH0=(65536-50000)/256;?//設置定時器初值,高八位
TL0=(65536-50000)%256;?//低八位
EA=1;??????????//總中斷允許
ET0=1;?????????//定時器T0允許溢出中斷
TR0=1;?????????//啟動定時器計數
????
while(1)????????//循環等待
{
dongxi();??//東西綠燈,南北紅燈
??????dx_flash();//東西黃燈,南北紅燈
nanbei(); //東西紅燈,南北綠燈
nb_flash();//東西紅燈,南北黃燈
????????}
}
void?delay(uint?z)????????????????//延時函數??
{
uint?xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void?timer0()?interrupt?1???//定時器T0?????????
{
TH0=(65536-50000)/256;?//方式一重新賦初值
TL0=(65536-50000)%256;
aa++;//中斷次數加一
if(aa==20)
{
aa=0;
flag=1;
}
TR0=1;?????????//啟動定時器計數
}
void?disp(uint?n)?????????????//????數碼管顯示函數??共陰極
{
??while(!flag)
??{
??ge=0;??????????????//打開位選
??P0=table[n%10];????//個位
??delay(50);?????????//延時
??shi=1;ge=1;????????//關閉位選
??shi=0;
??P0=table[n/10];
??delay(50);
??shi=1;
???}
??if(flag==1)
?????flag=0;
}
void?nanbei()??????????//南北顯示函數
{ uint?num;
? num=20;???????????//賦初值
while(num<=20&&num>0)
{ ??
disp(num);?????//顯示num
num--;?????????
RED_dx=1;YELLOW_dx=0;?GREEN_dx=0;RED_nb=0;YELLOW_nb=0;?GREEN_nb=1;//東西紅南北綠
}
}
void?dongxi()??????????
{ uint?num;
? num=20;
while(num<=20&&num>0)
{ ??
disp(num);
num--;
RED_dx=0;YELLOW_dx=0;?GREEN_dx=1;RED_nb=1;YELLOW_nb=0;?GREEN_nb=0;//東西綠南北紅
}
}
void?nb_flash(void)????????????
{
uint?a;
for(a=3;a>0;a--)//南北黃燈倒計時3s
{ RED_dx=1;YELLOW_dx=0;?GREEN_dx=0;RED_nb=0;YELLOW_nb=1;?GREEN_nb=0;//南北黃
?disp(a);
}
}
void?dx_flash(void)??????????????
{
uint?a;
for(a=3;a>0;a--)//東西黃燈倒計時3s
{ ?
RED_dx=0;YELLOW_dx=1;?GREEN_dx=0;RED_nb=1;YELLOW_nb=0;?GREEN_nb=0;//東西黃
?disp(a);
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????20581??2020-03-04?21:12??Backup?Of?jtd.pdsbak
?????文件????????2769??2020-03-04?21:12??cx507.c
?????文件????????5932??2020-03-04?21:12??cx507.LST
?????文件????????7664??2020-03-04?21:12??cx507.OBJ
?????文件?????????933??2020-03-04?21:12??jtd.build_log.htm
?????文件????????1945??2020-03-04?21:12??jtd.hex
?????文件??????????25??2020-03-04?21:12??jtd.lnp
?????文件????????9899??2020-03-04?21:12??jtd.M51
?????文件???????20737??2020-03-04?21:12??jtd.pdsprj
?????文件????????2243??2020-03-05?16:05??jtd.pdsprj.DESKTOP-3DCG46F.dell.workspace
?????文件????????1183??2020-03-04?21:12??jtd.plg
?????文件???????????0??2020-03-04?21:12??jtd.uv2.bak
?????文件??????137737??2020-03-05?16:13??jtd.uvgui.dell
?????文件????????9845??2020-03-05?16:13??jtd.uvopt
?????文件???????13839??2020-03-05?16:13??jtd.uvproj
評論
共有 條評論