LCD1602液晶显示屏在51单片机上的使用

本文介绍了如何在51单片机上使用LCD1602液晶显示屏,详细讲解了液晶屏的引脚说明、关键指令,包括清屏、模式设置、显示控制等,并提供了初始化及数据写入的操作步骤,通过函数定义和代码实现进行阐述。

LCD1602液晶显示屏在51单片机上的使用

以下是我在学习使用51单片机时的心得体会,在这里记录我的学习历程,本文使用的教程的代码,如果有侵权的可能,请告知。

​ LCD1602液晶屏是我购买的普中51单片机自带的外设之一,学习这一款液晶屏的使用不仅仅在于学习这块液晶屏,更是学习一种连接外设的方式。
​ 这一款液 晶屏的屏幕有两行,每一行都有一定的格子去装写入的字符,这个格子的大小可以选择,有5X7和5X10两个选择。
​ 以下是1602的引脚说明摘录:
在这里插入图片描述

​ 在以后的程序中,BLA和BLK这两个东西没有接触到,VL这个东西是拿来调整1602的亮度的,VSS和VDD不用多说,是不需要用软件来操作的,剩下的部分就是变成要注意的地方。

首先介绍1602的几个关键性指令:

  1. 清屏
    在这里插入图片描述
    如图所示,开头两位都是0,这显示了,这是一个命令选择端,并且为写选择端。

即将 DDRAM 的内容全部填入"空白"的 ASCII码 01H; 并且光标归位,将地址计数器AC的值设为0.

  1. 进入模式设置指令

在这里插入图片描述
功能 : 设定每次定入 1 位数据后光标的移位方向 , 并且设定每次写入的一个字符是否移动。参数设定的情况如下所示:

位名 设置
I/D 0=写入新数据后光标左移 1=写入新数据后光标右移
S 0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移 1 个字符
(至于显示屏右移,下文会详细说明)

  1. 显示开关控制指令

在这里插入图片描述

​ 功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下:

位名 设置
D 0=显示功能关 1=显示功能开
C 0=无光标 1=有光标
B 0=光标闪烁 1=光标不闪烁

  1. 功能设定指令

在这里插入图片描述

功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下:

位名 设置
DL 0=数据总线为 4 位 1=数据总线为 8 位 (我用的普中51单片机是默认8位的)
N 0=显示 1 行 1=显示 2 行
F 0=5×7 点阵/每字符 1=5×10 点阵/每字符

​ 在设置完成之后我们就要明白具体是在哪显示,在哪个位置显示?在对液晶模块的初始化中要先设置其显示模式, 在液晶模块显示字符时光标是自动右移的, 无需人工干预。 每次输入指令前都要判断液晶模块是否处于忙的状态。DDRAM 就是显示数据 RAM ,用来寄存待显示的字符代码。共 80 个字节,其地址和屏幕的对应关系如下表:

在这里插入图片描述

这里要注意一下,80个字节,不是每一个都可以出现在屏幕上的,一般来说,出现的只有8*2行,即16个字节,其余的字节是存在的,而且可以存储数据,让他们出来,需要用到显示屏移动的指令。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,例如第二行第一个字符的地址是 40H, 那么是否直接写入 40H 就可以将光标定位
在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7
恒定为高电平 1 所以实际写入的数据应该是 01000000B(40H)
+10000000B(80H)=11000000B(C0H)。

(总之全部地址都加上80H就对了)

前面16个字节的地址如下:

在这里插入图片描述

以下是操作步骤:

1602的基本操作

①读状态:RS=0,RW=1,E=高脉冲。输出:D0~D7为状态字。

②读数据:RS=1,RW=1,E=高脉冲。输出:D0~D7为数据。

③写指令:RS=0,RW=0,E=高脉冲。输出:无

④写数据:RS=1,RW=0,E=高脉冲。输出:无。

初始化:根据硬件约定对1602进行启动设置。
写命令(RS=L)设置显示坐标
写数据(RS=H)

操作的具体步骤(代码怎么写):

首先用一个h文件写下所有的函数定义和变量如下:

#ifndef __LCD_H_
#define __LCD_H_
/**********************************
当使用的是4位数据传输的时候定义,
使用8位取消这个定义
**********************************/
//#define LCD1602_4PINS

/**********************************
包含头文件
**********************************/
#include<reg51.h>

//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint 
#define uint unsigned int
#endif

/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值