求助!LCD1602显示出现乱码
先上程序#include <LiquidCrystal.h>
#include <dht11.h>
LiquidCrystal lcd(12, 11,6, 5, 4, 3);
dht11 DHT11;
int IN1=13;
int IN2=2;
int speedpin=10;
const int TrigPin = 8;
const int EchoPin = 7;
int buzzer=A1;
int sum=0,i;
float cm;
int q;
float temperature = 0; //设置temperature为浮点变量
#define DHT11PIN 9
void setup()
{
pinMode(IN1,OUTPUT);//定义该接口为输出接口
pinMode(IN2,OUTPUT);
pinMode(speedpin,OUTPUT);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
pinMode(buzzer,OUTPUT);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.begin(9600);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
lcd.begin(16, 2);
lcd.clear();
delay(1000);
}
void loop()
{
lcd.clear();
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
int val;
val=analogRead(0);
lcd.setCursor(0, 1) ;
lcd.print("Gas:")+ lcd.print(val);
lcd.setCursor(0, 0); //设置光标位置为第1行第一个位置
lcd.print((float)DHT11.humidity, 2); //显示温度整数位
lcd.print("% "); //显示小数点
lcd.print( (float)DHT11.temperature-2, 2); //显示温度小数点后一位
lcd.print("oC"); //显示o符号
Serial.println("\n");
int chk = DHT11.read(DHT11PIN);
Serial.print("Read sensor:OK ");
Serial.print("Humidity : ");
Serial.println((float)DHT11.humidity, 2);
Serial.println(" % ");
Serial.print("Temperature : ");
Serial.println((float)DHT11.temperature-2, 2);
Serial.println(" oC ");
for(i=9;i>0;i--)
{
sum+=cm;
}
if(sum>500)
{
lcd.setCursor(8, 1);
lcd.print("health");
}
else
{
lcd.setCursor(8, 1);
lcd.print("unhealth");
for(i=0;i<80;i++)
{
digitalWrite(buzzer,HIGH);
delay(1);
digitalWrite(buzzer,LOW);
delay(1);
}
}
}
我要显示温湿度、空气质量和超声波测距。但是lcd在初始化后就显示乱码了??是什么原因?请指出并修改下。。如果我先输出其中两个比如温湿度、空气质量,那么显示正常,再将超声波插入单片机,显示也正常;但是如果三个一起接入单片机就会在初始化后就显示乱码。
什么情况?求指导!
就是说你的问题是:接入少量设备的时候工作正常,但是同时进入几个设备的时候 LCD就不正常了? 本帖最后由 初夏的风 于 2014-11-24 19:41 编辑
zoologist 发表于 2014-11-24 12:18 static/image/common/back.gif
就是说你的问题是:接入少量设备的时候工作正常,但是同时进入几个设备的时候 LCD就不正常了?
是的。。。:dizzy: 就是这样奇怪
你能帮我看看是不是程序的问题? 看了一下你的程序,没发现有什么明显的错误。建议如下:
1.确定当全部接入时,是否是void setup() 执行之后就出现问题。建议删除void loop() 的内容看看结果。如果确定还有问题,很可能是硬件有问题。
2.所有的传感器读取值的地方,你都写成最大的常数值看看是否还有乱码 zoologist 发表于 2014-11-25 08:26 static/image/common/back.gif
看了一下你的程序,没发现有什么明显的错误。建议如下:
1.确定当全部接入时,是否是void setup() 执行之 ...
:lol 谢谢了现在已经可以了 初夏的风 发表于 2014-11-25 19:31 static/image/common/back.gif
谢谢了现在已经可以了
最后发现是啥问题? zoologist 发表于 2014-11-26 08:17 static/image/common/back.gif
最后发现是啥问题?
输出顺序。将lcd.setCursor(0, 1) 和(0,0)对换下就好了。我程序是闲输出显示在(0, 1)第二行,再输出显示第一行,,因此乱码了
页:
[1]