- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字电路实验报告
交通灯控制器
任务要求
设计制作一个用于十字路口的交通灯控制器。
①南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持
续时间分别为20 秒、5 秒和25 秒;
②当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,
③当特殊情况结束后,控制器恢复原来状态,继续正常运行;
④用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间;
·选做:增加左、右转弯显示控制功能;
·选做:其它自拟功能。
系统设计
利用有限状态机描绘出交通灯的状态转移图,并设置记录东西和南北路口可通行时间的全局变量count1,count2count1,count2reset为高电平时,则回到最初状态;当紧急输入信号emergency为高电平时,则转移到一特殊状态,emergency结束后则返回当前状态。
三、总体框图及分块设计
交通灯控制器的逻辑划分方块图
交通灯控制器逻辑流程图
交通灯控制器的状态转移图
其中图中T20 T10 T5分别是直行,左转和黄灯的时间,通过判断其是否达到所规定的时间来给灯作为改变的条件,程序已交通灯分别初始化为绿灯和红灯。另外,在reset信号为高电平时,不论其他状态和信号如何,系统回到最初状态。在reset信号为低电平且emergency为高电平时,两个方向交通灯均为红灯警铃响起,直到emergency恢复低电平时,系统恢复到emergency刚快要出现时系统的状态,并会到之前状态。
2.分块设计
在我的实验设计中,整个交通灯控制器包括5个模块:①控制器模块control;②计数模块catcontol;③分频模块fenpin1和fenpin2;④点阵DZ;⑤数码管显示译码模块show;⑥警铃控制器bellcontrol;⑦主函数。现对各个模块的设计作一简要阐述:
①控制器模块control:这是整个程序的核心模块,控制着交通灯状态的转移和交通灯通行时间count1和count2数值的改变,该模块是交通灯状态转移图的程序实现。
②计数模块catcontrol:该模块将count1和count2数值转化为二进制信号并以较高频率扫描数码管的共阴极以显示多位数字的通行时间,是一个初级译码模块。
③分频模块fenpin1:该模块将实验板固有50M晶振时钟频率进频,以产生控制器模块所需的1Hz频率。
Fenpin2:则分成1KHz的供扫频和警铃的响声频率
④点阵DZ:通过contol里面的返回值来控制其显示,行为低电平有效,列位高电平,从第一行开始扫描到第八行。
⑤数码管显示译码模块show:该模块通过对每一位数字进行7段数码管译码以显示该数字,实际上我在实验中用的是8位信号。因为7段数码管实际上有8个输出信号,除了7段数码管,还有小数点显示信号。
⑥警铃控制器bellcontrol:通过返回的紧急信号值来判断是否给警铃一个高电平的信号。
⑦主函数:将各个模块连接起来。
3.仿真图
① 正常运行下
②加了紧急信号
③复位信号
此次试验实现了交通灯的直行控制以及左转的控制,外加了紧急情况。并且在此之上附加了点阵显示交通灯的状态以及响铃的警报。
四.故障分析
1.我一开始是用50M的晶振频率扫描的数码管的共阴极,在初次下载好程序后运行时,我发现数码管显示的数字虽然正确,但亮度不一,容易被认为是错误的显示。后来我将50M晶振分频后产生的一个较低的频率来扫描共阴极,便得到了稳定、均匀、清晰的数码管数字显示。对于给警铃加的也频率开始也掌握不好,后来改了1KHz才感觉比较合适
2.在宿舍仿真的时候,第一次没改分频,导致机器承受不住,然后改了分频之后,第一次周期设置比较断,观察不到状态的转变,开始以为是代码错了,检查了很久,结果才发现是周期设置为50us比较短,而不是代码的问题,后来设置周期为250us之后就看到状态的转变。
3.在验收的时候由于小喇叭的硬件电路没连接,使得没有响声,本以为是软件代码问题,后来通过仿真观察发现还是有信号过去的。
五.总结
交通灯控制器是数字状态机中较为简单较为基本的一种应用,通过这次实验,我对数字状态机的基本应用和程序实现有了一个更为深刻的认识。开始第一周先是把书看了一次特别代码部分,首先了解其基本的句式及其基本结构。后来通过书上的一些例题看出了门道,从而有了些想法。
VHDL语言比较直白,此次试验对于状态机的描述很直白,基本上都是通过状态的判断来制定当前的显示,通过各种case,以及计数器的循环来体现出。
这次实验收获颇多,先是学会了VHDL语言,还对数字电路中各种状态的转变及其转变条件的理解加深。还深刻意识到我们学的理论知识和实际也能很好的联系。
六.代码源
文档评论(0)