当前位置: 首页 > news >正文

wokwi arduino mega 2560 - 键盘与LCD显示

截图:

链接:

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的控制过程。


Wokwi Arduino Mega 2560 - 键盘详细课程教程


一、课程简介

本课程将详细介绍如何在 Wokwi 平台上使用 Arduino Mega 2560 读取键盘输入。通过本课程的学习,你将掌握键盘矩阵扫描的原理、硬件连接方法、编程技巧以及如何在 Arduino 上实现键盘输入的检测。


二、课程内容

1. 键盘基础
  • 键盘类型
    • 独立按键:每个按键独立连接到一个输入引脚。
    • 矩阵键盘:多个按键通过行列交叉连接,减少引脚使用。
  • 矩阵键盘扫描原理
    • 通过逐行扫描和列检测,确定哪个按键被按下。
    • 使用二极管或电阻防止按键之间的干扰。
2. 硬件连接
  • 准备材料
    • Arduino Mega 2560 开发板
    • 4x4 矩阵键盘(或根据需要选择其他尺寸的键盘)
    • 电阻(用于限流,可选)
    • 面包板及跳线
  • 连接方法
    • 将键盘的行引脚连接到 Arduino 的数字输出引脚(如 2-5)。
    • 将键盘的列引脚连接到 Arduino 的数字输入引脚(如 6-9)。
    • 如果需要,可以在行列之间串联电阻。
3. 编程基础
  • Arduino IDE
    • 安装并打开 Arduino IDE。
    • 选择正确的开发板(Arduino Mega 2560)和端口。
  • 编程思路
    • 初始化行列引脚。
    • 逐行扫描键盘,检测列引脚的状态。
    • 当检测到按键按下时,记录按键值。
    • 使用延时或去抖算法防止误触。
4. 示例代码
#define ROW_PIN_COUNT 4  // 行引脚数量
#define COL_PIN_COUNT 4  // 列引脚数量

#define ROW_PINS {2, 3, 4, 5}  // 行引脚定义
#define COL_PINS {6, 7, 8, 9}  // 列引脚定义

void setup() {
  // 初始化行引脚为输出模式
  for (int i = 0; i < ROW_PIN_COUNT; i++) {
    pinMode(ROW_PINS[i], OUTPUT);
    digitalWrite(ROW_PINS[i], HIGH);  // 默认拉高
  }

  // 初始化列引脚为输入模式
  for (int i = 0; i < COL_PIN_COUNT; i++) {
    pinMode(COL_PINS[i], INPUT_PULLUP);  // 使用内部上拉电阻
  }

  Serial.begin(9600);  // 初始化串口通信
}

void loop() {
  for (int row = 0; row < ROW_PIN_COUNT; row++) {
    digitalWrite(ROW_PINS[row], LOW);  // 拉低当前行

    for (int col = 0; col < COL_PIN_COUNT; col++) {
      if (digitalRead(COL_PINS[col]) == LOW) {  // 检测列引脚是否为低电平
        Serial.print("Key pressed: ");
        Serial.print(row * COL_PIN_COUNT + col);  // 计算按键值
        Serial.println();

        while (digitalRead(COL_PINS[col]) == LOW);  // 等待按键释放(简单去抖)
      }
    }

    digitalWrite(ROW_PINS[row], HIGH);  // 拉高当前行,准备扫描下一行
  }

  delay(10);  // 扫描延时
}

cpp复制代码

