交通灯信号控制器的设计实验报告
交通信号灯的plc控制实验报告

交通信号灯的PLC控制实验报告1. 引言交通信号灯是城市交通管理中不可或缺的一部分。
在过去的几十年里,随着科技的发展,人们开始使用PLC(可编程逻辑控制器)来控制交通信号灯,以提高交通流量的效率和安全性。
本实验旨在通过PLC控制交通信号灯的过程,介绍PLC的基础知识和应用。
2. 实验目的本实验的主要目的是通过搭建一个基于PLC的交通信号灯控制系统,实现信号灯的自动切换和交通流量的控制。
具体目标如下:•了解PLC的基本工作原理和编程方法•掌握交通信号灯的控制逻辑和时序•使用PLC软件进行信号灯控制程序的编写和调试3. 实验设备和材料本实验所需的设备和材料如下:•PLC控制器•交通信号灯模型•电源线•编程软件4. 实验步骤步骤1:PLC控制器的连接首先,将PLC控制器与电源线连接,并确保电源正常供电。
接下来,将交通信号灯模型与PLC控制器连接,确保信号灯能够通过PLC控制器进行控制。
步骤2:PLC编程软件的安装与设置在计算机上安装PLC编程软件,并根据软件的操作指南进行设置。
确保软件与PLC控制器成功连接,以便进行后续的编程和调试操作。
步骤3:PLC程序的编写根据交通信号灯的控制逻辑和时序,使用PLC编程软件编写相应的PLC程序。
程序的编写主要包括以下几个方面:•定义输入信号:根据实际情况,定义输入信号,如检测车辆和行人的传感器信号。
•定义输出信号:根据实际情况,定义输出信号,如交通信号灯的红、黄、绿灯控制信号。
•编写控制逻辑:根据交通信号灯的控制规则和时序要求,编写PLC 程序的控制逻辑。
例如,当检测到车辆或行人通过传感器时,相应的信号灯应亮起。
步骤4:PLC程序的调试与测试在编写完PLC程序后,进行程序的调试和测试。
通过PLC编程软件提供的仿真功能,模拟输入信号的变化,观察输出信号和交通信号灯的状态变化是否符合设计要求。
如有问题,及时修改程序并重新调试。
步骤5:实验结果分析根据实际测试结果,对实验结果进行分析和总结。
交通信号灯控制系统设计实验报告

交通信号灯控制系统设计实验报告设计目的:本设计旨在创建一个交通信号灯控制系统,该系统可以掌控红、绿、黄三种交通信号灯的工作,使其形成一种规律的交替、循环、节奏,使车辆和行人得以安全通行。
设计原理:在实际的交通灯系统中,通过交通灯控制器控制交通灯的工作。
一般采用计时器或微电脑控制器来完成,其中微电脑控制器可以方便地集成多种控制模式,并且灵活易于升级。
在本设计中,我们采用了基于Atmega16微控制器的交通信号灯控制系统。
该系统通过定时器中断、串口通信等技术来实现。
由于控制的是三个信号灯的交替,流程如下:绿灯亮:红灯和黄灯熄灭绿灯由亮到灭的时间为10秒黄灯亮:红灯和绿灯熄灭黄灯由亮到灭的时间为3秒红灯亮:绿灯和黄灯熄灭红灯由亮到灭的时间为7秒重复以上过程硬件设计:整个系统硬件设计包含ATmega16控制器、射频芯片、电源模块和4个灯组件。
ATmega16控制器采用DIP封装,作为主要的控制模块。
由于需要串口通信和遥控器控制,因此添加了RF24L01射频芯片。
该射频芯片可以很方便地实现无线通信和小型无线网络。
4个灯组件采用红、绿、黄三色LED灯与对应300Ω电阻并连。
电源模块采用5V稳压电源芯片和电容滤波,确保整个系统稳定可靠。
软件设计:通过ATmega16控制器来实现交通信号灯控制系统的功能。
控制器开始执行时进行初始化,然后进入主循环。
在主循环中,首先进行红灯亮的操作,接着在计时时间到达后执行黄灯亮的过程,然后执行绿灯亮的过程,再到计时时间到的时候执行红灯亮的过程。
每个灯持续时间的计时采用了定时器的方式实现,在亮灯过程中,每秒钟进行一次计数,到达相应的计数值后,切换到下一步灯的操作。
在RF24L01射频芯片的支持下,可以使用无线遥控器来对交通信号灯的控制进行远程控制。
在系统初始化完成后,通过串口通信对RF24L01进行初始化,然后进入控制循环。
在这个控制循环中,接收到遥控器的指令后,进行相应的控制操作,如开、关灯等。
交通信号灯控制器实验报告

