【Proteus】LCD1602

发布于:2025-02-11 ⋅ 阅读:(43) ⋅ 点赞:(0)

前言

在五一单片机系列当中详细的介绍了LCD1602的内容,这里我就大致的和大家讲解一下。

注⇢当你买LCD1602的时候商家一般来说都会给你手册这个时候你一定要打开手册好好浏览一番。因为数据手册对于我们学习这些单片机的模块是起到一个非常大的帮助的。

拓展⇢如果你要详细的知道LCD1602的话推荐你看看博主写的这篇文章如下↓

📑⇢

LCD1602 

LED1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCll码的标准字符和其它的一些内置的特殊字符以及⑧个自定义字符。
显示容量⇢16x2(一行可以显示十六个字符,可以显示两行) 每个字符实际上都是一个5*7的点阵。

⒈主要参数

⒉接口编号参数说明

注⇢在仿真的时候十五脚和十六脚是不需要接的。

⒊显示位置和地址

说明⇢在上述图中显示地址与实际显示位置的关系。例:第一行第一列的地址是(00)H

⒋写操作时序图 

说明⇢在我们写LCD1602的时候是根据写操作时序图来写的。

⒌常用的LCD1602初始化 

Proteus 仿真

🍊用的到元器件仿真如下↓

  • AT89C52
  • lm016 — 相当于是LCD1602

程序实现  

#include <REGX52.H>
sbit RS = P3^0;
sbit RW = P3^1;
sbit E  = P3^2;
void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}
//写入数据
void writedat(unsigned char dat)
{
	//根据时序图
	RS=1;
	RW=0;
	E=0;
	P2=dat;
	Delay(5);
	E=1;
	E=0;
}
//写入命令
void writecom(unsigned char com)
{
	//根据时序图
	RS=0; 
	RW=0;
	E=0;
	P2=com;
	Delay(5);
	E=1;
	E=0;
}
//初始化LCD1602
void InitLCD1602()
{
	writecom(0x38);
	writecom(0x0c);
	writecom(0x06);
	writecom(0x01);
}
void display()
{
	writecom(0x80);
	Delay(5);
	writedat('A');
	Delay(5);
}
int main(void)
{
	InitLCD1602();
	while(1)
	{
		display();//显示LCD1602数据
	}
}

作业⇢打印"Hello word!"

#include <REGX52.H>
sbit RS = P3^0;
sbit RW = P3^1;
sbit E  = P3^2;
unsigned char str[] = "Hello word!";
void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}
//写入数据
void writedat(unsigned char dat)
{
	//根据时序图
	RS=1;
	RW=0;
	E=0;
	P2=dat;
	Delay(5);
	E=1;
	E=0;
}
//写入命令
void writecom(unsigned char com)
{
	//根据时序图
	RS=0; 
	RW=0;
	E=0;
	P2=com;
	Delay(5);
	E=1;
	E=0;
}
//初始化LCD1602
void InitLCD1602()
{
	writecom(0x38);
	writecom(0x0c);
	writecom(0x06);
	writecom(0x01);
}
void display()
{
	unsigned char* p=0;
	writecom(0x80+2);
	//writecom(0x80+2+0x40);+0x40是指向LCD1602的第二行
	Delay(5);
	p = str;
	while(*p!='\0')
	{
		writedat(*p);
		Delay(5);
		p++;
	}
}
int main(void)
{
	InitLCD1602();
	while(1)
	{
		display();//显示LCD1602数据
	}
}


网站公告

今日签到

点亮在社区的每一天
去签到