51单片机自学--交通红绿灯模拟

51单片机自学--交通红绿灯模拟(黄灯闪烁与不闪两种模式)

ABC东西红黄绿DEF南北红黄绿S时间K选择模式

或许看这文章的是初学者,有些话还是要说的,就是要使用本代码,需要把对应的端口进行更改为你连接的IO端口,就能直接使用本代码运行,看到运行效果了。

如:我这里定义自己板上接LED的端口

sbit DongXi_Hong = P2^2;//东西向红灯 
sbit DongXi_Huan = P2^3;//东西向黄灯  
sbit DongXi_Lv   = P2^4;//东西向绿灯
sbit NanBei_Hong = P2^5;//南北向红灯
sbit NanBei_Huan = P2^6;//南北向黄灯 
sbit NanBei_Lv   = P2^7;//南北向绿灯

初学者一时不熟悉改如何使用本代码,这是只要把你的LED灯接在哪个IO口就改为哪个端口即可,假如说你的LED接在P0口,那么,改为如下即可:

sbit DongXi_Hong = P0^2;//东西向红灯 
sbit DongXi_Huan = P0^3;//东西向黄灯  
sbit DongXi_Lv   = P0^4;//东西向绿灯
sbit NanBei_Hong = P0^5;//南北向红灯
sbit NanBei_Huan = P0^6;//南北向黄灯 
sbit NanBei_Lv   = P0^7;//南北向绿灯

其它的代码不用改就可以了。

示例视频链接:https://pan.baidu.com/s/1B2H5imR9lJVAZ1dG-NpBlg 密码:qrim

 

非常灵活任意编排出各种状态,很好用简单的代码。

#include"ShuJu_LeiXin.H" /*头文件,数据类型定义*/
sbit DongXi_Hong = P2^2;//东西向红灯 
sbit DongXi_Huan = P2^3;//东西向黄灯  
sbit DongXi_Lv   = P2^4;//东西向绿灯
sbit NanBei_Hong = P2^5;//南北向红灯
sbit NanBei_Huan = P2^6;//南北向黄灯 
sbit NanBei_Lv   = P2^7;//南北向绿灯
bit KB=1, KE=1;
void HongLvDen(U8 A, U8 B, U8 C, U8 D, U8 E, U8 F, U8 S, U8 KB, U8 KE)
{ 
U8 ShiJian=S*4;
 do
 {  
DongXi_Hong = A;  
DongXi_Huan = KB?~DongXi_Huan:B;  
DongXi_Lv = C;
NanBei_Hong = D;  
NanBei_Huan = KE?~NanBei_Huan:E;  
NanBei_Lv = F;  
YanShiMs(250); 
}
while(ShiJian--); 
}
void main(){ 
while(1) 
{  
HongLvDen(0, 1, 1, 1, 1, 0, 2, 0, 0);  
HongLvDen(0, 0, 1, 1, 1, 0, 2, KB, 0);   
HongLvDen(1, 1, 0, 0, 1, 1, 2, 0, 0);  
HongLvDen(1, 1, 0, 0, 0, 1, 2, 0, KE);  
KB=~KB; 
KE=~KE;
}
}

 


 

 

 

 

  



  


 

 



观察十字路口红绿灯工作流程,设计交通灯。 1、初始时:南北向、东西向直行左转均为红灯 2、南北向直行: ①南北向直行绿灯亮,延时若干秒 ②启动南北向左转数码管显示:倒计时6秒;同时南北向直行绿灯闪烁3下,灭亮灭亮灭亮共3秒,然后南北向直行绿灯灭,南北向直行黄灯亮,延时3秒 ③南北向左转数码管倒计时显示结束,关闭;同时南北向直行黄灯灭,南北向直行红灯亮 3、南北向左转: ①南北向左转绿灯亮,延时若干秒 ②启动东西向直行数码管显示:倒计时6秒;同时南北向左转绿灯闪烁3下,灭亮灭亮灭亮共3秒,然后南北向左转绿灯灭,南北向左转黄灯亮,延时3秒 ③东西向直行数码管倒计时显示结束,关闭;同时南北向左转黄灯灭,南北向左转红灯亮 4、东西向直行: ①东西向直行绿灯亮,延时若干秒 ②启动东西向左转数码管显示:倒计时6秒;同时东西向直行绿灯闪烁3下,灭亮灭亮灭亮共3秒,然后东西向直行绿灯灭,东西向直行黄灯亮,延时3秒 ③东西向左转数码管倒计时显示结束,关闭;同时东西向直行黄灯灭,东西向直行红灯亮 5、东西向左转: ①东西向左转绿灯亮,延时若干秒 ②启动南北向直行数码管显示:倒计时6秒;同时东西向左转绿灯闪烁3下,灭亮灭亮灭亮共3秒,然后东西向左转绿灯灭,东西向左转黄灯亮,延时3秒 ③南北向直行数码管倒计时显示结束,关闭;同时东西向左转黄灯灭,东西向左转红灯亮
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值