6.基于51单片机的红绿灯系统仿真

一、运行环境

  • 仿真软件: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值