《数字电子电路》 课程设计:十字路口红绿灯自动控制系统(上)(multisim仿真及PCB实现)

(一)前言

    本系列文章就笔者在大二下学期进行《数字电子线路》课程设计的题目:十字路口红绿灯自动控制系统 进行详细的讲解,希望对读者有所帮助。

(二)目录

一、主要指标及要求

二、电路工作原理

1、工作原理系统框图

       2、方案选择

三、单元电路设计

1、脉冲信号发生器

2、倒计时计数器

3、状态控制器

4、红绿灯控制逻辑与红绿灯显示电路

5、数码管译码器与显示电路

四、完整的电路图

五、仿真及结果

1、单元电路仿真结果

       2、 整体仿真结果

六、PCB的绘制:

七、电路性能指标测试结果

附录:元器件清单

(三)正文

一、主要指标及要求

 设计十字路口红绿灯自动控制系统,同时控制主干道和支干道的红绿灯和倒计时显示,指挥十字路口车辆和行人有序通过,维持交通秩序和保障车辆、行人的安全。

完成红->绿->黄->红->绿->黄……交通信号灯的循环,并添加黄灯闪烁功能,以警告车辆和行人红灯的到来;

主干道和支干道红、绿灯时长相同,为25秒,黄灯闪烁时间为5秒;

用数码管显示倒计时。

二、电路工作原理

1、工作原理系统框图

 

 2、方案选择

    经过前期的调研与对本小组现有能力的结合,我们最终确定了最有可行性的设计方案。十字路口红绿灯自动控制系统由以下五个模块组成:脉冲信号发生器、倒计时计数器、状态控制器、红绿灯控制逻辑与红绿灯显示电路、数码管译码器与显示电路。各个模块的功能如下:

脉冲信号发生器:

由NE555无稳态构成多谐振荡器,利用公式计算配置,产生周期为一秒的时钟脉冲信号。

倒计时计数器:

由两片74LS190N十进制可逆计数器构成,通过控制置数输出个位、十位BCD用于数码管显示,并控制状态控制器的状态变化。

状态控制器:

由一片74LS74N双D触发器构成四进制计数器构成,分配00、01、10、11状态加上一系列逻辑控制红绿灯的显示。

红绿灯控制逻辑与红绿灯显示电路:

由74LS86N异或门、74LS04N非门、74LS10N三输入与非门、74LS08N与门构成组合逻辑电路和发光LED构成,输出信号控制红绿灯的亮灭。

数码管译码器与显示电路:

由74LS48N共阴极数码管译码驱动电路和共阴极数码管构成,将倒计时计数器的十位、个位BCD码显示输出。

三、单元电路设计

1、脉冲信号发生电路(典型电路啦,可以不需要明白原理,直接拿过来用)

脉冲信号发生器由NE555无稳态模式构成多谐振荡器产生周期一秒的脉冲信号。

⑴NE555引脚图及逻辑关系真值表:

利用其无稳态模式构成多谐振荡器:

⑵电路震荡周期可由以下公式得出:

振荡频率:

占空比:

经查阅典型电路,产生一秒周期的脉冲信号,可选取电阻44KΩ和50KΩ、电解电容10uF、无极性电容100nF,具体电路如下:

仿真波形:

周期998.542ms约为1秒,符合设计要求。

2、倒计时计数器(这个是在计数器的基础上改进的,需要理解)

倒计时计数器由两片74LS190N十进制可逆计数器构成,通过在十位置数端置00()0、个位置数端置0101来构成25/5进制倒计时计数器,由的状态控制倒计时为25进制还是5进制。 

74LS190引脚图及真值表如下:

倒计时模式25/05进制切换控制:

用两个74LS190级联构成100进制计数器,再利用异步整体置数法构成25进制计数器,即当=1(状态控制器状态为10或01)时,计数模式为25进制;即当=0(状态控制器状态为00或11)时,计数模式为5进制。电路状态控制器的原理详见3。

倒计时计数器电路原理图如下:

3、状态控制器(设计的精髓)

       状态控制器的设计是本次课程设计的难点,也是很有创新性的巧妙设计。状态控制器由一片双D触发器74LS74及非门74LS04、与门74LS08、异或门74LS86组成。

双D触发器74LS74、非门74LS04、与门74LS08、异或门74LS86引脚图及真值表:

双D触发器74LS74

非门74LS04

门74LS08

 

异或门74LS86

状态控制器的设计:

电路状态分配如下所示:

采用格雷码的编码方式,有效避免了多个跳变沿不能对齐而产生的竞争冒险,使电路能稳定的按……的方式循环。

状态控制器状态转移逻辑推导:

