这次要做的是通过1602液晶屏幕显示一串英文Hot Display Char LCD Test
1602液晶虽然不够经济,但外观质量和背光都要比lcd5110强得多,所以这次选择使用它当作显示屏幕。
首先打开1602液晶的说明书,查看各个引脚的定义说明。
它有16个引脚。
1——GND 4——传递的是数据/命令选择(RS)
2——VCC 5——读/写选择(RW)
3——显示对比度控制 6——使能(E)
15——背光正极 7-14——D0-D7通信通道(DB)
16——背光负极
可以写出管脚定义代码代码:
/*管脚定义*/
sbit RS=P2^6;//数据与指令选择,高电平选择数据寄存器
sbit RW=P2^5;//读写选择,高电平进行读
sbit E=P2^7;//使能,由高到低液晶模块执行命令
sfr DB=0x80;//8位双向数据
然后继续查看器件说明手册。了解一下是否需要初始化,如果需要初始化,初始化时又需要做哪些动作?
从说明书中了解到,1602在显示前是需要先初始化的,初始化的目的是,告诉液晶主控芯片显示的方式是如何的。
最简单的初始化步骤是:
1设置显示模式——>2是否打开显示和是否显示光标——>3以何种方式显示多个字符?——>4清空显示缓存
1.因为1602液晶的每个小格子点阵是宽5高7的(5*7)所以要设定主控芯片的显示模式,来和液晶显示屏相匹配。
2.只有打开显示时屏幕上才会有字符显示,关闭光标屏幕上才不会出现不需要的光标
3.当显示多个字符时有两种方式,一种是类似于街边的流动广告。一种类似于KTV下面的歌词字幕。
4.如果不清空缓存刚启动时缓存里面可能会有残留数据。
了解了初始化的步骤后,继续查看说明书。了解一下1602主控芯片支持的指令有哪些。毕竟通过发送具体的指令才能初始化它。
1602液晶内部的控制器共能识别11条指令。
现在知道了主控芯片可以识别的指令,还有初始化的步骤。剩下的就是如何给主控芯片传送指令或数据了。
继续查阅1602的使用手册。
了解到,读1602内部数据的过程如下:
同是了解到,1602液晶显示模块是一个慢显示器件, 在执行每条指令之前一定要确认模块的忙标志为低电平(表示不忙)否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。
所以参照上面的时序图可以写出读取lcd1602是否是忙碌状态的函数。
代码如下:
/*读取LCD状态*/
void Read_State()
{
unsigned char state;
DB=0xff;//IO变输入状态
RS=0;//选择指令寄存器
RW=1;//读(参照第9条指令)
do
{
E=1;//使能
state=DB;//读取数据
E=0;
}
while( state&0x80 );//state最高位是1表示忙碌,0表示空闲
}