LCD1602设计(1)

 

本文为博主 日月同辉,与我共生,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:读写信号线,高电平时进行读操作,低电平时进行写操作。RSR/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

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值