microPython实现4*4矩阵键盘的读取程序
时间: 2023-12-09 18:04:11 浏览: 56
以下是microPython实现4*4矩阵键盘的读取程序:
```python
from machine import Pin
import time
#定义4*4矩阵键盘的行列引脚
ROW_PIN = [Pin(0, Pin.IN), Pin(1, Pin.IN), Pin(2, Pin.IN), Pin(3, Pin.IN)]
COL_PIN = [Pin(4, Pin.OUT), Pin(5, Pin.OUT), Pin(6, Pin.OUT), Pin(7, Pin.OUT)]
#定义键盘按键映射表
KEY_MAP = { (0,0):'1', (0,1):'2', (0,2):'3', (0,3):'A',
(1,0):'4', (1,1):'5', (1,2):'6', (1,3):'B',
(2,0):'7', (2,1):'8', (2,2):'9', (2,3):'C',
(3,0):'*', (3,1):'0', (3,2):'#', (3,3):'D' }
#读取按键值的函数
def read_key():
for i in range(4):
#将当前行设置为高电平,其他行设置为低电平
for j in range(4):
if j == i:
COL_PIN[j].value(0)
else:
COL_PIN[j].value(1)
#检测当前行是否有按键按下
for j in range(4):
if ROW_PIN[j].value() == 0:
return KEY_MAP[(i,j)]
return None
#测试程序,循环读取按键值并打印
while True:
key = read_key()
if key != None:
print(key)
time.sleep(0.1)
```
程序中首先定义了4*4矩阵键盘的行列引脚,并定义了键盘按键映射表。然后定义了一个读取按键值的函数`read_key()`,该函数通过循环遍历行列引脚,将当前行设置为高电平,其他行设置为低电平,然后检测当前行是否有按键按下。如果有按键按下,则返回按键对应的字符;否则返回`None`。最后在主程序中循环调用`read_key()`函数,如果返回值不为空,则打印出按键值,并延时一段时间。