本次实验我们要用arduino驱动1602显示。
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它 2x16个5x7点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
1602实物图(正反面):
[attach]428[/attach]
[attach]434[/attach]
下面我们介绍下LCD1602的管脚功能(共有16个引脚,如下图):
[attach]408[/attach]
1602采用标准的16脚接口,其中:
第1脚:VSS为电源地
第2脚:VCC接5V电源正极
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
第6脚:E(或EN)端为使能(enable)端,写操作时,下降沿使能;读操作时,E高电平有效。
第7~14脚:D0~D7为8位双向数据端;其中D7为最高位,也是busy flag(忙碌标志位);D0为最低位。
第15脚:A(或BLA)背光电源正极
第16脚:K(或BLK)背光电源负极
寄存器选择控制表
[attach]411[/attach]
注:关于E=高脉冲——开始时初始化E为0,然后置E为1,再清0.
busy flag(DB7):在此位为1时,LCD忙,将无法再处理其他的指令要求。
1602LCD主要技术参数:
显示容量:16×2个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
如果各位还想深入了解1602,请点击下载:
[attach]412[/attach]
本次实验我们还要使用到一个10K电位器(用来调节对比度的),和一个220欧限流电阻;
下面我们看下1602与Arduino的连接示意图与实物图(4位接法):
[attach]488[/attach]
下图为原理图:
[attach]417[/attach]
下面我们看下官方的hello, world!程序:
官方的例子使用了自带的库文件,它使得1602的使用更加简便!
将例程写入arduino,将看到如图效果:
[attach]426[/attach]
下面我们来介绍下官方库的使用:
1、LiquidCrystal() :创建一个LiquidCrystal类型的变量
语法
4线连接(d0~d3悬空):
LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
8线连接:
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
参数
rs: rs连接的Arduino的引脚编号
rw: rw连接的Arduino的引脚编号 (可选,当rw直接连接地时可省略)
enable:enable连接的Arduino的引脚编号
d0, d1, d2, d3, d4, d5, d6, d7: 连接的Arduino的引脚编号
2、begin() : 指定尺寸(宽度和高度)的显示
语法
lcd.begin(cols, rows)
参数
lcd: 一个LiquidCrystal类型的变量
cols: 显示器可以显示的列数(1602是16列)
rows: 显示器可以显示的行数(1602是2行)
3、clear() :清除LCD屏幕内容并将光标置位于左上角(起始位)
语法
lcd.clear()
参数
lcd: 一个LiquidCrystal类型的变量
4、home() :将光标置位于左上角(如还需清除屏幕内容请用clear()代替)
语法
lcd.home()
参数
lcd: 一个LiquidCrystal类型的变量
5、setCursor() :设定光标的位置,后文将从此处开始显示
语法lcd.setCursor(col, row)
参数
lcd: 一个LiquidCrystal类型的变量
col: 设定光标显示的列数 (从0开始计数)
row:设定光标显示的行数 (从0开始计数)
6、write() :向LCD写一个字符
语法
lcd.write(data)
参数
lcd: 一个LiquidCrystal类型的变量
data: 写入的字符
返回值
byte
write()将返回写入的字节数,尽管读这个数字是可选的 ps:很少用哦~~
7、print() :将内容显示在LCD上
语法
lcd.print(data)
lcd.print(data, BASE)
参数
lcd: 一个LiquidCrystal类型的变量
data: 要显示的内容 (可以是char, byte, int, long, or string类型)
BASE (可选):数据以何种数制显示(BIN 为二进制, DEC 为十进制, OCT 为八进制, HEX 为十六进制)
返回值
byte
print() 将返回已显示的字节数,尽管读这个数字是可选的
8、cursor() :显示光标(光标所在的位置, 就是下一个字符将会被显示的位置)
noCursor():隐藏光标
语法
lcd.cursor()
lcd.noCursor()
参数
lcd: 一个LiquidCrystal类型的变量
例子
官方例程(关于cursor And noCursor)
9、blink() :显示闪烁的光标(如果和cursor()一起使用,最终结果将取决于您使用的LCD屏幕)
noBlink() :关闭闪烁的光标
语法
lcd.blink()
lcd.noBlink()
参数
lcd: 一个LiquidCrystal类型的变量
例子
官方例程(关于blink And noBlink)
10、display() :打开液晶显示器(在调用noDisplay()关闭显示器之后,使用本函数可以恢复显示)
noDisplay() :关闭液晶显示器(原显示内容不会丢失,调用display()函数即可恢复显示)
语法
lcd.display()
lcd.noDisplay()
参数
lcd: 一个LiquidCrystal类型的变量
例子
官方例程(关于 display And noDisplay)
11、scrollDisplayLeft() :使屏幕上显示内容(光标及文字)向左滚动一个字符。
scrollDisplayRight() :使屏幕上显示内容(光标及文字)向右滚动一个字符。
语法
lcd.scrollDisplayLeft()
lcd.scrollDisplayRight()
参数
lcd: 一个LiquidCrystal类型的变量
例子
官方例程(关于scrollDisplay Left or Right)
12、autoscroll() :打开液晶的自动滚动功能
noAutoscroll() :关闭液晶的自动滚动功能
语法
lcd.autoscroll()
lcd.noAutoscroll()
参数
lcd: 一个LiquidCrystal类型的变量
例子
官方例程(关于autoscroll And noAutoscroll)
13、leftToRight() :设置文本从左往右(默认方向)输入液晶,但不影响已显示字符
rightToLeft() :设置文本从右往左(默认方向为从左往右)输入液晶,这意味着后面输入的字符将从右往左显示,但不影响已显示字符
语法
lcd.leftToRight()
lcd.rightToLeft()
参数
lcd: 一个LiquidCrystal类型的变量
例子
官方例程(关于TextDirection leftToRight or rightToLeft)
14、createChar() :为液晶创建一个自定义的字符(可创建8个自定义字符,编号0~7,5*7像素支持),使用write()函数写0~7编号,来显示自定义字符
语法
lcd.createChar(num, data)
参数
lcd: 一个LiquidCrystal类型的变量
num: 创建字符的编号(0 到 7)
data: 字符的像素数据
例子
[attach]418[/attach]
效果图:
[attach]431[/attach]
LCD库使用官方介绍地址:
http://arduino.cc/en/Reference/LiquidCrystal
Arduino驱动IIC/I2C LCD1602模块显示(4根线解决连接) -YFROBOT
欢迎光临 YFROBOT创客社区 (http://82.157.198.105/) | Powered by Discuz! X3.1 |