能同时模拟键盘及鼠标的神器--51单片机可控制
之前有一遍是只能模拟键盘的,现在是键盘和数据都能同时模拟的啦
材料清单:
- 单片机最小系统*1或者USB-TTL模块;(家中常备)
- 模拟键盘鼠标功能板一块*1;M宝购买网址:https://c.tb.cn/c.02oDJ9
- 杜邦线-母--母*4;(家中必备)
接线图:
模拟键盘鼠标功能板 | 单片机最小系统或USB-TTL模块 |
VCC | VCC |
TXD | RXD |
RXD | TXD |
GND | GND |
如果使用USB-TTL模块VCC可以不接,因为USB-TTL模块不需要供电,接了也是没有问题的
模拟鼠标调试:
1.把USB-TTL模块和模拟键盘鼠标功能板都插进电脑;
2.打开串口调试助手;串口调试助手:https://pan.baidu.com/s/1t4dx2XvdLq7FAHp6D4QNVg 提取码:8fd8
3.波特率选择57600,选择对应的串口打开,勾选十六进制发送,输入框输入57 AB 02 00 22 33 00
点击发送就可以看到鼠标自己移动了,如果成功的话就会返回一个字符‘0’.
鼠标数据说明(坐标为相对坐标):
0x57 |
0xAB |
0x02 |
4字节鼠标数据 |
4字节鼠标数据:
BYTE1 |
BYTE2 |
BYTE3 |
BYTE4 |
按键 |
X轴相对位移值 |
Y轴相对位移值 |
滚轮 |
按键:
0x01 :表示左键按下
0x02 :表示右键按下
0x04 :表示中建按下
X轴相对位移值:
0x00-0x7F 鼠标向右移动,0x7F对应的十进制是127,就是每次向右移动最大像素就是127个像素
0xFF-0x81 鼠标向左移动,0xFF就是向左移动0个像素;0x81就是向左移动127个像素
Y轴相对位移值:同X轴相对位移值
0x00-0x7F 滚轮向上移动,数值越大,滚越多
0x81-0xFF 滚轮向下移动,数值越大,滚越少
例:鼠标向右和向下同时移动一百个单位:
57 AB 02 00 64 64 00
(10进制的100对应的十六进制是64)
模拟键盘调试:
先新建打开一个TXT文档,然后按下图设置串口调试助手,点击右边的序号发送57 AB 01 00 00 04 00 00 00 00 00
代表按键A按下,然后把光标放进TXT文档,就可以看到效果了,然后发送57 AB 01 00 00 00 00 00 00 00 00代表按键松开了,
不然电脑的按键A一直被按下
键盘数据说明:
0x57 |
0xAB |
0x01 |
8字节标准键盘数据 |
8字节标准键盘数据:
BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 BYTE8
定义分别是:
BYTE1 --
|--bit0: Left Control 是否按下,按下为1
|--bit1: Left Shift 是否按下,按下为1
|--bit2: Left Alt 是否按下,按下为1
|--bit3: Left GUI 是否按下,按下为1
|--bit4: Right Control 是否按下,按下为1
|--bit5: Right Shift 是否按下,按下为1
|--bit6: Right Alt 是否按下,按下为1
|--bit7: Right GUI 是否按下,按下为1
BYTE2 -- 暂不清楚,有的地方说是保留位
BYTE3--BYTE8 -- 这六个为普通按键
例:想同时按下了Left Shift + ‘a’+‘b’三个键即发送数据:
57 AB 01 02 00 04 05 00 00 00 00
例:按下组合按键后只释放某个按键,例如上面的三个组合键按下后,希望只释放“b”,而另外两个按键还保持按下,即发送数据:
57 AB 01 02 00 04 00 00 00 00 00
这样就可以单独释放按键‘b’了,而按键‘a’保持按下
其他的按键查看键值对照表:https://pan.baidu.com/s/1bmbrdGoz7i2j5AJVHULRUQ