#define ROW_PIN_COUNT 4 // 行引脚数量
#define COL_PIN_COUNT 4 // 列引脚数量
#define ROW_PINS {2, 3, 4, 5} // 行引脚定义
#define COL_PINS {6, 7, 8, 9} // 列引脚定义
void setup() {
// 初始化行引脚为输出模式
for (int i = 0; i < ROW_PIN_COUNT; i++) {
pinMode(ROW_PINS[i], OUTPUT);
digitalWrite(ROW_PINS[i], HIGH); // 默认拉高
}
// 初始化列引脚为输入模式
for (int i = 0; i < COL_PIN_COUNT; i++) {
pinMode(COL_PINS[i], INPUT_PULLUP); // 使用内部上拉电阻
}
Serial.begin(9600); // 初始化串口通信
}
void loop() {
for (int row = 0; row < ROW_PIN_COUNT; row++) {
digitalWrite(ROW_PINS[row], LOW); // 拉低当前行
for (int col = 0; col < COL_PIN_COUNT; col++) {
if (digitalRead(COL_PINS[col]) == LOW) { // 检测列引脚是否为低电平
Serial.print("Key pressed: ");
Serial.print(row * COL_PIN_COUNT + col); // 计算按键值
Serial.println();
while (digitalRead(COL_PINS[col]) == LOW); // 等待按键释放(简单去抖)
}
}
digitalWrite(ROW_PINS[row], HIGH); // 拉高当前行,准备扫描下一行
}
delay(10); // 扫描延时
}
5. 仿真与调试
  • Wokwi 平台
    • 将代码上传到 Wokwi 平台上的 Arduino Mega 2560 仿真器。
    • 使用虚拟键盘或外部键盘模块进行仿真测试。
    • 观察串口监视器输出,确保按键检测正确。
  • 调试技巧
    • 检查硬件连接是否正确。
    • 使用万用表或逻辑分析仪检测引脚电平。
    • 逐步调试代码,确保每行每列都能正确扫描。
6. 实际应用
  • 密码输入:使用键盘输入密码,进行身份验证。
  • 菜单选择:通过键盘选择菜单项,执行相应操作。
  • 游戏控制:将键盘作为游戏控制器,实现方向控制或功能选择。

三、课程总结

通过本课程的学习,你掌握了矩阵键盘扫描的原理、硬件连接方法以及编程技巧。通过示例代码和仿真调试,你能够成功地在 Wokwi 平台上使用 Arduino Mega 2560 读取键盘输入。希望你在后续的学习中能够继续探索更多有趣的应用,并将所学知识应用到实际项目中。


四、学习资源

  • Arduino 官方文档:获取更多关于 Arduino Mega 2560 和矩阵键盘的信息。
  • Wokwi 平台教程:学习如何在 Wokwi 平台上进行仿真和调试。
  • 在线社区和论坛:与其他开发者交流经验,解决遇到的问题。同时,也可以参考其他开发者的项目案例,获取更多灵感和创意。

Wokwi Arduino Mega 2560 - LCD 显示详细课程教程


一、课程简介

本课程将详细介绍如何在 Wokwi 平台上使用 Arduino Mega 2560 控制 LCD 显示屏进行文本显示。通过本课程的学习,你将掌握 LCD 显示屏的基本工作原理、硬件连接方法、编程技巧以及如何在 Arduino 上实现 LCD 显示功能。


二、课程内容

1. LCD 显示屏基础
  • LCD 类型
    • 字符型 LCD:如 16x2 LCD,用于显示字符和数字。
    • 图形型 LCD:如 128x64 LCD,用于显示图形和图像。
  • 接口方式
    • 并行接口:使用多条数据线传输数据,速度快但占用引脚多。
    • 串行接口:如 I2C 接口,使用较少的引脚传输数据,速度相对较慢。
2. 硬件连接
  • 准备材料
    • Arduino Mega 2560 开发板
    • 16x2 字符型 LCD 显示屏
    • 电位器(用于调节对比度)
    • 面包板及跳线
  • 连接方法(以并行接口为例)
    • 将 LCD 的 VSS 引脚连接到 Arduino 的 GND 引脚。
    • 将 LCD 的 VDD 引脚连接到 Arduino 的 5V 引脚。
    • 将 LCD 的 VO 引脚连接到电位器的中间引脚,电位器的两端分别连接到 GND 和 5V。
    • 将 LCD 的 RS、E、D4-D7 引脚分别连接到 Arduino 的数字引脚(如 12、11、5-2)。
    • 将 LCD 的 R/W 引脚连接到 GND(写模式)。
    • 将 LCD 的 A 和 K 引脚分别连接到 Arduino 的 5V 和 GND(用于背光)。
3. 编程基础
  • Arduino IDE
    • 安装并打开 Arduino IDE。
    • 选择正确的开发板(Arduino Mega 2560)和端口。
  • LiquidCrystal 库
    • Arduino 提供了 LiquidCrystal 库用于控制字符型 LCD。
    • 在代码中包含库头文件 #include <LiquidCrystal.h>
    • 实例化 LiquidCrystal 对象,并传入控制引脚编号参数,如 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
