本文为博主 日月同辉,与我共生,csdn原创首发。希望看完后能对你有所帮助,不足之处请指正!一起交流学习,共同进步!
> 发布人:@日月同辉,与我共生_单片机-CSDN博客
> 欢迎你为独创博主日月同辉,与我共生点赞❤❤❤+关注👍+收藏🌹+评论☺。
系列专栏: CSDN-LCD1602系列🎁
> 我的格言是:“尽最大努力,做最好的自己!💪
要转载,请提前告知!!!
版权声明:本文为CSDN博主「日月同辉,与我共生」的原创文章,CSDN独一份。
目录
一、LCD1602简介
二、LCD1602接法
三、DDRAM
四、CGROM&CGRAM
五、代码提供
5.1显示字符
5.2位置功能函数
5.3自定义字符函数
一、LCD1602简介
LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符。它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。这种液晶显示器的显示原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。此外,1602液晶也叫1602字符型液晶,它由若干个5X7或者5X10等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。
二、LCD1602接法
LCD1602的基本参数及引脚功能包括:
⛄显示容量:16×2个字符;
⛄芯片工作电压:4.5—5.5V;
⛄工作电流:2.0mA(5.0V);
⛄模块最佳工作电压:5.0V;
⛄字符尺寸:2.95×4.35(W×H)mm。
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口。
引脚号 | 功能说明 |
1 | VSS:地电源(接地) |
2 | VDD:接5V正电源 |
3 | VL:液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 |
4 | RS:寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器 |
5 | R/W:读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据 |
6 | E端:使能端,当E端由高电平跳变成低电平时,液晶模块执行命令 |
7-14 | D0-D7:8位双向数据线 |
15 | 背光源正极(接电源) |
16 | 背光源负极(接地) |
LCD1602原理图:
LCD1602仿真图:
三、DDRAM
LCD1602可以显示16*2=32个字符,即LCD1602有32个位置用于显示字符,若一个字符要在某个位置显示,就要给每个位置规定一个显示地址(DDRAM地址)。
四、CGROM&CGRAM
LCD1602如何显示一个字符呢?CGROM是中文字库的意思,它代表液晶屏内部存储的160个不同的点阵字符图形,这些字符包括阿拉伯数字等,每个字符有对应的CGROM地址(8位二进制,与ASCII地址一样)。在液晶模块中,字符产生器(CGROM)会自动读出字符的字形点阵数据,并将字符显示在液晶屏上。另外,CGRAM最多可以自定义8个字符,如摄氏度符号℃。
五、代码提供
5.1显示字符
#include "lcd1602.h"
void main()
{
unsigned char str[]="hello world";
unsigned char str2[]="123abc";
unsigned char str3[]={1,2,3,4,5,6};
unsigned char str4[]={10,11,12,13,14,15};
LCDInit();
while(1)
{
LCDShowStr(0,0,str);
LCDShowStr(0,1,"hello world");
}
}
5.2位置功能函数
void LCDSetPosition(unsigned char x,unsigned char y) //位置函数 y:行 0-1
{ // x:列 0-7
if(y==0)
{
LCDWriteCmd(0x80|x);
}
else
{
LCDWriteCmd(0x80|(x+0x40));
}
}
void LCDShowStr(unsigned char x,unsigned char y,unsigned char *str)
{
LCDSetPosition(x,y);
while(*str!='\0')
{
LCDWritedata(*str++);
}
}
5.3自定义字符函数
void LCD_Write_CGRAM(unsigned char *str)
{
unsigned char i;
LCDWriteCmd(0x48);//1.自定义字符
for(i=0;i<8;i++)
{
LCDWritedata(str[i]);
}
LCDWriteCmd(0x80|0x00);//2.显示字符->在哪显示+显示哪个字符
LCDWriteCmd(0x01);
}
void LCDSetChar(unsigned char x,unsigned char y,unsigned char pos,unsigned char *str)
{
unsigned char i;
for(i=0;i<8;i++) //1.自定义字符
{
LCDWriteCmd(0x40+8*pos+i);
LCDWritedata(*(str+i));
}
LCDSetPosition(x,y);//2.显示位置
LCDWriteCmd(0x00+pos);//3.调用自定义字符
}
下一文将继续介绍 LCD1602,亲爱的读者敬请期待,下一文更精彩!!!
一日不读书,胸臆无佳想。我叫不白吃,喜欢我的,可以支持我,博主名叫@日月同辉,与我共生
@日月同辉,与我共生_单片机基础,单片机串口通信-CSDN博客@日月同辉,与我共生擅长单片机基础,单片机串口通信,等方面的知识,@日月同辉,与我共生关注stm32,c语言,51单片机,proteus,单片机领域.https://blog.csdn.net/LIN___IT?spm=1000.2115.3001.5343