最新修改时间2022/7/22
LCD1602
16代表显示16个字符,2代表总共显示两行
芯片的工作电压是4.5-5.5v
工作电流2.0ma(5V)
模块最佳工作电压5.0v
字符尺寸:2.95X4.25(wxh)mm
管脚说明:
VSS:电源地
VDD:接5v电源
VL:液晶显示器对比度调整端,接正电源的时候对比度弱,接地的时候对比度高。对比度过高会产生鬼影,所以在使用的时候,串接一个10k的电位器调整对比度。(对比度调节可以理解为)
补充:
对比度是指投影图像最亮和最暗区域之间的比率,比值越大,从黑到白的渐变层次就越多,从而色彩表现越丰富。对比度对视觉效果的影响非常关键,一般来说对比度越大,图像越清晰醒目,色彩也越鲜明艳丽;而对比度小,则会让整个画面都灰蒙蒙的。高对比度对于图像的清晰度、细节表现、灰度层次表现都有很大帮助。对比度越高图像效果越好,色彩会更饱和,反之对比度低则画面会显得模糊,色彩也不鲜明。
RS:Register selection寄存器选择位。高电平选择数据寄存器,低电平选择指令寄存器。(高数据,低命令)
R/W:为读写信号线,高电平进行读操作,低电平进行写操作。
当RS和R/W同时为低电平的时候,可以写入指令或者写入显示地址。(高读,低写)
当RS为低,R/W为高的时候,可以用于读忙操作。
当RS为高,R/W为低的时候,可以用于写数据。
E:为使能端,当E从高电平降为低电平的时候,液晶模块开始执行命令。
D0-D7:8位数据线。
BLA:背光源正极(调节亮度)
BLK:背光源负极(调节亮度)
显示地址:
重点:
我们直接看的话,第二行第一个地址是0x40,那是不是我们可以直接操作0x40这个地址,使得光标定位在这个位置呢?
答案是不可以!!!!!
因为写入显示地址的时候,要求D7为1,所以实际写入的地址信息是40h(01000000)+80h(10000000)=c0h(11000000)
也就是说我们在操作显示地址的时候要记得加上80h
注意看第一行的起始地址是0x00末尾的地址是0x27
那么第一行总共有40个可供操作的地址,那么两行就是80个可供操作的地址。
也就是说每个字符占8位,总共80个字符,就是80*8=640位,也就是64字节的RAM缓冲区。
而实际我们使用的时候值显示每行前16个字符。
而LCD1602只能显示ASCII表中的打印字符(注意ASCII有两种字符,一种是控制字符,一种是打印字符)
这里说明一下,我们在打印相应的字符时可以通过加上’0’(字符0)的方式对应打印输出目标。也可以直接加上十进制的数字48
指令集:(我们控制模块的命令)
DDRAM : 显示用ram,直接和屏幕上的点相对应。屏幕上的一个点和ddram中的一个位对应,字符屏的ddram和图形屏的ddram有一点点区别。
CGROM : 字模存储用空间。你要显示某个ascii字符时,要显示字符的字模就存在这里。
读时序:
注意时间间隔
比如:我们读取有效数据要求间隔100ns
我们的51单片是11.0592mhz
我们的机器周期就有(1/11.0592mhz)*12 约等于1.085us,所以我们的指令周期是显然是足够的
写操作时序:
源文件如下:
main.c
# include "lcd1602.h"
# include "display.h"</