Atmega8+DHT11+1602的显示问题
本帖最后由 lionelg 于 2012-8-18 13:49 编辑#include <LiquidCrystal.h>
#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 3 //DHT11 PIN 3 连接UNO 3
LiquidCrystal lcd(10,9, 8,7,6,5);
char hum;
void setup()
{
// Setup LCD to 16x2 characters
lcd.begin(16, 2);
}
void loop()
{
// Display time centered on the upper line
lcd.setCursor(0,0);
int chk = DHT11.read(DHT11PIN);
lcd.clear();
switch (chk)
{
case DHTLIB_OK:
lcd.print("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
lcd.print("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
lcd.print("Time out error");
break;
default:
lcd.print("Unknown error");
break;
}
lcd.setCursor(0,1);
lcd.print("%");
int ih = (int)DHT11.humidity;
itoa(ih,hum,10);
lcd.print(hum);
lcd.setCursor(7,1);
int lo = DHT11.temperature;
itoa(lo,hum,10);
lcd.print(lo);
delay (1000);
}
根据上面的代码, 温度和湿度显示都是0, 硬件测试过,应该是没问题.有哪位知道是什么情况不?
你要明白,如果是硬件本身是可以通过串口显示出数据的话,用LCD1602也是OK的,原因只有一个,那就是你在用LCD显示的函数段没写好,自己检查检查一下! Randy 发表于 2012-8-18 19:17 static/image/common/back.gif
你要明白,如果是硬件本身是可以通过串口显示出数据的话,用LCD1602也是OK的,原因只有一个,那就是你在用L ...
使用的是arduino官方的那个1602的库,在Uno上调试的时候串口是可以显示,换到用atmega8在1602上就不行了,atmega8使用的最小系统。 lionelg 发表于 2012-8-18 22:23 static/image/common/back.gif
使用的是arduino官方的那个1602的库,在Uno上调试的时候串口是可以显示,换到用atmega8在1602上就不行了, ...
俺道理说,这点代码是不可能溢出的,你还是看看你修改的代码! 上面的代码就是修改后了的。。。。。。 试试刷optiboot给M8看看。。。 是不是itoa函数的问题,你把它去掉试下
页:
[1]