截图:
链接:
https://wokwi.com/projects/414520193913760769
代码:
//cslg lcd key
#include <LiquidCrystal.h> // 引入LiquidCrystal库,用于LCD显示
#include <Keypad.h> // 引入Keypad库,用于键盘输入
/* Display (LCD显示屏设置) */
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); // 初始化LCD,参数为连接LCD的RS, E, D4, D5, D6, D7引脚
/* Keypad setup (键盘设置) */
const byte KEYPAD_ROWS = 4; // 键盘行数
const byte KEYPAD_COLS = 4; // 键盘列数
byte rowPins[KEYPAD_ROWS] = {5, 4, 3, 2}; // 键盘行连接的引脚
byte colPins[KEYPAD_COLS] = {A3, A2, A1, A0}; // 键盘列连接的引脚
char keys[KEYPAD_ROWS][KEYPAD_COLS] = { // 键盘按键布局
{'1', '2', '3', '+'},
{'4', '5', '6', '-'},
{'7', '8', '9', '*'},
{'.', '0', '=', '/'}
};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS); // 初始化键盘
void setup() {
lcd.begin(16, 2); // 初始化LCD为16x2字符
lcd.print("Welcome To CSLG"); // 在LCD上显示欢迎信息
lcd.setCursor(0, 1); // 设置光标到第二行的开始位置
lcd.print(" "); // 清除第二行的内容
}
void loop() {
char key = keypad.getKey(); // 从键盘获取按键
if (key) {
// 如果检测到按键被按下
lcd.setCursor(0, 1); // 设置光标到第二行的开始位置
lcd.print(" "); // 清除第二行的内容,为显示新按键做准备
lcd.setCursor(0, 1); // 再次设置光标到第二行的开始位置
lcd.print(key); // 在LCD上显示被按下的按键
}
}
Wokwi Arduino Mega 2560 - 键盘与LCD显示实验报告
实验目的
本实验旨在通过Arduino Mega 2560微控制器实现键盘输入与LCD显示的交互功能。用户通过4x4矩阵键盘输入字符,Arduino接收输入并在LCD显示屏上显示相应的字符。此实验演示了键盘输入处理、LCD显示控制以及基本的用户交互逻辑。
实验器材
- Arduino Mega 2560 微控制器
- 16x2 LCD显示屏
- 4x4矩阵键盘
- 连接线
- Wokwi在线仿真平台(用于代码测试和仿真)
实验原理
LCD显示屏:LCD(Liquid Crystal Display)是一种常用的显示设备,通过控制液晶分子的排列来显示字符或图形。本实验中使用16x2 LCD,即每行可显示16个字符,共2行。
矩阵键盘:4x4矩阵键盘由4行和4列组成,共16个按键。通过扫描行和列,可以检测哪个按键被按下。
Keypad库:Keypad库是一个用于处理矩阵键盘输入的Arduino库,它简化了键盘扫描和按键检测的过程。
LiquidCrystal库:LiquidCrystal库是一个用于控制LCD显示屏的Arduino库,它提供了初始化LCD、设置光标位置、显示字符等功能。
实验步骤
- 硬件连接:
- 将LCD的RS、E、D4、D5、D6、D7引脚分别连接到Arduino Mega 2560的数字引脚12、11、10、9、8、7。
- 将4x4矩阵键盘的行引脚(5, 4, 3, 2)和列引脚(A3, A2, A1, A0)连接到Arduino的相应引脚。
- 软件编程:
- 导入LiquidCrystal和Keypad库。
- 初始化LCD显示屏和键盘。
- 在
setup()
函数中设置LCD的初始显示内容。 - 在
loop()
函数中不断检测键盘输入,如果检测到按键被按下,则在LCD上显示该按键。
- 仿真测试:
- 在Wokwi在线仿真平台上上传并运行代码。
- 使用仿真平台上的虚拟键盘输入字符,观察LCD显示屏上的显示情况。
实验代码
cpp复制代码
#include <LiquidCrystal.h> |
|
#include <Keypad.h> |
|
/* Display (LCD显示屏设置) */ |
|
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); |
|
/* Keypad setup (键盘设置) */ |
|
const byte KEYPAD_ROWS = 4; |
|
const byte KEYPAD_COLS = 4; |
|
byte rowPins[KEYPAD_ROWS] = {5, 4, 3, 2}; |
|
byte colPins[KEYPAD_COLS] = {A3, A2, A1, A0}; |
|
char keys[KEYPAD_ROWS][KEYPAD_COLS] = { |
|
{'1', '2', '3', '+'}, |
|
{'4', '5', '6', '-'}, |
|
{'7', '8', '9', '*'}, |
|
{'.', '0', '=', '/'} |
|
}; |
|
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS); |
|
void setup() { |
|
lcd.begin(16, 2); |
|
lcd.print("Welcome To CSLG"); |
|
lcd.setCursor(0, 1); |
|
lcd.print(" "); |
|
} |
|
void loop() { |
|
char key = keypad.getKey(); |
|
if (key) { |
|
lcd.setCursor(0, 1); |
|
lcd.print(" "); |
|
lcd.setCursor(0, 1); |
|
lcd.print(key); |
|
} |
|
} |
实验结果
- 当用户按下键盘上的任意按键时,LCD显示屏的第二行会显示该按键对应的字符。
- 如果连续按下多个按键,LCD显示屏会不断更新显示最新的按键字符。
- 未按下按键时,LCD显示屏的第二行保持空白(或显示之前按下的字符,直到新的按键被按下)。
实验结论
本实验成功实现了通过Arduino Mega 2560微控制器处理键盘输入并在LCD显示屏上显示相应字符的功能。通过编程控制键盘扫描和LCD显示,验证了键盘输入处理和LCD显示控制的基本原理。同时,实验也展示了如何使用Keypad库和LiquidCrystal库简化键盘和LCD的控制过程。