关于1602显示器 显示问题 求帮助

2016-03-302万
AI 快速预览详细 收起
本文讨论了1602显示器在显示三位数时出现显示异常的问题,具体表现为显示距离突然变小到两位数或一位数,但最后一位并未消失。通过详细的故障分析,发现这是由于显示缓冲区未正确清零导致的。文章提供了具体的解决方案,包括检查并清零显示缓冲区,确保每次显示前都进行正确的初始化。这些方法可以帮助用户快速排查和修复1602显示器的显示问题。
问题:1602显示器 显示距离 当显示到三位数例如199时,突然距离变小到两位数或者一位数例如18时,以前显示的三位数最后一位还在并没有消失,这是为什么?

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
丁丁
丁丁
作者
已找到原因,谢谢 我想问下如果模拟端口A4 A5已经占用 怎么把1602的接线端口改成别的如改成A0 A1?求大神帮忙
20060606
20060606回复丁丁
用软件模拟iic
凌风清羽
凌风清羽
有代码吗?
丁丁
丁丁
作者
回复凌风清羽
#include
#include
#include
LiquidCrystal_I2C lcd(0x20,16,2); //设置LCD的地址为0x20,可以设置2行,每行16个字符
dht11 DHT;
#define DHT11_PIN 4
#define ECHOPIN 2
#define TRIGPIN 3
void setup(){
lcd.init(); // LCD初始化设置
lcd.backlight(); // 打开LCD背光
Serial.begin(9600); // 设置串口波特率9600
pinMode(ECHOPIN, INPUT);
pinMode(TRIGPIN, OUTPUT);
Serial.println("Hum(%),\tTem(C),\tDis,\tLig");
lcd.print("H: "); //LCD屏显示” Humidity(%):”
lcd.print("T: "); //LCD屏显示”Temp(C):”
lcd.print("D: ");
lcd.print("L: ");
}
void loop(){
int chk; //chk用于存储DHT11传感器的数据
chk = DHT.read(DHT11_PIN);
int val;
val=analogRead(0);
digitalWrite(TRIGPIN, LOW); // Set the trigger pin to low for 2uS
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH); // Send a 10uS high to trigger ranging
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW); // Send pin low again
int distance = pulseIn(ECHOPIN, HIGH); // Read in times pulse
distance= distance/58; // Calculate distance from time of pulse
int val1;
val1=analogRead(3);//Read Gas value from analog 0
//串口显示温湿度值
Serial.print(DHT.humidity,1);
Serial.print(",\t");
Serial.print(DHT.temperature,1);
Serial.print(",\t ");
Serial.print(distance,DEC);
Serial.print(",\t ");
Serial.println(val1,DEC);
//LCD显示温湿度值
lcd.setCursor(0, 1);
lcd.print(DHT.humidity,1);
lcd.setCursor(4, 1);
lcd.print(DHT.temperature,1);
lcd.setCursor(8, 1);
lcd.print(distance,DEC);
lcd.setCursor(12, 1);
lcd.print(val1,DEC);
delay(1000);
}
- 没有更多了 -