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

时间:2024-03-02 11:57:38

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

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

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

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

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

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

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

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

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

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

代码部分

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

内部信号声明

------->>

20ms延时计数用于消抖

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

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

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

三段式FSM

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

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

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

----->>>>

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

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

状态机图表