矩阵按键全部上拉输入可行吗?
时间: 2024-02-28 09:33:21 浏览: 27
矩阵按键全部上拉输入是一种常见的电路设计方法,可以保证按键未按下时输入为高电平,按下时输入为低电平。但是,全部上拉输入的可行性取决于具体的电路设计和使用场景。如果按键数量较少,且输入电压稳定,全部上拉输入是可行的。但是,如果按键数量较多,或输入电压波动较大,可能会导致误触发或按键无响应等问题。因此,在实际设计中,需要根据具体情况进行综合考虑,选择合适的输入电路设计方案。
相关问题
可以编写一段矩阵按键控制lcd1602的程序吗?
以下是一个基于Arduino平台的矩阵按键控制LCD1602显示屏的示例程序:
```
#include <LiquidCrystal.h> //引入LCD库
#define ROWS 4 //定义矩阵键盘行数
#define COLS 4 //定义矩阵键盘列数
//定义矩阵键盘按键对应的数字
const byte keys[ROWS][COLS] = {
{1, 2, 3, 'A'},
{4, 5, 6, 'B'},
{7, 8, 9, 'C'},
{'*', 0, '#', 'D'}
};
//定义矩阵键盘输入引脚
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
//初始化LCD对象
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2); //初始化LCD显示屏
pinMode(rowPins[0], INPUT_PULLUP); //第1行设置为输入模式
pinMode(rowPins[1], INPUT_PULLUP); //第2行设置为输入模式
pinMode(rowPins[2], INPUT_PULLUP); //第3行设置为输入模式
pinMode(rowPins[3], INPUT_PULLUP); //第4行设置为输入模式
pinMode(colPins[0], OUTPUT); //第1列设置为输出模式
pinMode(colPins[1], OUTPUT); //第2列设置为输出模式
pinMode(colPins[2], OUTPUT); //第3列设置为输出模式
pinMode(colPins[3], OUTPUT); //第4列设置为输出模式
lcd.setCursor(0, 0); //设置显示屏光标位置
lcd.print("Press a key"); //显示提示语句
}
void loop() {
char key = getKey(); //获取矩阵键盘输入的按键
if(key != NO_KEY) { //如果有按键输入
lcd.clear(); //清空显示屏屏幕
lcd.setCursor(0, 0);
lcd.print("You pressed:");
lcd.setCursor(0, 1);
lcd.print(key); //在显示屏上显示输入的按键
delay(1000); //延时1秒
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Press a key"); //显示提示语句,等待下一个输入
}
}
//函数:获取矩阵键盘输入的按键
char getKey() {
for(byte col = 0; col < COLS; col++) {
digitalWrite(colPins[col], LOW); //设置当前列为低电平
for(byte row = 0; row < ROWS; row++) {
if(digitalRead(rowPins[row]) == LOW) { //如果当前行为低电平
delay(10); //等待10毫秒去除反弹
if(digitalRead(rowPins[row]) == LOW) { //再次检查当前行电平
digitalWrite(colPins[col], HIGH); //恢复当前列高电平
return keys[row][col]; //返回按键对应字符
}
}
}
digitalWrite(colPins[col], HIGH); //恢复当前列高电平
}
return NO_KEY; //返回无输入状态
}
```
该程序中,使用了LiquidCrystal库来显示LCD1602显示屏。在setup()函数中,首先初始化LCD显示屏,并将矩阵键盘的输入引脚设置为INPUT_PULLUP模式(因为矩阵键盘中的按键需要通过连接到GND来输出LOW电平)。然后通过digitalWrite()函数将矩阵键盘的列引脚设置为输出模式。在循环中,调用getKey()函数来获取矩阵键盘的输入,如果有按键输入,就在LCD显示屏上显示输入的按键;否则,显示提示语句并等待下一个输入。getKey()函数用来获取矩阵键盘输入的按键。在该函数中,先通过循环设置每一列为低电平,然后通过循环检测每一行的电平状态。如果当前行为低电平,说明有按键被按下,检测到按键后返回按键对应的字符。注意,为了避免按键反弹,需要在行电平检测前延时10ms。如果没有任何输入,函数返回NO_KEY。
为什么矩阵按键都上拉了 10K 电阻。
矩阵按键上拉电阻的作用是为了防止按键误触,避免按键一直处于接通状态。当按键未被按下时,矩阵的输入端会处于高电平状态,而按下按键后,输入端会被拉低。如果没有上拉电阻,输入端就会一直处于低电平状态,导致误触。因此,为了保证按键的正常使用,需要对矩阵按键进行上拉电阻处理。通常采用的是10K电阻,这是因为10K电阻的阻值较大,可以保证输入端的电流较小,从而减少功耗和电磁干扰。
阅读全文