交通信号灯控制器实验报告交通信号灯控制器⼀、设计任务及要求 (2)⼆、总体⽅案设计以及系统原理框图 (2)2.1、设计思路 (2)2.2、各模块相应的功能 (2)2.3、系统原理图 (3)三、单元电路设计 (3)3.1、车辆检测电路 (3)3.2、主控电路 (4)3.3、灯控电路 (5)3.4、计时控制电路 (6)3.5、计时显⽰电路 (6)3.6、反馈控制电路 (7)3.7、置数电路 (7)3.8、时基电路 (7)四、⼯作原理 (8)五、电路的软件仿真及结果分析 (8)5.1、时基电路(555接成的多谐振荡器)的电路图以及波形的显⽰ (8)5.2、结果分析 (10)六、电路的组装调试 (10)6.1、使⽤的主要仪器和仪表 (10)6.2、调试电路的⽅法和技巧 (10)6.3、调试中出现的问题、原因和排除⽅法 (11)七、收获、存在的问题和进⼀步的改进意见 (11)7.1、存在的问题和进⼀步的改进意见 (11)7.2、收获以及⼼得体会 (12)附录⼀:电路所⽤元器件 (14)附录⼆:电路全图 (15)附录三:实际电路图 (16)⼀、设计任务及要求在⼀个主⼲道和⽀⼲道汇交叉的⼗字路⼝,为了确保车辆⾏车安全,迅速通⾏,设计⼀个交通信号灯控制电路,要求如下:1、⽤两组红、绿、黄发光⼆极管作信号灯,分别指⽰主道和⽀道的通⾏状态。
2、通⾏状态⾃动交替转换,主道每次通⾏30秒,⽀道每次通⾏20秒,通⾏交替间隔时为5秒。
3、通⾏状态转换依照“主道优先”的原则,即:当主道通⾏30秒后,若⽀道⽆车则继续通⾏;当⽀道通⾏20秒后,只有当⽀道有车且主道⽆车时才允许继续通⾏。
(⽤按键模拟路⼝是否有车)4、设计计时显⽰电路,计时⽅式尽量采⽤倒计时。
⼆、总体⽅案设计以及系统原理框图2.1、设计思路本次设计采⽤模块划分的⽅法,每个模块完成⼀项功能,最后将各个模块连接起来,设计完成后,⽤Multisim进⾏仿真,仿真成功后,再去实验室焊接调试。
交通信号灯的实验报告

中南林业科技大学涉外学院实习报告名称:交通灯控制器姓名:***学号:********专业班级:电子信息工程一班时间:2011-10-5地点:林科大涉外学院目录任务和性能指标 (2)实现(设计)方案 (3)系统设计 (4)调试及性能分析 (6)性能分析: (7)相关知识概述 (7)心得体会 (7)参考文献 (8)任务和性能指标本电路设计一个交通灯控制器,需要达到的目的如下:一个周期64秒,平均分配,前32秒红灯1与绿灯2亮,后32秒绿灯1与红灯2亮。
在红灯1与绿灯2亮的期间的后8秒黄灯1、2闪烁,且在这期间红灯1与绿灯2同时亮。
闪烁频率为2。
在绿灯1与红灯2亮的期间的后8秒黄灯1、2闪烁,且在这期间绿灯1与红灯2同时亮。
闪烁频率为2。
实现(设计)方案为了达到目的,需要设计一个控制电路,这就需要一个脉冲信号发生器,一个二进制加法计数器,一个十进制减法计数器,红灯与绿灯以及黄灯是否亮由二进制加法计数器的输出状态来决定。
因此,设计一个组合逻辑电路,它的输入信号就是二进制加法计数器的输出信号,它的输出就是发光二级管的控制信号。
因此,需要一个组合逻辑电路,六个发光二级管(两个红色发光二极管、两个绿色发光二极管、两个黄色发光二极管)电路,555脉冲振荡器,4024计数器,74LS193计数器,数码管显示电路。
其结构图如下:本电路中的组合逻辑电路的输入信号为二进制计数器的输出信号,输出要控制六个发光二级管不同时刻的状态。
红灯1与绿灯2的状态相同,红灯2与绿灯1的状态相同,两个黄灯状态相同。
所以只要输出三个信号即可,分别为L1、L2、L3。
组合逻辑电路的输出信号L1、L2、L3与电路的输入信号Q7、Q6、Q5、Q4、Q3、Q2、Q1的关系用如下真值表表示:从以上可知:L1=Q7’,需要低电平有效时,L1’=Q7’’L2=Q7,需要低电平有效时,L2’=Q7’L3=Q6Q5=(Q6Q5)’’考虑到黄灯需要闪烁,可以让L3信号和Q1信号(频率为2HZ的脉冲)加到一个二输入的与非门的两个输入端,输出信号为L4,L4=(L3*Q1)’当L3为0时,L4=1当L3为1时,L4=Q1’可见,需要L4低电平有效,这样,L3为0时,黄灯不亮;L3为1时,黄灯闪烁。
交通灯设计实验报告

一、实验目的1. 理解交通灯控制系统的基本原理和设计方法。
2. 掌握使用单片机进行交通灯控制系统的设计与实现。
3. 培养动手实践能力和团队协作精神。
二、实验原理交通灯控制系统是城市交通管理的重要组成部分,其主要目的是通过红、黄、绿三种信号灯的变换,实现对车辆和行人的有序通行。
本实验采用单片机作为控制核心,通过编写程序实现对交通灯的控制。
三、实验设备1. 单片机开发板(如51单片机开发板)2. 交通灯模块(红、黄、绿三色LED灯)3. 按键模块4. 数码管模块5. 电阻、电容等电子元器件6. 调试工具(如万用表、示波器等)四、实验步骤1. 系统设计(1)确定交通灯控制系统的功能需求:实现红、黄、绿三色LED灯的交替闪烁,满足交通信号灯的基本要求。
(2)设计系统框图:单片机作为核心控制单元,通过编写程序实现对交通灯的控制。
系统框图如下:```+------------------+ +------------------+ +------------------+| | | | | || 单片机 |-------| 交通灯模块 |-------| 按键模块|| | | | | |+------------------+ +------------------+ +------------------+```(3)编写程序:根据系统需求,编写单片机控制程序,实现红、黄、绿三色LED灯的交替闪烁。
2. 硬件搭建(1)将单片机开发板与交通灯模块、按键模块、数码管模块等连接。
(2)根据电路原理图,连接电阻、电容等电子元器件。
(3)使用万用表测试电路连接是否正确。
3. 软件编程(1)使用C语言编写单片机控制程序。
(2)编译程序,生成可执行文件。
(3)将可执行文件烧录到单片机中。
4. 系统调试(1)使用示波器观察单片机引脚输出波形。
(2)检查交通灯模块是否正常工作。
(3)使用万用表测试按键模块是否正常工作。
(4)根据实际情况调整程序参数,确保系统稳定运行。
交通信号灯控制器实验报告Word版