将D触发器的反相输出端反馈接到作为输入,这样就使得每一次D触发器被触发的时候,输出总是与上一次的输出相反,这样,用两个D触发器再配合相应的逻辑就能够构成格雷码状态寄存器,实现00->01->11->10->00...的状态转移。如下图所示:

(格雷码状态寄存器) 

  此时,需要解决的问题是D触发器时钟跳变沿触发的问题,即要使格雷码状态寄存器在正常倒计时的时候保持响应的状态,又要在状态转移的时候引入跳变沿触发格雷码状态寄存器从而使状态发生转移。但是经过查找资料发现现有的方法跟我们目前的电路在思路上有很大区别,并不适用于我们的设计。在设计25/5进制倒计时计数器的时候我们用到了典型的整体置数法,利用其高位74LS190在借位时从0000->1001一瞬间的高电平加非门作为的触发信号的方法,我们将反馈回到状态控制电路,用作为,用作为,这样就能够在合适的时刻实现状态的转移了!真值表如下图所示:

  这种方法不仅巧妙的利用了已有电路,节省了成本,而且十分稳定,没有导线多驱动的问题。

状态控制器电路如图所示:

4、红绿灯控制逻辑与红绿灯显示电路

红绿灯控制逻辑与显示电路由红、黄、绿三色LED以及由三输入与门74LS10、非门74LS04、与门74LS08构成的逻辑组成。这个模块的设计难点在于逻辑推导。

红、黄、绿灯控制逻辑推导:

由于我们的题目是红绿灯需要引人注目,而TTL输出高电平>2.4V,如果限流电阻太大会导致电流很小,LED亮度不高,在明亮的白天不太明显,我们就采用了5V电源驱动,因此LED灯被选中发光的时候是低电平有效,利用状态控制器的输出,有以下控制逻辑真值表:

由真值表可推导出以下控制逻辑表达式:

但是设计要求黄灯闪烁,最简单的方法是引入NE555产生的脉冲信号CLK,修改后的控制逻辑表达式如下:

红绿灯控制逻辑与红绿灯显示电路原理图

5、数码管译码器与显示电路

数码管译码器与显示电路由共阴极数码管译码驱动电路74LS48和八段数码管组成,两个74LS48分别将个位、十位74L90输出的BCD码转化为共阴极数码管段选码,并驱动共阴极数码管的输出。

74LS48引脚图及真值表:

共阴极七段数码管显示原理

数码管由abcdefg7段发光LED排布而成,其阴极接到公共地,输入高电平,对应的数码管段被点亮。由于gfedcba点亮的编码非二进制编码,因而需要译码电路将二进制BCD码转化为共阴极数码管段选码。

数码管译码器与显示电路原理图:

四、完整的电路图


在(上)篇我们一起构建了multisim仿真原理图,在(下)篇笔者将带领大家完成电路的实现工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/686376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P15---总电磁转矩T

正弦波驱动模式工作的永磁同步电动机的总电磁转矩 T clear clc% 15页表达式 syms Omega theta E I e_A E*sind(theta) e_B E*sind(theta-120) e_C E*sind(theta-240)i_A I*sind(theta) i_B I*sind(theta-120) i_C I*sind(theta-240)P e_A*i_A e_B*i_B e_C*i_CT P/Om…

Unity设备分级策略

Unity设备分级策略 前言 之前自己做的设备分级策略,在此做一个简单的记录和思路分享。希望能给大家带来帮助。 分级策略 根据拟定的评分标准,预生成部分已知机型的分级信息,且保存在包内;如果设备没有被评级过,则优…

QKD安全攻击防御方案分析和分级评估研究报告

今天分享的是行业报告:《QKD安全攻击防御方案分析和分级评估研究报告》 (内容出品方:量子信息网络产业联盟) 报告共计:180页 来源:《见鹿报告》 前言 量子通信是量子信息科学的重要分支,它…

Shellcode免杀对抗(Python)

Shellcode Python免杀,绕过360安全卫士、火绒安全、Defender Python基于cs/msf的上线 cs 执行代码2种可供选择 执行代码 1: rwxpage ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x1000, 0x40) ctypes.windll.kernel32.RtlMoveMemory…

HTTP 请求 400错误

