基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警)

仿真:proteus 7.8

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:J013

目录标题

  • 基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警)
    • 功能说明
    • 仿真图
      • 正常运行模式
      • 模拟绿灯同时亮
    • 程序设计
      • 倒计时的产生
      • 红黄绿灯状态处理
      • 倒计时显示处理
      • 绿灯同时亮的处理
    • 资料清单

功能说明

  1. 南北红灯25s,同时东西绿灯20s,到20s后东西绿灯闪烁3s,再转黄灯闪烁2s;东西红灯30s,同时南北绿灯25s,到25s后南北绿灯闪烁3s,再转黄灯闪烁2s。
  2. 启动按键:按下按键是,信号系统开始工作,且先南北绿灯亮,东西红灯亮,当启动开关断开时,所有信号灯都熄灭;
  3. 南北绿灯和东西绿灯不能同时亮,如果同时亮时关闭信号灯系统,并报警;
  4. 具体秒数可在程序改数字实现。

仿真图

正常运行模式

模拟绿灯同时亮

通过拨码开关模拟绿灯同时亮,这是一个绝对的错误情况,实际交通灯一旦发生四边绿灯同时变绿,交通规则无效,会诱发严重的交通事故。所以一旦四边绿灯亮,交通灯系统蜂鸣器报警,同时交通灯变成四边红灯。

程序设计

倒计时时间可以修改下面三个变量的初始化值。

main_green_straight_cnt
yellow_cnt
sec_green_straight_cnt

程序讲解

主要的核心点是倒计时,和LED灯亮灭控制

倒计时的产生

记住这个点就可以设计软件了。首先要有时间基础,倒计时从哪来呢?

一般两个来源:

1,延时

delay(1000ms);

通过死循环卡主软件的运行来达到延时效果,程序执行效率极低,不可取。

2,定时

通过定时器产生时基。软件设置50ms产生一次定时中断,在中断执行函数中做计数。

 EA=1;  //开总中断TMOD=0X01;//T0的工作模式为模式1TH0=0X4C;TL0=0X00;//11.0592M晶振 50ms定时初值ET0=1; //允许定时器1中断TR0=1;//启动定时器0

