单片机LCD液晶显示

目录

 

一、LCD1602的介绍

二、引脚说明

三、程序说明

1.判断LCD602是否再忙

2.写指令。

3.写数据。

4.LCD1602初始化。

四、总程序

五、实验现象

烧录教程 

1、开发板准备

2、烧录软件的准备 

3、烧录程序 


一、LCD1602的介绍

LCD1602是一款广泛应用于工业领域的字符型液晶显示模块。它的核心组成部分包括:

1、液晶显示屏:这是一种点阵型液晶显示器,能够同时显示16行共32个字符。

2、控制驱动主电路:通常采用的是HD44780及其扩展驱动电路HD44100。这些电路负责液晶显示器的供电、刷新以及对像素点的控制。

3、外部接口:LCD1602具备标准的16脚接口,包括GND(电源地)、VCC(电源正极)以及用于配置液晶显示参数的其他引脚。
     LCD1602的特点在于能够显示ASCII码字符表中的任意字符,并且具有较低的成本、简单的编程接口以及较少的外围设备需求。然而,与OLED或某些其他类型的液晶显示器相比,它在显示图形方面的性能有限,因为这种显示方式主要依赖于点阵排列来实现字符和图像的显示。此外,由于其设计上的限制,LCD1602通常只能显示小尺寸的文字和符号,这可能会影响到一些需要大字体和高清晰度的应用场景。

LCD实图如下:

 


 

二、引脚说明

1:VSS:为电源地;(GND)

2:VDD:接5V正电源;(5v)

3:V0:为液晶屏显示对比度调整端口。

4:RS:为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。

5:RW:为读写信号线,高电平时进行读操作,低电平进行写操作。

6:E:为使能端,当E端由高电平跳变成低电平时,液晶屏执行命令。

7~14:D0~D7:为8位双向数据线;

15:A:背光源正极(5V)

16:K:背光源负极(GND)

引脚图:

 


 

三、程序说明

1.判断LCD602是否再忙

在忙则等待。读双向数据线端的最高位D7,其为忙标志位。如果为高电平表示忙,不接受数据或指令(等待)。如果为低电平为不忙,此时可以接受数据或指令(放行)。

void Read_Busy()
{
	uchar busy;
	P0=0xff;
	RS=0;
	RW=1;
	do
	{EN=1;
	busy=P0;
	EN=0;
	}while(busy & 0x80);
}

2.写指令。

RS选择指令寄存器,RW选择写操作。D0~D7输入你所需要写进的指令。后通过EN制造下降沿,让液晶屏执行命令即可(前面要判断是否忙)

void write_cmd(uchar cmd)
{
	Read_Busy();
	RS=0;
	RW=0;
	P0=cmd;
	EN=1;
	EN=0;
}

3.写数据。

RS选择数据寄存器,RW选择写操作。D0~D7输入你所需要写进的数据。后通过EN制造下降沿,让液晶屏执行命令即可(前面要判断是否忙)

  void write_dat(uchar dat)
{
	Read_Busy();
	RS=1;
	RW=0;
	P0=dat;
	EN=1;
	EN=0;
}


4.LCD1602初始化。

输入一系列指令即可。(指令的含义在后面解释)

void LCD_init()
{
	delayms(0x0f);  //延时一段时间
	write_cmd(0x38);
	delayms(0x05);    //延时一段时间
	write_cmd(0x38);
	write_cmd(0x0f);
	write_cmd(0x01);
	write_cmd(0x06);
	write_cmd(0x0c);
}

四、总程序

#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int uint;

sbit RS=P2^6;
sbit RW=P2^5;
sbit EN=P2^7;

void Read_Busy()
{
	uchar busy;
	P0=0xff;
	RS=0;
	RW=1;
	do
	{EN=1;
	busy=P0;
	EN=0;
	}while(busy & 0x80);
}
	
//写指令
void write_cmd(uchar cmd)
{
	Read_Busy();
	RS=0;
	RW=0;
	P0=cmd;
	EN=1;
	EN=0;
}
	
//写数据
void write_dat(uchar dat)
{
	Read_Busy();
	RS=1;
	RW=0;
	P0=dat;
	EN=1;
	EN=0;
}



void delayus()
{
	uchar i;
	for(i=0;i<255;i++);
}

void delayms(uchar m)
{
	uchar j;
	for(j=0;j<m;j++)
    {
		delayus();
	}
}

//初始化LCD1602
void LCD_init()
{
	delayms(0x0f);  //延时一段时间
	write_cmd(0x38);
	delayms(0x05);    //延时一段时间
	write_cmd(0x38);
	write_cmd(0x0f);
	write_cmd(0x01);
	write_cmd(0x06);
	write_cmd(0x0c);
}

void main()
{
	LCD_init();
	write_cmd(0x80|0x04);
	write_dat('B');
	while(1);
}

五、实验现象

使用 USB 线将开发板和电脑连接成功后,把编译后产生的.hex 文件烧入到芯片内,实现现象如下:在 LCD1602 液晶上显示字符信息。
实验现象如图:

烧录教程 

1、开发板准备

(1)检查芯片型号是不是STC89C52RS

普中A2开发板单片机芯片:

(2)单片机开发板连接电脑

2、烧录软件的准备 

(1)下载好烧录软件鼠标左键双击打开运行

 (2)芯片型号的选择

(3)检查串口是否有红框圈中的 USB-SERIAL CH340 字样(后面的COM口不用管,每台电脑都可能不一致)。有的话证明你的电脑已经装了CH340驱动;没有的就下载。

 

(4)打开程序文件找到已经编译生成的.hex文件,单击选中后点击打开

 

3、烧录程序 

(1)点击下载编程按钮

(2)开关单片机开发板烧录成功

 

 

 

...全文
296 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,364

社区成员

发帖
与我相关
我的任务
社区描述
柳职院电子信息工程学院同学们的学习园地
社区管理员
  • c_university_1974
  • qq_39231145
  • zhuisir
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

各位加入社区的同学,请完善社区信息,把社区昵称改为【班级-姓名】,社区签名改为【班级-学号-姓名】的格式

如【社区昵称】20计应1班  张某某(班级用简称)

     【社区签名】2020级计算机应用技术1班 20201234567 张某某 (班级用全称)

试试用AI创作助手写篇文章吧