FSM方式扫描矩阵键盘--代码实现

-->>  矩阵键盘的实验可以说是普通的不能再普通了,相信大家无论是MCU还是FPGA都写过这个实验。

         之前也写过matrix_keyscan,今天重新用FSM来实现,就算是巩固下以前的知识吧。

--->> 首先是我板子上的矩阵键盘部分原理图如下:

FSM方式扫描矩阵键盘--代码实现_第1张图片

--- 根据上图,明确一点 有上拉电阻的行线应该作为输入回馈信号,无上拉电阻的列线信号作为输出扫描信号。

这样以来,一开始 列信号输出0000,平时状态输入行线信号由于上拉电阻保持高电平,一旦检测到行线不为1111,则说明有键

按下,此后,列信号再输出1110-->>1101-->>1011-->0111四组扫描信号。

--------------------------------------------------------------------------------------------------------------->>

流程图(来自亚锋前辈blog,这里表示感谢

FSM方式扫描矩阵键盘--代码实现_第2张图片

--------------------------------------------------------------------------->>

代码部分

------------->>>

内部信号声明

FSM方式扫描矩阵键盘--代码实现_第3张图片

------->>

20ms延时计数用于消抖

FSM方式扫描矩阵键盘--代码实现_第4张图片

------------->>

FSM采用one-hot编码。。关于状态机的笔记。。以后会重新整理更详细的,此处不多讲。

FSM方式扫描矩阵键盘--代码实现_第5张图片

-------------->>

三段式FSM

第一段 时序逻辑 状态转移部分

FSM方式扫描矩阵键盘--代码实现_第6张图片

第二段 组合逻辑 次态逻辑输出(部分代码)

FSM方式扫描矩阵键盘--代码实现_第7张图片

第三段 时序逻辑 根据次态确定输出控制信号(部分代码)

FSM方式扫描矩阵键盘--代码实现_第8张图片

----->>>>

键值译码部分(部分代码)

FSM方式扫描矩阵键盘--代码实现_第9张图片

----------------------->>>>>

状态机图表

FSM方式扫描矩阵键盘--代码实现_第10张图片

你可能感兴趣的:(代码)