技术文档

usb键盘 单片机 脱离单片机C零门槛DIY一个USB HID虚拟键盘

小编 2024-10-14 技术文档 23 0

脱离单片机C零门槛DIY一个USB HID虚拟键盘

C1 自带 USB 虚拟键盘

本教程来至 FlexLua 官网 ShineBlink 开发板教程,即使不懂单片机开发也可很容易用FlexLua零门槛开发各种 IoT 硬件。

注意:本教程仅适合 C1,不适合C2,因为 C2 不带 USB HID 。

一、实现功能

将Core USB 口虚拟成键盘设备,通过USB线连接电脑后,每隔5秒Core会模拟如下的一系列按键动作:

win+r,唤出“运行”对话框n o t e p a d ,输入"notepad"并回车,唤出记事本文本h e l l o w o r l d . . ,在记事本输入"hello word.."文本。

二、完整代码

注意: 如果你的项目中同时用到Ble蓝牙功能时,一定要先初始化Ble蓝牙之后,再调用LIB_UsbConfig函数初始化USB功能。

--先配置USB口以USB键盘模式工作LIB_UsbConfig("KBD")--开始大循环while(GC(1) == true)doLIB_DelayMs(5000)--模拟键盘组合按键WIN+R调出运行界面效果combine_tab = {"GUI","R"}LIB_UsbKbdSend("COMBINE", combine_tab)LIB_DelayMs(200)--模拟键盘输入notepad和回车键效果,来创建记事本文本文件single_tab = {"N","O","T","E","P","A","D","ENTER"}LIB_UsbKbdSend("SINGLE", single_tab)LIB_DelayMs(500)--模拟键盘在记事本文件上打出hello world..效果single_tab = {"H","E","L","L","O","SPACEBAR","W","O","R","L","D","DOT","DOT"}LIB_UsbKbdSend("SINGLE", single_tab)end

如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

如果你想查询电脑的CapsLock和NumLock指示灯状态,可以通过函数LIB_UsbKbdCapsLockAndNumLockQuery()来查询

三、演示结果图

四、附录:键盘标识符

