2.1鼠标通信协议原理
鼠标与单片机的数据通信方式采用PS/2通信协议。
PS/2鼠标的物理接口为6脚圆形接口,使用中只需1引脚Data、3引脚GND、4引脚+5VPower和5引脚Clock这4个引脚即可。
鼠标履行一种双向同步串行通信协议,在时钟信号的作用下串行发送或者接受数据。通常情况下,单片机在总线上具有总线控制优先权,可在任何时候抑制来自于鼠标的通信。从鼠标到单片机的数据在时钟的下降沿被读取,相反,单片机到鼠标的数据在时钟的上升沿被读取。时钟信号总由鼠标内部芯片提供,时钟频率一般在10~20KHz。
2.1.1单片机对鼠标的通信
根据协议要求,单片机对鼠标的控制只需把时钟线拉低最少100us以上来禁止其通信,并且单片机拉低数据线使之处于请求发送状态。如图3所示,当时钟线升为高电平后被PS/2设备重新拉低,即可开始单片机向鼠标的通信。
2.1.2鼠标对单片机的通信
因单片机对总线具有控制权,当鼠标要向单片机发送信息时,必须先检查时钟线是否为高电平。如图4所示,当时钟线出现高电平,数据线出现低电平,表明鼠标请求发送,单片机可以接受来自鼠标的数据。
2.1.3单片机发送的控制数据
按照鼠标的PS/2协议规范,实际编程时先对鼠标发送0xff使其复位,默认采样频率为100次/秒,缩放比例1:1,数据报告禁止。使用0xea命令进入stream模式、使用0xe8,0x03命令设置解析度为8点/毫米。使用0xf4命令使能数据报告。配合AT89S51单片机的定时器功能,将其时间常数设置为0.1s,每次中断时发送0xeb命令读取位移数据信息,每发出一次,单片机接收到的位移数据包都包含有位移信息和按键动作信息。编译时也只需提取X3的有效数据包即Y方向位移增量
2.2PID控制软件算法
使用神经网络PID自适应控制对系统进行matlab的仿真测试,效果颇令人满意。但因其输入层、隐含层、输出层的多阶矩阵运算使得单片机的运算时间大幅度的增加,造成时间上的不确定因素增大,同比使用增量型PID控制,尽管后者需调整三个控制参数,但同样可使精度达到我们预期的效果,运算时间则大幅度下降,为此仍可选用增量型PID算法作为控制。算法增量式数字PID的控制算法为:
U(k)=U(k-1)+*(e(k)-e(k-1))+*e(k)+*(e(k)-2e(k-1)+e(k-2))
上一篇:光电式探丝传感器电路设计方案