问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求单片机交通灯控制系统设计的程序(最后有中文解析)

发布网友 发布时间:2022-09-25 02:32

我来回答

5个回答

热心网友 时间:2023-09-15 03:48

要求:
1、一路延时60S,
一路延时40S
(演示时为节省时间,一路延时15S,一路延时10S>>
两路时间分别用不同的数码管显示;
--相同的,即可。
--比如:
--东西绿灯、南北红灯,两个方向的数字显示,都是60s倒计时。
--东西红灯、南北绿灯,两个方向的数字显示,都是40s倒计时。

--两路时间虽然不同,数码管显示应该是相同的,完全可以用一组数码管显示。

2.紧急通行控制,如某一方向现为红灯,通过按键强行切换为绿灯,而另一路改为红灯,延时若干秒(10S)后,恢复原状态(红灯)继续倒数
--不应恢复原状态。
--比如:
--东西绿灯、南北红灯,两个方向的数字显示,都是60s倒计时。

--在 59s 时,即仅仅剩下 1s 时,被强制转换了红绿灯。

--那么 10s 后,再恢复原状态 ?
--原状态,仅仅有 1s,还恢复它干什么 ?
--这时间,可能,都不够汽车起步用的。

--恢复原来的半截状态,显然不合理。

热心网友 时间:2023-09-15 03:48

要求:
1、一路延时60S,
一路延时40S
(演示时为节省时间,一路延时15S,一路延时10S>>
两路时间分别用不同的数码管显示;
--相同的,即可。
--比如:
--东西绿灯、南北红灯,两个方向的数字显示,都是60s倒计时。
--东西红灯、南北绿灯,两个方向的数字显示,都是40s倒计时。

--两路时间虽然不同,数码管显示应该是相同的,完全可以用一组数码管显示。

2.紧急通行控制,如某一方向现为红灯,通过按键强行切换为绿灯,而另一路改为红灯,延时若干秒(10S)后,恢复原状态(红灯)继续倒数
--不应恢复原状态。
--比如:
--东西绿灯、南北红灯,两个方向的数字显示,都是60s倒计时。

--在 59s 时,即仅仅剩下 1s 时,被强制转换了红绿灯。

--那么 10s 后,再恢复原状态 ?
--原状态,仅仅有 1s,还恢复它干什么 ?
--这时间,可能,都不够汽车起步用的。

--恢复原来的半截状态,显然不合理。

热心网友 时间:2023-09-15 03:49

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit EW_led_green =P1^0;
sbit EW_led_yellow =P1^1;
sbit EW_led_red =P1^2;

sbit NS_led_green =P1^3;
sbit NS_led_yellow =P1^4;
sbit NS_led_red =P1^5;

sbit wela1 =P0^7;
sbit wela2 =P0^6;
sbit wela3 =P0^5;
sbit wela4 =P0^4;

uchar count=0;
uchar count1=0;
uchar Y;
uchar num;
uchar num2=0;
uchar r=15;
uchar l=10;
uchar a=4;
uchar flag=0;
uchar temp=0;
uchar times;
uchar timet;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delayms(uint z)//毫秒延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
TMOD =0x11;//定时器0,1方式1
TH0 =(65536-45872)/256; //初值50ms
TL0 =(65536-45872)%256;
TH1 =(65536-45872)/256; //初值50ms
TL1 =(65536-45872)%256;
EA =1;
ET0 =1;
ET1 =1;
EX0 =1;//外部中断0
IT0 =1;//外部中断0下降沿触发
TR0 =0;
TR1 =0;
}
void EW_display(uchar x)//东西数码管显示函数
{
uchar s,g;
s=x/10;
g=x%10;

wela3=0;
wela4=1;
wela1=1;
wela2=1;
P2=table[s];
delayms(5);

wela4=0;
wela3=1;
wela1=1;
wela2=1;
P2=table[g];
delayms(5);
}
void NS_display(uchar x)//南北数码管显示函数
{
uchar s,g;
s=x/10;
g=x%10;

wela1=0;
wela2=1;
wela3=1;
wela4=1;
P2=table[s];
delayms(5);

wela2=0;
wela1=1;
wela3=1;
wela4=1;
P2=table[g];
delayms(5);
}
void led_off()
{
NS_led_red =1;
NS_led_yellow =1;
NS_led_green =1;

EW_led_red =1;
EW_led_yellow =1;
EW_led_green =1;
}
void led_on()
{
NS_led_red =0;
NS_led_yellow =0;
NS_led_green =0;

EW_led_red =0;
EW_led_yellow =0;
EW_led_green =0;
}
void led_sw()
{
//while(num2)
//{
num=r;
delayms(10);
while(num)
{
//东西方外部中断处理函数
while(temp)
{
if(temp==1)
{
TR0 =0;
TR1 =0;
times =num;
delayms(5);
timet =Y;
num =10;
temp =2;
}
led_off();
NS_led_green =0;
EW_led_red =0;

TR0=1;
NS_display(num);
EW_display(num);
if(num==0)
{
TR0=0;
num=times;
delayms(5);
temp=0;
}
}
//东西方交通灯处理函数
Y=a;
flag=0;
TR0=1;
NS_led_yellow =1;
NS_led_green =1;

EW_led_red =1;
EW_led_yellow =1;

EW_led_green=0;
NS_led_red=0;
EW_display(num-Y);
NS_display(num);
if((num-Y)==0)
{
TR1=1;
while(Y)
{
//东西方外部中断处理函数
while(temp)
{
if(temp==1)
{
TR0 =0;
TR1 =0;
times =num;
delayms(5);
timet =Y;
num =10;
temp =2;
}
led_off();
NS_led_green =0;
EW_led_red =0;

TR0=1;
NS_display(num);
EW_display(num);
if(num==0)
{
TR0=0;
led_off();
NS_led_red=0;
Y=timet;
TR1=1;
temp=0;
}
}
//东西方交通灯处理函数
EW_led_green=1;
EW_display(Y);
NS_display(Y);
}
}
}
if(num==0)
num=l;
delayms(10);
while(num)
{
//南北方外部中断处理函数
while(temp)
{
if(temp==1)
{
TR0 =0;
TR1 =0;
times =num;
delayms(5);
timet =Y;
num =10;
temp =2;
}
led_off();
NS_led_red =0;
EW_led_green =0;

TR0=1;
NS_display(num);
EW_display(num);
if(num==0)
{
TR0=0;
num=times;
delayms(5);
temp=0;
}
}
//南北方交通灯处理函数
Y=a;
flag=1;
TR0=1;
NS_led_yellow =1;
NS_led_red =1;

EW_led_yellow =1;
EW_led_green =1;

EW_led_red=0;
NS_led_green=0;
EW_display(num);
NS_display(num-Y);
if((num-Y)==0)
{
TR1=1;
while(Y)
{
//南北方外部中断处理函数
while(temp)
{
if(temp==1)
{
TR0 =0;
TR1 =0;
times =num;
delayms(5);
timet =Y;
num =10;
temp =2;
}
led_off();
NS_led_red =0;
EW_led_green =0;

TR0=1;
NS_display(num);
EW_display(num);
if(num==0)
{
TR0=0;
led_off();
EW_led_red=0;
Y=timet;
TR1=1;
temp=0;
}
}
//南北方交通灯处理函数
NS_led_green=1;
EW_display(Y);
NS_display(Y);
}
}
}
//}
}

热心网友 时间:2023-09-15 03:49

我这个是用FPGA做的,里面有注解你可以参考一下

热心网友 时间:2023-09-15 03:49

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit EW_led_green =P1^0;
sbit EW_led_yellow =P1^1;
sbit EW_led_red =P1^2;

sbit NS_led_green =P1^3;
sbit NS_led_yellow =P1^4;
sbit NS_led_red =P1^5;

sbit wela1 =P0^7;
sbit wela2 =P0^6;
sbit wela3 =P0^5;
sbit wela4 =P0^4;

uchar count=0;
uchar count1=0;
uchar Y;
uchar num;
uchar num2=0;
uchar r=15;
uchar l=10;
uchar a=4;
uchar flag=0;
uchar temp=0;
uchar times;
uchar timet;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delayms(uint z)//毫秒延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
TMOD =0x11;//定时器0,1方式1
TH0 =(65536-45872)/256; //初值50ms
TL0 =(65536-45872)%256;
TH1 =(65536-45872)/256; //初值50ms
TL1 =(65536-45872)%256;
EA =1;
ET0 =1;
ET1 =1;
EX0 =1;//外部中断0
IT0 =1;//外部中断0下降沿触发
TR0 =0;
TR1 =0;
}
void EW_display(uchar x)//东西数码管显示函数
{
uchar s,g;
s=x/10;
g=x%10;

wela3=0;
wela4=1;
wela1=1;
wela2=1;
P2=table[s];
delayms(5);

wela4=0;
wela3=1;
wela1=1;
wela2=1;
P2=table[g];
delayms(5);
}
void NS_display(uchar x)//南北数码管显示函数
{
uchar s,g;
s=x/10;
g=x%10;

wela1=0;
wela2=1;
wela3=1;
wela4=1;
P2=table[s];
delayms(5);

wela2=0;
wela1=1;
wela3=1;
wela4=1;
P2=table[g];
delayms(5);
}
void led_off()
{
NS_led_red =1;
NS_led_yellow =1;
NS_led_green =1;

EW_led_red =1;
EW_led_yellow =1;
EW_led_green =1;
}
void led_on()
{
NS_led_red =0;
NS_led_yellow =0;
NS_led_green =0;

EW_led_red =0;
EW_led_yellow =0;
EW_led_green =0;
}
void led_sw()
{
//while(num2)
//{
num=r;
delayms(10);
while(num)
{
//东西方外部中断处理函数
while(temp)
{
if(temp==1)
{
TR0 =0;
TR1 =0;
times =num;
delayms(5);
timet =Y;
num =10;
temp =2;
}
led_off();
NS_led_green =0;
EW_led_red =0;

TR0=1;
NS_display(num);
EW_display(num);
if(num==0)
{
TR0=0;
num=times;
delayms(5);
temp=0;
}
}
//东西方交通灯处理函数
Y=a;
flag=0;
TR0=1;
NS_led_yellow =1;
NS_led_green =1;

EW_led_red =1;
EW_led_yellow =1;

EW_led_green=0;
NS_led_red=0;
EW_display(num-Y);
NS_display(num);
if((num-Y)==0)
{
TR1=1;
while(Y)
{
//东西方外部中断处理函数
while(temp)
{
if(temp==1)
{
TR0 =0;
TR1 =0;
times =num;
delayms(5);
timet =Y;
num =10;
temp =2;
}
led_off();
NS_led_green =0;
EW_led_red =0;

TR0=1;
NS_display(num);
EW_display(num);
if(num==0)
{
TR0=0;
led_off();
NS_led_red=0;
Y=timet;
TR1=1;
temp=0;
}
}
//东西方交通灯处理函数
EW_led_green=1;
EW_display(Y);
NS_display(Y);
}
}
}
if(num==0)
num=l;
delayms(10);
while(num)
{
//南北方外部中断处理函数
while(temp)
{
if(temp==1)
{
TR0 =0;
TR1 =0;
times =num;
delayms(5);
timet =Y;
num =10;
temp =2;
}
led_off();
NS_led_red =0;
EW_led_green =0;

TR0=1;
NS_display(num);
EW_display(num);
if(num==0)
{
TR0=0;
num=times;
delayms(5);
temp=0;
}
}
//南北方交通灯处理函数
Y=a;
flag=1;
TR0=1;
NS_led_yellow =1;
NS_led_red =1;

EW_led_yellow =1;
EW_led_green =1;

EW_led_red=0;
NS_led_green=0;
EW_display(num);
NS_display(num-Y);
if((num-Y)==0)
{
TR1=1;
while(Y)
{
//南北方外部中断处理函数
while(temp)
{
if(temp==1)
{
TR0 =0;
TR1 =0;
times =num;
delayms(5);
timet =Y;
num =10;
temp =2;
}
led_off();
NS_led_red =0;
EW_led_green =0;

TR0=1;
NS_display(num);
EW_display(num);
if(num==0)
{
TR0=0;
led_off();
EW_led_red=0;
Y=timet;
TR1=1;
temp=0;
}
}
//南北方交通灯处理函数
NS_led_green=1;
EW_display(Y);
NS_display(Y);
}
}
}
//}
}