键盘标识 HID码"A", = 4, /**<KBD_A code*/ "B", = 5, /**<KBD_B code*/ "C", = 6, /**<KBD_C code*/ "D", = 7, /**<KBD_D code*/ "E", = 8, /**<KBD_E code*/ "F", = 9, /**<KBD_F code*/ "G", = 10, /**<KBD_G code*/ "H", = 11, /**<KBD_H code*/ "I", = 12, /**<KBD_I code*/ "J", = 13, /**<KBD_J code*/ "K", = 14, /**<KBD_K code*/ "L", = 15, /**<KBD_L code*/ "M", = 16, /**<KBD_M code*/ "N", = 17, /**<KBD_N code*/ "O", = 17, /**<KBD_N code*/ "P", = 19, /**<KBD_P code*/ "Q", = 20, /**<KBD_Q code*/ "R", = 21, /**<KBD_R code*/ "S", = 22, /**<KBD_S code*/ "T", = 23, /**<KBD_T code*/ "U", = 24, /**<KBD_U code*/ "V", = 25, /**<KBD_V code*/ "W", = 26, /**<KBD_W code*/ "X", = 27, /**<KBD_X code*/ "Y", = 28, /**<KBD_Y code*/ "Z", = 29, /**<KBD_Z code*/ "1", = 30, /**<KBD_1 code*/ "2", = 31, /**<KBD_2 code*/ "3", = 32, /**<KBD_3 code*/ "4", = 33, /**<KBD_4 code*/ "5", = 34, /**<KBD_5 code*/ "6", = 35, /**<KBD_6 code*/ "7", = 36, /**<KBD_7 code*/ "8", = 37, /**<KBD_8 code*/ "9", = 38, /**<KBD_9 code*/ "0", = 39, /**<KBD_0 code*/ "ENTER", = 40, /**<KBD_ENTER code*/ "ESCAPE", = 41, /**<KBD_ESCAPE code*/ "BACKSPACE",= 42, /**<KBD_BACKSPACE code*/ "TAB", = 43, /**<KBD_TAB code*/ "SPACEBAR",= 44, /**<KBD_SPACEBAR code*/ "UNDERSCORE",= 45, /**<KBD_UNDERSCORE code*/ "PLUS", = 46, /**<KBD_PLUS code*/ "OPEN_BRACKET",= 47, /**<KBD_OPEN_BRACKET code*/ "CLOSE_BRACKET", = 48, /**<KBD_CLOSE_BRACKET code*/ "BACKSLASH",= 49, /**<KBD_BACKSLASH code*/ "ASH", = 50, /**<KBD_ASH code*/ "COLON", = 51, /**<KBD_COLON code*/ "QUOTE", = 52, /**<KBD_QUOTE code*/ "TILDE", = 53, /**<KBD_TILDE code*/ "COMMA", = 54, /**<KBD_COMMA code*/ "DOT", = 55, /**<KBD_DOT code*/ "SLASH", = 56, /**<KBD_SLASH code*/ "CAPS_LOCK",= 57, /**<KBD_CAPS_LOCK code*/ "F1", = 58, /**<KBD_F1 code*/ "F2", = 59, /**<KBD_F2 code*/ "F3", = 60, /**<KBD_F3 code*/ "F4", = 61, /**<KBD_F4 code*/ "F5", = 62, /**<KBD_F5 code*/ "F6", = 63, /**<KBD_F6 code*/ "F7", = 64, /**<KBD_F7 code*/ "F8", = 65, /**<KBD_F8 code*/ "F9", = 66, /**<KBD_F9 code*/ "F10," = 67, /**<KBD_F10 code*/ "F11," = 68, /**<KBD_F11 code*/ "F12," = 69, /**<KBD_F12 code*/ "PRINTSCREEN", = 70, /**<KBD_PRINTSCREEN code*/ "SCROLL_LOCK", = 71, /**<KBD_SCROLL_LOCK code*/ "PAUSE", = 72, /**<KBD_PAUSE code*/ "INSERT", = 73, /**<KBD_INSERT code*/ "HOME", = 74, /**<KBD_HOME code*/ "PAGEUP", = 75, /**<KBD_PAGEUP code*/ "DELETE", = 76, /**<KBD_DELETE code*/ "END", = 77, /**<KBD_END code*/"PAGEDOWN",= 78, /**<KBD_PAGEDOWN code*/ "RIGHT", = 79, /**<KBD_RIGHT code*/ "LEFT", = 80, /**<KBD_LEFT code*/ "DOWN", = 81, /**<KBD_DOWN code*/ "UP", = 82, /**<KBD_UP code*/ "KEYPAD_NUM_LOCK", = 83, /**<KBD_KEYPAD_NUM_LOCK code*/ "KEYPAD_DIVIDE", = 84, /**<KBD_KEYPAD_DIVIDE code*/ "KEYPAD_MULTIPLY", = 85, /**<KBD_KEYPAD_MULTIPLY code*/ "KEYPAD_MINUS", = 86, /**<KBD_KEYPAD_MINUS code*/ "KEYPAD_PLUS", = 87, /**<KBD_KEYPAD_PLUS code*/ "KEYPAD_ENTER",= 88, /**<KBD_KEYPAD_ENTER code*/ "KEYPAD_1", = 89, /**<KBD_KEYPAD_1 code*/ "KEYPAD_2", = 90, /**<KBD_KEYPAD_2 code*/ "KEYPAD_3", = 91, /**<KBD_KEYPAD_3 code*/ "KEYPAD_4", = 92, /**<KBD_KEYPAD_4 code*/ "KEYPAD_5", = 93, /**<KBD_KEYPAD_5 code*/ "KEYPAD_6", = 94, /**<KBD_KEYPAD_6 code*/ "KEYPAD_7", = 95, /**<KBD_KEYPAD_7 code*/ "KEYPAD_8", = 96, /**<KBD_KEYPAD_8 code*/ "KEYPAD_9", = 97, /**<KBD_KEYPAD_9 code*/ "KEYPAD_0", = 98, /**<KBD_KEYPAD_0 code*/

