LCD1602液晶显示器实验指导书
LCD1602液晶显示器实验指导书
LCD1602是一种常用的字符型液晶显示器,能够显示两行字符信息,每行可显示16个字符。它通过8位并行数据接口与单片机连接,支持显示字母、数字和特殊符号。本文将详细介绍LCD1602的硬件连接、软件编程以及具体实验步骤。
一、LCD1602介绍
1.1 LCD1602简介和引脚定义
LCD1602液晶也叫LCD1602字符型液晶,它能显示2行字符信息,每行又能显示16个字符。它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,它不能很好的显示图片。
图1:LCD1602液晶实物图
LCD1602有16个管脚,其功能定义如下:
- 1 脚:VSS,接地。
- 2 脚:VDD,电源正极(4.5~5.5V都可)。
- 3 脚:VO,对比度调节。液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为0时可以得到最强的对比度。
- 4 脚:RS,数据/指令选择端,1为数据,0为指令。当此脚为高电平时,可以对1602进行数据字节的传输操作,而为低电平时,则是进行命令字节的传输操作。
- 5 脚:R/W,读/写选择端,1为读,0为写。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。
- 6 脚:E,使能信号,1为数据有效,下降沿执行命令。其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。
- 7~14 脚:数据输入/输出。8位并行数据口,而51单片机一组IO也是8位,使得对LCD1602的数据读写大为方便。
- 15 脚:A,背光灯电源正极。
- 16 脚:K,背光灯电源负极。
图2:各引脚功能速览表
1.2 LCD1602内部结构
图3:LCD1602液晶原理图
LCD1602的内部结构主要包括以下几个部分:
DDRAM(Data Display Random Access Memory):数据显示存储器。可读取,可写入。如图5所示,可显示位置为40*2,共计80个字符。即是第一行00H
27H,和第二行的40H67H。CGRAM(Character Generation Random Access Memory):用户字符发生器。可以自定义用户的字模库(最多八个字符)。
CGROM(Character Generation Read Only Memory):字符发生器。出厂默认设置的字模库,与标准ASCII码基本一致。并在此基础上加入片假名和部分特殊符号的支持。具体支持范围如图六所示:
图4:内部结构框图
1.3 LCD1602常用指令
在使用LCD1602时,需要掌握一些常用指令,这些指令对于LCD1602的初始化是必须的。
清屏指令:清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;光标归位,即将光标撤回液晶显示屏的左上方;将地址计数器(AC)的值设为0。清屏指令是0x01。
模式设置指令:设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。写入新数据后光标右移,显示屏不移动的命令是0x06。
显示开关控制指令:控制显示器开/关、光标显示/关闭以及光标是否闪烁。显示开,光标关,闪烁关的指令是0x0c。
功能设定指令:设定数据总线位数、显示的行数及字型。数据总线8位,显示2行,5*7点阵/字符的命令是0x38。
1.4 LCD1602的使用
要使用LCD1602,首先需要对其初始化,即通过写入一些特定的指令实现。然后选择要在LCD1602的哪个位置显示,并将所要显示的数据发送到LCD的DDRAM。使用LCD1602通常都是用于写数据进去,很少使用读功能。LCD1602操作步骤如下所示:
- 初始化
- 发送指令0x38 //八位数据接口,两行显示,5*7点阵
- 发送指令0x0C //显示开,光标关,闪烁关
- 发送指令0x06 //数据读写操作后,光标自动加一,画面不动
- 发送指令0x01 //清屏
- 写命令(RS=0),设置显示坐标
- 写数据(RS=1)
二、硬件设计
本实验使用到硬件资源如下:
- LCD1602液晶:开发板上集成了一个LCD1602液晶接口,下面来看下开发板上LCD1602液晶接口电路,如下图所示:
图5:普中A2开发板LCD1602液晶接口电路
从上图中可知,LCD1602的8位数据口DB0-DB7与单片机的P0.0-P0.7管脚连接,LCD1602的RS、RW、E脚与单片机的P2.6、P2.5、P2.7管脚连接。RJ1是一个电位器,用来调节LCD1602对比度即显示亮度。
三、软件设计
本章所要实现的功能是:在LCD1602液晶上显示字符信息。程序框架如下:
- 编写LCD1602显示函数
- 编写主函数
本章软件的重点是如何对LCD1602进行写命令和数据。
3.1 LCD1602驱动函数
在第一步1.4 LCD1602的使用我们已经了解到了LCD1602的初始化,写命令及写数据操作,现在我们给出写命令和写数据时,11.0592MHz调用可延时1ms的代码(此代码可由辅助软件计算写出):
//函数定义:
/**
* @brief LCD1602延时函数,11.0592MHz调用可延时1ms
* @param 无
* @retval 无
*/
void LCD_Delay()
{
unsigned char i, j;
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
3.2 LCD1602显示函数
LCD1602设置光标位置:因为写入显示地址时要求最高位D7恒定为高电平1,所以命令的最高位要全赋为1,而显示位是从0开始的,所以第一行的写入命令是0x80| (lie-1)。而LCD1602的存储是每行40个字符,所以第二行第一位是在第一行的基础上加0x40。
在LCD1602指定位置上显示一个字符
在LCD1602指定位置开始显示所给字符串
在LCD1602指定位置开始显示所给数字
四、实验现象
使用USB线将开发板和电脑连接成功后(电脑能识别开发板上CH340串口),把编译后产生的.hex文件烧入到芯片内,实现现象如下:在LCD1602液晶上显示字符信息。
图6:实验现象
注意:LCD1602液晶要正确插入到LCD1602接口J2位置,插反或者差错都会导致显示不正常。如果出现显示看不清的情况,可调节板子LCD1602接口下的RJ1电位器。如果LCD1602无法显示,可重启电源或复位。
图7:引脚和板子匹配示意图
一些有趣的LCD1602显示实验(基于普中A2开发板)
1. 温度传感器读取实验(利用DS18B20芯片)
这个实验展示了如何使用DS18B20温度传感器读取温度,并在LCD1602上显示当前温度。当用手捏住芯片,LCD1602上温度会上升,松开手温度会下降。
图8:显示当前温度
2. 密码锁实验
这个实验展示了如何使用矩阵键盘和LCD1602实现一个简单的密码锁系统。S1到S9分别是1~9,S10是数字0,S11是确定,S12是重新输入,S13密码退位,正确密码是2345,输入正确会显示0.5sOK,输入错误会显示0.5sERR。
图9:密码锁