找回密码
 立即注册

QQ登录

IIC LCD2004 断电后重启显示乱码

来源: 已解决 Mr.mei 2014-8-9 09:09 显示全部楼层 |阅读模式
衔接:http://item.taobao.com/item.htm? ... 2156&_u=9mkhnf2fad5
大家好,我购买的IIC LCD 2004显示屏烧写自己的程序后,把显示屏的供电断掉后重启显示屏会花屏,但是把arduino 2560的usb 去掉后重新接上并不会出现花屏现象?不知道是何原因呢。
我把原来带的库文件example烧写进去同样是这样,望解答。谢谢
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args)  write(args);
#else
#define printByte(args)  print(args,BYTE);
#endif

uint8_t bell[8]  = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
uint8_t note[8]  = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0};
uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};
uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0};
uint8_t duck[8]  = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0};
uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0};
uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0};
uint8_t retarrow[8] = {        0x1,0x1,0x5,0x9,0x1f,0x8,0x4};

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.backlight();

  lcd.createChar(0, bell);
  lcd.createChar(1, note);
  lcd.createChar(2, clock);
  lcd.createChar(3, heart);
  lcd.createChar(4, duck);
  lcd.createChar(5, check);
  lcd.createChar(6, cross);
  lcd.createChar(7, retarrow);
  lcd.home();

  lcd.print("Hello world...");
  lcd.setCursor(0, 1);
  lcd.print(" i ");
  lcd.printByte(3);
  lcd.print(" arduinos!");
  delay(5000);
  displayKeyCodes();

}

// display all keycodes
void displayKeyCodes(void) {
  uint8_t i = 0;
  while (1) {
    lcd.clear();
    lcd.print("Codes 0x"); lcd.print(i, HEX);
    lcd.print("-0x"); lcd.print(i+16, HEX);
    lcd.setCursor(0, 1);
    for (int j=0; j<16; j++) {
      lcd.printByte(i+j);
    }
    i+=16;

    delay(4000);
  }
}

void loop()
{

}



回复

使用道具 举报

大神点评4

你可以尝试复位控制器,你这种现象一般是程序跑飞了,复位下就好。
回复 支持 反对

使用道具 举报

追问,我经常碰到这个问题,reset后解决,请问arduino很容易跑飞吗?原因及如何避免跑飞?
回复 支持 反对

使用道具 举报

d865841995 2014-8-11 20:43 显示全部楼层
没有羽毛的球 发表于 2014-8-11 17:29
追问,我经常碰到这个问题,reset后解决,请问arduino很容易跑飞吗?原因及如何避免跑飞? ...

不知道你碰到的具体情况是什么样的?不过对于学习而非做工程来说arduino控制器还是比较稳定的。个人理解楼主的做法是将LCD拔掉后从新接入,这时候程序其实是没有跑飞的,就是显示错误。重启就是为了重新显示要显示的内容。(提示:如使用1602LCD在重启前先按下清屏键)
回复 支持 反对

使用道具 举报

Arduino77 2014-8-11 23:37 显示全部楼层
没有羽毛的球 发表于 2014-8-11 17:29
追问,我经常碰到这个问题,reset后解决,请问arduino很容易跑飞吗?原因及如何避免跑飞? ...

在正常使用传感器的时候没有出现过程序跑飞的状态,应该是IIC数据传输的问题,之所以显示乱码应该是接受到的数据不完整而造成的,所以按下复位按键后,重新传送数据就可以解决问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册