一、运行环境
- 仿真软件:Proteus 8.17 SP2
- 程序软件:KEIL C51 V961
(所有软件及安装教程均可在文末百度云链接中获取)
二、项目简介
本系统依托 AT89C51 单片机作为核心控制单元,精心打造了一款红绿灯仿真项目。系统赋予用户自由掌控的权限,通过便捷的拨码开关,即可灵活设定红绿灯的持续时长。其具备两种特色鲜明的工作模式:正常运行模式与夜间模式。在正常运行模式期间,系统精准复刻日常交通信号灯的运行逻辑,保障交通秩序有条不紊;而在夜间模式下,系统采用双向均为黄灯持续闪烁的独特设计,旨在为车辆提供更清晰的视觉提示,便于驾驶员在观察路况后能快速、安全地通过路口,有效提升夜间交通效率。
资料包中含有仿真源文件、程序源文件及软件安装包链接与安装教程链接。
三、硬件说明
硬件仿真电路包含单片机最小系统、红绿灯显示系统、拨码开关输入。
1、单片机最小系统
主要由AT89C51单片机及其外围电路组成,外围电路涵盖以下部分:
(1)晶振电路:采用11.0592MHz的频率,为微控制器提供精确的时钟信号;
(2)复位电路:设计包括电源启动复位和手动按键复位两种模式;
(3)P0口上拉电阻:在将51单片机的P0口作为通用输入输出端口使用时,必须外接上拉电阻以确保信号的稳定性。
2.红绿灯显示系统
该系统包含数码管显示模块、LED灯显示模块。
(1)数码管显示模块
每个方向选用一个两位共阳极数码管,其中南北向和东西向的数码管共用公共端,保证南北向和东西向的数码管显示的数字同步。
因此仅需四个位控制即可控制所有的数码管。四个位控制依次接入单片机的P20-P23。
在数码管段控制方面,为防止每段电流过大和数码管亮度不一致,在数码管每一段均串联了一个470欧姆的电阻以限制电流。同时,为了防止单片机灌电流过大,我们采用了74HC245芯片来控制数码管的段。74HC245芯片的操作由单片机的P0口负责,确保整个数码管段控制电路的稳定与安全运行,避免因灌电流过大可能引起的电路故障或性能下降。
(2)红绿灯LED灯显示模块
红绿灯LED显示模块共设置四组,每组分别对应一个方向的红灯、黄灯、绿灯。共计12个LED灯。其中南北向和东西向的LED灯共用公共端,保证南北向和东西向的LED灯显示的颜色同步。这样仅需6个IO口即可控制所有的LED灯。依次接入P24-P27,P37,P17.
共计12个LED灯,每一路均串联一个220欧姆的电阻以限制电流。
(3)绿灯时间设置电路
东西向和南北向的绿灯时间各使用一个6位的拨码开关,作为二进制输入单片机,可设置范围15s-90s。
(4)夜间模式控制电路
使用一个开关控制夜间模式的开启与关闭。接入单片机P27口。开关断开时为普通红绿灯模式,开关闭合时为夜间模式。夜间模式下,南北向和东西向的LED灯均为黄灯闪烁,同时关闭数码管。
四、软件说明
本项目的程序以 C 语言编写完成,编译无警告、无错误。在程序设计上,采用模块化编程,各功能模块相互独立,便于程序的修改与维护;同时有大量详尽的注释,让程序的功能与实现过程更易于理解。
本项目程序包括主模块、IO口模块、数码管模块、定时器模块共计四个模块。
- 主函数模块:通过对各个模块的协调控制,实现红绿灯的工作逻辑。由于红绿灯工作时间长,完整展示耗时较长,因此在主函数前定义有1s时间基准的计数值,减小该值可实现快速演示。
- IO口模块:该模块提IO口相关操作函数。如绿灯时间设置输入读取,LED灯状态设置等。
- 数码管模块:数码管相关的操作函数均定义在该模块中,为用户提供显示缓存区和显示刷新函数,只需在显示缓存中写入待显示的内容,同时在定时中断中调用刷新函数,即可实现数码管的显示。
- 定时器模块:该模块为系统提供2ms的时间基准,同时在定时中断中调用数码管显示刷新函数。
五、项目获取
链接: 百度云https://pan.baidu.com/s/1sO5ACFVbpPh9UFlZCpHnHw?pwd=YIWE
提取码: YIWE