51单片机实现红绿灯

        用keil和proteus设计一个十字路口红绿灯,下面是题目和讲解:

设计任务:

        设计基于单片机控制的城市道路十字路口交通灯控制系统。要求具有下述功能:

        1、系统有两个状态,设置状态和显示状态,利用键盘进行两个状态间的切换。上电默认为设置状态;

        2、系统为显示状态时,四个路口数码管从设置的时间(或默认的)倒计时时间开始倒计时;

        3、设置状态时,利用KEY1~KEY3键盘设置各路口直行通行倒计时时间,设置的路口数码管闪烁显示,各路口的通行时间可以不相等,其中KEY2为加1键,KEY3为减1键,KEY1为确定键;

        4、显示状态时,交通灯模组的四个LED板的数码管进行倒计时;LED板各组的红绿灯进行交通指示;如果一个LED板上有三个绿灯亮(左转、直行、右转),这时候数码管显示的是通行时间,否则,数码管显示的是等待时间;显示过程中按状态建键可以重新进入设置状态。

 

通行规则:

  1. 每条车道的左侧灯是控制左转车辆和直行车辆,即左侧灯为绿灯,车辆既可以直行又可以左转,黄灯为过渡状态。
  2. 一共有八种状态,即原理图的四种和四种切换的黄灯过渡状态。
  3. 每条车道的右侧灯是控制右转车辆,绿灯通过,红灯停止,黄灯为过渡状态。
  4. 人行道只有红灯和绿灯,红灯行人不能通过,绿灯可以通过。
  5. 车道控制左直行的灯与右行的等不能同时为绿灯或同时黄灯。
  6. 由第5条设置数码管显示的时间优先等级以此为:绿灯时间,黄灯时间,红灯时间,同时控制两侧红绿灯的时间。

原理图:

51单片机实现红绿灯_第1张图片

 程序运行流程图:

51单片机实现红绿灯_第2张图片

1.4.1系统功能测试与分析

功能一:设置显示状态的切换

初始时间:默认时间如下,此时四个车道都禁止通过。

51单片机实现红绿灯_第3张图片

 左侧路口时间被加了两秒:

51单片机实现红绿灯_第4张图片

下侧路口时间被减了三秒:

51单片机实现红绿灯_第5张图片

功能二:从设置的时间倒计时

一通道口初始时间为13秒

51单片机实现红绿灯_第6张图片

过了3秒

51单片机实现红绿灯_第7张图片

又过了2秒

51单片机实现红绿灯_第8张图片

功能三:不同状态的转换

状态一,一号口车辆左直行,二号口禁止通过,三、四号口右行

51单片机实现红绿灯_第9张图片

状态二:状态一过后的黄灯过渡态

51单片机实现红绿灯_第10张图片

状态三:状态二过后的一四号口右行,二号口左直行,三号口禁止通过

51单片机实现红绿灯_第11张图片

状态四:状态三后的黄灯过渡状态

51单片机实现红绿灯_第12张图片

状态五:一二号口右行,三号口左直,四号口禁止通过

51单片机实现红绿灯_第13张图片

状态六:状态五后的过渡状态

51单片机实现红绿灯_第14张图片

状态七:二三号口右行,三号口左直,一号口禁止通过

51单片机实现红绿灯_第15张图片

状态八:状态七后的黄灯过渡状态

 51单片机实现红绿灯_第16张图片

主要是分享思路,如果需要源代码和原理图的可以在下面留言,我看到发邮件。

另外注意Proteus 版本需要8.11以上,好早之前做的单片机作业,Proteus都删了,应该没什么大问题,有问题欢迎讨论。

另外,引用我的文章和程序的,注意表明下哈,谢谢。

另外,方便的话,能帮忙点个赞和收藏吗0.0

你可能感兴趣的:(51单片机,单片机,嵌入式硬件)