AD采集+LCD1602+EEPROM(AD采集得到的数据存放在EEPROM中,至少存放两组数据
时间: 2023-12-09 11:05:56 浏览: 90
AD采样并且在LCD1602上显示
实现这个功能,需要以下几个步骤:
1. 连接硬件:将AD采集模块、LCD1602、EEPROM以及Arduino板子连接起来。AD采集模块的输出引脚接到Arduino的模拟输入引脚,LCD1602通过I2C接口连接到Arduino,EEPROM通过I2C接口连接到Arduino。
2. 编写代码:首先需要初始化LCD1602和EEPROM,然后进入循环,不断采集AD数据并显示在LCD屏幕上,同时将采集到的数据存储到EEPROM中。每次存储数据时,需要先读取EEPROM中已有的数据,然后将新采集到的数据追加到数据末尾,最多存储两组数据。
以下是示例代码:
```arduino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#define LCD_COLS 16
#define LCD_ROWS 2
#define ADDR_SIZE 2 // 存储一个AD值需要2个字节
byte addr = 0; // EEPROM地址指针
LiquidCrystal_I2C lcd(0x27, LCD_COLS, LCD_ROWS); // I2C地址为0x27,LCD为16x2
void setup() {
lcd.init(); // 初始化LCD
lcd.backlight(); // 打开背光
Wire.begin(); // 初始化I2C总线
}
void loop() {
int ad_value = analogRead(A0); // 读取AD数据
lcd.setCursor(0, 0);
lcd.print("AD value: ");
lcd.print(ad_value);
// 存储AD数据到EEPROM
int addr_offset = addr * ADDR_SIZE; // 计算存储地址偏移量
byte high_byte = (ad_value >> 8) & 0xFF; // 高位字节
byte low_byte = ad_value & 0xFF; // 低位字节
EEPROM.write(addr_offset, high_byte); // 写入高位字节
EEPROM.write(addr_offset + 1, low_byte); // 写入低位字节
// 显示EEPROM中存储的数据
lcd.setCursor(0, 1);
lcd.print("Data: ");
for (int i = 0; i < 2; i++) { // 最多显示两组数据
int start_addr = i * ADDR_SIZE;
byte high_byte = EEPROM.read(start_addr);
byte low_byte = EEPROM.read(start_addr + 1);
int data = (high_byte << 8) | low_byte; // 合并高低位字节
if (data != 0) { // 数据不为0才显示
lcd.print(data);
lcd.print(" ");
}
}
addr = (addr + 1) % 2; // 地址指针循环
delay(1000); // 延时1秒
}
```
在这个代码中,我们使用了LiquidCrystal_I2C库来控制LCD显示屏,使用EEPROM库来读写EEPROM。在循环中,我们先读取AD数据并显示在LCD上,然后将数据存储到EEPROM中,最后显示EEPROM中存储的数据。注意需要将AD值拆分成高位字节和低位字节存储到EEPROM中,读取数据时需要将两个字节合并成一个整数。
阅读全文