交通信号灯控制器一、设计任务及要求 (2)二、总体方案设计以及系统原理框图 (2)2.1、设计思路 (2)2.2、各模块相应的功能 (2)2.3、系统原理图 (3)三、单元电路设计 (3)3.1、车辆检测电路 (3)3.2、主控电路 (4)3.3、灯控电路 (5)3.4、计时控制电路 (6)3.5、计时显示电路 (6)3.6、反馈控制电路 (7)3.7、置数电路 (7)3.8、时基电路 (7)四、工作原理 (8)五、电路的软件仿真及结果分析 (8)5.1、时基电路(555接成的多谐振荡器)的电路图以及波形的显示 (8)5.2、结果分析 (10)六、电路的组装调试 (10)6.1、使用的主要仪器和仪表 (10)6.2、调试电路的方法和技巧 (10)6.3、调试中出现的问题、原因和排除方法 (11)七、收获、存在的问题和进一步的改进意见 (11)7.1、存在的问题和进一步的改进意见 (11)7.2、收获以及心得体会 (12)附录一:电路所用元器件 (14)附录二:电路全图 (15)附录三:实际电路图 (16)一、设计任务及要求在一个主干道和支干道汇交叉的十字路口,为了确保车辆行车安全,迅速通行,设计一个交通信号灯控制电路,要求如下:1、用两组红、绿、黄发光二极管作信号灯,分别指示主道和支道的通行状态。
2、通行状态自动交替转换,主道每次通行30秒,支道每次通行20秒,通行交替间隔时为5秒。
3、通行状态转换依照“主道优先”的原则,即:当主道通行30秒后,若支道无车则继续通行;当支道通行20秒后,只有当支道有车且主道无车时才允许继续通行。
(用按键模拟路口是否有车)4、设计计时显示电路,计时方式尽量采用倒计时。
二、总体方案设计以及系统原理框图2.1、设计思路本次设计采用模块划分的方法,每个模块完成一项功能,最后将各个模块连接起来,设计完成后,用Multisim进行仿真,仿真成功后,再去实验室焊接调试。
2.2、各模块相应的功能(1)车辆检测电路:用来显示主路支路车辆的四种情况。
交通灯控制器报告(北理)

交通灯控制器报告(北理)本科实验报告实验名称:交通灯控制器设计目录一、设计指标 (1)二、设计框图 (1)三、设计过程 (2)3.1系统状态转换图 (2)3.2时钟基准发生电路的设计 (3)3.3传感器电路 (4)3.4预置法时序发生电路设计 (5)3.5预置数电路设计 (5)3.6控制电路设计 (6)3.7交通灯译码电路设计 (7)3.8求反电路和4位二进制码转BCD码电路 (7)3.9显示电路设计 (8)3.10 Vs有效时暂停电路设计(改进部分) (8)四、设计结果 (9)五、实验结果 (10)六、实验中遇到的问题及解决办法 (11)七、实验所需元器件 (11)八、实验心得体会 (12)一、设计指标1)设计一个十字路口交通灯,十字路口有主路和支路,共两组红绿灯;2)主路亮灯顺序为绿灯(16s)→黄灯(4s)→红灯(13s)→黄灯(4s);支路亮灯顺序为绿灯(13s)→黄灯(4s)→红灯(16s)→黄灯(4s);3)主路有一个传感器,当支路无车时,主路亮绿灯;4) 用数码管倒序显示主路的红绿灯显示时间。
二、设计框图绘制设计框图如下,三、设计过程3.1系统状态转换图符号说明:S0:一种状态,表示主路亮绿灯,支路亮红灯;S1:一种状态,表示主路亮黄灯,支路亮黄灯;S2:一种状态,表示主路亮红灯,支路亮绿灯;S3:一种状态,表示主路亮黄灯,支路亮黄灯;:表示主路亮绿灯(支路亮红灯)时间,时间到为1,不到为0;:表示主路(支路)亮黄灯时间,时间到为1,不到为0;:表示支路亮绿灯(主路亮红灯)时间,时间到为1,不到为0;:表示传感器信号,支路有人时为1,没人时为0。
=16s,=4s,=13s得到状态方程如下:可以统一为一个变量于是状态方程变成:由于采用预置法设计电路,所以T,T,T T,l y s3.2时钟基准发生电路的设计经过理论计算,确定R1=19K ,R2=62 K ,C=10F μ。
此T=0.7(R1+2R2)C=1001/1000s,对应频率为f=1000/1001Hz ≈ 1Hz仿真波形如下图所示3.3传感器电路传感器电路由开关代替,开关接R 时正常工作,开关接S 时是表示支路有车,主路一直维持绿灯。
交通灯控制器设计报告

