YFROBOT创客社区

标题: Arduino驱动IIC/I2C LCD1602模块显示(4根线解决连接) [打印本页]

作者: AllBlue    时间: 2013-7-4 20:20
标题: Arduino驱动IIC/I2C LCD1602模块显示(4根线解决连接)
本帖最后由 AllBlue 于 2018-5-18 14:11 编辑

Arduino驱动IIC/I2C LCD1602模块显示(4根线解决连接)

Arduino控制器的控制端口数量有限,连接一个LCD就好像没接口了似得!

下面我们介绍一个使用IIC接口连接的LCD1602模块。这一模块只用4根线就可以解决与arduino连接问题,非常方便初学者使用,再也不用为繁琐的连线头疼了~~

IIC 1602背面图片:

[attach]441[/attach]

模块基本参数:

       工作电压为+5V

       有背光且可调节对比度

       I2C接口通讯地址:0x27


下面我们介绍下IIC:

IIC 即Inter-Integrated Circuit(集成电路总线)又叫I2C,一种总线结构,这种总线类型是由菲利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源。

I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。

模块使用芯片(PCF8574)中文资料:

[attach]438[/attach]
IIC LCD1602库文件:

[attach]729[/attach]   

              --- 已更新 1.6.6 版本IDE 可用   更改方法:点击查看

IIC LCD1602模块有4个引脚,连接非常简单,分别连接arduino(在这里要特别提示下各位用户,首先将库文件添加到library中,不然程序无法工作;虽然连线只有4根,但是还是要注意下连线,正负极不可反接):

       GND ———— GND

       VCC ———— 5V

       SDA ———— A4(AREF旁的SDA)

       SCL ———— A5 (AREF旁的SCL)


连接好电路后,将下面的例程下载到控制板中,就可以实现显示了:

  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>

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

  4. void setup()
  5. {
  6. lcd.init(); // initialize the lcd
  7. lcd.backlight(); //Open the backlight
  8. lcd.print("Welcome to "); // Print a message to the LCD.
  9. lcd.setCursor(0,1); //newline
  10. lcd.print("www.yfrobot.com");// Print a message to the LCD
  11. }
  12. void loop()
  13. {
  14. }
复制代码

程序中使用到:

      lcd.init();  初始化LCD
             lcd.backlight(); 打开背景灯     

      lcd.print("Welcome to "); 显示“Welcome to”文本

       还要说明的是 :之前介绍的LCD 1602的语法,在这个库中同样适用        其他语法介绍请见1602实验

显示图片:
[attach]440[/attach]





模块原理图:[attach]723[/attach]
[attach]722[/attach]
-----------------------------------------------------------------分割君--------------------------------------------------------------
网友:hwn444 贡献的IIC地址查询,给用到的朋友整理到这里。

[C] 纯文本查看 复制代码

#include <Wire.h>

void setup(){
  Wire.begin();
  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}
