第一节 基本原理
键盘在单片机应用系统中能够实现向单片机输入数据、传送命令的功能,是人工干预单片机的主要手段。下面介绍键盘的工作原理、键盘按键的识别过程和识别方法以及键盘与单片机的接口和编程。
在进行键盘使用之前,需要先了解一下键盘的工作原理。以下将分三个部分介绍键盘的工作原理。
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.本教程版权所属为东莞市东城墨竹公子电子工作室,盗版必究。
温度变送器是什么_温度变送器工作原理_温度变送器的安装教程及注意事项
TCP/IP与OSI:恒讯科技分析这两种模型有何区别?
会议邀请|2023柔性电子技术与应用创新论坛!
华为鸿蒙系统申请入口
传台积电熊本厂10月1日起移机进度超前
【蓝桥杯物联网】第四章 按键
2016世界互联网大会乌镇火热进行中 悉数科技届大佬众生相
PLC点动与自锁电路详解
iphone8什么时候上市?国产iphone8已经发布,这个外观你怎么看?离真的iphone8还有多远?
三相异步电动机的两种接线方法
光纤收发器如何接入网
新时代对于传感器的要求是什么
接线端子使用中常见问题分析
LDR6023AQ方案,低成本Type-C扩展坞HUB转接器方案
罗德与施瓦茨推出新款一致性自动化测试解决方案ZNrun
现代高管对与苹果的潜在合作事宜存在分歧
成本更低但键合性能相当甚至更好的铜线来代替金线键合
基于Zigbee的CMOS无线射频芯片的设计考虑
采用固定翼无人机巡检电力线路,提升输电线路全景智慧运检水平
公共云的风险有多高?如何确保公共云安全