设计要求
(1)利用51单片机设计一个交通灯控制系统,来实现行人与车流的分流的目的。该系统主要应用在十字路口,纵向为主干道,横向为支干道;
(2)主、支干道交替通行,两个干道上的交通灯工作方式同时进行,主干道每次绿灯放行15秒,支干道每次放行10秒,放行时间可通过按键更改;
(3)每次绿灯变红之前,黄灯先闪烁3秒,此时,另一干道上仍保持红灯;
(4)通过按键实现对十字路口交通管制功能;
(5)给出整个系统的结构图、软硬件流程图;

设计概述
东西主干道和南北支干道各由一组三色交通灯来控制,分别是主干道方向的红、黄、绿以及支干道方向的红、黄、绿。

逻辑分析可知,当主干道为绿灯通行时,支干道必须为红灯禁行;绿灯结束后,主干道进入黄灯闪烁等待状态,支干道红灯;黄灯结束后,主干道变为红灯禁行,支干道变为绿灯通行;支干道绿灯结束后,支干道进入黄灯闪烁等待状态,主干道红灯,如此循环。

从这个过程中可以看出,交通灯控制共分4个状态,分别为:S1状态,主干道方向为绿灯,支干道方向为红灯;S2状态,主干道方向为黄灯闪烁,支干道红灯;S3状态,主干道方向为红灯,支干道方向为绿灯;S4状态,支干道方向为黄灯闪烁,主干道红灯。这四个状态不断循环。由此我们可以列出4个状态的列表和做出4个状态的流程图。


系统设置有4个按键,分别为设置键,加键,减键和交通管制键。设置键是对设置的启动和确认,加键和减键是对通行时间做调整,交通管制键是对红绿灯系统进行强制设置。

当系统上电或手动复位之后,默认模式下会按照断电前程序里记录的参数运行。若此时设置键按下,则进入通行时间设置状态,数码管上显示原本记录的时间并闪烁,可通过加键或减键键对东西、南北干道等待时间进行修改,修改完成后,按下设置键将新参数保存。

交通管制键,用于对十字路口进行交通管制。有五种模式:东西、南北干道红灯;东西红灯,南北绿灯;东西绿灯,南北红灯;东西绿灯,南北绿灯;东西黄灯,南北黄灯。

仿真电路图


原理图及PCB


洞洞板实物图

仿真结果分析
在交通灯实物中,是竖着操作,纵向为南北;在仿真电路图中,从正视看纵向为东西,从左边斜着看和实物是一样的。因此,实物和仿真是一一对应的!

加载“基于毕业51单片机的交通灯设计.hex”文件到单片机,点击运行,交通灯开始工作(二极管显示红、黄、绿三色灯,LED显示倒计时)。

在程序里我们设置,东西主干道绿灯通行时间为15S,南北支干道通行时间为10S。系统自动进入状态S1:东西主干道绿灯亮,南北支干道红灯亮。

可以看出,东西主干道绿灯通行时间为15S,南北支干道红灯等待时间为15S。东西、南北干道LED倒计时12S后,系统进入S2状态:东西主干道黄灯闪烁3S,南北支干道红灯。

3S后,系统进入S3状态:东西主干道红灯,南北绿干道绿灯,通行时间为10S。仿真结果如下所示。

7S后,系统进入S4状态:南北干道黄灯闪烁3S,东西干道仍为红灯。然后进入S1状态,不断循环。

按下“设置”键后,系统进入设置模式,通过“加”键和“减”键设置东西干道绿灯通行时间。再次按下“设置”键,可以设置南北干道通行时间。通行时间设置完成后,再次按下“设置”键,系统回到运行状态。


从上图看出,东西主干道通行时间由原来的15S设置为16S。可以通过“交通管制”键,对交通灯系统进行管制。

部分C代码

