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

2015-01-15来源: 51hei关键字:交通灯  定时器  51单片机

这是一个运用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://news.eeworld.com.cn/mcu/2015/0115/article_18017.html

上一篇:51单片机烟雾报警器制作+程序
下一篇:4*4矩阵键盘的扫描原理

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

智能交通灯控制系统单片机课程设计
图15 紧急车4、心得体会这次交通灯的制作是我学会了不少的东西,首先是proteus和keil的使用。单片机程序的编写和原理图的仿真都是在这两个软件的运行下才可以进行的。这个实验最重要的是让我对51系列的单片机有了更深层次的了解,这一学期开始接触单片机的时候觉得这是一门极其高深的课程,老师讲的什么基本完全不懂,课后看仍旧是一头雾水。通过交通灯的学习和制作,对单片机有了初步的了解,知道了它的组成、工作原理等等。在软件编写这一块,开始时遇到了很大的难题,因为两百行的程序,哪怕有一个错误,修改起来也不是十分方便。时常没有心思去寻找和改正错误,所以软件这一块花了很大的一部分时间。几次调试后总算出现“0 warning”和“0 error
发表于 2020-12-29
智能<font color='red'>交通灯</font>控制系统单片机课程设计
单片机交通灯PCB板图与仿真源码(MAX7219+数码管显示)
单片机交通灯源程序如下:#include<reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define DIG0 0x01                 // 定义数码管1#define DIG1 0x02                 // 定义数码管2#define DIG2 0x03   
发表于 2020-11-11
单片机<font color='red'>交通灯</font>PCB板图与仿真源码(MAX7219+数码管显示)
51单片机+8155芯片的交通灯程序
;//独立按键//sbit Key_S = P1^5;//sbit Key_W = P1^6;//sbit Key_E = P1^7;sbit KEYA = P1^4;sbit KEYB = P1^5;           uint ge,shi;                         //定义全局变量uint m = 30;uint n;uint num;/*交通灯的数值*/uchar lcd1 = 10;   
发表于 2020-09-11
51单片机+8155芯片的<font color='red'>交通灯</font>程序
如何设计一个基于嵌入式系统的智能交通灯控制系统?
汽车数量越来越多,道路压力越来越大,城市道路交错分布,交通灯是城市交通的重要指挥系统。交通信号灯作为管制交通流量、提高道路通行能力的有效手段,对减少交通事故有明显效果。本文基于ARM智能交通灯控制系统的设计,为智能交通的研究提供了理论参考。1、系统总体结构如图1所示,交通灯布置为东、南、西、北四个方向,每个方向交通灯上再配备对应的摄像头,摄像头的功能用于探测所属方向车辆通行情况(车辆等待队列,车辆通行量)。ARM处理器中的9号、10号功能,9号用于处理图像反馈信息,10号用于处理9号反馈信息对信息中的车辆排队情况作交通灯的智能控制,除此之外10号控制器ARM还与通讯监控中心保持通信。图1 系统总体结构图如图2所示,摄像头拍对面驶来
发表于 2020-08-25
如何设计一个基于嵌入式系统的智能<font color='red'>交通灯</font>控制系统?
基于STM32的十字路口交通灯控制系统课程设计
1引言交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题。在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行; 黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行。交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。本文为了实现交通道路的管理,力求交通管理先进性、科学化。 分析应用了单片机实现智能交通灯管制的控制系统,以及该系统软、硬件设计方法,实验证明该系统实现简单、经济,能够有效地
发表于 2020-08-07
基于STM32的十字路口<font color='red'>交通灯</font>控制系统课程设计
日本研发新技术 帮助自动驾驶车辆识别150米外的交通灯
随着自动驾驶汽车的不断发展,此类车辆必须配备能够与现有基础设施协调工作的系统,并需要能够处理复杂的城市景观。例如,处理不同形状、大小和安装位置的交通灯;多种城市标志色;指示方向的箭头灯。为了让自动驾驶汽车安全地运行,就必须让其能够在很短的时间内、识别出远处的此类物体,进行理解,并做出相应的反应。(图片来源:金泽大学)为此,据外媒报道,日本金泽大学(Kanazawa University)的研究人员就研发出一种新方法,可以可靠地帮助自动驾驶车辆处理城市中复杂的交通状况以及指示方向的不同箭头。该系统可以让车辆识别150米外的交通灯,并平稳自然地减速或调整驾驶操作。在车辆、行人和各种物体都密集的城市地区,自动驾驶车辆面临着特殊的挑战
发表于 2020-08-06
日本研发新技术 帮助自动驾驶车辆识别150米外的<font color='red'>交通灯</font>
小广播
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved