标题:
简单单片机交通灯控制程序及讲解
[打印本页]
作者:
leng
时间:
2019-3-1 10:07
标题:
简单单片机交通灯控制程序及讲解
位定义是依次定义适用的 便于在后面控制时候使用,思路是基于点亮LED的高低电平控制,所使用的开发板默认都有上拉电阻,所以底电位亮灯。延时程序使用小精灵自动生成,极大地提高效率,通过在main之前定义编辑后直接调用 结构极大地简化,也便于明了的修改
#include "reg52.h"
typedef unsigned char u8 ; //定义变量参//
typedef unsigned int u16 ;
sbit D1=P0^0; //A方向行道红灯
sbit D2=P0^1;//A方向行道绿灯
sbit D3=P0^2;//A方向红灯
sbit D4=P0^3; //A方向黄灯
sbit D5=P0^4; //A方向绿灯
sbit D6=P0^5; //B方向红灯
sbit D7=P0^6; //B方向黄灯
sbit D8=P0^7; //B方向绿灯
sbit D9=P2^0; //B方向行道红灯
sbit D0=P2^1; //B方向行道绿灯
void delay5s() //误差 0us
{
unsigned char a,b,c;
for(c=165;c>0;c--)
for(b=100;b>0;b--)
for(a=150;a>0;a--);
}
void delay30s() //误差 0us
{
unsigned char a,b,c,n;
for(c=254;c>0;c--)
for(b=232;b>0;b--)
for(a=253;a>0;a--);
for(n=2440;n>0;n--);
}
void jiaotongdeng()
{
D1=0;D2=1;D3=0;D4=1;D5=1;D6=1;D7=1;D8=0;D9=1;D0=0;
delay30s();
D1=0;D2=1;D3=1;D4=~D4;D5=1;D6=1;D7=~D7;D8=1;D9=1;D0=~D0;
delay5s();
D1=1;D2=0;D3=1;D4=1;D5=0;D6=0;D7=1;D8=1;D9=0;D0=1;
delay30s();
D1=0;D2=1;D3=1;D4=~D4;D5=1;D6=1;D7=~D7;D8=1;D9=1;D0=~D0;
delay5s();
}
void main()
{
while(1)
{
jiaotongdeng();
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1