课程设计-反应速度测试仪(N)

河北工业大学《计算机硬件技术基础》
           
一、 题目:反应速度测试仪(REACTION TIME TRAINER
二、目的与要求:
    1.目的:   
培养学生综合利用汇编语言进行程序设计的能力,主要是培养学生利用DP51-PROC综合实验仪的基本部件进行应用程序设计的技能。
闸道机    2.基本要求:
能够完成反应速度(精度10ms)的测试工作,并将结果以闪烁形式显示LED上。
1)程序开始时亮灯进入准备状态,被测试者按一次按钮则灯灭,开始进行测试。
22-8.3(2+(063)/10)秒后,一个灯亮起,受试者应该迅速按下指定按钮
3)灯亮时开始计时,被测试者按下按钮后停止计时并将灯熄灭。灯持续点亮的时间即为反应时间,然后按照反应速度让LED灯闪烁,闪的越快,说明反应时间越短。例如反应速度为0.25秒,则显示结果时每秒闪烁4次(占空比为1:1,即亮0.125秒,灭0.125秒,如此循环不止)。
4)如果受试者超过1秒未按下按钮,停止计时,按最差成绩计算。
5)显示结果时按一下按钮,则清除结果显示,进入准备状态,进行下一个测试。
6)犯规处理:如果在灯亮前抢先按下按钮,则犯规,成绩作废,LED每秒闪烁一次,再次摁按钮后状态复位,准备下一个测试。
    3.创新要求:
在基本要求达到后,进行创新设计。方向1:用LED灯显示成绩等级。方向2:用LCD屏或者LED数码管精确显示成绩。方向3:连续测试5次,显示平均成绩。方向4:加上音效提示,以不同频率的声音或者曲目表示结果等级及犯规提示。
●●●●●●
●●●●●
●●●●●●
●●●●●●
●●●●●●
●●●●●蒸汽吹灰器
LED灯显示成绩等级可以分为6等:
<0.1秒(快如闪电),亮6个灯
[0.1-0.2)秒(够快),亮5个灯
[0.2-0.3)秒(不错),亮4个灯
[0.3-0.6)(一般般) ,亮3个灯
[0.6-1)秒(反应迟钝),亮2个灯
>=1秒,亮1个灯(获一灯大师称号)
可以用P1口接排线,让右面6个灯显示结果。左面的灯是准备好/指示灯。
如果使用LED数码管LCD屏显示,可以直接显示测到的毫秒数。
音效提示可以用测到的毫秒数转换为频率进行输出。100ms->100Hz,etc.
以上各创新方向可以同时进行。
三、设计方法和基本原理:
1.问题描述:
在要求中已经说的很清楚了,不再赘述。
2.问题的解决方案:
(1) uwb标签根据精度10ms(百分之一秒)可以得到定时初值为9216,宜采用方式1
(2) 因为按钮的功能比较多,可使用查询方式处理(当然中断方式也可以处理),P3.2接一个按钮(方便以中断方式实现)P1.1接个LED灯。
(3) 如果按方向1创新,则可用排线将P1口接到8LED灯上。
(4) 如果按方向2创新,液晶屏或者LED阵列可以使用P1或者P3口输出。
四、主要技术问题的描述:
本题中的难点并不在于定时和显示,而在于随机数的产生和去除按键抖动。下面分别进行介绍。
1. 随机数的产生。
因为定时方式每秒有921600个脉冲(11.0592Hz搁物架晶振,12分频),其低8位的值在按下的一瞬间就是一个随机数,直接取出来就可以使用。具体用法如下:
程序运行开始(即灯亮起进入测试准备时间)时,启动一个定时器,直到用户按下按钮才停止定时器,这段时间定时器的低8位二进制值作为随机数即可。将这个数除于4(右移两位),得到一个063的数,然后再加上20,得到一个20-83的数,再按每个数100ms时长,就能算出一个2-8.3秒的时间。示例代码如下:
    ...
    MOV  TMOD,#1
    SETB  TR0
    JB      P3.2,$
    CLR  TR0
    MOV  A,TL0空气净化系统
    ANL    A,#11111100B
    RR    A
锚钉    RR    A
    ADD  A,#20  ;这时候A中的值就介于20-83
    然后再搞一个100ms溢出一次的定时,让A中的值成为循环次数,循环完成后就得到了2-8.3秒的延时。灯亮起并开始计时,用户按下后停止计时,然后处理并显示结果。
2. 去除按键抖动(以P1.0为例,其它口处理方法一样)。
按钮有触点式和非触点式两种,单片机中应用的一般是由机械触点组成的。如右图。当按钮未被按下时,P10输入为高电平,按钮闭合后,P10输入为低电平。由于按钮是机械触点,当机械触点断开、闭合时,会有抖动,P10输入端的波形如右下图所示。一般为毫秒级,典型值为10ms左右,有的开关可达20ms以上。
为使CPU能正确地读出P1口的状态,对每一次按钮只作一次响应,就必须考虑如何去除抖动,常用的去抖动的办法有两种:硬件法和软件法。因为硬件处理需要增加额外电路,单片机中常用软件法。软件法其实很简单,就是在单片机获得P10为低的信息后,不是立即
认定按钮已被按下,而是延时10毫秒或更长一些时间后再次检测P10口,如果仍为低,说明按键的确按下了,这实际上是避开了按钮按下时的抖动时间。而在检测到按钮释放后(P10为高)再延时10-20个毫秒,消除后沿的抖动,然后再对键值处理。样例处理程序如下:
;假设P1.0接按钮,P1.1接灯
    CLR    P1.1    ;亮灯,准备好状态
    JB    P1.0,$    ;待启动按钮
    ACALL    DELAY20    ;消除抖动延时,10-20ms
    JB    1.0,$    ;确认按下
    JNB    1.0,$    ;等待抬起
    ACALL    DELAY20    ;消除抖动
    JNB    P1.0,$    ;确认抬起
    SETB    P1.1    ;灯灭

本文发布于:2024-09-22 17:22:34,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/290888.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:按钮   进行   处理   显示   抖动   计时   结果
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议