实例讲解,单片机常用键盘连接控制子程序

在单片机控制中,键盘与单片机的连接一般采用独立按键连接和矩阵按键连接。

独立按键连接

独立按键是每一个按键的电路是独立的,占用一条数据线。当其中任意一按键按下时,它所对应的数据线的电平变成低电平,若无键按下,则所有的数据线的电平都是高电平。独立按键连接一般用于系统中按键较少的情况。独立按键单片机连接控制接线原理图如图1所示。

图1 独立按键单片机连接控制接线原理图

1.问题的提出

在图1中,当任何一个按键按下时,单片机转入执行相应的程序。

2.控制程序

矩阵式键盘连接

矩阵式键盘又称行列式键盘,当按键数较多时,采用矩阵式键盘。矩阵式键盘的按键设置在行与列的交点上。4×4矩阵式键盘与单片机的连接(见图2)。

图2 4×4矩阵键盘连接单片机控制接线原理图

利用图2所示4×4矩阵键盘连接单片机接线原理图来作为控制按键控制程序时,其程序如下:

相关问答

怎么用labview编写 单片机 烧写程序-ZOL问答

在单片机开发过程中,从硬件设计到软件设计几乎是开发者针对本系统特点亲自完成的。这样虽然可以降低系统成本,提高系统的适应性,但是每个系统的调试占去了总开...

usb键盘 如何改无线键盘?

第一种:最简单的办法是拆一个其他无线键盘的电路,利用原键盘的矩阵按键来改装,只需要做好矩阵分析和硬件改装就行了;第二种是用单片机读取原键盘的信号然后...

矩阵 键盘 单片机 怎么连接?

矩阵键盘是行x列,需要看你矩阵的多少而定,接单片机IO口P0、P1都可以矩阵键盘就是个按键阵列,不需要电源和地,电源和地是接单片机的矩阵键盘是行x列,需要看你...

什么是 单片机 ?

单片机不是执行特定逻辑功能的芯片,而是将计算机系统集成到芯片上的芯片。它等效于微型计算机。与计算机相比,单芯片计算机仅缺少I/O设备。简而言之:芯片变成...

qx-mini51 单片机 怎么接矩阵 键盘 ?

你好,接矩阵键盘时需要将行线接在P1口,列线接在P2口。在扫描时,需要将列线拉高,行线检测按键状态。如果有按键按下,行线会被拉低,可以通过列线和行线的交点...

如何进行 单片机键盘 电路的设计?

[回答]其实比较好写的..行是,P3.0-P3.3,例是,P3.4-P3.7,最后得到的键值存在,KEYS中数为,0-15,有什么问题可以再问...START:MOVP1,#00HMOVP2,#0...

单片机 技术是一门即将被淘汰的技术吗?

感谢邀请答题!目前来说,这十几年内是不可能淘汰的,即使面临着人工AI、大数据和云计算等技术的多方面竞争,单片机也可以说是立于不败之地!毕竟需求放在那里。...

51 单片机 怎么样用 键盘 控制数码管显示-ZOL问答

键盘讨论回答(2)voidmain(){TMOD=0x01;//设置定时器零为工作方式1TH0=0x3C;TL0=0xB0;EA=1;ET0=1;TR0=1;while(1){...

单片机键盘 显示电路设计的程序要求输入64个按键,8个LED显示?

用8*8的矩阵键盘组成64个按键,只需要16个IO口,8个LED需要8个IO口,所以选用STC89C51的单片机就够用了。用8*8的矩阵键盘组成64个按键,只需要16个IO口,8个LED需...

单片机 音乐设计目的与意义?

它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S...

猜你喜欢