u8 Key_Scan()
{    static u8 key_up=1;//按键按松开标志if(key_up&&(Key1==0||Key2==0||Key3==0||Key4==0)){delay_1ms(10);//去抖动 key_up=0;if(Key1==0)         return 1;else if(Key2==0)return 2;else if(Key3==0)return 3;else if(Key4==0)return 4;}else if(Key1==1&&Key2==1&&Key3==1&&Key4==1)key_up=1;       return 0;// 无按键按下
}uchar flag_s;
uchar menu_1;//纵横加减标示/********************设置函数*****************/
void key_with()
{if(key_can == 4)   //交通管制按键{flag_jdgz ++;if(flag_jdgz > 5)flag_jdgz = 0;  if(flag_jdgz == 1)   //  全部亮红灯 {dx_red    = 0;  //亮 nb_red    = 0;  //亮 dx_green  = 1;  //灭dx_yellow = 1;  //灭nb_green  = 1;  //灭nb_yellow = 1;  //灭         }if(flag_jdgz == 2)   //  东西绿灯  南北红灯{dx_red    = 0;  //亮 nb_green  = 0;  //亮dx_green  = 1;  //灭dx_yellow = 1;  //灭nb_red    = 1;  //灭 nb_yellow = 1;  //灭         }if(flag_jdgz == 3)   //  南北绿灯  东西红灯{dx_green  = 0;  //亮nb_red    = 0;  //亮 dx_red    = 1;  //灭 dx_yellow = 1;  //灭nb_green  = 1;  //灭nb_yellow = 1;  //灭         }if(flag_jdgz == 4)   //  南北绿灯  东西绿灯{dx_green  = 0;  //亮nb_green  = 0;  //亮dx_red    = 1;  //灭 dx_yellow = 1;  //灭nb_red    = 1;  //灭 nb_yellow = 1;  //灭         }if(flag_jdgz == 5)   //  南北黄灯  东西黄灯{dx_red    = 1;  //灭 dx_green  = 1;  //灭nb_red    = 1;  //灭 nb_green  = 1;  //灭nb_yellow = 0;  //亮         dx_yellow = 0;  //亮}}if(key_can == 1)      //设置键{menu_1 ++;if(menu_1 >= 3){menu_1  = 0;}}if(menu_1 == 1)    //设置东西的时间{if(key_can == 2){dx_time ++ ;        //加1if(dx_time > 99)//时间最大值为99sdx_time = 99;}if(key_can == 3){dx_time -- ;        //减1if(dx_time <= 5)//时间最小值为5sdx_time = 5;}dis_smg[0] = DisplayOther[2] ;  //显示为Bdis_smg[1] = DisplayOther[2] ;  //显示为Bdis_smg[2] = smg_du[(dx_time-1) % 10] ;     //显示东西设置的时候dis_smg[3] = smg_du[(dx_time-1) / 10] ; }if(menu_1 == 2)    //设置南北的时间{if(key_can == 2){nb_time ++ ;        //加1if(nb_time > 99)    //时间最大值为99snb_time = 99;}if(key_can == 3){nb_time -- ;        //减1if(nb_time <= 5)//时间最小值为5snb_time = 5;}dis_smg[0] = smg_du[(nb_time-1) % 10] ; //显示为Adis_smg[1] = smg_du[(nb_time-1) / 10] ; //显示为Adis_smg[2] = DisplayOther[2] ;      //显示东西设置的时候dis_smg[3] = DisplayOther[2] ;  }   }

分享的资源有
(1)基于51单片机的交通灯系统毕业设计论文完整版;
(2)Proteus仿真文件;
(3)Keil C程序文件;
(4)参考资料;
(5)Visio流程图;
(6)PCB文件及原理图;
(7)元器件介绍及清单;
(8)参考设计1:基于单片机的交通灯设计(另一套交通灯设计)

资源截图如下






获取交通灯系统设计论文、Proteus仿真、C程序、PCB及原理图、Visio流程图、元器件清单等全套资料。
请微信搜索关注公众号:交院小智

交通灯系统51单片机设计(附Proteus仿真、C程序、原理图及PCB、论文等全套资料)相关推荐

  1. 八路抢答器c语言程序,八路抢答器-51单片机(附Proteus仿真、C代码、原理图及PCB、论文和元器件清单)...

    获取全套设计资源,请见后文说明- 设计要求 1)抢答器同时供8名选手或2个代表队比赛,分别用8个按钮S0-S7表示: 2)设置一个系统清除和抢答控制开关S,该开关由主持人控制: 3)抢答器具有锁存与显 ...

  2. 基于51单片机简易数字示波器Proteus仿真

    功能介绍: 采用51单片机作为主控CPU:LCD12864可显示方波,三角波,锯齿波,正弦波等,可通过光标对波形进行测量,可以调节显示波形的幅度和频率,也可以将波形进行左右拖拉,完美的仿真出一个51单 ...

  3. 基于51单片机篮球计分器proteus仿真设计

    本设计是51单片机篮球计分器proteus仿真(源码+原理图+PCB+仿真+报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号C0004 资料文件下载 ...

  4. 基于51单片机的电子秤proteus仿真设计

    本设计仅供学习参考 基于51单片机的电子秤proteus仿真设计(仿真+程序+原理图+报告+讲解) 原理图:Altium Designer 仿真图proteus 7.8 程序编译器:keil 4/ke ...

  5. 51单片机DS18B20温度报警器proteus仿真设计_可调上下限

    51单片机DS18B20温度报警器proteus仿真设计_可调上下限 (仿真+源码+原理图+报告) 原理图:Altium Designer 仿真版本:proteus 7.8 程序编译器:keil 4/ ...

  6. 51单片机全自动洗衣机proteus仿真设计

    51单片机全自动洗衣机proteus仿真设计 目录标题 51单片机全自动洗衣机proteus仿真设计 设计介绍 仿真图 电动机驱动模块电路设计 电源模块电路设计 控制按键 进水阀和排水阀控制继电器 程 ...

  7. 51单片机 AT24C04+蜂鸣器+Proteus仿真

    51单片机 AT24C02+蜂鸣器+Proteus仿真 Proteus仿真截图 由于是音频效果,只能以截图展示基本电路 实例代码 #include <reg52.h> #include & ...

  8. 51单片机模拟电子琴+Proteus仿真

    51单片机模拟电子琴+Proteus仿真 Proteus仿真 示例程序 #include<reg51.h> #include<intrins.h>#define uchar u ...

  9. 51单片机串口通讯 +Proteus仿真实验

    51单片机串口通讯 +Proteus仿真实验 ✨注意不要使用Proteus 8 Professional 8.13版本串口通信会出错.

最新文章

  1. 【算法基础】时间复杂度:大O阶方法
  2. iOS之深入分析GCD的函数与队列以及多种组合使用
  3. 《软件工程》 教 学 大 纲
  4. Angular Component 实现类,先执行字段初始化,再调用构造函数
  5. 【python】Flask视图
  6. 中国碳纤维增强热塑性(CFRTP)复合材料市场趋势报告、技术动态创新及市场预测
  7. 一个优秀的 Node.js 开发者
  8. Parallels Desktop虚拟机如何安装win10和win11,懒人安装教程
  9. Login控件:用户登录失败的消息提示。
  10. Ubuntu 优化、美化(主题、终端)
  11. 你画我猜游戏html源代码,微信小程序你画我猜demo完整源码
  12. 【密码学相关】常用的期刊,会议,实验室
  13. 关于二代测序中duplication产生和占比问题的探讨
  14. php制作描述,CMS_phpcms下载频道的模板制作,关键字描述:制作 模板 quot l - phpStudy...
  15. 支付宝及时到账支付成功返回信息
  16. SerDes结构之发送端前馈均衡技术(FFE)
  17. excel查询oracle数据库,用Excel直接查询Oracle中的数据
  18. 狂刷《Java权威面试指南(阿里版)》,助你一臂之力,事半功倍
  19. 二进制空间权重矩阵_白话空间统计之二十五:空间权重矩阵(三)解构空间权重矩阵...
  20. 安徽理工大学计算机创新大赛,2017年安徽理工大学大学生机械创新设计大赛决赛成功举办...

热门文章

  1. java libusb_Windows下的Java访问USB设备解决之道(翻译Java libusb / libusb-win32 wrapper)收...
  2. 用Python+ChatGPT
  3. Java数据库的备份与恢复
  4. Python----条件语句
  5. WPF--Dispatcher.BeginInvoke()方法使用不当导致UI界面卡死的原因分析
  6. 为什么电子邮件发送失败?电子邮件发送失败的原因及解决方法
  7. 中国人民大学与加拿大女王大学金融硕士-作为金融人你深知,投资学习是一本万利的
  8. Android.mk文件语法规范及使用模板
  9. _kbhit()以及_getch()函数的用法
  10. 构造方法的作用和特点