51单片机——LCD1602

本文详细介绍了LCD1602液晶显示屏的工作参数、引脚说明、指令集、时序和使用方法,包括字符移动、显示控制和功能设置。此外,还提供了初始化和数据写入的C语言程序实现,帮助读者理解如何与LCD1602进行交互。
摘要由CSDN通过智能技术生成

目录

LCD1602简介

特征

工作参数

液晶屏的分类

按字符和行数命名

按行数和列数命名

引脚说明

LCD1602指令集

指令总览

设置输入模式

显示开关

光标或字符移动

功能设置

DDRAM地址设置

读忙标志

LCD1602时序

字符表与使用

程序实现


LCD1602简介

特征

  • 体积小、功耗低、操作简单

工作参数

  • 5V工作电压,对比度可调,内含复位电路
  • 显示容量16*2个字符
  • 工作电流2.0mA
  • 提供各种控制命令:清屏、字符闪烁等
  • 80字节显示数据存储器DDRAM(data display)
  • 内建 192个 5*7 点阵的字型的字符发生器 CGROM(Character Generation)
  • 8个可由用户自定义的 5*7 的字符发生器 CGRAM(Character Generation)

液晶屏的分类

按字符和行数命名

  • 例如:1602 意为 每行可显示16个字符 ,一共可以显示两行

按行数和列数命名

  • 例如:12864 意为 128列 64行

引脚说明

编号符号说明接法
1VSS电源负极接 GND
2VDD电源正极接 5V
3VL对比度调节接可调电阻,调节对比度
4RS数据H/命令LP11 高数据,低命令
5R/W读H/写LP12  高读,低写
6E使能P13 高脉冲写入数据
7~14D0~D7Data I/OP00 ~ P07
15BLA背光源正极接VCC (亮度调节)
16BLK背光源负极接GND

LCD1602指令集

指令总览

设置输入模式

  • ID =0 光标左移
  • ID =1 光标右移
  • S =1  ID =1 整屏左移
  • S =1  ID =0 整屏右移
  • S =0 整屏不移动

显示开关

  • D=1 开显示 D=0 关显示
  • C=1 显示光标 C=0 不显示光标
  • B=1 光标闪烁 B=0 光标不闪烁

光标或字符移动

S/CR/L设定情况
00光标左移一个格 AC=AC-1
01光标右移一个格 AC=AC+1
10显示器上字符全部左移一个格,AC=AC
11显示器上字符全部右移一个格, AC=AC

功能设置

  • DL=1 8位总线  DL=0 4位总线
  • N =1  2行显示  N=0   单行显示
  • F=1   5*10 点阵  F=0 5*7点阵

DDRAM地址设置

起始位置:0x80

DDRAM地址映射:

  • 控制器内部带有80B的RAM 缓冲区
  • 00~0F、40~4F地址中的任一处写入显示数据时,液晶都可以立即显示出来
  • 10~27、50~67地址中的任一处写入显示数据时,通过移屏指令将它们 移入可显示区域才可显示出来

读忙标志

  • BF=1 液晶显示器忙
  • BF=0 液晶显示器可接收数据  

LCD1602时序

 

 

  • RS确定写指令还是命令
  • RW确定读还是写
  • 将数据或命令送入数据线(准备好数据
  • 给E一个高脉冲完成写操作

注:LCD1602大多数延迟位 ns 级别 ,而单片机的最小工作单位为 ms 级的

        故可不做延迟

字符表与使用

 方法一:

通过查询字码表的方式,写入数据

方法二:

可直接写入字符型变量赋值,写入数据

程序实现

/*******读忙******/
void LCD1602_Busy() 
{
	uchar sta;
	DataPort = 0xff;
	RS=0;
	RW=1;
	
	do{
	E = 1;
	sta = DataPort;
	E=0;
	}while(sta&0x80);
}

/*******写数据******/
void LCD1602_Write_DAT(uchar dat)
{
	LCD1602_Busy();
	
	RS=1;
	RW=0;
	
	DataPort =dat;
	
	E=1;
	E=0;
}

/*******写命令******/
void LCD1602_Write_CMD(uchar cm)
{
	LCD1602_Busy();
	
	RS=0;
	RW=0;
	
	DataPort =cm;
	
	E=1;
	E=0;
}

/******LCD1602初始化*****/
void LCD1602_Init(void)
{
	LCD1602_Write_CMD(0X38);//功能设置
	LCD1602_Write_CMD(0X0C);//显示开关配置
	LCD1602_Write_CMD(0X01);//清屏
	LCD1602_Write_CMD(0X06);//设置移动方向
}

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
为了实现51单片机LCD1602切屏功能,你可以使用矩阵键盘和相应的编程方法。首先,你需要连接好LCD1602和矩阵键盘,确保它们能够正常工作。然后,你可以按照以下步骤进行编程: 1. 初始化LCD1602:使用相应的引脚和库函数,初始化LCD1602,确保显示屏能够正常使用。 2. 初始化矩阵键盘:使用相应的引脚和库函数,初始化矩阵键盘,设置行和列的引脚。 3. 设置按键扫描:使用矩阵键盘的扫描原理,按行或列逐个读取,检测按键是否按下。 4. 切屏操作:根据按键的状态,编写逻辑代码实现切屏操作。例如,可以使用条件语句来判断按下的按键是哪一个,然后执行相应的切屏操作。 5. 显示切屏结果:根据切屏操作的结果,使用LCD1602显示相应的信息。可以使用库函数来操作LCD1602,例如设置显示位置、显示字符等。 需要注意的是,具体的编程方法和代码实现可能因为使用的单片机型号和开发环境而有所不同。请参考相应的开发文档和资料,根据实际情况进行具体的编程操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [51单片机lcd1602按键切屏](https://blog.csdn.net/weixin_32237603/article/details/117070203)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [51单片机矩阵键盘——LCD1602显示](https://blog.csdn.net/YLG_lin/article/details/126429384)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白变形计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值