运用定时器中断写的交通灯

2015-01-15 23:27:38来源: 51hei

这是一个运用51单片机写的交通灯的例子,可以显示时间,红黄蓝等,第一个按键是左右路通行20S,第二个按键是上下路通行20S,第一个按键是所有路都是红灯20S。这是从时钟该来的程序,与上一个始终的程序大体相同。

 

#include
#define uint unsigned int
int code table[]={
 0xc0,0xf9,0xa4,0xb0,0x99,0x92,  
 0x82,0xf8,0x80,0x90,
};
sbit hongA=P0^0;
sbit huangA=P0^1;
sbit lvA=P0^2;
sbit hongB=P0^3;
sbit huangB=P0^4;
sbit lvB=P0^5;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
int t=0,t1=0,flag=0,tt0,tt1;
void delay();
void ziyou();
void Bfangxing();
void Afangxing();
void zhongduan();
void main()

  EA=1;//开总中断
 TMOD=0x01;//设置定时器0为工作方式1
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%6; 
 ET0=1;//开定时器0中断
 TR0=1;//启动定时器0

 P0=0xff;
 lvA=0;//打开绿灯
 hongB=0;
 while(1)
 
   
    if(flag==0)  ziyou();//自由状态
    if(flag==1)  Afangxing();//B放行期间改变
    if(flag==2)  Bfangxing();//B放行期间改变 
    if(flag==3)  zhongduan();//B放行期间改变        
    if(tt0==-1) {tt1--;tt0=9;}
    P3=0X01;
    P2=table[tt1];
    delay();
    P3=0X02;
    P2=table[tt0];
       delay();   
 }
}
void delay()
{
  int i;
   for(i=0;i<200;i++);
}
void ziyou()//自由状态
{
  if(t==20)//达到1s
   {
    t=0;
    t1=t1+1;
    tt0--;//减少秒
   }
  if(t1==0)
   {
    hongB=0;lvB=1;huangB=1;//B道
    lvA=0;huangA=1;hongA=1;//A道
    tt1=3;tt0=0;
   }
  if(t1==30)//30
   {
    hongB=0;lvB=1;huangB=1;//B道
    lvA=1;huangA=0;hongA=1;//A道
    tt1=0;tt0=5;
   }
  if(t1==35)//35
   {
    hongB=1;lvB=0;huangB=1;//B道
    hongA=0;huangA=1;lvA=1;//A道
    tt1=2;tt0=0;
   }
  if(t1==55)//55
   {
    hongA=0;lvA=1;huangA=1;//A道
    lvB=1;huangB=0;hongB=1;//B道
    tt1=0;tt0=5;
   }
  if(t1==60)//60
   {
    t1=0;
    tt1=0;tt0=0;
    
}
void Afangxing()//A放行
{
   hongB=0;lvB=1;huangB=1;//B道
 lvA=0;huangA=1;hongA=1;//A道
       if(t==20)//达到1s
   {
    t=0;
    t1=t1+1;
    tt0--;
   }
    if(t1==15)
     {
       t1=30;//跳至30
    flag=0;
   
     }
}
void Bfangxing()//B放行
 
  hongB=1;lvB=0;huangB=1;//B道
  hongA=0;huangA=1;lvA=1;//A道
       if(t==20)//达到1s
   {
    t=0;
    t1=t1+1;
    tt0--;
   }
    if(t1==15)
     {
       t1=55;//跳至55
    flag=0;
     }
}
void zhongduan()//key3
  
  hongB=0;lvB=1;huangB=1;//B道
  hongA=0;huangA=1;lvA=1;//A道
       if(t==20)//达到1s
   {
    t=0;
    t1=t1+1;
    tt0--;
   }
    if(t1==20)
     {
       t1=0;//跳至55
    flag=0;
     }
}
void time0() interrupt 1
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%6;
 t++; //tt=20为1s
 if(key1==0)
 {
   if(t1>30) {flag=1;t=0;t1=0;tt1=1;tt0=5;}//35
 
 
 if(key2==0)  
 {
   if(t1<35) {flag=2;t=0;t1=0;tt1=1;tt0=5;}//35
 }
 if(key3==0)  
 tt1=2;tt0=0;
    flag=3;t=0;t1=0;
 }
}

关键字:交通灯  定时器  51单片机

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/2015/0115/article_18017.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
交通灯
定时器
51单片机

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved