单片机实验:LCD1602显示矩阵键盘键值和DHT11温湿度传感器温度和湿度数据
时间: 2023-11-27 08:55:03 浏览: 137
STM32F103单片机+ DHT11数字温湿度传感器实验(寄存器版)DEMO例程源码.zip
5星 · 资源好评率100%
好的,这个实验需要使用到以下硬件和软件:
硬件:
- LCD1602液晶屏
- 矩阵键盘
- DHT11温湿度传感器
- Arduino单片机开发板
软件:
- Arduino IDE开发环境
接下来,我们按照以下步骤进行实验:
1. 接线
将LCD1602、矩阵键盘和DHT11传感器按照如下图所示连接到Arduino开发板上:
LCD1602:
- VSS — GND
- VDD — 5V
- V0 — 10K电位器中间引脚
- RS — 数字口2
- RW — GND
- E — 数字口3
- D4 — 数字口4
- D5 — 数字口5
- D6 — 数字口6
- D7 — 数字口7
- A — 5V
- K — GND
矩阵键盘:
- K1 — 数字口8
- K2 — 数字口9
- K3 — 数字口10
- K4 — 数字口11
- K5 — 数字口12
- K6 — 数字口13
- K7 — 数字口A0
- K8 — 数字口A1
DHT11:
- VCC — 5V
- GND — GND
- DATA — 数字口A2
2. 编写代码
打开Arduino IDE开发环境,编写以下代码:
```
#include <LiquidCrystal.h> // 导入LCD1602库
#include <DHT.h> // 导入DHT11库
#define DHTPIN A2 // 设置DHT11数据引脚连接到Arduino的A2口
#define DHTTYPE DHT11 // 设置使用DHT11传感器
DHT dht(DHTPIN, DHTTYPE); // 初始化DHT11
const int ROWS = 4; // 设置矩阵键盘的行数和列数
const int COLS = 2;
char keys[ROWS][COLS] = { // 设置矩阵键盘的键值
{'1', '2'},
{'3', '4'},
{'5', '6'},
{'7', '8'}
};
byte rowPins[ROWS] = {8, 9, 10, 11}; // 设置矩阵键盘的行引脚和列引脚
byte colPins[COLS] = {12, 13};
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // 初始化LCD1602
void setup() {
lcd.begin(16, 2); // 初始化LCD1602的行数和列数
dht.begin(); // 初始化DHT11
}
void loop() {
readMatrixKeypad(); // 读取矩阵键盘的键值
readDHT11(); // 读取DHT11传感器的温湿度数据
delay(500);
}
void readMatrixKeypad() {
char key = 0;
for (int r = 0; r < ROWS; r++) { // 检测按下的行
digitalWrite(rowPins[r], LOW);
for (int c = 0; c < COLS; c++) { // 检测按下的列
if (digitalRead(colPins[c]) == LOW) {
key = keys[r][c];
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Key Pressed:");
lcd.setCursor(0, 1);
lcd.print(key);
while (digitalRead(colPins[c]) == LOW) {}
}
}
digitalWrite(rowPins[r], HIGH);
}
}
void readDHT11() {
float temp = dht.readTemperature(); // 读取温度数据
float hum = dht.readHumidity(); // 读取湿度数据
lcd.setCursor(0, 2);
lcd.print("Temp:");
lcd.print(temp);
lcd.print("C ");
lcd.setCursor(0, 3);
lcd.print("Humidity:");
lcd.print(hum);
lcd.print("% ");
}
```
3. 上传代码
将编写好的代码上传到Arduino开发板中。
4. 实验验证
按下矩阵键盘上的键后,LCD1602将会显示出对应的键值。同时,DHT11传感器将会读取当前的温湿度数据,并在LCD1602上显示出来。
至此,LCD1602显示矩阵键盘键值和DHT11温湿度传感器温度和湿度数据的实验完成。
阅读全文