第一节 基本原理
键盘在单片机应用系统中能够实现向单片机输入数据、传送命令的功能,是人工干预单片机的主要手段。下面介绍键盘的工作原理、键盘按键的识别过程和识别方法以及键盘与单片机的接口和编程。
在进行键盘使用之前,需要先了解一下键盘的工作原理。以下将分三个部分介绍键盘的工作原理。
1. 键盘输入的特点键盘实质上是一个按键开关的集合。通常键盘的开关为机械弹性开关,利用的是机械触点的合断特性。一个电信号通过机械触点的断开、闭合过程,其行线电压输出波形如图所示。
图中t1和t3是键闭合和断开过程中的抖动期,抖动时间长短和机械特性有关,一般为5~10ms;t2为稳定的闭合期,时间由按键动作所决定;一般为十分之几到几秒;t0、t4为断开期。
2. 按键的确认按键的闭合与否反映在行线输出电压是高电平还是低电平上,如果高电平表示断开,则低电平表示键闭合,通过对行线电平的检测从而判断是否有按键被按下。
3. 消除按键抖动消除按键的抖动通常有软件和硬件两种方法。硬件消抖一般采用双稳态消抖电路,如下图所示。图中两个与非门构成一个RS触发器。b点的抖动电压波形通过RS触发电路后变成正规的正弦波,这一点很容易从RS触发器的工作过程得到验证。
在按键较多时,硬件消抖无法胜任,因此常用软件消除键盘的抖动,在第一次检测到键按下时,延时10ms的时间再确认该键的电平是否继续保持闭合状态的电平,如果继续保持为闭合状态的电平,则确认有键按下,从而消除抖动的影响。
第二节 硬件解读
蓝桥杯嵌入式主板上面是有5个按键的,其中4个用户按键,一个复位按键,本章的实验就是用户按键来控制LED灯。先看看下图的原理图吧:
上图就是4个独立按键的原理图,我们以左上角的为例,按键一端连接到GND,另外一端连接到VDD,也就是说,PB1平时是高电平的状态,一旦按键被按下,就与GND相连,变成低电平了。至于其他的消抖等等不再详述,都学习stm32了,想必51应该学过了。
第三节 环境配置
1,打开stm32cubeMX,选择“File-New Project ...”。
2,如图,在方框中搜索“stm32g431rb”(可大写,可小写)。然后选择LQFPN64的封装的芯片。
3,选中“A-Z”,查看蓝桥杯嵌入式芯片stm32g431rb的所有功能。
4,选中“SYS”,在Debug项目中选择“Serial Wire”,可以看见PA13与PA14引脚变成绿色,分别用作SYS_SWDIO和SYS_SWCLK。
5,选中“PD2-GPIO_Output”,“PC8-GPIO_Output”,“PC9-GPIO_Output”,“PC10-GPIO_Output”,“PC11-GPIO_Output”,“PC12-GPIO_Output”,“PC13-GPIO_Output”,“PC14-GPIO_Output”和“PC15-GPIO_Output”,这样就可以让芯片的PD2和PC8~PC15作为输出引脚了。
6,选中“PA0-GPIO_Input”,“PB0-GPIO_Input”,“PB1-GPIO_Input”,“PB2-GPIO_Input”,这样就可以让芯片的PA0和PB0~PB2作为输入引脚了,也据说用户按键引脚。
7,选中“Project Manager-Project”。在Project Name中填写项目的名字(尽可能不要用中文),在Project Location中选择项目保存的路径,在Toolchain/IDE中选择编译器,蓝桥杯嵌入式比赛用的是MDK5,所以我们选择MDK-ARM V5。
8,点击GENERATE CODE生成代码。
9,点击”CLOSE”,关闭stm32cubeMX,代码生成成功。
第四节 程序编写
1,用MDK5打开stm32cubeMX生成的工程。
2,点击“Rebuild”,进行代码的编译,可以看出代码没有任何问题,证明我们利用stm32cubeMX生成代码很成功。
3,在main.c文件中添加下面定义:
4,在main.c文件中加入以下封装好了的函数:
5,将封装好的函数在main.h中声明:
6,在mian函数中初始化LED:
7,编写while里面的函数:
8,编译代码。
9,点击”Options for Target...“。
10,点击”Debug“,然后选择下载器”CMSIS-DAP Debugger“,并点击”OK“。
11,选择“Settings”。
12,选择”Flash Downlosd”,勾选”Reset and Run”并点击”OK”。
13,点击”Download“,开始下载程序。
14,程序下载成功。
第五节 注意事项与实验现象
实验注意事项:
1,程序语句需要位于程序的BEGIN与END之间。
2,利用USB线将电脑USB口与开发板CN2口连接。
3,J6,J7,J8需要用跳线帽连接,否则无法下载程序。
实验现象:
LD9和LD11常亮。按下B1,LD1亮;按下B2,LD2亮:按下B3,LD3亮;按下B4,LD4亮。
宗旨:
免费的服务,永远的开源
说明:
1.本教程免费,开源,禁止用于任何商业用途,违者必究。
2.本教程版权所属为东莞市东城墨竹公子电子工作室,盗版必究。
全部0条评论
快来发表一下你的评论吧 !