基于单片机的按键式USB鼠标的设计

时间:2022-07-12 05:46:11

基于单片机的按键式USB鼠标的设计

【摘要】普通鼠标由于在外壳防护、操作环境、抗砸耐磨等方面不能很好地满足工业控制现场需求而无法在工业控制中使用,本文设计了一种基于单片机按键式usb鼠标,能够满足工业控制应用。鼠标采用单片机作为控制核心,单片机程序实现对按键信号的采集、滤波,并将按键信号根据HID协议转换成标准的USB鼠标信号。

【关键词】单片机;按键;USB;鼠标

引言

在工业控制系统中,常常需要用鼠标对控制器进行操作,但普通商业鼠标由于其以下特性无法满足某些工业现场的恶劣环境。

外壳防护等级达不到要求。很多工业现场水汽和粉尘比较大,普通鼠标的左键和右键没有特别的防护,水汽进入鼠标内会对鼠标本身造成损坏,粉尘进入到按键的缝隙会导致操作不灵活。

操作环境达不到要求。普通鼠标需要一个干净整齐的操作面,很多工业现场环境下很难提供这样一个操作面,即便单独设计一个操作面,粉尘和杂物也需要经常清理,若清理不及时,操作不灵活,对控制系统的稳定性会造成影响。

抗砸等级达不到要求。很多工业现场工料、杂物滚落时有发生,普通鼠标多为塑料外壳,容易损坏。

本文设计了一种能够满足工业现场要求的基于单片机的按键式USB鼠标,可保证工业控制系统的稳定易用。

1.鼠标操作方式

鼠标操作方式采用全部按键操作,左键、右键跟普通鼠标一样,采用按键操作,光标的移动也采用按键操作,用上下左右四个键来模拟光标的移动。鼠标按键分布如图1所示。

图1 按键分布

按键及基板均采用不锈钢材质,抗砸耐磨。按键采用防尘防水设计,不易损坏。

2.鼠标接口

普通鼠标的接口有两种方式:PS/2和USB,PS/2是早期的一种接口方式,现在使用更广泛的是USB接口[1]。为了使设计的鼠标具有更好的通用性,鼠标采用USB接口。在Windows操作系统下,鼠标必须满足HID(Human Interface Device)协议[2],才能作系统识别,这需要软件设计来实现。采用单片机实现各个按键信号的采集和HID协议的处理。

电路原理如图2所示。鼠标上的6个按键输出均为无源常开接点信号,经过隔离后单片机可以直接采集。隔离采用光耦隔离技术,在端口采集的电路中,隔离可有效保护单片机不受外部干扰信号的影响,保证程序的稳定运行。在信号采集的程序中,由于单片机的运行周期很短,必须要对信号进行滤波处理,不然会产品信号抖动。本设计采用的滤波方式是定时计数滤波方式,每隔一定的时间(如20ms)采集一次信号,如果此次采集的信号跟上次采集的相同,则计数加1,如果不同,则计数清零。当计数达到一定数值(如10),则认为信号已稳定,该信号的状态就可以被后续程序处理。

图2 电路原理

在单片机的设计中,看门狗电路的设计关乎系统的稳定。单片机程序在循环运行过程中,容易受到外界干扰产生跑飞的现场,看门狗电路就是为了防止程序跑飞设计的。看门狗电路的原理如下:单片机程序的运行过程中,每隔循环周期都会向看门狗芯片写入一个信号,这个信号可以是电平信号,也可以是串行通信信号(如SPI、I2C等),看门狗芯片在一定时间内没有收到这个信号就认定为程序跑飞,然后看门狗芯片向单片机的复位管脚输出一个复位信号,然单片机实现热复位,从而实现程序从头开始运行,确保程序不会产生错误。

3.HID协议实现方法

3.1 HID简介

HID(Human Interface Device)[3]人机接口设备类别是Windows最早支持的USB类别。HID设备是计算机直接与人交互的设备,例如键盘、鼠标和游戏杆等。不过HID设备不一定要有人机接口,只要符合HID类别规范,就都是HID设备。HID设备可以低速设备也可以是全速设备,主要适用于传输数据量不大、数据具有突发性、无固定传输速率的应用场所。

3.2 程序设计

HID设备的程序设计的核心是对主机(如计算机)的请求作出响应,请求可以控制传输请求,也可以使数据传输请求。软件开发的主要工作是编写USB的中断服务程序,中断服务程序首先判断中断的类型,然后根据中断类型及其他相关信息,转入相应的协议处理程序,根据协议处理的结果,完成相应的通信。在本设计中,由于是用上下左右键来模拟光标的运行,而在HID协议中,光标的数据应该是一个坐标,这就需要程序讲上下左右键递增出来的数据转换为坐标值。光标的移动速度,不同的应用场所、不同的用户都会有变化,难以统一,为了解决这个问题,这里做了一个通用性的设计,基本原理如下:用户按住其中一个键,则光标开始向这个方向移动,开始以一个较慢的速度一定,随着时间的积累,移动的速度越来越快,这样可以保证用户操作的准确性和光标移动的效率。在成成设计中需要对按键信号进行定时,不同的时间,坐标的递增系数不同。

4.结语

本文设计的按键式USB鼠标耐磨抗砸,使用寿命长。鼠标采用单片机作为控制核心,单片机程序实现对按键信号的采集、滤波,并将按键信号根据HID协议转换成标准的USB鼠标信号。本设计对于提高控制系统的可操作性和稳定性能起到一定的推进作用。

参考文献

[1]任军首,汪世林.基于STC89C52单片机的USB鼠标的设计[J].福建电脑,2011(5):107-129.

[2]吴晓莉.人机手控操纵原理在鼠标设计中的应用[J].机械设计与研究,2009(4):77-79.

[3]王恒升,匡洋,彭宏道.USB HID类设备小驱动程序开发[J].控制工程,2010(6):815-819.

作者简介:赵树有(1982―),男,河北沧州人,工程师。

上一篇:软件无线电技术初探 下一篇:基于单片机的智能洗衣机自动提醒系统