通过lcd1602显示,有两个界面,可以用四位的独立键盘进行调位、加减、切换界面。
按键
一、实验目的
二、按键原理图
三、相关操作函数
四、关于消抖
五、按键控制实现程序
六、HAL库的按键实现
七、一些思考与问题
- 在流水灯实现中,我们通过对GPIO与LED灯相连的相应引脚输出高低电平来控制灯的亮灭。使用的是输出模式。
- 今天的实验学习要使用GPIO口的输入模式,通过对与按键相连的引脚数据的读取来控制灯的亮灭。
- 了解什么是按键抖动和软件消抖的方法。
- 在图中我们看到,KEY1键和KEY2、3、4键有些不同。KEY1键按下输出为高电平,而其他三个键按下左接地输出低电平。
- 同时可以看出KEY1接GPIOA的0号引脚,KEY2、3、4分别接GPIOE的1、2、3号引脚。
 - 除了我们在流水灯中讲到的时钟使能函数,几个GPIO控制函数外,仅需要用到另外一个GPIO控制函数,函数定义如下图。(同样是在上章提到的固件库中)。
- 该函数是读入引脚信号的,既可以用于读按键信号
- 当然,除了按位读取,也可以多位读取,相关的函数有兴趣可自己查阅固件库。
机械的按键结构中必然有弹簧,由于弹簧的弹性,按键按下或松开的短暂过程中不会立即改变电平状态,而是需要一定的接触、不充分接触、断开导致的电平变化过程,一定时间后才能稳定电位,称之为抖动。 - 抖动会影响按键状态的读取,需要通过消除抖动来达到确定按键状态,方法有硬件消抖和软件消抖。本实验板不具备硬件消抖,既必须通过软件进行消抖。
- 软件消抖有什么方法呢?
- 通过中断,定时读取引脚状态,确定时限内连续几次读入状态一致,则可确定其进入抖动后的稳定状态,则可开始下一步操作。但目前我们未学习使用STM32的中断控制,所以不采用这种方法。
- 第二种方法是延时。在第一次读到某种状态后,通过延时函数使CPU合适的时间的无意义操作后,再次读取状态,若两次状态,则可以认为进入稳定装入,则可开始下一步操作。
按键控制实现程序
六、HAL库的按键实现 - 同样是像流水灯中介绍的方式创建工程,设置时钟,设置灯的引脚状态。但多了对按键引脚的设置。找到PA0和PE1设置为输出推挽不上不下拉低速模式。其他步骤流水灯工程创建一致。
接下来我们看具体的程序。
这两个库的程序在判断按键状态的时候是并行判断,准确来说是一个先一个后的if判断,并没有讨论同时按下两个键如何判断和操作原则。虽然这种if并行判断可以处理一些同时按下的情况,但不能对应到所有的情况。那么,可以思考下,如何实现双键按下的判断?
完整的Word格式文档51黑下载地址:
按键.docx
(1.05 MB, 下载次数: 34)
流水灯.docx
(4.7 MB, 下载次数: 20)
|