基于arduino的lcd1602显示_LCD1602接口类型

基于arduino的lcd1602显示_LCD1602接口类型Arduino小实验LCD1602A_I2C液晶显示魔法传送门Arduino小实验LCD1602A_I2C液晶显示准备元件LCD1602A原理图接线部分Arduino代码常见bug汇总及解决方法准备元件准备元件:1.Arduino主板(UNO)//Arduino主板(Mega)崭新出厂2.LCD1602A液晶显示屏3.LCD1602A的驱动—PCF8574驱动板LCD1602A原理图接线部分ArduinoMega:ArduinoUNO实物图Arduino代码常见bug汇总


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在这里插入图片描述

准备元件

准备元件:
1.Arduino主板(UNO)//Arduino主板(Mega)崭新出厂
2.LCD1602A液晶显示屏
3.LCD1602A的驱动—PCF8574驱动板

LCD1602A原理图

在这里插入图片描述
引脚说明
GND——GND
VCC——5V/3.3v
SDA—— I2C
SC——I2C

接线部分

接线说明
PCF8574驱动——Arduino
GND——————GND
VCC—————— 5V
SDA——————A4
SCL—————— A5

Arduino Mega:
在这里插入图片描述
Arduino UNO
在这里插入图片描述
实物图

在这里插入图片描述
这里是Arduino UNO的SCL与SDA接口:
在这里插入图片描述

Arduino代码

Arduino 代码部分在使用了PCF8574驱动板简练方便了不少

安装库文件

这里我们需要“LiquidCrystal_I2C”,我自己在IDE的库管理里没有找到
在这里插入图片描述
LiquidCrystal倒是有…
在这里插入图片描述
这边有资源:
CSDN免费下载:https://download.csdn.net/download/weixin_50679163/15934285
百度网盘:https://pan.baidu.com/s/1oCU4VdWZrfV0sEQNE8DThA
提取码:6666

代码部分:

#include <Wire.h> //调用wire库
#include <LiquidCrystal_I2C.h> //调用LiquidCrystal_I2C库

LiquidCrystal_I2C lcd(0x27,16,2); //设置LCD1_602A设备地址 
 
void setup()
{ 
   
  lcd.init();                  // 初始化LCD_1602A
  lcd.backlight();             //设置LCD背景等亮
}
 
void loop()
{ 
   
  lcd.setCursor(0,0);            //第一行显示
  lcd.print("Hello&Wellcome");     	//输出字符
  lcd.setCursor(0,1);			//第二行显示
  lcd.print("LiquidCrystal");
}

编译上传—OK(*´゚∀゚`)ノ

在这里插入图片描述

常见bug汇总及解决方法

1.为什么屏幕一直常亮没有字符显示?

答:对比度过高/低,LCD_1602A这块屏幕是需要调节对比度的(拿个小螺丝刀拧拧? )
在这里插入图片描述

2.为什么显示方块字体?

答:设备地址不匹配,LCD1602设备地址有0x3F,0x20,0x27(常见为0x27)
(很遗憾,截止发布时,我改代码0x27,0x20,0x3F都不会出现方块字了…)

LCD_1602A地址查询方法

在正确与arduino连接下,运行如下代码:
此方法转载Arduino驱动IIC/I2C LCD1602模块显示(4根线解决连接)
(Thanks and salute!)

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

效果图:
在这里插入图片描述

3.为什么只显示一行或两行首字符?

答:修改库文件
进入目录:C:\Users\XXX\Documents\Arduino\libraries
在这里插入图片描述
打开LiquidCrystal_I2C.cpp修改这里:
将return 0;改为return 1;
eg:
inline size_t LiquidCrystal_I2C::write(uint8_t value) {

send(value, Rs);
return 1;
}
在这里插入图片描述

补充:为什么编译上传成功后显示没有更新?

答:上传两次…(反复更新上传 )
(在烧录程序时,我时常遇到编译上传一次LCD这里刷新屏幕却没有更新文本,一般刷新两次会出现,暂时不知道是什么问题)

最后,各位武运昌盛

“Thank you for playing my game” ——《头号玩家》
在这里插入图片描述

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190660.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java和c++哪个就业前景好

    Java和c++哪个就业前景好二、回顾整理阿里面试题基本就这样了,还有一些零星的问题想不起来了,答案也整理出来了。自我介绍JVM如何加载一个类的过程,双亲委派模型中有哪些方法?HashMap如何实现的?HashMap和ConcurrentHashMap区别,ConcurrentHashMap线程安全hashtable吗,ConcurrentHashMap如何保证线程安全?HashMap和HashTable区别,HashTable线程安全吗?进程间通信有哪几种方式JVM分为哪些区,每一个区干吗的?JVM如

    2022年7月7日
  • baq在聊天中啥意思_BAQ是什么意思

    baq在聊天中啥意思_BAQ是什么意思1.Inthismethod,therawdataofIandQchannelsisdividedintoblocksatfirst,theneachblockistransformedintotime-frequencydomainby2D-RDGT(Two-DimensionalRealvaluedDiscreteGaborTr…

    2022年6月15日
  • Android蓝牙开发—经典蓝牙详细开发流程[通俗易懂]

    Android蓝牙开发—经典蓝牙详细开发流程[通俗易懂]    Android蓝牙开发前,首先要区分是经典蓝牙开发还是BLE(低功耗)蓝牙开发,它们的开发是有区别的,如果还分不清经典蓝牙和BLE(低功耗)蓝牙的小伙伴,可以先看Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别本文是针对经典蓝牙开发的,如果是BLE(低功耗)蓝牙开发,可以看Android蓝牙开发—BLE(低功耗)蓝牙详细开发流程开发流程开启蓝牙 扫描蓝牙 …

    2022年6月15日
  • 运行疑难解答时出错0x8000FFFF_vs2010由于缺少调试目标

    运行疑难解答时出错0x8000FFFF_vs2010由于缺少调试目标发生错误,需要终止调试。有关更多详细信息,请参阅Microsoft帮助和支持网站。HRESULT=0x8000ffff。ErrorCode=0x0。工程目录太深会导致上述错误发生,把整个工程文件往外移即可

    2022年9月24日
  • u16转化u8_c语言指针编程题及详解

    u16转化u8_c语言指针编程题及详解如果你实际上有两个不同的u8,传统的解决方案涉及按位操作,特别是移位和按位OR。这需要零堆分配并且非常有效:letnumber=((vector[0]asu16)<<8)|vector[1]asu16;图解说明:A0B0+——–++——–+|XXXXXXXX||Y…

    2022年10月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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