微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机控制交通灯c51程序

单片机控制交通灯c51程序

时间:11-15 来源:互联网 点击:

先上图


/*
程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。全部代码由http://www.51hei.com站长开发(由于站长对交通灯的规则不是特别了解,产生于事实冲突,敬请包涵)
*/
#includereg52.h> //头文件
#define uchar unsigned char//宏定义
#define uint unsigned int
uchar code table[]={0x00,0x01,0x02,0x03, //数码管显示的值
0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,
0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,
0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43,
0x44,0x45};
void delay(uint x)//延时子函数
{
  uint i,j;
  for(i=x;i>0;i--)
  for(j=500;j>0;j--);
}
void main() //主函数
{
  uchar i; //定义局部变量
  P1=table[0]; //数码管显示0
  delay(400); //延时一会儿,在此之前所有数码管全为0,
  while(1) //所有的交通灯都亮
  {
    for(i=0;i45;i++) //南北通车较多,故延时较多
    {
      P2=0x0a; //南北绿灯亮,东西红灯亮
       P1=table[i];
      delay(200);
    }
    for(i=0;i3;i++) //南北绿灯闪烁3次,同时东西红灯亮
     {
       P2=0x0a;
      delay(200);
      P2=0x02;
      delay(200);
    }
    P2=0x22; //南北黄灯亮,同时东西红灯亮
    delay(600); //延时片刻
    for(i=0;i35;i++) //东西开始通车,由于车辆较少,故延时较少
    {
      P2=0x11; //南北的红灯亮 ,东西的绿灯亮
      P1=table[i];
      delay(200);
    }
    for(i=0;i3;i++) //东西的绿灯闪烁3次
    {
      P2=0x11;
      delay(200);
      P2=0x10;
      delay(200);
    }
    P2=0x14; //东西的黄灯亮
    delay(600); //延时片刻
  }
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top