问题 HTTP 请求 400错误 详细问题 客户端发送请求 public static UserInfo updateUserInfo(UserInfo userInfo) {// 创建 OkHttpClient 对象OkHttpClient client new OkHttpClient();// 创建请求体MediaType JSON MediaType.parse("application/json; charsetutf-8&…

Java实现停车场收费系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费模块2.4 IC卡模块2.5 IC卡挂失模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 停车场表3.2.2 车辆表3.2.3 停车收费表3.2.4 IC 卡表3.2.5 IC 卡挂失表 四、系统实现五、核心代码…

【初始RabbitMQ】工作队列的实现

工作队列 工作队列(又称为任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。 相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进 程将弹出任务并最终执行作业。当有多个工作线程…

【NI-DAQmx入门】调整数据记录长度再进行数据处理

需要注意的是,初学者很容易造成一个大循环,导致采集循环的执行时间过长,最佳操作是采集循环只干采集的事,另起一个循环做数据拆解或分析。 有时需要以一定的采样率获取数据并记录所需的长度。然而,在处理这些数据时&am…

2-17作业

#!/bin/bash read zifu case $zifu in [[:lower:]]) echo "小写字母" ;; [0-9]) echo "是数字字符" ;; [[:upper:]]) echo "是大写字母" ;; esac #!/bin/bash arr(ls ~) len${#arr…

把Activity当做dialog对话框使用

1、引言 在安卓开发中对话框的使用是不可避免的,但是原生的对话框用起来总感觉差点意思,而且位置不好控制,在与界面的交互上也不够灵活,没有像activity那样的生命周期方法,以至于某些特殊的功能无法实现。此时我们就希…

Android Studio新建EMPTY,提示Gradle下载失败,Connect timed out

Android Studio新建EMPTY,提示Gradle下载失败,Connect timed out 找到gradle-wrapper.properites文件,替换distributeionUrl为腾讯镜像,就好了,网上找了好久,就这个有效,是在这里Android导入项…

【分享】图解ADS+JLINK调试ARM

文章是对LPC2148而写的,但是对三星的44B0芯片同样适用,只需要在选择时将相应的CPU选择的S3C44B0就可以了。 JLINK在ADS下调试心得 前两天一个客户用jlink在ADS下调试LPC2148总报错,这个错误我之前在调试LPC2200的时候也碰到过,后…

ESP32学习(2)——点亮LED灯

1.前期准备 开发板原理图如下: 可见LED灯接在了GPIO2口 那么要如何编写代码控制GPIO口的电平高低呢? 我们可以参考micropython的官方文档Quick reference for the ESP32 — MicroPython latest documentation 可见,需要导入machine包 若要…

[嵌入式系统-24]:RT-Thread -11- 内核组件编程接口 - 网络组件 - TCP/UDP Socket编程

目录 一、RT-Thread网络组件 1.1 概述 1.2 RT-Thread支持的网络协议栈 1.3 RT-Thread如何选择不同的网络协议栈 二、Socket编程 2.1 概述 2.2 UDP socket编程 2.3 TCP socket编程 2.4 TCP socket收发数据 一、RT-Thread网络组件 1.1 概述 RT-Thread 是一个开源的嵌入…

Springboot 配置使用 Elasticsearch

一、安装Elasticsearch 1、Windows安装 Windows安装比较简单,ES官网Download Elasticsearch | Elastic下载压缩包,解压出来, bin 目录下有个elasticsearch.bat,双击,就运行起来了。 然后在浏览器输入localhost:9200…

php基础学习之作用域和静态变量

作用域 变量(常量)能够被访问的区域,变量可以在常规代码中定义,也可以在函数内部定义 变量的作用域 在 PHP 中作用域严格来说分为两种,但是 PHP内部还定义一些在严格意义之外的一种,所以总共算三种—— 局部…

《Go 简易速速上手小册》第1章:Go 语言基础(2024 最新版)

文章目录 1.1 Go 语言的安装与环境配置1.1.1 基础知识讲解案例 Demo:简单的 Go 程序 1.1.2 重点案例:搭建一个 Go Web 服务准备工作步骤 1:创建项目目录步骤 2:编写 Web 服务代码步骤 3:运行你的 Web 服务步骤 4&#…

RM电控工程讲义

HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) 是一个回调函数,通常在STM32的HAL库中用于处理CAN(Controller Area Network)接收FIFO 0中的消息。当CAN接口在FIFO 0中有待处理的消息时,这个函数会被调用。 HAL库C…

斯坦福大学全能家政服务机器人Mobile ALOHA以及“小群体大智慧”Zooids集群机器人

斯坦福大学成功研发出低成本自主进化克隆人类行为和任务的能力全能型家政服务机器人。 原文标题: 【Mobile ALOHA-Learning Bimanual Mobile Manipulation with Low-Cost Whole-Body Teleoperation】 论文链接:【Mobile ALOHA (mobile-aloha.github.io)】。 以及由斯坦福大学…

【Linux】进程信号的保存 | 自定义捕捉

文章目录 三、信号的阻塞(信号的保存)1. 信号相关其他常见概念2. 在内核中的表示3. sigset_t类型4. 信号集操作函数函数列表注意事项 5. 读取/修改block位图 - sigprocmask6. 读取pending位图 - sigpending 四、信号捕捉1. 信号捕捉的初步认识自定义捕捉…