4. 示例代码
#include <LiquidCrystal.h>

// 初始化 LiquidCrystal 对象,并传入控制引脚编号参数
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // 设置 LCD 宽度和高度
  lcd.begin(16, 2);
  
  // 打印消息到 LCD
  lcd.print("Hello, World!");
}

void loop() {
  // 主循环中不需要执行任何操作,因为消息已经在 setup 中显示
}

cpp复制代码

#include <LiquidCrystal.h>
// 初始化 LiquidCrystal 对象,并传入控制引脚编号参数
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// 设置 LCD 宽度和高度
lcd.begin(16, 2);
// 打印消息到 LCD
lcd.print("Hello, World!");
}
void loop() {
// 主循环中不需要执行任何操作,因为消息已经在 setup 中显示
}
5. 仿真与调试
  • Wokwi 平台
    • 将代码上传到 Wokwi 平台上的 Arduino Mega 2560 仿真器。
    • 在仿真器中观察 LCD 显示屏的显示情况。
    • 如果显示不正常,检查硬件连接和代码是否正确。
  • 调试技巧
    • 使用串口监视器输出调试信息,帮助定位问题。
    • 逐步调试代码,确保每个部分都能正确执行。
6. 高级功能
  • 滚动显示:使用 scrollDisplayLeft() 和 scrollDisplayRight() 函数实现文本滚动显示。
  • 自定义字符:使用 createChar() 函数创建自定义字符,并显示在 LCD 上。
  • 动态更新:在主循环中动态更新 LCD 显示的内容,如显示传感器数据。

三、课程总结

通过本课程的学习,你掌握了 LCD 显示屏的基本工作原理、硬件连接方法以及编程技巧。通过示例代码和仿真调试,你能够成功地在 Wokwi 平台上使用 Arduino Mega 2560 控制 LCD 显示屏进行文本显示。希望你在后续的学习中能够继续探索更多高级功能,并将所学知识应用到实际项目中。


四、学习资源

  • Arduino 官方文档:获取更多关于 Arduino Mega 2560 和 LiquidCrystal 库的信息。
  • Wokwi 平台教程:学习如何在 Wokwi 平台上进行仿真和调试。
  • 在线社区和论坛:与其他开发者交流经验,解决遇到的问题。同时,也可以参考其他开发者的项目案例,获取更多灵感和创意。

相关文章:

  • Go语言中context.Context的
  • DM9162使用记录
  • [计算机三级网络技术]第十一章:网络管理技术
  • Spring WebFlux之ServerWebExchange
  • 从LLM到AI Agent的技术演进路径
  • Qt图形视图框架在项目中的应用
  • 涅槃上岸,入陕进军,复试全程流程开启!
  • C语言编译为可执行文件的步骤
  • Win32 / C++ Windows文件夹路径获取
  • mysql 入门
  • 多层感知机从0开始实现
  • Java设计模式之解释器模式
  • ofd转pdf报错:org.ofdrw.reader.ZipUtil.unZipFileByApacheCommonCompress【已解决】
  • web爬虫笔记:js逆向案例十一 某数cookie(补环境流程)
  • C#委托介绍
  • 算法数论.3(拓展欧几里得,中国剩余定理)
  • 搭建第一个Spring项目
  • 题解:AT_abc170_f [ABC170F] Pond Skater
  • Linux中执行 ifconfig 命令时提示 “未找到命令”
  • 无人设备遥控器之调度自动化技术篇
  • 全国治安管理工作视频会召开
  • 文化厚度与市场温度兼具,七猫文学为现实题材作品提供土壤
  • 揭秘拜登退选内幕新书引争议,“垃圾信息在四处传播”?
  • 国家统计局答澎湃:我国投资的潜力依然巨大,支撑投资增长的有利因素仍然比较多
  • 自媒体假扮官方蹭反间谍热度攫取利益,国安机关提醒
  • 慢品巴陵,看总编辑眼中的岳阳如何书写“山水人文答卷”