1
嵌入式设计应用
本文为大家带来三个关于LED模拟交通灯单片机C语言程序设计。
东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRED_A=P0^0;//东西向灯
sbitYELLOW_A=P0^1;
sbitGREEN_A=P0^2;
sbitRED_B=P0^3;//南北向灯
sbitYELLOW_B=P0^4;
sbitGREEN_B=P0^5;
ucharFlash_Count=0,Operation_Type=1;//闪烁次数,操作类型变量
//延时
voidDelayMS(uintx)
{
uchari;
}
while(x--)for(i=0;i《120;i++);
//交通灯切换
voidTraffic_Light()
{
switch(Operation_Type)
{
case1://东西向绿灯与南北向红灯亮
RED_A=1;YELLOW_A=1;GREEN_A=0;
RED_B=0;YELLOW_B=1;GREEN_B=1;
DelayMS(2000);
Operation_Type=2;
break;
case2://东西向黄灯闪烁,绿灯关闭
DelayMS(300);
YELLOW_A=~YELLOW_A;GREEN_A=1;
if(++Flash_Count!=10)return;//闪烁5次
Flash_Count=0;
Operation_Type=3;
break;
case3://东西向红灯,南北向绿灯亮
RED_A=0;YELLOW_A=1;GREEN_A=1;
RED_B=1;YELLOW_B=1;GREEN_B=0;
DelayMS(2000);
Operation_Type=4;
break;
case4://南北向黄灯闪烁5次
DelayMS(300);
YELLOW_B=~YELLOW_B;GREEN_B=1;
if(++Flash_Count!=10)return;
Flash_Count=0;
Operation_Type=1;
}
利用51单片机控制LED灯来模拟交通灯,通过控制时钟来控制LED
#include《reg51.h》
#defineucharunsignedchar
#defineuintunsignedint
sbitledns_re=P1^0;
sbitledns_ge=P1^1;
sbitledns_ye=P1^2;
sbitledwe_re=P1^3;
sbitledwe_ge=P1^4;
sbitledwe_ye=P1^5;
voiddelay(ucharz)
{
ucharx,y;
for(x=z;x》0;x--)
for(y=110;y》0;y--);
}
voidmain()
{
uinti;
while(1)
{
ledns_re=0;
ledwe_ge=0;
ledns_ye=1;
ledwe_ye=1;
for(i=0;i《50;i++)
{
delay(1000);
}
ledns_ye=0;
ledwe_ye=0;
ledns_re=1;
ledwe_ge=1;
for(i=0;i《10;i++)
{
delay(1000);
}
ledns_ge=0;
ledwe_re=0;
ledns_ye=1;
ledwe_ye=1;
for(i=0;i《30;i++)
{
delay(1000);
}
ledns_ye=0;
ledwe_ye=0;
ledns_ge=1;
ledwe_re=1;
for(i=0;i《10;i++)
{
delay(1000);
}
}
}
}
//主程序
voidmain()
{
while(1)Traffic_Light();
}
上电或按键复位后能自动显示系统提示符“d.1004-16”,进入准备工作状态。按开始键则开始工作,按结束键则返回“P.”状态。要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,并且1秒闪烁一次。有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。
pcb顶层图
pcb底层图
元件分布图
全部0条评论
快来发表一下你的评论吧 !