Arduino 和LCD1602液晶屏 I2C接口实验「建议收藏」

LCD1602液晶屏带I2C接口为什么使用I2C接口?因为省IO口啊,只需要4条线,可以看看之前发的实验,接线多复杂呀,对吧。(传送门:Arduino携手LCD1602向世界问好“helloWorld!”)还有背光灯,和可调节对比度(就是背面蓝色那块可以旋转的调)具体怎么实现解决问题,请往下看引脚说明GND——地线VC…

大家好,又见面了,我是你们的朋友全栈君。

Arduino 和LCD1602液晶屏 I2C接口实验「建议收藏」

 

 

LCD1602液晶屏 带I2C接口

Arduino 和LCD1602液晶屏 I2C接口实验「建议收藏」

为什么使用I2C接口?因为省IO口啊,只需要4条线,可以看看之前发的实验,接线多复杂呀,对吧。

(传送门:Arduino携手LCD1602 向世界问好“hello World!”

还有背光灯,和可调节对比度(就是背面蓝色那块可以旋转的调)

 

具体怎么实现解决问题,请往下看

 

引脚说明

GND —— 地线 

VCC —— 电源(5V or 3.3v 电源不同显示效果有点差别)

SDA —— I2C 数据线

SCL —— I2C 时钟线

 

接线方法

LCD1602 i2c模块                         Ardunio Uno

 

GND                           <——>        GND接地线

VCC                           <——>         5V 接电源

SDA                            <——>         A4

SCL                            <——>         A5

 

程序实现

需要用到LCD1602 I2C的库,下载地址是 https://github.com/marcoschwartz/LiquidCrystal_I2C

把下载的库放到Arduino的库里(PS:不懂库是啥?请点击这里

程序和库打包下载:https://u16460183.ctfile.com/fs/16460183-295783929

文件夹说明:
LiquidCrystal_I2C-master     ——LCD1602 I2C库(库需要复制在arduino的库目录里)
LS_LCD1602                       ——主程序

 

//LingShun lab
#include <Wire.h> 
#include <LiquidCrystal_I2C.h> //引用I2C库

//设置LCD1602设备地址,这里的地址是0x3F,一般是0x20,或者0x27,具体看模块手册
LiquidCrystal_I2C lcd(0x3F,16,2);  

void setup()
{
  lcd.init();                  // 初始化LCD
  lcd.backlight();             //设置LCD背景等亮
}

void loop()
{
  lcd.setCursor(0,0);                //设置显示指针
  lcd.print("LCD1602 iic Test");     //输出字符到LCD1602上
  lcd.setCursor(0,1);
  lcd.print("         by L.L.");
  delay(1000);
}

 

 

 

 

实例效果

Arduino 和LCD1602液晶屏 I2C接口实验「建议收藏」

 

问题解疑

是一个模块还是两个模块?

这模块是通过LCD1602屏 LCD1602 I2C 模块 焊接结合的,可以直接买焊接好的,也可以分开买,不过就需要点动手能力。

 

无法正常显示?

刚上电的时候,老是显示一个个方块,如图

Arduino 和LCD1602液晶屏 I2C接口实验「建议收藏」

这情况一般是地址错误,我根据说明上写的地址0x20,0x27 都试了个遍还是无法正常显示

后来通过一网友的帖子把这问题给解决了,

贴出了一个寻找设备地址的代码 (来源:Arduino驱动IIC/I2C LCD1602模块显示(4根线解决连接)

 

 

#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
}

把模块按接线方法接好,上传这段代码后,打开端口监视器,就能找到在I2C上的设备地址,大家可以试试哦

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129543.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • python定时执行函数_python定时执行详解「建议收藏」

    python定时执行函数_python定时执行详解「建议收藏」知识点1.sched模块,准确的说,它是一个调度(延时处理机制),每次想要定时执行某任务都必须写入一个调度。(1)生成调度器:s=sched.scheduler(time.time,time.sleep)第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。可以说sched模块设计者是“在下很大的一盘棋”,比如第一个函数可以是自定义的一个函数,不一定是时间戳,第二个也可以…

  • webpack的devtool[通俗易懂]

    webpack的devtool[通俗易懂]这里以环境分类为分析方向1.对开发环境eval-每个模块都使用eval()执行,并且都有//@sourceURL。此选项会非常快地构建。主要缺点是,由于会映射到转换后的代码,而不是映射到原始代码(没有从loader中获取sourcemap),所以不能正确的显示行数。eval-source-map-每个模块使用eval()执行,并且sourcem…

  • C++11新特性之右值引用(&&)、移动语义(move)、完美转换(forward)

    1.右值引用个人认为右值引用的目的主要是为了是减少内存拷贝,优化性能。比如下面的代码:str为临时对象,然后调用Stringd的拷贝构造函数,将临时对象的值赋值给String,这种拷贝是完全没

    2021年12月28日
  • idea2020.2激活码(JetBrains全家桶)

    (idea2020.2激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • html超链接样式顺序,CSS页面布局常用知识汇总(超链接样式)

    html超链接样式顺序,CSS页面布局常用知识汇总(超链接样式)CSS中的知识非常多,我们不可能全都记得住。闲暇时整理了一些CSS页面布局的常用知识,这篇文章就和大家分享一下CSS超链接样式的常用知识。需要的朋友可以参考一下,希望可以帮助到你。设计网页时,我们可以通过伪类对链接的样式进行控制,引导用户浏览网页,增加互动的丰富元素。1、链接的属性超链接的标签为,网页上的超链接一般用来链接文字或者图片。超链接有4个伪类,分别代表链接的不同状态。a:link(超链…

  • pychram mac 激活码【2021免费激活】

    (pychram mac 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号