(封面)XXXXXXX学院交通灯控制器设计报告题目:院(系):专业班级:学生姓名:指导老师:时间:年月日设计内容及要求(题目)任务1:交通灯控制器的设计设计内容与要求①设计一个十字路口交通信号灯的控制电路。
要求红、绿灯按一定的规律亮和灭,并在亮灯期间进行倒计时,且将运行时间用数码管显示出来。
②绿灯亮时,为该车道允许通行信号,红灯亮时,为该车道禁止通行信号。
要求主干道每次通行时间为Tx秒,支干道每次通行时间为Ty秒。
每次变换运行车道前绿灯闪烁,持续时间为5秒。
即车道要由X转换为Y时,X在通行时间只剩下5秒钟时,绿灯闪烁显示,Y仍为红灯。
③可以对X,Y车道上交通灯运行的时间进行重新设置,20≦Tx≦99 ,10≦Ty≦39④对器件进行在系统编程和实验验证。
⑤写出设计性实验报告,并打印各层次的源文件和仿真波形,然后作简要说明。
可以看得出其实四个状态可以简化,在后期实施的时候为了简化故将四个状态转换成了两个状态,即为干路和支路的两个不同的状态修改后的状态结构框图如下(未加附加功能):State1:干路绿灯开始常亮,支路红灯开始常亮,等到了干路计时还剩下五秒的时候,干路绿灯交替闪亮,支路红灯不变。
State2: 2.干路转换为红灯常亮,支路变为为绿灯常亮,等到了支路计时还剩下五秒的时候,支路绿灯交替闪亮,干路红灯不变。
在分析系统的组成结构,可以知道系统大概有三个部分组成,其中不难得出,包括:1.显示部分:分为指示灯显示和数码管显示(其中这两者应该是同步的,同一控制器,秒脉冲控制)。
2.计数部分:计数器递减计数要求是以秒脉冲计数,当达到指定时间要有重置部分将时间重置,重新计数。
3.控制部分:提供秒脉冲时钟信号,控制数码管和指示灯的变化以及设置时间等功能。
三部分之间的关系可以表达为:重置计数器重新开始计数控制时间达到预定值经上面分析,大致可以得到整个交通灯的结构框图:系统框图经过分析可知,该设计需要时钟信号,所以需要秒脉冲信号 1.信号发生器要显示亮灯时间需要 2.计数器3.数码显示器对于主路和支路需要显示红绿灯,故需要4.信号显示灯5.状态译码器其中各部分功能如下:交通指示灯:显示主支路通行情况;数码管显示:显示通行剩余时间,从绿灯亮起开始计算,转换灯的颜色后重新计数;状态译码器:经控制器控制,输出交通指示灯和数码管显示当前状态;控制器:控制状态译码器的输出状态和控制递减计数器的计数和重置;重置装置:接收控制器的命令,在相应的时段使递减计数器重置,重新从预设值递减;减法计数器:控制数码显示管的数值计时显示;分频器:将脉冲信号提供的源信号进行分频,得到秒脉冲信号;脉冲源信号:为整个电路提供初始脉冲源信号;设置时间: 由控制器输入设置,改变主支路上的绿灯的时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通灯信号控制器的设计1、实验目的(1)学习QuartusII软件的基本使用方法。
(2)学习VHDL程序的基本结构和基本语句。
2、实验内容欲设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下:(1)主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。
(2)主干道处于常允许通行状态,支干道有车来时才允许通行;当主干道允许通行亮绿灯时,支干道亮红灯;支干道允许通行亮绿灯时,主干道亮红灯。
(3)当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5s的黄灯作为过渡,并进行减计时显示。
3、设计思路交通控制器拟由单片的CPLD/FPGA来实现,经分析设计要求,整个系统由8个单元电路组成,包括:JTDKZ:交通灯状态控制CNT45S:45秒计时CNT05S:5秒计时CNT25S:25秒计时XSKZ:产生数码管段码数据,数据为BCD码YMQ:译码器,将BCD码转为段码CTRLS:产生数码管动态扫描信号MUXB41:4选1数据选择器,并产生位选信号整个控制系统中,U1为交通灯控制模块JTDKZ,此模块根据主、支道传感器信号SM、SB以及来自时基发生电路的时钟信号CLK,发出主、支道指示灯的控制信号,同时向各定时单元、显示控制单元发出使能控制信号EN45、EN25、EN05M、EN05B;U2、U3、U4为45s、5s、25s定时单元CNT45S、CNT05S、CNT25S,这些单元根据SM、SB、CLK及JTDKZ发出的有关使能控制信号EN45、EN25、EN05M、EN05B,按要求进行定时,并将其输出传送至显示控制单元;U5为显示控制单元XSKZ,此单元根据JTDKZ发出的有关使能控制信号EN1、EN2、EN3、EN4选择定时单元CNT45S、CNT05S、CNT25S的输出,并将之传送至各显示译码器:U6、U7、U8、U9为译码器YMQ,它将显示控制单元XSKZ的输出作为输入进行译码,将XSKZ的时间BCD码译码为数码管的8位段码,并将产生的段码经MUXB41送给数码管进行动态扫描显示的过程,动态扫描的选测信号由CTRLS产生。
在定时单元CNT45S和CNT25S的设计中,根据设计要求需要进行减计数,但本设计中仍使用的是加法计数,只是在将计数结果转换成两位BCD码时,将计数的最小值对应转换成显示定时的最大值,计数值加1时,转换的显示值减1,以此类推。
同时,由于主、支道从亮绿灯转到亮红灯中间有5s亮黄灯的时间过渡,因此对应的支、主道亮红灯的时间比对应的主、支道亮绿灯的时间要多5s,考虑到此原因,CNT45S和CNT25S计数器在把计数结果转换成显示的BCD码值时,将用于驱动绿灯的BCD码按实际定时要求转换,而将对应的用于驱动红灯的BCD码在实际定时要求的基础上加5进行转换。
4、实验设计1)系统原理框图本系统总体可分为两个两个层次,即LED显示和数码管显示,核心模块为JTDKZ产生系统的所有信号2)VHDL程序JTDKZ的VHDL程序--Jtdkz.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY JTDKZ ISPORT(CLK,SM,SB:IN STD_LOGIC;MR,MY,MG,BR,BY,BG:OUT STD_LOGIC);END ENTITY JTDKZ;ARCHITECTURE ART OF JTDKZ ISTYPE STATE_TYPE IS(A,B,C,D);SIGNAL STATE:STATE_TYPE:=A;BEGINCNT:PROCESS(CLK) ISVARIABLE S:INTEGER RANGE 0 TO 45:=0;VARIABLE CLR:BIT:='0';VARIABLE EN:BIT:='0';BEGINIF(CLK'EVENT AND CLK='1') THENIF CLR='0' THEN S:=0;ELSIF EN='0' THEN S:=S;ELSE S:=S+1;END IF;CASE STATE ISWHEN A=>MR<='0';MY<='0';MG<='1';BR<='1';BY<='0';BG<='0';IF(SB AND SM)='1' THENIF S=45 THEN STATE<=B;CLR:='0';EN:='0';ELSE STATE<=A;CLR:='1';EN:='1';END IF;ELSIF(SB AND (NOT SM))='1' THENSTATE<=C;CLR:='0';EN:='0'; --STATE<=BELSE STATE<=A;CLR:='1';EN:='0'; --END IF;WHEN B=>MR<='0';MY<='1';MG<='0';BR<='1';BY<='0';BG<='0';IF S=5 THEN STATE<=C;CLR:='0';EN:='0';ELSE STATE<=B;CLR:='1';EN:='1';END IF;WHEN C=>MR<='1';MY<='0';MG<='0';BR<='0';BY<='0';BG<='1';IF(SB AND SM)='1' THENIF S=25 THEN STATE<=D;CLR:='0';EN:='0';ELSE STATE<=C;CLR:='1';EN:='1';END IF;ELSIF SB='0' THEN STATE<=A;CLR:='0';EN:='0';ELSIF S=25 THEN STATE<=D;CLR:='0';EN:='0';ELSE STATE<=C;CLR:='1';EN:='1';END IF;WHEN D=>MR<='1';MY<='0';MG<='0';BR<='0';BY<='1';BG<='0';IF S=5 THEN STATE<=A;CLR:='0';EN:='0';ELSE STATE<=D;CLR:='1';EN:='1';END IF;WHEN OTHERS =>STATE<=A;END CASE;END IF;END PROCESS CNT;END ARCHITECTURE ART;XSKZ的VHDL程序--Xskz.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY XSKZ ISPORT(EN45,EN25,EN05M,EN05B:IN STD_LOGIC;AIN45M,AIN45B,AIN25M,AIN25B,AIN05:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DOUTM,DOUTB:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY XSKZ;ARCHITECTURE ART OF XSKZ ISBEGINPROCESS(EN45,EN25,EN05M,EN05B,AIN45M,AIN45B,AIN25M,AIN25B,AIN05) IS BEGINIF EN45='1' THEN DOUTM<=AIN45M(7 DOWNTO 0);DOUTB<=AIN45B(7DOWNTO 0);ELSIF EN05M='1' THEN DOUTM<=AIN05(7 DOWNTO 0);DOUTB<=AIN05(7DOWNTO 0);ELSIF EN25='1' THEN DOUTM<=AIN25M(7 DOWNTO 0);DOUTB<=AIN25B(7 DOWNTO 0);ELSIF EN05B='1' THEN DOUTM<=AIN05(7 DOWNTO 0);DOUTB<=AIN05(7DOWNTO 0);END IF;END PROCESS;END ARCHITECTURE ART;CNT05S的VHDL程序--Cnt05s.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT05S ISPORT(CLK,EN05M,EN05B:IN STD_LOGIC;DOUT5:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY CNT05S;ARCHITECTURE ART OF CNT05S ISSIGNAL CNT3B:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINPROCESS(CLK,EN05M,EN05B) ISBEGINIF(CLK'EVENT AND CLK='1') THENIF EN05M='1' THEN CNT3B<=CNT3B+1;ELSIF EN05B='1' THEN CNT3B<=CNT3B+1;ELSIF EN05B='0' THEN CNT3B<=CNT3B-CNT3B-1;END IF;END IF;END PROCESS;PROCESS(CNT3B) ISBEGINCASE CNT3B ISWHEN"000"=>DOUT5<="00000101";WHEN"001"=>DOUT5<="00000100";WHEN"010"=>DOUT5<="00000011";WHEN"011"=>DOUT5<="00000010";WHEN"100"=>DOUT5<="00000001";WHEN OTHERS=>DOUT5<="00000000";END CASE;END PROCESS;END ARCHITECTURE ART;CNT25S的VHDL程序--Cnt25s.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT25S ISPORT(SB,SM,CLK,EN25:IN STD_LOGIC;DOUT25M,DOUT25B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY CNT25S;ARCHITECTURE ART OF CNT25S ISSIGNAL CNT5B:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINPROCESS(SB,SM,CLK,EN25) ISBEGINIF (SB='0'OR SM='0')THEN CNT5B<=CNT5B-CNT5B-1;ELSIF(CLK'EVENT AND CLK='1') THENIF EN25='1' THEN CNT5B<=CNT5B+1;ELSIF EN25='0' THEN CNT5B<=CNT5B-CNT5B-1;END IF;END IF;END PROCESS;PROCESS(CNT5B) ISBEGINCASE CNT5B ISWHEN"00000"=>DOUT25M<="00100101";DOUT25B<="00110000";WHEN"00001"=>DOUT25M<="00100100";DOUT25B<="00101001";WHEN"00010"=>DOUT25M<="00100011";DOUT25B<="00101000";WHEN"00011"=>DOUT25M<="00100010";DOUT25B<="00100111";WHEN"00100"=>DOUT25M<="00100001";DOUT25B<="00100110";WHEN"00101"=>DOUT25M<="00100000";DOUT25B<="00100101";WHEN"00110"=>DOUT25M<="00011001";DOUT25B<="00100100";WHEN"00111"=>DOUT25M<="00011000";DOUT25B<="00100011";WHEN"01000"=>DOUT25M<="00010111";DOUT25B<="00100010";WHEN"01001"=>DOUT25M<="00010110";DOUT25B<="00100001";WHEN"01010"=>DOUT25M<="00010101";DOUT25B<="00100000";WHEN"01011"=>DOUT25M<="00010100";DOUT25B<="00011001";WHEN"01100"=>DOUT25M<="00010011";DOUT25B<="00011000";WHEN"01101"=>DOUT25M<="00010010";DOUT25B<="00010111";WHEN"01110"=>DOUT25M<="00010001";DOUT25B<="00010110";WHEN"01111"=>DOUT25M<="00010000";DOUT25B<="00010101";WHEN"10000"=>DOUT25M<="00001001";DOUT25B<="00010100";WHEN"10001"=>DOUT25M<="00001000";DOUT25B<="00010011";WHEN"10010"=>DOUT25M<="00000111";DOUT25B<="00010010";WHEN"10011"=>DOUT25M<="00000110";DOUT25B<="00010001";WHEN"10100"=>DOUT25M<="00000101";DOUT25B<="00010000";WHEN"10101"=>DOUT25M<="00000100";DOUT25B<="00001001";WHEN"10110"=>DOUT25M<="00000011";DOUT25B<="00001000";WHEN"10111"=>DOUT25M<="00000010";DOUT25B<="00000111";WHEN"11000"=>DOUT25M<="00000001";DOUT25B<="00000110";WHEN OTHERS=>DOUT25M<="00000000";DOUT25B<="00000000";END CASE;END PROCESS;END ARCHITECTURE ART;CNT45S的VHDL程序--Cnt45s.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT45S ISPORT(SB,SM,CLK,EN45:IN STD_LOGIC;DOUT45M,DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY CNT45S;ARCHITECTURE ART OF CNT45S ISSIGNAL CNT6B:STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINPROCESS(SB,SM,CLK,EN45) ISBEGINIF SB='0' OR SM='0' THEN CNT6B<=CNT6B-CNT6B-1;ELSIF(CLK'EVENT AND CLK='1') THENIF EN45='1' THEN CNT6B<=CNT6B+1;ELSIF EN45='0' THEN CNT6B<=CNT6B-CNT6B-1;END IF;END IF;END PROCESS;PROCESS(CNT6B) ISBEGINCASE CNT6B ISWHEN"000000"=>DOUT45M<="01000101";DOUT45B<="01010000"; WHEN"000001"=>DOUT45M<="01000100";DOUT45B<="01001001"; WHEN"000010"=>DOUT45M<="01000011";DOUT45B<="01001000"; WHEN"000011"=>DOUT45M<="01000010";DOUT45B<="01000111"; WHEN"000100"=>DOUT45M<="01000001";DOUT45B<="01000110"; WHEN"000101"=>DOUT45M<="01000000";DOUT45B<="01000101"; WHEN"000110"=>DOUT45M<="00111001";DOUT45B<="01000100"; WHEN"000111"=>DOUT45M<="00111000";DOUT45B<="01000011"; WHEN"001000"=>DOUT45M<="00110111";DOUT45B<="01000010"; WHEN"001001"=>DOUT45M<="00110110";DOUT45B<="01000001"; WHEN"001010"=>DOUT45M<="00110101";DOUT45B<="01000000"; WHEN"001011"=>DOUT45M<="00110100";DOUT45B<="00111001"; WHEN"001100"=>DOUT45M<="00110011";DOUT45B<="00111000"; WHEN"001101"=>DOUT45M<="00110010";DOUT45B<="00110111"; WHEN"001110"=>DOUT45M<="00110001";DOUT45B<="00110110"; WHEN"001111"=>DOUT45M<="00110000";DOUT45B<="00110101"; WHEN"010000"=>DOUT45M<="00101001";DOUT45B<="00110100"; WHEN"010001"=>DOUT45M<="00101000";DOUT45B<="00110011"; WHEN"010010"=>DOUT45M<="00100111";DOUT45B<="00110010";WHEN"010011"=>DOUT45M<="00100110";DOUT45B<="00110001";WHEN"010100"=>DOUT45M<="00100101";DOUT45B<="00110000";WHEN"010101"=>DOUT45M<="00100100";DOUT45B<="00101001";WHEN"010110"=>DOUT45M<="00100011";DOUT45B<="00101000";WHEN"010111"=>DOUT45M<="00100010";DOUT45B<="00100111";WHEN"011000"=>DOUT45M<="00100001";DOUT45B<="00100110";WHEN"011001"=>DOUT45M<="00100000";DOUT45B<="00100101";WHEN"011010"=>DOUT45M<="00011001";DOUT45B<="00100100";WHEN"011011"=>DOUT45M<="00011000";DOUT45B<="00100011";WHEN"011100"=>DOUT45M<="00010111";DOUT45B<="00100010";WHEN"011101"=>DOUT45M<="00010110";DOUT45B<="00100001";WHEN"011110"=>DOUT45M<="00010101";DOUT45B<="00100000";WHEN"011111"=>DOUT45M<="00010100";DOUT45B<="00011001";WHEN"100000"=>DOUT45M<="00010011";DOUT45B<="00011000";WHEN"100001"=>DOUT45M<="00010010";DOUT45B<="00010111";WHEN"100010"=>DOUT45M<="00010001";DOUT45B<="00010110";WHEN"100011"=>DOUT45M<="00010000";DOUT45B<="00010101";WHEN"100100"=>DOUT45M<="00001001";DOUT45B<="00010100";WHEN"100101"=>DOUT45M<="00001000";DOUT45B<="00010011";WHEN"100110"=>DOUT45M<="00000111";DOUT45B<="00010010";WHEN"100111"=>DOUT45M<="00000110";DOUT45B<="00010001";WHEN"101000"=>DOUT45M<="00000101";DOUT45B<="00010000";WHEN"101001"=>DOUT45M<="00000100";DOUT45B<="00001001";WHEN"101010"=>DOUT45M<="00000011";DOUT45B<="00001000";WHEN"101011"=>DOUT45M<="00000010";DOUT45B<="00000111";WHEN"101100"=>DOUT45M<="00000001";DOUT45B<="00000110";WHEN OTHERS=>DOUT45M<="00000000";DOUT45B<="00000000";END CASE;END PROCESS;END ARCHITECTURE ART;◆YMQ的VHDL程序LIBRARY IEEE;--数据译码器将XSKZ产生的BCD码数据转换为数码管显示的段码USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YMQ ISPORT(AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--数据输入,来源是XSKZ产生的8位数据,在取出高4位和低4位OUT8:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));--段码数据END ENTITY YMQ;ARCHITECTURE ART OF YMQ ISBEGINPROCESS(AIN4)BEGINCASE AIN4 IS--将4位BCD码转换为8位段码数据WHEN "0000"=>OUT8<="00111111";WHEN "0001"=>OUT8<="00000110";WHEN "0010"=>OUT8<="01011011";WHEN "0011"=>OUT8<="01001111";WHEN "0100"=>OUT8<="01100110";WHEN "0101"=>OUT8<="01101101";WHEN "0110"=>OUT8<="01111101";WHEN "0111"=>OUT8<="00000111";WHEN "1000"=>OUT8<="01111111";WHEN "1001"=>OUT8<="01101111";WHEN OTHERS=>OUT8<="00000000";END CASE;END PROCESS P2;END ARCHITECTURE ART;◆MXB41的VHDL程序LIBRARY IEEE;--4选一数据选择器,以此实现共阴极数码管动态扫描显示USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUXB41 ISPORT(DATA1,DATA2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示的数据段码DATA3,DATA4 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);SE: IN STD_LOGIC_VECTOR(1 DOWNTO 0);SEDATA: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--选择出的数据SECOM: OUT STD_LOGIC_VECTOR( 2 DOWNTO 0));--产生的位选数据--DATA1:主道低位段码--DATA2:主道高位段码--DATA3:支道低位段码--DATA4:支道高位段码END ENTITY MUXB41;ARCHITECTURE ART OF MUXB41 ISBEGINp1: PROCESS(SE) IS--对选择信号验证,以此产生送到数码管显示的数据BEGINIF SE="00" THEN SEDATA<=DATA1;ELSIF SE="01" THEN SEDATA<=DATA2;ELSIF SE="10" THEN SEDATA<=DATA3;ELSE SEDATA<=DATA4;END IF;END PROCESS P1;P2: PROCESS(SE) IS--对选择信号验证,以此产生送到数码管位选的数据BEGINCASE SE ISWHEN "00"=>SECOM<="000";--主道低位WHEN "01"=>SECOM<="001";--主道高位WHEN "10"=>SECOM<="100";--支道低位WHEN "11"=>SECOM<="101";--支道高位WHEN OTHERS =>SECOM<="111";END CASE;END PROCESS P2;END ARCHITECTURE ART;CTRLS的VHDL程序LIBRARY IEEE;--数码管动态扫描,原理:给一个CLK产生2个信号(4钟组合)将这两个信号送给4选1数据选择器,选出要在数码管上显示的数据,CLK要在24HZ以上USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CTRLS ISPORT(CLK:IN STD_LOGIC;SEL:OUT STD_LOGIC_VECTOR(1 DOWNTO 0));--数据选择器的选择信号END ENTITY CTRLS;ARCHITECTURE ART OF CTRLS ISSIGNAL CNT:STD_LOGIC_VECTOR(1 DOWNTO 0);--数据选择信号的信号变量BEGINPROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1'THENIF CNT="11"THEN--选择信号变为11则时信号重新归为00,实现数码动态扫描显示数据CNT<="00";ELSECNT<=CNT+'1';END IF;END IF;END PROCESS;SEL<=CNT;END ARCHITECTURE ART;顶层文件DJTLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DJT ISPORT(SM:IN STD_LOGIC;SB:IN STD_LOGIC;CLK:IN STD_LOGIC;CLK2:IN STD_LOGIC;--此数码管扫描时钟必须在24HZ以上 M_G:OUT STD_LOGIC;M_Y:OUT STD_LOGIC;M_R:OUT STD_LOGIC;B_G:OUT STD_LOGIC;B_Y:OUT STD_LOGIC;B_R:OUT STD_LOGIC;COM:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);DATA:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY DJT;ARCHITECTURE ART OF DJT ISCOMPONENT JTDKZ ISPORT(CLK:IN STD_LOGIC;SM:IN STD_LOGIC;SB:IN STD_LOGIC;MG:OUT STD_LOGIC;MY:OUT STD_LOGIC;MR:OUT STD_LOGIC;BG:OUT STD_LOGIC;BY:OUT STD_LOGIC;BR:OUT STD_LOGIC);END COMPONENT JTDKZ;COMPONENT CNT45S ISPORT(SM:IN STD_LOGIC;SB:IN STD_LOGIC;CLK:IN STD_LOGIC;EN45:IN STD_LOGIC;DOUT45M:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT CNT45S;COMPONENT CNT05S ISPORT(CLK:IN STD_LOGIC;EN05M:IN STD_LOGIC;EN05B:IN STD_LOGIC;DOUT5:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT CNT05S;COMPONENT CNT25S ISPORT(SM:IN STD_LOGIC;SB:IN STD_LOGIC;CLK:IN STD_LOGIC;EN25:IN STD_LOGIC;DOUT25M,DOUT25B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END COMPONENT CNT25S;COMPONENT XSKZ ISPORT(EN45:IN STD_LOGIC;AIN45M:IN STD_LOGIC_VECTOR(7 DOWNTO 0);AIN45B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);EN05M:IN STD_LOGIC;EN05B:IN STD_LOGIC;AIN05:IN STD_LOGIC_VECTOR(7 DOWNTO 0);EN25:IN STD_LOGIC;AIN25M:IN STD_LOGIC_VECTOR(7 DOWNTO 0);AIN25B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DOUTM:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);DOUTB:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END COMPONENT XSKZ;COMPONENT CTRLS ISPORT(CLK:IN STD_LOGIC;SEL:OUT STD_LOGIC_VECTOR(1 DOWNTO 0)); END COMPONENT CTRLS;COMPONENT MUXB41 ISPORT (DATA1:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DATA2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DATA3:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DATA4:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SE: IN STD_LOGIC_VECTOR(1 DOWNTO 0);SEDATA: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SECOM: OUT STD_LOGIC_VECTOR( 2 DOWNTO 0)); END COMPONENT MUXB41;COMPONENT YMQ ISPORT(AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);OUT8:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END COMPONENT YMQ;SIGNAL EN1,EN2,EN3,EN4:STD_LOGIC;SIGNAL S45M:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL S45B:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL S05:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL S25M:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL S25B:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL YM:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL YB:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL D1:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL D2:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL D3:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL D4:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL SEL:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINU1:JTDKZ PORT MAP(CLK,SM,SB,EN1,EN2,M_R,EN3,EN4,B_R);U2:CNT45S PORT MAP(SM,SB,CLK,EN1,S45M,S45B);U3:CNT05S PORT MAP(CLK,EN2,EN4,S05);U4:CNT25S PORT MAP(SM,SB,CLK,EN3,S25M,S25B);U5:XSKZ PORT MAP(EN1,S45M,S45B,EN2,EN4,S05,EN3,S25M,S25B,YM,YB); U6:YMQ PORT MAP(YM(3 DOWNTO 0),D1);U7:YMQ PORT MAP(YM(7 DOWNTO 4),D2);U8:YMQ PORT MAP(YB(3 DOWNTO 0),D3);U9:YMQ PORT MAP(YB(7 DOWNTO 4),D4);U10:CTRLS PORT MAP(CLK2,SEL);U11:MUXB41 PORT MAP(D1,D2,D3,D4,SEL,DATA,COM);M_G<=EN1;M_y<=EN2;B_G<=EN3;B_Y<=EN4;END ARCHITECTURE ART;5、实验结果及总结(1)系统仿真结果JTDKZJNT05JNT25JNT45CTRLSYMQ(2)硬件验证。