20ms执行一次中断函数,通过one_sec_flag累加到50判断时间过去了一秒。设置一秒标志位flag1s置一。

 void Timer0() interrupt 1
{TH0=0XBB;TL0=0X00;if(++half_sec_flag>25){half_sec_flag=0;half_flag1s=1;}if(++one_sec_flag<50){return;//提前结束函数}one_sec_flag=0;if(run_mode==0){flag1s=1;   }
}

在主函数while循环里判断标志位,如果是1,则倒计时计数值减一,即完成了倒计时的软件设计思路

if(flag1s)//正常倒计时模式一秒执行一次
{flag1s=0;main_road_time--;    //红绿灯倒计时时间减secondary_road_time--;
}

红黄绿灯状态处理

正常红绿灯运行分有四个模式

1.东西方向绿灯通行,南北方向红灯

2.东西方向黄灯通行,南北方向红灯

3.南北方向绿灯通行,东西方向红灯

4.南北方向黄灯通行,东西方向红灯

5.执行第一步

if(run_mode==0)             //0 正常运行{if(main_road_time==0 || secondary_road_time==0)//当主干道或者次干道倒数到0,切换状态。//这一段程序只有倒计时为0才执行一次,执行完一次等下一次倒计时为0才再执行一次{switch(state)//改变红绿灯的状态{case 0:{state=1;//下次切换到下一个模式main_road_time=main_green_straight_cnt;//主干道直行绿灯通行时间secondary_road_time=main_green_straight_cnt+yellow_cnt;//次干道红灯方向通行时间 == 主干道直行绿灯 +主干道时间黄灯时间 P2=0X09;    //P2是主干道的灯显。需要亮的灯转换为二进制位0000 1001}break;case 1:{state=2;main_road_time = yellow_cnt;//主干道直行黄灯时间P2=0X0A;//主干道直行黄灯 对应仿真图p22和p25高电平,其他低电平。此时P2口的电平 0010 0010 }break;case 2:{state=3;main_road_time=sec_green_straight_cnt+yellow_cnt;secondary_road_time =sec_green_straight_cnt;P2=0X24;   //主干道左转绿灯 对应仿真图p21和p24高电平,其他低电平。此时P2口的电平 0001 0001}break;case 3:{state=0;secondary_road_time=yellow_cnt;//黄灯时间P2=0X14;//主干道左转黄灯灯 对应仿真图p22和p25高电平,其他低电平。此时P2口的电平 0010 0010  }break;default:break;}}seg_disp(main_road_time/10,0);//显示W0控制的数码管 时刻刷新seg_disp(main_road_time%10,1);//显示W1控制的数码管seg_disp(secondary_road_time/10,2);//显示W2控制的数码管seg_disp(secondary_road_time%10,3);//显示W3控制的数码管}

倒计时显示处理

实际上倒计时显示就是显示main_road_time–; secondary_road_time–;设计函数通过数码管分别显示A方向的main_road_time和B方向的secondary_road_time即可

seg_disp(main_road_time/10,0);
//显示W0控制的数码管 时刻刷新
seg_disp(main_road_time%10,1);
//显示W1控制的数码管
seg_disp(secondary_road_time/10,2);
//显示W2控制的数码管
seg_disp(secondary_road_time%10,3);
//显示W3控制的数码管

绿灯同时亮的处理

通过检测Wdt引脚的低电平来判断是否触发了绿灯同时亮条件,一旦触发,蜂鸣器报警。

if(Emergent){ //已经启动运行run_mode = 0;if(Wdt){//恢复正常Beep = 0;run_mode = 0;}else{//如果两个绿灯同时亮Beep = 1;main_road_time = 0;run_mode = 1;state = 0;   }
}else{ //关闭显示if(run_mode == 0){main_road_time = 0;run_mode = 2;state = 0;}}

资料清单

资料下载

基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警)相关推荐

  1. 基于51单片机十字路口交通灯_5s黄灯闪烁

    基于51单片机十字路口交通灯_5s黄灯闪烁 目录标题 基于51单片机十字路口交通灯_5s黄灯闪烁 功能要求 仿真图 程序 主要程序代码 程序讲解 倒计时的产生 红黄绿灯状态处理 倒计时显示处理 资料清 ...

  2. 基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s

    基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s (程序+仿真+参考报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号J011 目录标题 基于5 ...

  3. 单片机c语言交通信号灯设计,基于51单片机的交通信号灯设计毕业设计.pdf

    摘 要 在现代城市中,随着人口和汽车的急剧增长,市区交通日益拥挤,要是没有红绿灯 作为指挥工具,恐怕川流不息的汽车就会由于混乱而造成严重阻塞.因此,交通灯是交 管部门管理城市交通的重要工具之一.随着电 ...

  4. 基于51单片机十字路口红绿灯交通灯+紧急模式

    基于51单片机十字路口红绿灯交通灯 +无黄灯+紧急 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J010 目录标题 基于51单片机十字路口红绿灯交 ...

  5. 【019】基于51单片机的交通灯Proteus仿真设计

    一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...

  6. 51单片机模拟交通信号灯控制系统设计

    51单片机模拟交通信号灯控制系统设计 设计要求: 1.用LED灯模拟十字路口交通灯控制 2.正常情况下双方向轮流通行 3.特殊情况时,A方向通行 4.紧急情况时,A和B方向都不通行 本任务涉及定时控制 ...

  7. 51单片机实现交通信号灯

    51单片机实现交通信号灯 文章目录 51单片机实现交通信号灯 实验环境 仿真图 实验原理 代码实现 成果图 资源下载 实验环境 软件: Keil5+Proteus7 元件(主要): AT89C51 * ...

  8. c语言控制51单片机完成交通信号灯(红绿灯)

    完成目标: 模拟十字路口(东南西北走向)交通灯:通过单片机的P1口控制实验箱上6个LED灯(两红两绿两黄),按照自定义规则控制交通灯. 要求有如下过程:某种颜色灯转另一种颜色的灯之前,要闪烁六次. 我 ...

  9. 基于51单片机的交通灯控制系统课程设计(含proteus仿真图及代码)

    一.设计要求: 1,十字路口的交通控制系统指挥着人和各种车辆的安全运行,对交叉口实行科学的管理与控制是交通控制工程的重要研究课题,是保障交叉口的交通安全和充分发挥交叉口的通行能力的重要措施,是解决城市 ...

最新文章

  1. Python基础02-Python基础
  2. Android应用程序线程消息循环模型分析(4)
  3. 技巧:Excel用得好,天天没烦恼
  4. 数据结构—链表-单链表基本操作实现
  5. Twemproxy调研总结
  6. cocoscreator3d 模型透明_用 Cocos Creator 3D 实现小姐姐的发丝高光
  7. Exp6 信息收集与漏洞扫描
  8. SRA 案例:关于华为开发者联盟基础服务文档内容的改进建议(华为开发者联盟文档深度体验官)
  9. python获取gps_Python GPS模块:读取最新的GPS D
  10. 微信扫码支付、聚合支付
  11. 基于verliog的异步模10计数器(含模块代码以及测试代码)
  12. 怎么把pdf文件压缩到最小?
  13. OJ一元二次方程的根*易错点
  14. 将不同数据来源的ggplot图绘制到同一张图中,并添加统一的图例
  15. 如何处理多重共线性问题
  16. 依赖注入和反转控制的区别
  17. sdkd2019.3.20训练题目
  18. MySQL集群:主从模式
  19. jquery数字动画插件jquery.animateNumber.js
  20. PS 不能使用移动工具 因为目标图层被隐藏怎么办

热门文章

  1. 暖风机家用最好的牌子 适合家用大面积的暖风机哪种好
  2. 国仁网络资讯:抖音都有哪些运营技巧;抖音算法机制是什么?
  3. http://www.cnblogs.com/xinxin-csharp/p/6146770.html
  4. 产业分析:线上线下融合会展
  5. Android7.08.0 电池图标分析
  6. w10计算机运行特别卡,win10很卡?教你4大技巧,降低CPU占用,旧电脑运行如飞
  7. mysql 重做日志 镜像_mysql重做日志 - osc_vr7hvjd2的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. kali 配置静态ip的坑
  9. 计算机因特尔网络论文,电子商务课Intel未来教育理念论文
  10. 计算机网络原理【第四章 网络层】课后习题答案