扫我~扫我~

获取更多资讯

    查看: 1779|回复: 4

    [已解决] IIC LCD2004 断电后重启显示乱码

    [复制链接]

    2

    主题

    2

    帖子

    29

    积分

    小松籽

    Rank: 1

    积分
    29
    发表于 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()
    {

    }



    回复

    使用道具 举报

    3

    主题

    9

    帖子

    133

    积分

    大松籽

    Rank: 2

    积分
    133
    发表于 2014-8-9 11:14 | 显示全部楼层
    你可以尝试复位控制器,你这种现象一般是程序跑飞了,复位下就好。
    回复 支持 反对

    使用道具 举报

    1

    主题

    4

    帖子

    18

    积分

    小松籽

    Rank: 1

    积分
    18
    发表于 2014-8-11 17:29 | 显示全部楼层
    追问,我经常碰到这个问题,reset后解决,请问arduino很容易跑飞吗?原因及如何避免跑飞?
    回复 支持 反对

    使用道具 举报

    3

    主题

    9

    帖子

    133

    积分

    大松籽

    Rank: 2

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

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

    使用道具 举报

    7

    主题

    43

    帖子

    282

    积分

    小松塔

    Rank: 3Rank: 3

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

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

    使用道具 举报

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

    本版积分规则

    快速回复 返回顶部 返回列表