概述
Arduino控制器的控制端口数量实在是有限,连接几个传感器,通讯设备什么的,你就会发现端口不够用了,还想扩展一个液晶显示器,怎么办?
为了解决上述问题,我们开发的I2C接口的LCD显示器,I2C只需两根线就可以实现数据显示,还可以串联多个I2C设备。标准I2C接口,除了Arduino可以使用之外,其他单片机同样可以进行驱动控制。
I2C LCD1602液晶模块,可以显示2行,每行16个字符。对于Arduino初学者来说,不必为繁琐复杂液晶驱动电路连线而头疼了,这款LCD扩展板将电路简化,使用相关文档中的库文件,您只需使用几行简单的Arduino控制代码便能完成LCD控制显示的功能。
I2C LCD1602液晶模块背面的电位器还能提供你调节液晶显示器对比度的功能。
新版的I2C LCD模块支持gadgeteer接口,并且具有地址设置功能,可以通过跳线设置地址(0x20-0x27)。
常见问题:
1、此显示屏自带的排线为 Gadgeteer接口专用,正常使用arduino请使用普通杜邦线连接。
2、此液晶显示屏'''默认地址为0x20 ''',如地址错误会导致屏幕无显示。
技术规格
- 模块供电电压:5v
- 接口: 1个I2C / TWI 两线数据通讯接口,2个gadgeteer接口
- I2C接口通讯地址:0x20-0x27(出厂默认地址0x20)
- 背光:蓝色,白色字符
- 可调节对比度
- 尺寸: 82x35x18mm
- 重量: 40g
接口定义
注意:如果屏幕显示不清晰,请使用十字螺丝刀旋转Contrast ADJ以调节屏幕对比度至能看清即可。
地址设置
短路帽插上为0,拔掉为1。
A2 | A1 | A0 | 地址 |
---|---|---|---|
0 | 0 | 0 | 0x20 |
0 | 0 | 1 | 0x21 |
0 | 1 | 0 | 0x22 |
0 | 1 | 1 | 0x23 |
1 | 0 | 0 | 0x24 |
1 | 0 | 1 | 0x25 |
1 | 1 | 1 | 0x26 |
1 | 1 | 1 | 0x27 |
连线图
请注意V1.2的接口,它与老版本的LCD module的接口不同,请参考历史版本
Mind+(基于Scratch3.0)图形化编程
此模块不需要库,直接使用十六进制代码即可控制,因此可以使用Mind+等图形化程序进行控制。
1、下载及安装软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装
2、切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程
3、“扩展”中选择“主控板”中的“Arduino Uno”,选择"显示器"中的"LCD1602模块(I2C接口)"。详细教程:Mind+基础wiki教程-加载扩展库流程
4、进行编程,程序如下图:
5、菜单“连接设备”,“上传到设备”
库函数
- LiquidCrystal()
- begin()
- clear()
- home()
- setCursor()
- write()
- print()
- cursor()
- noCursor()
- blink()
- noBlink()
- display()
- noDisplay()
- scrollDisplayLeft()
- scrollDisplayRight()
- autoscroll()
- noAutoscroll()
- leftToRight()
- rightToLeft()
- createChar()
示例代码
//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display
void setup(){
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.home();
lcd.print("Hello world...");
lcd.setCursor(0, 1);
lcd.print("dfrobot.com");
}
int backlightState = LOW;
long previousMillis = 0;
long interval = 1000;
void loop(){
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (backlightState == LOW)
backlightState = HIGH;
else
backlightState = LOW;
if(backlightState == HIGH) lcd.backlight();
else lcd.noBacklight();
}
}
如果要使用库自带的样例代码,注意需要修改初始化语句,需要把:
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
改成:
LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display(All jumpers should be connected!)
因为默认的初始化语句是给LCD1602用的!
相关资料
Arduino I2C LCD库(兼容Arduino IDE 1.0以及以上版本)
相关项目
- [| DYP-ME007 Ultrasound range finder - display distance on a I2C 2x16 LCD]
- 如何查看屏幕地址,屏幕不显示数据怎么办?
常见问题
1. 此液晶屏默认地址为0x20,需要将初始化液晶显示屏的设备地址改成0x20。
2. 显示出现问题,出现方块无字符或缺少字符
- 地址问题 (检查代码里的地址和硬件是否一致或使用库自带的样例代码,注意需要修改初始化语句地址为0x20)
- ide版本 (更换其他ide版本,比如1.6.9 或1.0.x系列)
- 库文件(更换库文件,可参考库)
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |