第二个任务是,利用矩阵键盘控制LED小灯

这里遇到一个新的外设,矩阵键盘。难点在于,如何使得单片机知道,是哪个按钮被按下。

观察上图可以知道,一个4*4的矩阵键盘一共有八个输出引脚,每行每列有一个对应的针脚,那么显然,假设我们按下第2列第3行的按钮,那么对应到上图应该是P34和P15针脚产生电位变化。

方便后面书写,称键盘的行为R,列为C,那么我需要定义三个按钮R1C1,R1C3,R3C3,那么我们可以用GPIO_ReadInputDataBit去检测针脚的电平,判断电位是否发生变化,进而确定按钮是否被按下。具体代码如下:

我觉得难点是在于理解小键盘被按下的时候所发生的事情,即先拉高这几个针脚的电平,为1;然后去通过GPIO_ReadInputDataBit( )函数判断他们的电平是否发生了变化,如果按钮被按下了。那么对应针脚的电平应该就为0了。对于消抖,以前在电路中了解到会出现噪声,这次对噪声信号的处理有了比较直观的了解。