简易交通灯控制器设计实验六报告格式
- 格式:pdf
- 大小:550.70 KB
- 文档页数:10
交通灯控制实验报告交通灯控制实验报告引言:交通灯是城市交通管理的重要组成部分,通过对交通流量的控制,有效地维护交通秩序和安全。
本次实验旨在通过搭建一个简单的交通灯控制系统,探究不同交通流量下的信号灯变化规律,并分析其对交通流畅度和效率的影响。
实验装置:实验装置由红、黄、绿三种颜色的LED灯组成,分别代表红灯、黄灯和绿灯。
通过按键控制,可以切换不同灯光的显示状态。
在实验过程中,我们将模拟不同交通流量情况下的信号灯变化。
实验过程:1. 低交通流量情况下:首先,我们模拟低交通流量情况。
设置红灯时间为20秒,绿灯时间为30秒,黄灯时间为5秒。
在这种情况下,红灯的时间较长,确保道路上的车辆能够安全通过。
绿灯时间相对较短,以充分利用交通资源,提高交通效率。
黄灯时间较短,用于过渡信号灯变化。
2. 中等交通流量情况下:接下来,我们模拟中等交通流量情况。
设置红灯时间为30秒,绿灯时间为40秒,黄灯时间为5秒。
在这种情况下,红灯时间相对较长,确保道路上的车辆能够顺利通过。
绿灯时间适中,以保持交通的流畅性。
黄灯时间依然较短,用于过渡信号灯变化。
3. 高交通流量情况下:最后,我们模拟高交通流量情况。
设置红灯时间为40秒,绿灯时间为50秒,黄灯时间为5秒。
在这种情况下,红灯时间最长,确保道路上的车辆能够完全通过。
绿灯时间相对较长,以缓解交通压力,提高交通效率。
黄灯时间仍然较短,用于过渡信号灯变化。
实验结果:通过实验观察,我们发现不同交通流量下的信号灯变化对交通流畅度和效率有着明显的影响。
在低交通流量情况下,红灯时间较长,确保车辆安全通过,但可能导致交通效率稍有降低。
在中等交通流量情况下,信号灯的设置更加平衡,保证了交通的流畅性和效率。
而在高交通流量情况下,红灯时间最长,确保车辆完全通过,但也导致交通效率相对较低。
结论:通过本次实验,我们得出了以下结论:交通灯的设置应根据不同交通流量情况进行合理调整,以保证交通的流畅性和效率。
一、实验目的1. 理解交通灯控制系统的工作原理。
2. 掌握使用单片机进行交通灯控制系统的设计与实现。
3. 提高动手实践能力和问题解决能力。
二、实验原理交通灯控制系统通常采用单片机作为核心控制单元,通过编程实现对交通灯的红、黄、绿三种灯光状态的切换。
本实验采用单片机(如STC89C52)作为核心控制单元,利用定时器实现灯光的定时切换,并通过LED灯模拟交通灯的灯光状态。
三、实验器材1. 单片机开发板(如STC89C52开发板)2. LED灯(红、黄、绿各一个)3. 电阻(根据LED灯的规格选择)4. 跳线5. 编程器6. 计算机四、实验步骤1. 硬件连接:- 将红、黄、绿LED灯分别连接到单片机的P1.0、P1.1、P1.2端口。
- 将电阻串联在每个LED灯的两端,防止LED灯过载。
- 将跳线连接到单片机的相关引脚,用于编程和调试。
2. 软件编程:- 使用Keil软件编写单片机程序,实现交通灯的控制逻辑。
- 设置定时器,实现灯光的定时切换。
- 编写主循环程序,根据定时器的值切换LED灯的状态。
3. 程序调试:- 将程序烧录到单片机中。
- 使用示波器或逻辑分析仪观察LED灯的状态,确保程序运行正常。
4. 实验验证:- 将LED灯连接到实际交通灯的位置。
- 启动单片机,观察LED灯的状态是否符合交通灯的控制逻辑。
五、实验结果与分析1. 实验结果:- 红灯亮时,表示禁止通行。
- 绿灯亮时,表示允许通行。
- 黄灯亮时,表示准备切换到红灯。
2. 实验分析:- 通过本次实验,掌握了使用单片机进行交通灯控制系统的设计与实现。
- 了解了定时器在实现灯光切换中的作用。
- 提高了动手实践能力和问题解决能力。
六、实验总结1. 优点:- 实验操作简单,易于上手。
- 理论与实践相结合,提高了学生的动手能力。
2. 不足:- 实验内容较为简单,未能涉及到复杂交通灯控制系统的设计。
- 实验器材较为有限,限制了实验的拓展性。
七、实验拓展1. 研究复杂交通灯控制系统的设计,如多路口交通灯协同控制。
交通灯信号灯自动控制系统交通灯原理图一、系统的基本功能要求(1)以秒为计时单位,两位数码管以十进制递减计数形式作定时显示,在递减计数回零瞬间完成换灯操作。
(2)通过键盘红黄绿三色信号灯所亮时间在0~99秒内任意设定。
(3)十字路口的通行起始状态可人工设定,运行中可通过人工干预使十字路口通行状态固定于任何一种工作模式。
硬件设计1.系统总体框图2.电路设计(1)显示模块倒计时与时钟说明:⑴共阴极两位数码管用于倒计时;段选端由锁存器控制,位选端用P3_0与P3_1控制⑵两个四位共阴极数码组成八位数码管用于时钟显示段位选分别由两个锁存器控制(2)红绿灯模块说明:⑴图为两方向的红绿黄灯,分别接在P0口上,由P0口控制⑵51系列单片机的P0口内部没有集成上拉电阻,加上拉就是提高驱动能力,必须要通过上拉电阻接VCC。
上拉电阻一般接1K的。
(3)键盘模块说明⑴P2键控制功能说明:P2^6 key0绿灯位选择P2^5 key1黄灯位选择P2^4 key2 加1操作P2^3 key3 减1操作P2^2 key4 信号灯状态固定P2^1 key5 信号灯状态切换P2^0 key6时钟时分秒设置键⑵键盘加上拉电阻为了提高驱动能力3.复位电路:4.时钟电路:说明:用12M晶振时电容要选择30p软件部分1、主程序流程图2、时钟初值控制子程序3、绿灯,黄灯初值设置子程序4、时钟控制与倒计时控制时钟,倒计时初值通过键盘输入。
倒计时使用52单片机内部定时器1实现计数,时钟控制部分是使用定时、计数器2实现计时,以秒为基本单位在数码管中显示。
时钟部分:当秒的个位计时到了10,则秒个位清0,同时十位进一,以此类推;倒计时部分显示是则递减显示。
此过程通过判断语句实现。
5、.灯状态控制灯的状态通过键盘扫描控制。
状态固定键按下时,关闭定时器1;再次按下此键时,打开定时器。
状态选择键按下时,程序跳至下一个状态的程序控制部分,从而实现状态改变。
综合设计实验项目名称:交通灯控制系统设计适用年级: 2所属课程:微型计算机原理班级:2011级电通6C班姓名:林学号:**********x日期:2013/6/23一、实验目的:要求学生综合所学的软硬件知识,并应用基础实验所获得的实验设计技能,独立设计解决实际应用问题的系统。
二、设计要求:(1)东西方向和南北方向交替准行控制1)使东西方向准行时,东西方向上的绿灯亮,南北方向的红灯亮,经过15秒后,使南北方向准行时,南北方向上的绿灯亮,东西方向的红灯亮,如此交替。
2)假设东西方向是主要交通干道,当在南北方向准行15秒时间未到时,检测到东西方向已聚集了8辆车,则提前使东西方向准行,南北方向禁行。
(2)特殊控制1)当准行和禁行时间倒计时到最后3秒时,准行方向上绿灯亮的同时该方向的黄灯闪烁,而禁行方向上的红灯亮同时黄灯也闪烁。
2)在数码管上显示准行时间,并以秒倒计时。
说明:设实验箱发光二极管单元中的一个绿灯为东西方向上的绿灯,最后一个绿灯为南北方向上的绿灯;第一个红灯为东西方向上的红灯,最后一个红灯为南北方向上的红灯;第二个红灯为东西方向上的黄灯,第三个红灯为南北方向上的黄灯。
三、具体设计内容:8255初始化:A、B、C口方式0输出A口低4位输出位选,B口输出显示代码C口输出灯控信号8253初始化:T0定时20ms,方式2/3,IRQ0 中断T2计数,方式0,IRQ7中断时钟计数初始化:N1=25,N2=2,N3=15,0.5S 1S 15SK=0,(0前10S/FFH后15S)东西准行信号,南北准行信号黄灯亮,黄灯灭显示秒数的个位显示秒数的十位N3变为非压缩BCD 码存入显示缓冲区四、实验中的芯片及线路:1.实验系统中的8253芯片图1 系统中的8253单元系统中的8253芯片的0#通道输出线与8259的0#中断请求线相连,作为实时钟中断信号。
1#通道输入1.8253MHZ的信号源,输出接8251的收发时钟端,供串行通信用。
一、实验目的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)根据实际情况调整程序参数,确保系统稳定运行。
交通信号灯控制器一、设计任务及要求 (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)车辆检测电路:用来显示主路支路车辆的四种情况。
交通信号灯控制器一、设计任务及要求 (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 进行仿真,仿真成功后,再去实验室焊接调试。
........学院《单片机原理及应用》课程设计报告题目:交通灯控制器班级:学生姓名:学号:指导老师:日期:年月日摘要当前,大量的信号灯电路正向着数字化、小功率、多样化、方便人、车、路三者关系的协调,多值化方向发展随着社会经济的发展,城市交通问题越来越引起人们的关注。
设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。
以下就是运用数字电子设计出的交通灯:本设计是十字路口交通灯控制,所以依据实际交通灯的变化情况和规律,给出如下需求:一个十字路口为东西南北走向。
初始状态25s为南北红灯,初始状态20s东西绿灯。
然后转状态1,南北红灯,东西绿灯闪烁3s,黄灯2s。
再转状态2,南北红灯灭,绿灯亮,东西绿灯灭,红灯亮。
再转状态3,东西红灯,南北绿灯闪烁3s,黄灯2s。
再转初始状态。
关键词:信号灯电路交通控制系统EDA技术目录一. 绪论 (4)引言1.1 设计任务 (4)1.1.1设计题目1.1.2设计内容1.2 系统需求 (4)1.2.1基本要求1.2.2发挥部分1.3小组成员及个人完成情况 (4)1.3.1小组成员1.3.2个人完成情况二.方案比较、方案设计与方案论证 (5)2.1电源提供方案2.2显示界面方案三.单元模块设计 (6)3.1单片机及其外接电路3.2 交通灯时间显示模块3.3按键控制模块3.4声音报警系统四.系统调制与分析 (10)五.总结与心得 (14)参考文献 (14)附录一系统原理图 (15)附录二元件清单 (16)附录三系统源程序 (17)一.绪论引言城市修建城市高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。
然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。
而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。
交通灯控制系统设计-实验报告
实验目的:设计一个交通灯控制系统,实现对交通灯的自动控制。
实验材料:
1. Arduino UNO开发板
2. 红绿黄LED灯各1个
3. 杜邦线若干
实验原理:
交通灯系统的控制主要是通过控制LED灯的亮灭来实现。
红
色LED灯表示停止,绿色LED灯表示通行,黄色LED灯表
示警示。
通过控制不同LED灯的亮灭状态,可以模拟交通灯
的不同信号。
实验步骤:
1. 将红色LED灯连接到Arduino开发板的数字输出引脚13,
绿色LED灯连接到数字输出引脚12,黄色LED灯连接到数
字输出引脚11。
2. 在Arduino开发环境中编写控制交通灯的程序。
3. 将Arduino开发板与计算机连接,将程序上传到Arduino开
发板中。
4. 接通Arduino开发板的电源,观察交通灯的亮灭状态。
实验结果:
根据程序编写的逻辑,交通灯会按照规定的时间间隔进行变换,实现红绿灯的循环。
实验总结:
通过本次实验,我们设计并实现了一个简单的交通灯控制系统。
掌握了Arduino编程和控制LED灯的方法,加深了对控制系
统的理解。
通过实验,我们发现了交通灯控制系统的重要性和意义,为今后的交通控制提供了一种可行的解决方案。
交通灯控制器设计实验报告设计性实验项目名称交通灯控制器设计实验项目学时:3学时实验要求:■必修□选修一、实验目的1、学习与日常生活相关且较复杂数字系统设计;2、进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法;3、学习二进制码到BCD码的转换;4、学习有限状态机的设计应用。
二、实验原理交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。
要完成本实验,首先必须了解交通路灯的燃灭规律。
本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。
依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。
其交通灯的燃灭规律为:初始态是两个路口的红灯全亮之后,主干道的绿灯亮,乡间道路的红灯亮,主干道方向通车,延时一段时间后,乡间公路来车,主干道绿灯灭,黄灯开始闪烁。
闪烁若干次后,主干道红灯亮,而同时乡间公路的绿灯亮,延时一段时间后,乡间公路的绿灯灭,黄灯开始闪烁。
闪烁若干次后,再切换到主干道方向,重复上述过程。
三、设计要求完成设计、仿真、调试、下载、硬件测试等环节,在型EDA实验装置上实现一个由一条主干道和一条乡间公路的汇合点形成的十字交叉路口的交通灯控制器功能,具体要求如下:1、有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;2、交通灯由绿转红前有4秒亮黄灯的间隔时间,由红转绿没有间隔时间;3、乡间公路右侧各埋有一个串连传感器,当有车辆准备通过乡间公路时,发出请求信号S=1,其余时间S=0;4、平时系统停留在主干道通行(MGCR)状态,一旦S信号有效,经主道黄灯4秒(MYCR)状态后转入乡间公路通行(MRCG)状态,但要保证主干道通行大于一分钟后才能转换;5、一旦S信号消失,系统脱离MRCG状态,即经乡道黄灯4秒(MRCY)状态进入MGCR状态,即使S信号一直有效,MRCG状态也不得长于20秒钟;6、控制对象除红绿灯之外,还包括分别在主干道和乡间公路各有一个两位十进制倒计时数码管显示。
浙江万里学院实验报告成绩:教师:胡俊杰课程名称: 可编程逻辑器件应用实验名称: 实验六 简易交通灯控制器设计 专业班 姓名: 学号: 实验日期一、实验目的:掌握有限状态机的描述,掌握Verilog语言的多个过程语句(always)的应用,练习复杂时序电路设计。
二、实验内容:简易交通信号控制器设计1)设计目标:1、在交通灯系统中,路口需要红、黄、绿三盏灯,并且每个路口都有倒数的计时器。
2、假设绿灯每次维持的时间是30s,黄灯为6s,红灯36s,绿灯亮时最后3秒以0.5s亮灭的频率闪烁。
3、A方向绿灯或黄灯亮时,B方向红灯亮;B方向绿灯或黄灯亮时,A方向红灯亮。
2)提高要求:(可以完成其中一项或两项)1、A向和B向的绿灯、黄灯亮的时间可以通过端口预置成不同时间,红灯亮的时间由模块内计算得到。
2、计数器用2位十进制倒计时,并且经显示译码用数码管显示。
3、红灯状态开始时,最初2秒不显示。
三、设计过程1)交通灯工作过程时序分析本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。
设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。
循环往复的直行这个过程。
其过程如下图所示:图1.交通灯点亮时间控制说明2)工作状态划分以及状态转换根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。
进入10状态两路黄灯亮起。
结束一个循环,从00状态重新开始循环。
为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:图3.交通灯控制系统结构图其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。
3)每个状态对应红黄绿等的工作分析根据整体设计要求,编写各个功能部分Verilog HDL程序,设置各输入输出变量说明如下clk:为计数时钟;qclk:为扫描显示时钟;en:使能信号,为1 的话,则控制器开始工作;rst:复位信号,为1的话,控制及技术回到初始状态;hoid:特殊情况控制信号,为1的话,则两个方向无条件显示为红灯;light1:控制主干道方向四盏灯的亮灭;其中,light1[0]~light[2],分别控制主干道方向的绿灯、黄灯和红灯;light2:控制支干道方向四盏灯的亮灭;其中,light2[0] ~ light2[2],分别控制支干道方向的绿灯、黄灯和红灯;num1:用于主干道方向灯的时间显示,8 位,可驱动两个数码管;num2:用于支干道方向灯的时间显示,8 位,可驱动两个数码管;counter:用于数码管的译码输出;st1,st2:数码管扫描信号。
输入输出及中间变量设置如下:module traffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);input en,clk,qclk,rst,hold,rst1;output st1,st2;output[7:0] num1,num2;output[6:0]counter;output[2:0] light1,light2;reg tim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0] num1,num2;reg[7:0] red1,red2,green1,green2,yellow1,yellow2;4)整个设计的模块划分以及每个模块的功能说明定义了两个输入,三个输出。
两个输入分别是时钟信号和紧急情况信号。
输出信号分别是南北,东西,以及led灯信号。
具体实现方式是先给紧急情况下定义个状态,然后通过计数器来实现各个状态的改变。
5)分模块程序设计和调试module djs(clk_1hz,d0,d1,state,start);input clk_1hz,start;output[1:0]state;output[3:0] d1,d0;parameter s1=2'b00,s2=2'b01,s3=2'b10,s4=2'b11;parametert_lda1=3,t_lda0=0,t_hda1=0,t_hda0=6,t_ldb1=4,t_ldb0=5,t_hdb1=0,t_hdb0=5; reg [1:0] state;reg [3:0] d1,d0;reg [3:0] s_d1,s_d0;always @(posedge clk_1hz )beginif(!start)begin d0<=t_lda0;d1<=t_lda1; state<=0; end else if(d0==0&d1==0)begind0=s_d0;d1=s_d1;state=state+1;endelse if(d0==0)begind0<=9;d1=d1-1;endelsed0=d0-1;endalways @ (state)case (state)s1:begin s_d1<=t_hda1;s_d0<=t_hda0; ends2:begin s_d1<=t_ldb1;s_d0<=t_ldb0; ends3:begin s_d1<=t_hdb1;s_d0<=t_hdb0; ends4:begin s_d1<=t_lda1;s_d0<=t_lda0; endendcaseendmodulemodule fenpin(clkout,clkin,snum);input clkin;input [25:0] snum;output clkout;integer s;wire [24:0] smax;assign smax=(snum>>1)-1;reg clkout;always @(posedge clkin)beginif(s==smax)begins<=0;clkout<=!clkout;endelses<=s+1;endendmodulemodule xianshiqi(hex,d,e); input e;input [3:0] d;output [6:0] hex;reg [6:0] hex;always @(d or e)beginif (!e)hex<=7'b1111111;elsecase(d)4'b0000: hex<=7'b1000000;4'b0001: hex<=7'b1111001;4'b0010: hex<=7'b0100100;4'b0011: hex<=7'b0110000;4'b0100: hex<=7'b0011001;4'b0101: hex<=7'b0010010;4'b0110: hex<=7'b0000010;4'b0111: hex<=7'b1111000;4'b1000: hex<=7'b0000000;4'b1001: hex<=7'b0010000;default: hex<=7'b1111111;endcaseendendmodulemodule zhuangtai(leda,ledb,state,d0,d1,clk_1hz); input [3:0] d1,d0;input [1:0] state;input clk_1hz;output [2:0]leda,ledb;parameter s1=2'b00,s2=2'b01,s3=2'b10,s4=2'b11; reg[2:0]leda,ledb;always @ (state )case(state)s1:beginledb=3'b001;leda[1:0]=2'b00;if (d1==0&d0<4)leda[2]=clk_1hz;elseleda[2]=1'b1;ends2:beginleda=3'b010;ledb=3'b001;ends3:beginleda=3'b001;ledb[1:0]=1'b00;if (d1==0&d0<4)ledb[2]=clk_1hz;elseledb[2]=1'b1;ends4:beginleda=3'b001;ledb=3'b010;endendcaseendmodulemodulezong(leda,ledb,state,hex1,hex0,d1,d0,start,clkout,clkin);input clkin,start;output [2:0]leda,ledb;output [6:0] hex1,hex0;output [1:0] state;output [3:0] d1,d0;output clkout;parameter n_fenpin=20000000;wire [3:0] d1,d0;wire [1:0] state;wire [2:0] leda,ledb;wire [6:0] hex1,hex0;//assign clk_1hz=clkin;assign clkout=clk_1hz;wire clk_1hz;fenpin u1(.clkout(clk_1hz),.clkin(clkin),.snum(n_fenpin));djsu2(.d1(d1),.d0(d0),.state(state),.clk_1hz(clk_1hz),.start(start)); zhuangtaiu3(.leda(leda),.ledb(ledb),.state(state),.d1(d1),.d0(d0),.clk_1hz(clk_1hz xianshiqi u41(.hex(hex1),.d(d1),.e(1'b1));xianshiqi u42(.hex(hex0),.d(d0),.e(1'b1));endmodule6)主模块设计和总测试,说明模块间传递的信号。