欢迎来到天天文库
浏览记录
ID:14658202
大小:185.50 KB
页数:11页
时间:2018-07-29
《小型数字系统设计——健身自行车控制器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、l课程名称:数字逻辑电路设计实践实验名称:小型系统设计——健身自行车控制器实验:设计一个健身房使用的健身自行车控制器。控制器的输出信号给D/A转换器,以控制自行车的阻力,从而改变训练强度。输入采用4×4键盘,显示采用3位数码管,其中最高位显示训练强度,低2位显示时间。基本功能:1、使用者骑上自行车时,控制器处于初始状态。按“F”键启动控制器,此时3位数码管显示“000”。2、用户输入从0到9中的任意数字,以改变训练强度,按“E”键确认。选定的训练强度显示在数码管的最高位。3、训练强度选择完成之后,数码管低2位显示“00”,即最长训练时间为
2、1分钟。通过数字键盘输入数字,以决定训练的时间,输入时数字顺序是从左到右。例如,输入2、3应该在显示器上显示“23”,表示训练时间被设定为60-23=37秒,如果输入正确,按下“E”键确认。如果使用者输错了时间,可以按“C”清除,显示恢复“00”的状态。训练时间输入完成后,按下“F”键开始训练。此时4位数码管的低两位显示时间从输入的时间值加计数到“00”。在最后10秒时,发光二极管亮1秒暗1秒。当计时到设定的时间,控制器恢复到初始状态,此时定时器是“00”,训练强度为前面设定的值。实验要求:1)采用自顶向下的设计方法进行设计,画出数据处理
3、单元和控制单元框图、控制单元的ASM图、各单元模块的电路图;2)行列式键盘设计请参考第四章有关内容;3)先独立调试各单元模块,后联机调试,要记录和分析实验结果;一、实验设计1.控制单元的ASM图InitializationInput==F?10SetstrengthInput==E?01EnsurestrengthstrengthInput==0~9?1SetFirsttime0Input==0~9?01SetSecondtimeInput==C?1Input==E?0Ensuretime10Input==F?Startcounting1
4、0Count==00??1控制单元ASM图2、各单元模块的电路图A)键盘电路B)ROM状态控制电路C)数据处理部分D)总的设计LED灯时间低位时间高位强度二、电路调试本电路主要分为四部分,键盘扫描输入输出部分,ROM状态切换控制部分,三个计数器存储计数部分,LED灯控制部分;下面是调试过程中过程遇到的实际问题以及自己的解决方法:首先是对键盘扫描电路的调试,发现100Hz扫描型号输入正确,按键时输出地址正确,该电路内储存地址的两个74LS161计数器也实现了储能功能,所以开始调试ROM状态切换控制电路部分。ROM状态切换控制电路的问题如下:
5、1)用于储存状态的74LS161在按键过程中总是出现紊乱,没有储存住。原先设计的电路图中ROM部分四位状态的存储74LS141计数器加的时钟信号为100Hz,结果按F键清零后,始终无法设置强度。用逻辑分析仪分析发现ROM状态在自动切换!这是一个非常低级的错误——该存储器的时钟频率应该是受按键控制,即按一次键状态转换一次,而不是100Hz自动切换。解决方法很简单,只是将键盘控制电路中的D触发器(没按一次键产生一个上升沿)的输出接到该存储计数器的时钟信号端。测试发现存储状态稳定。1)ROM状态切换时,有时会无法清零,各项操作都无法进行。这个问
6、题具体是这样的:当你开启电源后,按键F开始实验后,它并没有清零,或者原来就是零,按下F后无法继续设置强度。这个问题出现的原因是设计时默认假设不准确:原先设计时一直默认开启电源后电源就达到初始状态0000,而实际情况是开启电源后各计数器(用作寄存器)的初始状态是随机的,并不一定是0000。比如某次开启电源时出现的初始状态是1000,那么按下F时,输出的下一个状态一定是1111(由于仅使用0000~0111八个状态,因次其他状态对应的ROM输出未进行改写,默认为FF),那岂不是永远无法到达0000初始状态。问题的解决办法有两个:手动清零,重写
7、ROM。手动清零是指开启电源后,手动使状态寄存器清零端接地,状态自动切换到0000;重写ROM是指用00来填充ROM中未使用的状态输出(默认是FF),从而一开机便进入初始状态。这有个问题就是可能初始状态是0000~0111中一个就无法实现了,因次采用第一种方法,测试后解决这一问题。2)设置时间强度第一位时,发现第二位自动设置这个问题具体是这样的,当你确认强度后,输入时间时间高位2时,数码管上两个时间同时显示22,而本来是应该只改变时间高位的。问题出现后首先想到的当然是ROM是否编写错误,但是上面已经检查过ROM了,因次排除了这方面的可能。
8、原理上分析,既然时间地位设置上去了,必然说明时间低位说对应的寄存器的load置数端有效了,这只可能在状态0101,但是时间高位输入后状态是0100!问题就出在这里!由于键盘电路会储存上一次按键
此文档下载收益归作者所有