wokwi arduino mega 2560 - 键盘与LCD显示

发布于:2025-03-26 ⋅ 阅读:(27) ⋅ 点赞:(0)

截图:

链接:

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在线仿真平台(用于代码测试和仿真)
实验原理
  1. LCD显示屏:LCD(Liquid Crystal Display)是一种常用的显示设备,通过控制液晶分子的排列来显示字符或图形。本实验中使用16x2 LCD,即每行可显示16个字符,共2行。

  2. 矩阵键盘:4x4矩阵键盘由4行和4列组成,共16个按键。通过扫描行和列,可以检测哪个按键被按下。

  3. Keypad库:Keypad库是一个用于处理矩阵键盘输入的Arduino库,它简化了键盘扫描和按键检测的过程。

  4. LiquidCrystal库:LiquidCrystal库是一个用于控制LCD显示屏的Arduino库,它提供了初始化LCD、设置光标位置、显示字符等功能。

实验步骤
  1. 硬件连接
    • 将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的相应引脚。
  2. 软件编程
    • 导入LiquidCrystal和Keypad库。
    • 初始化LCD显示屏和键盘。
    • setup()函数中设置LCD的初始显示内容。
    • loop()函数中不断检测键盘输入,如果检测到按键被按下,则在LCD上显示该按键。
  3. 仿真测试
    • 在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的控制过程。



网站公告

今日签到

点亮在社区的每一天
去签到