void loop(){
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for (address = 1; address < 127; address++ ){
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0){
      Serial.print("I2C device found at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.print(address, HEX);
      Serial.println(" !");
      nDevices++;
    }else if (error == 4){
      Serial.print("Unknow error at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
  delay(5000); // wait 5 seconds for next scan
}



代码可用,已测试!再次感谢hwn444的贡献!

作者: Macintosh    时间: 2013-7-26 08:53
这好东西到那里去买啊?
作者: AllBlue    时间: 2013-7-27 08:27
Macintosh 发表于 2013-7-26 08:53
这好东西到那里去买啊?

淘宝搜索“ IIC 1602” 就可以看到很多了~~~~
作者: 周降临    时间: 2013-11-2 14:35
厉害,学习了,哇哈哈哈
作者: zjjdog3    时间: 2014-9-17 12:58
?? 求教为什么我这里编译报错??
库文件已经添加了
[attach]880[/attach]
作者: AllBlue    时间: 2014-9-18 13:36
zjjdog3 发表于 2014-9-17 12:58
?? 求教为什么我这里编译报错??
库文件已经添加了

你的错误提示就是库文件找不到哦,你看下库文件是否放在library文件夹中了!!如果放了,LiquidCrystal_I2C应该会变色的!
作者: AllBlue    时间: 2014-9-18 13:36
zjjdog3 发表于 2014-9-17 12:58
?? 求教为什么我这里编译报错??
库文件已经添加了

你的错误提示就是库文件找不到哦,你看下库文件是否放在library文件夹中了!!如果放了,LiquidCrystal_I2C应该会变色的!
作者: zjjdog3    时间: 2014-9-18 20:26
AllBlue 发表于 2014-9-18 13:36
你的错误提示就是库文件找不到哦,你看下库文件是否放在library文件夹中了!!如果放了,LiquidCrystal_I ...

谢谢回答,不过不知为何这回LiquidCrystal_I2C却显示变色了
难道库文件放好之后要隔一段时间才能识别? 还是要重启?


作者: evilsen    时间: 2015-3-18 20:35
用最新ardublock增加组件IIC/I2C LCD1602怎么编译后没有反应的呢,好像该软件自动编译的程序和这个的串口通信方式不一样
作者: evilsen    时间: 2015-3-18 20:38
代码如下:#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal.h>

// For these LCD controls to work you MUST replace the standard LCD library with 'New LCD' from...
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
// Direct download https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/LiquidCrystal_V1.2.1.zip
// Your project will not compile until this is done.
//
//                             RS  EN  d0  d1  d2  d3  LED
LiquidCrystal lcd_I2C_Parallel(12, 11,  5,  4,  3,  2,  7, POSITIVE);

void setup()
{
  lcd_I2C_Parallel.begin (16, 2);
  lcd_I2C_Parallel.setBacklight(HIGH);
}

void loop()
{
  lcd_I2C_Parallel.setCursor( (1) - 1, (1) - 1 );
  lcd_I2C_Parallel.print( "SainsmartLCD Parallel" );
}
作者: AllBlue    时间: 2015-3-20 09:34
evilsen 发表于 2015-3-18 20:38
代码如下:#include
#include
#include

可以先确认下液晶是否可以正常工作,你这个应该是库是用问题
作者: xiongchp    时间: 2015-5-8 15:32
本帖最后由 xiongchp 于 2015-5-8 15:45 编辑

我的库正常添加了。编译出错,信息如下:
Arduino:1.6.3 (Windows 7), 板:"Arduino Uno"
In file included from lcd_I2C.ino:1:0:
D:\arduino-1.6.3\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:81:16: error: conflicting return type specified for 'virtual void LiquidCrystal_I2C::write(uint8_t)'
   virtual void write(uint8_t);
In file included from D:\arduino-1.6.3\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:6:0,
                 from lcd_I2C.ino:1:

D:\arduino-1.6.3\hardware\arduino\avr\cores\arduino/Print.h:48:20: error:   overriding 'virtual size_t Print::write(uint8_t)'
     virtual size_t write(uint8_t) = 0;
编译有误。

请专家看看,好像是格式冲突?怎么解决呢?多谢了。

作者: AllBlue    时间: 2015-5-8 18:00
xiongchp 发表于 2015-5-8 15:32
我的库正常添加了。编译出错,信息如下:
Arduino:1.6.3 (Windows 7), 板:"Arduino Uno"
In file includ ...

试下低版本的IDE,1.0.1,有可能是IDE版本问题
作者: xiongchp    时间: 2015-5-8 22:26
本帖最后由 xiongchp 于 2015-5-9 00:39 编辑
AllBlue 发表于 2015-5-8 18:00
试下低版本的IDE,1.0.1,有可能是IDE版本问题

非常感谢,到底是专家,确实是版本问题。试过1.5.6,不行。从1.0.1到1.0.6都不行。还是用0023版才行。看来这个库要升级了。期待高手来改一下库。
但是0023版有一个问题,上传程序时第一次总是有问题,有时候显示内容不变,有时候显示乱码。再传一次就好了。不知何故?

更新:所有问题都解决了。非常感谢。
          原因是淘宝卖家给的那个库有问题。在本站下载了库文件,可以用1.0.6版了。更高版本还没有试。全部正常了。

再次更新:1.6.3版也可以用了。

作者: ivan24    时间: 2015-7-22 21:00
楼主,为什么我的LCD能亮,但始终无法显示出字呢?PS:代码编译和烧写都是没有错误的。另外求IIC/I2C和LCD的连接图,楼主快点回答吧,我很着急的。谢谢啦~
作者: AllBlue    时间: 2015-7-23 08:25
本帖最后由 AllBlue 于 2015-7-23 08:32 编辑
ivan24 发表于 2015-7-22 21:00
楼主,为什么我的LCD能亮,但始终无法显示出字呢?PS:代码编译和烧写都是没有错误的。另外求IIC/I2C和LCD ...

1、是否有调节背面的电位器控制下对比度呢(调小调过了都不能显示的)?
2、SDA 和 SCL 接线是否正确。(SDA — A4、 SCL — A5 )
3、还有一个要注意的就是 I2C接口通讯地址,我们这里默认是:0x27(现在版本可以通过短接 A0 A1 A2,来改变地址)

IIC与LCD连接图,文章底部有电路图,芯片资料文中也有的!
作者: 767348927    时间: 2015-9-16 10:44
楼主,我的也是不显示字符,只有第一行全黑,第二行无显示,程序用你的,库文件加上去也没报错求救
作者: 767348927    时间: 2015-9-16 10:44
楼主,我的也是不显示字符,只有第一行全黑,第二行无显示,程序用你的,库文件加上去也没报错求救
作者: AllBlue    时间: 2015-9-19 08:10
767348927 发表于 2015-9-16 10:44
楼主,我的也是不显示字符,只有第一行全黑,第二行无显示,程序用你的,库文件加上去也没报错求救

你地址对不对呢,程序复位试试看呢
作者: 凳凳长    时间: 2015-10-26 23:42
谢谢嵝主
作者: AllBlue    时间: 2015-12-21 17:14
Albert_qiang 发表于 2015-12-20 20:48
#include
#include
LiquidCrystal_I2C lcd(0x27,16,2); // 设置 LCD 为 16 字符,2 行显示,地址 0x27
...

程序应该是没有什么问题的。
重启下控制板试试看,不行的话,最好将扩展去掉,直接连接UNO控制板试试:
       GND ———— GND
       VCC ———— 5V
       SDA ———— A4
       SCL ———— A5
排除扩展有问题!
作者: 弦外音    时间: 2015-12-29 18:20
将楼主的代码贴进去,编译完成,上传,LCD没反应,将楼主方法与我的操作对比,没有错,就是不显示,已快崩溃,求救啊
作者: AllBlue    时间: 2015-12-30 11:25
弦外音 发表于 2015-12-29 18:20
将楼主的代码贴进去,编译完成,上传,LCD没反应,将楼主方法与我的操作对比,没有错,就是不显示,已快崩 ...

IIC地址是否正确,电路连接是否正确,检查下~
作者: elreng0512    时间: 2016-4-6 09:57
楼主,我的也是不显示字符,只有第一行全黑,第二行无显示,程序用你的,库文件加上去也没报错,你说要检查下IIC地址,那是啥意思,怎么做啊
作者: AllBlue    时间: 2016-4-7 08:46
elreng0512 发表于 2016-4-6 09:57
楼主,我的也是不显示字符,只有第一行全黑,第二行无显示,程序用你的,库文件加上去也没报错,你说要检查 ...

你在哪里买的1602,不同的IIC模块地址有可能不同的,需要确定下?还可以确定下 SDA /SCL引脚有没有接反。
作者: hwn444    时间: 2016-4-16 22:17

                               
登录/注册后可看大图


有的板上是AREF也是5V能点亮,但程序没反映,要重新接VCC5V,望借鉴!

作者: hwn444    时间: 2016-4-17 21:02
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
作者: hwn444    时间: 2016-4-17 21:07
本帖最后由 AllBlue 于 2016-4-23 08:26 编辑

[attach]1364[/attach]

这段是检测IC2设备端口的程序,结果在串口监视器里看,没有发现就是设备连接有问题[attach]1351[/attach]


作者: yjx189    时间: 2016-4-18 08:38
AllBlue 发表于 2014-9-18 13:36
你的错误提示就是库文件找不到哦,你看下库文件是否放在library文件夹中了!!如果放了,LiquidCrystal_I ...

请问:一,怎么吧库文件放在放在library文件夹里面?
         二,怎么看库文件是否放在library文件夹中了呢?
作者: AllBlue    时间: 2016-4-18 09:31
yjx189 发表于 2016-4-18 08:38
请问:一,怎么吧库文件放在放在library文件夹里面?
         二,怎么看库文件是否放在library文件夹 ...

下载库文件放到下面两个任意一个路径下   
--   1、   D:\Program Files\arduino\libraries (arduino IDE 存放路径下的libraries文件夹)
--   2、   C:\Users\Administrator\Documents\Arduino\libraries (C盘文档下arduino中的libraries文件夹 推荐)
如何判断的话?
正确放置,程序编译不提示 “'LiquidCrystal_I2C'does not name a type”类似错误!
作者: yjx189    时间: 2016-4-18 09:45
AllBlue 发表于 2016-4-18 09:31
下载库文件放到下面两个任意一个路径下   
--   1、   D:\Program Files\arduino\libraries (arduino  ...

谢谢版主先生的回复,明天我的IIC转接模块就可以到货了,到时弄个试试!
作者: corcodile    时间: 2016-4-19 00:37
楼主,编译通不过,不知道原因,帮我看看,,谢谢[attach]1352[/attach]
作者: yjx189    时间: 2016-4-19 12:46
本帖最后由 yjx189 于 2016-4-19 12:52 编辑
hwn444 发表于 2016-4-17 21:07
这段是检测IC2设备端口的程序,结果在串口监视器里看,没有发现就是设备连接有问题

你说:在串口监视器里看,没有发现就是设备连接有问题,我监视器里,就什么都没有,,,一共就4根线,怎么会连接有问题呢?还有就是,IIC转接板我是和1602屏直接焊在了一起,也不会有连接问题的啊!但就是只显示上面一条方块:图在后面


[attach]1353[/attach]


[attach]1354[/attach]


[attach]1355[/attach]


作者: yjx189    时间: 2016-4-19 13:06
本帖最后由 yjx189 于 2016-4-19 17:55 编辑
hwn444 发表于 2016-4-17 21:07
这段是检测IC2设备端口的程序,结果在串口监视器里看,没有发现就是设备连接有问题

今天转接板到手了,但怎么弄都不显示,只显示一条方块,厂家在网上给出的库文件下载以后,是个名为Arduino测试程序的压缩文件,解压后是个文件夹,其中有三个简单例程,然后就是2个TXT文件,1个CPP文件,还有后缀是H和O的各一个文件,,难道这就是库文件吗?我已经把它们都放在Arduino的libraries文件夹里面了,但LiquidCrystal_I2C并没有变颜色啊,下载程序,也都提示上传成功,不论是下载它给的例程,还是楼主先生的源代码,就是怎么都不行,,,到底是什么原因呢?
网上下的K库文件
[attach]1356[/attach]

[attach]1357[/attach]

作者: yjx189    时间: 2016-4-19 14:54
hwn444 发表于 2016-4-17 21:02
#include
void setup()
{

请问上传的是什么啊?我上传后,显示上传成功,但1602屏还是什么显示都没有啊!
作者: yjx189    时间: 2016-4-19 16:00
现在连上传楼主一开始的代码都不行了,总提示“编译错误”    ,
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

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(); //Open the backlight
lcd.print("Welcome to "); // Print a message to the LCD.
lcd.setCursor(0,1); //newline
lcd.print("www.yfrobot.com");// Print a message to the LCD
}
void loop()
{
}

[attach]1358[/attach]


作者: yjx189    时间: 2016-4-19 17:48
本帖最后由 yjx189 于 2016-4-19 17:54 编辑
hwn444 发表于 2016-4-17 21:07
这段是检测IC2设备端口的程序,结果在串口监视器里看,没有发现就是设备连接有问题

这次一看有了,不过我的是0X3F,请问这个地址对吗?不一般都是0X27.或者0X20吗?把代码里面的地址也改成0X3F,还是提示错误,1602也不显示!对了,我的IDE版本是1.7.8的,刚才试了一下1.6.5的,也还是不行!
作者: AllBlue    时间: 2016-4-20 08:21
corcodile 发表于 2016-4-19 00:37
楼主,编译通不过,不知道原因,帮我看看,,谢谢

这个你要将错误信息都贴出来,这样我看不出来哪里错了
作者: AllBlue    时间: 2016-4-20 08:23
yjx189 发表于 2016-4-19 13:06
今天转接板到手了,但怎么弄都不显示,只显示一条方块,厂家在网上给出的库文件下载以后,是个名为Arduin ...

第一行全黑,你看下这个帖子:http://www.yfrobot.com/thread-11812-1-1.html
作者: AllBlue    时间: 2016-4-20 08:24
yjx189 发表于 2016-4-19 16:00
现在连上传楼主一开始的代码都不行了,总提示“编译错误”    ,
#include  
#include

编译错误,要将贴出错误提示,我看下!
作者: AllBlue    时间: 2016-4-20 08:26
yjx189 发表于 2016-4-19 17:48
这次一看有了,不过我的是0X3F,请问这个地址对吗?不一般都是0X27.或者0X20吗?把代码里面的地址也改成0 ...

你电路上只有IIC液晶吗?有没有连接其他东西~http://www.yfrobot.com/thread-11812-1-1.html
作者: yjx189    时间: 2016-4-20 12:09
本帖最后由 yjx189 于 2016-4-20 12:14 编辑
AllBlue 发表于 2016-4-20 08:21
这个你要将错误信息都贴出来,这样我看不出来哪里错了

版主先生,我在39楼贴出错误的图片了啊,(那里的源代码,写的就是楼主在这个帖子里发的那个,本不该报错的啊)就是说编译有误,没有别的!到是我那地址是0X3F(,别人我看都是0X20和0X27),图片贴在40楼了,这个地址不至于不能用吧?

作者: corcodile    时间: 2016-4-20 12:56
AllBlue 发表于 2016-4-20 08:21
这个你要将错误信息都贴出来,这样我看不出来哪里错了

[attach]1360[/attach]
楼主,我都贴出来了,就这三条啊,

作者: yjx189    时间: 2016-4-20 13:53
本帖最后由 yjx189 于 2016-4-20 13:57 编辑
AllBlue 发表于 2016-4-20 08:24
编译错误,要将贴出错误提示,我看下!

   版主先生,除了编译有误以外,他没有什么提示啊,我的IDE是1.7.9版本,和这又关系吗?还有就是,我的地址显示是0X3F,这是问题吗?图附后:[attach]1362[/attach]
作者: AllBlue    时间: 2016-4-20 15:02
yjx189 发表于 2016-4-20 13:53
版主先生,除了编译有误以外,他没有什么提示啊,我的IDE是1.7.9版本,和这又关系吗?还有就是,我的 ...

你库文件添加了吗?
和版本有没有关系我不太清楚,有可能有,太多的版本了!
现在关键问题是你程序都编译不了!你得解决这个问题,你看下是否是库文件未添加?
但如果你地址是0X3F,你写成0x27,肯定是没有用的;
作者: AllBlue    时间: 2016-4-20 15:04
corcodile 发表于 2016-4-20 12:56
楼主,我都贴出来了,就这三条啊,

你这个得试下下载其他版本的IDE试试看了~ 1.0.5
作者: yjx189    时间: 2016-4-20 15:20
本帖最后由 yjx189 于 2016-4-20 15:24 编辑
AllBlue 发表于 2016-4-20 15:04
你这个得试下下载其他版本的IDE试试看了~ 1.0.5

  昨天我下了1.6.5的试,没用!有空我再下个1.0.5的试试。但是版主先生,我的地址显示是0X3F,我写成0X3F也还是不行啊,这个地址的IIC转接板能用吗?
作者: AllBlue    时间: 2016-4-20 16:32
yjx189 发表于 2016-4-20 15:20
昨天我下了1.6.5的试,没用!有空我再下个1.0.5的试试。但是版主先生,我的地址显示是0X3F,我写成0X3F ...

这个你问你购买的厂家吧,理论上应该是0x2x或者0x7x!
作者: yjx189    时间: 2016-4-20 17:15
AllBlue 发表于 2016-4-20 16:32
这个你问你购买的厂家吧,理论上应该是0x2x或者0x7x!

我是网购的,网店给的地址是0X20,但他们同时还说:提供不了任何技术支持,初学者慎拍,,,所以我找他们恐也没什么用了啊!
作者: yjx189    时间: 2016-4-21 13:13
本帖最后由 yjx189 于 2016-4-21 13:26 编辑

    尊降的版主先生,资料里讲:IIC转接板上的AO,A1,A2三个地方,不同的短接会有不同的地址,,按资料说,全不连接应是0X27,三个全部短接后,应该是0X20,我的板子原来是未短接的,地址是0X3F,现在全部短接后,地址变为0X38,把代码里原来0X27的地方虽然都改写成0X38,仍然还是老毛病,,1602依然只是第一条黑色方块,,,    还有就是:我只有30楼的代码能够不报错,能够上传成功,其他的代码一概都显示编译有误上传不成功。并且只有在上传成功30楼的代码后,点击工具里的“串口监视器”,显示是:发现IIC设备,地址是0X38。而上传别的代码后除了报错,上传不成功外,串口监视器显示的是:没有发现IIC设备,,,
    真不知道这些问题到底是怎么了啊?

作者: AllBlue    时间: 2016-4-22 11:15
yjx189 发表于 2016-4-21 13:13
尊降的版主先生,资料里讲:IIC转接板上的AO,A1,A2三个地方,不同的短接会有不同的地址,,按资料说, ...

厂家给你的IIC地址是 0X20,你自己检测出来确实0X3F!这个我真的不太清楚!
下面这个帖子是全部可能的原因,如果解决不了,我也没招
http://www.yfrobot.com/thread-11812-1-1.html
作者: yjx189    时间: 2016-4-22 14:32
不是“厂家”,而是“商家”给的地址是0X20,
作者: magiclang    时间: 2016-4-24 22:24
请问这个是什么情况呀?都放进去了为什么还是找不到呢?T_[attach]1365[/attach]T
作者: AllBlue    时间: 2016-4-25 08:13
magiclang 发表于 2016-4-24 22:24
请问这个是什么情况呀?都放进去了为什么还是找不到呢?T_T

这个寻找的是iic地址,和库文件没有关系!你电路有没有正确连接上IIC设备?
作者: magiclang    时间: 2016-4-26 21:03
AllBlue 发表于 2016-4-25 08:13
这个寻找的是iic地址,和库文件没有关系!你电路有没有正确连接上IIC设备?

哦抱歉,连上以后写进去程序但是并没有显示,模块是pcf8574T

作者: AllBlue    时间: 2016-4-27 08:10
magiclang 发表于 2016-4-26 21:03
哦抱歉,连上以后写进去程序但是并没有显示,模块是pcf8574T

没显示,调节对比度电位器试试看
作者: yjx189    时间: 2016-4-27 09:56
magiclang 发表于 2016-4-26 21:03
哦抱歉,连上以后写进去程序但是并没有显示,模块是pcf8574T

检查了N遍,保证都正确连接了啊!
作者: yjx189    时间: 2016-4-29 09:22
本帖最后由 yjx189 于 2016-4-29 09:43 编辑
AllBlue 发表于 2016-4-20 15:02
你库文件添加了吗?
和版本有没有关系我不太清楚,有可能有,太多的版本了!
现在关键问题是你程序都编 ...

楼主先生,版本是不一样,我用1.0.1的最低版本后,下载成功,(不像1.7.9总是编辑有误),但结果还是第一行黑方块,没有显示啊。。。
作者: yjx189    时间: 2016-4-29 09:40
本帖最后由 yjx189 于 2016-4-29 10:33 编辑
yjx189 发表于 2016-4-29 09:22
楼主先生,版本是不一样,我用1.0.1的最低版本后,下载成功,(不像1.7.9总是编辑有误),但结果还是第一 ...

今天把IDE从原来的1.7.8换成1.0.1的以后,下载成功,但还是一条黑方块,多按了几下UNO板上的RESET以后,居然就显示了,但断电后从新上电,又是不显示,要按RESET很多次,才能又正确显示,有时还会显示一堆乱码,乱码后在RESET一次,又显示正常,,请问版主先生,这又是什么问题呢?
作者: asdqwb    时间: 2016-5-20 00:35
楼主你好!我也是第一行黑色块的问题,用了扫描i2c的程序,程序一直在扫描,显示scanning后就没有之后的内容了,请问这是什么问题?检查了线路应该没错的,用的是nano。
作者: AllBlue    时间: 2016-5-21 08:08
asdqwb 发表于 2016-5-20 00:35
楼主你好!我也是第一行黑色块的问题,用了扫描i2c的程序,程序一直在扫描,显示scanning后就没有之后的内 ...

目前解决方法,都在这个帖子里面,你看下有没有可参考的:
http://www.yfrobot.com/thread-11812-1-1.html
作者: wangkun    时间: 2016-7-20 17:19
学习了,我的就是这种
作者: yokel1987    时间: 2016-7-31 15:07
已经下载文件,多谢楼主的分享~
作者: hero_sun    时间: 2016-9-25 16:14
顶。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
作者: bumbeeble    时间: 2016-9-29 23:21
直接点亮,非常感谢
作者: sprout    时间: 2016-10-1 13:00
hwn444 发表于 2016-4-17 21:07
这段是检测IC2设备端口的程序,结果在串口监视器里看,没有发现就是设备连接有问题

谢谢分享,解决了我的显示屏显示方块的问题,原来是地址错误导致的。
作者: okhaoba    时间: 2017-2-18 14:15
先学习学习, 太感谢lz了!
作者: 3inysy    时间: 2017-4-5 19:48
谢谢分享!!!!
作者: lpc19960426    时间: 2017-5-5 10:55
本帖最后由 lpc19960426 于 2017-5-5 11:19 编辑

感谢楼主!跪谢楼主!
另外把自己碰到的有关的所有问题和解决的办法列在下面,希望能够帮到后面像我这样的小白;
(1)在输入的时候一定要切换到英文输入法,否则标点符号会出现乱码问题。

(2)楼主提供的例程可以直接引用,但是一定要导入楼主提供的 LiquidCrystal_I2C.zip文件,就是将这个文件解压缩进arduino的库libraries文件夹里,不知道arduino位置的可以在桌面右键点击arduino的属性选项里查看地址,有的人可能下载的arduino版本的库里本身就有 LiquidCrystal_I2C.zip这个文件,可能会使导入文件后arduino仍旧无法找到这个库文件,这时我们可以将原先的 LiquidCrystal_I2C.zip文件先删除,然后再导入楼主的文件,就可以解决这个问题。这个 LiquidCrystal_I2C.zip库文件在arduino的编译界面里变成橙黄色的时候就证明导入库文件成功了。


(3)很多人可能会碰到上传后背景灯亮了,但是只有上面一行有一整排字符块同时显示的尴尬问题,这是由于我们用的芯片的版本和楼主的不同所导致的,楼主用的是PCF8574的芯片,而我们用的是PCF8574AT的芯片,所以接口通讯地址是不一样的,PCF8574的地址是0x27,而我们用的PCF8574AT的地址是0x3f,一定要注意这点。

(4)用uno的要注意了,楼主说的SDA接A4端口和SCL接A5端口是接的AREF区域的接口,大家不要误会认为是接4和5号这两个IO口,这是错误的连接,应该是直接接板上analog in区域的A4和A5口,不要接错了。而mega2560板上直接就有标着SDA、SCL的两个口,大家直接对号入座的连接就好了。


(5)在上传文件的时候一定要在arduino板子和LCD1602显示屏已经正确连接的状态下进行,不可以先在板子上上传之后再连接显示屏,那样就算连接好也没作用的,不会显示信息。
我有点啰嗦的像个大妈了,希望有能帮到你的。



作者: AllBlue    时间: 2017-5-5 17:32
lpc19960426 发表于 2017-5-5 10:55
感谢楼主!跪谢楼主!
另外把自己碰到的有关的所有问题和解决的办法列在下面,希望能够帮到后面像我这样的 ...

很详细,赞赞
作者: 夜玫瑰    时间: 2017-8-23 17:08
问一下 这个接过串口的LCD1602该如何接到五一最小系统板上的引脚呀?
作者: AllBlue    时间: 2017-8-24 08:49
夜玫瑰 发表于 2017-8-23 17:08
问一下 这个接过串口的LCD1602该如何接到五一最小系统板上的引脚呀?

串口?这个是IIC接口。如何您的51板上有硬件IIC接口,就可以直接连接!如果没有的话可以普通IO口模拟IIC接口试试,理论上程序正确可以使用的,我没试过。。
作者: 夜玫瑰    时间: 2017-8-26 16:00
接上I2C接口后,定义引脚时,是SDA和SCL原理图上的引脚号,还是用杜邦线插入对应的引脚号?
作者: dpsgdsb    时间: 2018-7-8 17:46
关于1602LCD驱动以及通过PCF8574T转接板与Arduino相连,网络搜索简书上说的基本都对,连接方法也没问题
通过此种方式,可以大大节省Arduino的IO口,前提是原作者得购买一块PCF8574T转接板。我这个是PCF8574AT转接板!

LCD显示屏与转接板所需要材料
1x Arduino UNO
1x LCD 16x2
1x PCF8574T转接板
电烙铁、焊锡、松香等
接线
首先,把转接板焊接到LCD显示屏上(方向如上图)
PCF8574T Arduino
GND -> GND
VCC -> 5V
SDA -> A4
SCL -> A5
打开软件米思齐0.99MIXLY
需要把地址默认的0x27 改为0x3f

[attach]2037[/attach]
其他不变,但是发现接入vcc5.0背光太亮了,有两个解决方案,
第一个就是就是把pcf8574AT的跳针帽取下来,串联一个1k的电阻:
[attach]2038[/attach]

第二个方案就是把vcc端口接入主板上3v的 完美解决!!
最后看一下成果!
作者: gal333arduino    时间: 2018-11-6 09:16
谢谢分享! win7 64 Arduino 1.8.7 一次成功
作者: Zjava    时间: 2019-4-8 13:39
用的是arduino uno R3和PCF8574T,连接没问题,程序写进去之后液晶屏只是常亮,没有反应,有人知道咋回事吗
作者: heping2019    时间: 2019-8-4 15:28
各位专家,我是用上面的检测IC2设备端口的程序,检测地址是0x27
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

LiquidCrystal_I2C mylcd(0x27,16,2);

void setup(){
  mylcd.init();
  mylcd.backlight();
}

void loop(){
  mylcd.setCursor(0, 0);
  mylcd.print("123");
  mylcd.setCursor(0, 1);
  mylcd.print("456");

}

但无法没有显示结果。
作者: heping2019    时间: 2019-8-4 15:33
问题解决了,是因为亮度太亮造成的。
作者: azi1974    时间: 2019-11-6 23:41
win7 arduino 8574T一次点亮,试了给的所有的程序,均运行成功!
作者: wmjljl    时间: 2020-8-19 23:00
非常不错,非常感谢。

作者: uohzhcim    时间: 2021-4-15 23:01
用的python,lcd_write(0x00)关不掉背光呀?
作者: uohzhcim    时间: 2021-4-15 23:02
输出字符和清屏都没问题
作者: uohzhcim    时间: 2021-4-19 23:01
发现一个bug,LCD_NOBACKLIGHT应该等于0x02而不是0x00,不然无法用软件关闭背光




欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) Powered by Discuz! X3.1