- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于2.4GHz射频通信的多功能鼠标设计
2.3 读光传感器位移值
读光传感器的位移值,其实就是读它对应的寄存器。在ADNS-5030的内部寄存器中,地址为0x02的Motion寄存器用于表示是否有位移。其最高位若为0,则无位移;最高位若为1,则有位移。另外,使用到的两个寄存器的地址是0x03和Ox04的DeltaX和DeltaY。这两个寄存器的值分别表示X轴和Y轴方向上的位移。最高位表示位移的方向,1为负方向,0为正方向,低7位表示位移量。
如图5所示,首先判断是否有位移,即Motion的最高位是否为1。若不为1,则表示没有位移,本次查询结束;若为1,则表示有位移,然后再去读DeltaX和DeltaY的值,并将其通过无线发射部分发送出去。
读DeltaX、DeltaY寄存器后,寄存器中的值自动清零,但是Motion寄存器读后不清零,所以最后需要对Motion寄存器的最高位进行清零,以防止在没有位移的情况下,系统也对DeltaX、DeltaY寄存器进行扫描,造成不必要的浪费。
另一个需考虑的地方是光传感器的分辨率。在上电复位后,光传感器的分辨率为默认的500cpi(cells perinch),但是实验效果并不好。在调试时,其位移并不明显,后来修改寄存器的值,将其分辨率改为1 000 cpi(只有500 cpi和1 000 cpi两种分辨率),光标的位移效果明显好于分辨率为500 cpi时的效果。由此可见,光传感器的这一属性也是相当重要的。
2.4 读按键与键盘
左右键的设计与普通按键的设汁稍有不同。使用鼠标时可以看到,在按下左键同时拖动鼠标时,可以选中光标移动范围内的选项;同样,右键也具有这样的功能。
在左右键的扫描程序中,当程序扫描到有键按下时(例如左键按下),立刻将所得到的键值发送出去,这时,接收端的左键值一直是处于按下状态的,同时也不耽误光传感器等的扫描;当左键抬起时,再向接收端发送按键抬起的指令,一次左右键的扫描就完成了。这样就可以实现在按下左键同时拖动鼠标时,选中光标移动范围内选项的操作了。
上下键与左键和右键的操作方式不同。在上下键的扫描程序中还应考虑点动和连动这两种不同的情况。点动即为在一定时间内快速按下一个按键,然后立即释放;而按下一个键并延时一段时间再释放,则程序将其识别为连动。
键盘部分设置了20个键,是一个5×4的矩阵,包括"O~9"10个数字键,"上、下、左、右"4个方向键,"←"键,"确定"键,"Esc"键以及3个快捷键("显示桌面"、"浏览器"和"我的电脑")。其中"0~9"10个数字键是复用键,像手机键盘一样,根据一定时间内连击次数的不同,可以输入不同的键值。
结 语
本文所涉及的硬件均在实际中调试通过。实验证明,MSP430系列单片机成本较低,在低功耗产品中的应用极为广泛,将会得到广大开发人员的认同。本系统已实现鼠标和手机键盘结合的基本功能,以后仍可以对其功能进行补充,完善多功能无线鼠标的性能。
来源:维库开发网