lionelg 发表于 2012-8-18 13:48:18

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, 硬件测试过,应该是没问题.有哪位知道是什么情况不?

Randy 发表于 2012-8-18 19:17:50

你要明白,如果是硬件本身是可以通过串口显示出数据的话,用LCD1602也是OK的,原因只有一个,那就是你在用LCD显示的函数段没写好,自己检查检查一下!

lionelg 发表于 2012-8-18 22:23:23

Randy 发表于 2012-8-18 19:17 static/image/common/back.gif
你要明白,如果是硬件本身是可以通过串口显示出数据的话,用LCD1602也是OK的,原因只有一个,那就是你在用L ...

使用的是arduino官方的那个1602的库,在Uno上调试的时候串口是可以显示,换到用atmega8在1602上就不行了,atmega8使用的最小系统。

Randy 发表于 2012-8-19 08:20:24

lionelg 发表于 2012-8-18 22:23 static/image/common/back.gif
使用的是arduino官方的那个1602的库,在Uno上调试的时候串口是可以显示,换到用atmega8在1602上就不行了, ...

俺道理说,这点代码是不可能溢出的,你还是看看你修改的代码!

lionelg 发表于 2012-8-19 11:56:10

上面的代码就是修改后了的。。。。。。

弘毅 发表于 2012-8-19 20:02:14

试试刷optiboot给M8看看。。。

debian123 发表于 2012-8-20 16:27:12

是不是itoa函数的问题,你把它去掉试下
页: [1]
查看完整版本: Atmega8+DHT11+1602的显示问题