专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
求助用51单片机c语言编写一个交通灯的程序
2019-07-16 07:15
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
6106
4
1496
要求
红灯60s,黄灯20s,绿灯60s,黄灯20s
这样循环,我不知道该怎样在这三个灯之间转换?
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
SHENGTAILIE
2019-07-16 17:22
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit zhuy=P1^1;
sbit zhiy=P1^4;
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code trafficdate[]={0x22,0x0c,0x14,0x21};
uchar aa=0,flag;
uchar seczhu,seczhi,zhus,zhug,zhis,zhig;
void delay (uint z) //时间延迟函数
{
uint x,y;
for(x=z;x>0;x--)
for (y=120;y>0;y--);
}
void init()
{TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P1=0x21;
}
void display()
{zhus=seczhu/10;
zhug=seczhu%10;
zhis=seczhi/10;
zhig=seczhi%10;
P2=0xfe;
P0=table[zhus];
delay(5);
P2=0xfd;
P0=table[zhug];
delay(5);
P2=0xfb;
P0=table[zhis];
delay(5);
P2=0xf7;
P0=table[zhig];
delay(5);
}
void main (void)
{
uchar i;
seczhu=50;
seczhi=55;
EA=1;
init();
while (1)
{
switch(flag)
{
case 1: P1=0x22;
for(i=0;i<3;i++)
{
zhuy=~zhuy;
delay(140);
}
break;
case 2: P1=0x0c;
break;
case 3: P1=0x14;
for(i=0;i<3;i++)
{
zhiy=~zhiy;
delay(140);
}
break;
case 4: P1=0x21;
break;
}
}
}
void timer0() interrupt 1
{
aa++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(aa==20)
{
aa=0;
seczhu--;
seczhi--;
if((seczhu==0)&&(seczhi==5))
{
seczhu=5;
seczhi=5;
flag=1;
}
if((seczhu==0)&&(seczhi==0)&&(flag==1))
{
seczhu=35;
seczhi=30;
flag=2;
}
if((seczhu==5)&&(seczhi==0))
{
seczhu=5;
seczhi=5;
flag=3;
}
if((seczhu==0)&&(seczhi==0)&&(flag==3))
{
seczhu=50;
seczhi=55;
flag=4;
}
}
display();
}
加载中...
查看其它4个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#define uchar unsigned char
#define uint unsigned int
sbit zhuy=P1^1;
sbit zhiy=P1^4;
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code trafficdate[]={0x22,0x0c,0x14,0x21};
uchar aa=0,flag;
uchar seczhu,seczhi,zhus,zhug,zhis,zhig;
void delay (uint z) //时间延迟函数
{
uint x,y;
for(x=z;x>0;x--)
for (y=120;y>0;y--);
}
void init()
{TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P1=0x21;
}
void display()
{zhus=seczhu/10;
zhug=seczhu%10;
zhis=seczhi/10;
zhig=seczhi%10;
P2=0xfe;
P0=table[zhus];
delay(5);
P2=0xfd;
P0=table[zhug];
delay(5);
P2=0xfb;
P0=table[zhis];
delay(5);
P2=0xf7;
P0=table[zhig];
delay(5);
}
void main (void)
{
uchar i;
seczhu=50;
seczhi=55;
EA=1;
init();
while (1)
{
switch(flag)
{
case 1: P1=0x22;
for(i=0;i<3;i++)
{
zhuy=~zhuy;
delay(140);
}
break;
case 2: P1=0x0c;
break;
case 3: P1=0x14;
for(i=0;i<3;i++)
{
zhiy=~zhiy;
delay(140);
}
break;
case 4: P1=0x21;
break;
}
}
}
void timer0() interrupt 1
{
aa++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(aa==20)
{
aa=0;
seczhu--;
seczhi--;
if((seczhu==0)&&(seczhi==5))
{
seczhu=5;
seczhi=5;
flag=1;
}
if((seczhu==0)&&(seczhi==0)&&(flag==1))
{
seczhu=35;
seczhi=30;
flag=2;
}
if((seczhu==5)&&(seczhi==0))
{
seczhu=5;
seczhi=5;
flag=3;
}
if((seczhu==0)&&(seczhi==0)&&(flag==3))
{
seczhu=50;
seczhi=55;
flag=4;
}
}
display();
}
一周热门 更多>