热心网友 时间:2023-09-15 03:50

可以看看仿真实例,试试。

热心网友 时间:2023-09-15 03:49

我这个是用FPGA做的,里面有注解你可以参考一下

热心网友 时间:2023-09-15 03:51

http://wenku.baidu.com/view/a8e3e18e8762caaedd33d471.html
看看这个,给分吧

热心网友 时间:2023-09-15 03:50

可以看看仿真实例,试试。

热心网友 时间:2023-09-15 03:51

http://wenku.baidu.com/view/a8e3e18e8762caaedd33d471.html
看看这个,给分吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新生儿脐疝的诊断与鉴别 小儿脐疝发病原因 导致新生儿脐疝发作的原因有哪些? 腾讯视频2023年10月24日免费会员账号分享-腾讯视频2023年10月24日免 ... 百度网盘激活码免费领取2024 百度网盘激活码免费领取最新分享 我是男生 今年18周岁 我身高172是不是完蛋了 我还会长吗? 估计还能长... 开荒保洁一平米多少钱 物业开荒费用包括哪些 公司保洁开荒多少钱一平 开封灌汤包哪家正宗 开封哪家灌汤包最好吃 大叶绿宝石的养殖方法 家庭养殖绿宝石花的方法 看懂linux内核要花多长时间 如何在内核中获取当前时间(UTC 滹沱河岸在哪里 滹沱河岸的位置 滹沱河景点在哪里 滹沱河在什么地方 求心金的字符修改器,就是能改中文名字的lacrimosamoskau@126.com 发我邮箱 急急急啊 汽车上最多有几个气囊? 瑞舒伐他汀钙片? i5 530m+昂达H55T+胜创 ddr3 1333鲁大师打分1300多分 这个配置怎么样 是不是头重脚轻的感觉? 我一个月前买的笔记本 华硕A42J 系列 。。 酷睿I5 530M处理器。 显卡是335M 显存是1G 500G硬盘 2G内存。。 王者荣耀杨玉环贵妃醉酒作者 英雄杀中杨玉环说的是什么诗? 王者荣耀里杨玉环的口号云想衣裳花想容 ,说的是什么 公众号怎么发表文章 公众号如何发表文章 “善后大借款”是谁借给谁 中国的邻国都有哪些? 故障灯亮了是怎么回事? 中国有那些邻国? 用PLC编个自动交通灯控制系统程序 三菱PLC-FX系列 PID压力控制系统,求程序? 《网络直播营销管理办法(试行)》对直播间运营者和直播营销人员的直播营销行为划出哪8条红线? 康佳电视无信号怎么调回来 康佳电视无信号如何调回来 康佳电视突然没信号是怎么回事? 桃胶隔多久吃一次 吃桃胶哪些事项是要注意的 桃胶多久吃一次 冬天可以快速的做什么早餐 别人为什么要用企业加我和我聊天? 女生用企业微信和我聊天说明什么? 微信怎么建立新群 微信建立新群的操作方法 创业风险的类型和规避方法 泡菜里加木耳和大蒜可以吗 驾驶证注销可恢复可以异地考科目一吗 先快走30分钟在慢跑30分钟和直接慢跑40分钟哪个减肥效果更快 快走二十分钟+慢跑二十分钟和全程慢跑四十分钟的减肥效果一样吗? iphone电信卡贴 卡贴怎么弄? 帮吕丽芳娶个外号 生活百科知识