跑步机启停/速度控制模块的工作流程如图 2.1 所示。需要注意的是,这个模块仅对用户的输入做出反馈,并不涉及对电动机的控制。
图 2.1 跑步机启停/速度控制模块的工作流程
设计跑步机启停/速度控制模块,需要考虑以下几个方面的内容。
(1)需要一个提供用户输入的通道,以供选择当前的跑步机状态。
(2)需要一个数字显示通道,用于显示当前跑步机的速度及工作状态。
(3)需要一个良好的算法来区分长时间按键和短时间按键。
(4)需要设计合适的单片机软件。
在ATmega128 单片机应用系统中,常常需要区别一个按键是长时间被按下还是短时间被按下,有以下两种检测原理:
(1)使用一个硬件定时器,在第一次检测到按键被按下时启动这个定时器,当定时器计数溢出之后去检查按键的状态,如果此时按键还处于被按下的状态,则表明按键被长时间按下。需要注意的是,在启动定时器之前,首先要判断按键是否已经松开,这种检测原理的关键是选择一个合适的定时器溢出时间间隔,缺点是要占用一个硬件定时器资源,优点是可以在进行按键定时时进行其他操作。
(2)使用一个软件定时器,在第一次检测到按键被按下时将这个软件定时器的计数值增加,在多次检查到这个计数值的状态之后判断按键是否仍然被按下,如果仍被按下,则判断按键被长时间按下,否则被短时间按下。该检测原理的关键同样是选择一个合适的定时器延时时长,缺点是在进行按键定时时不能进行其他操作,优点是不占用硬件定时器。