宝安建网站的公司临川区建设局网站
web/
2025/10/5 11:33:31/
文章来源:
宝安建网站的公司,临川区建设局网站,嘉兴企业网站模板,个人主页模板设计51单片机学习笔记14 LCD1602显示屏使用 一、LCD1602介绍1. 简介2. 引脚定义3. DDRAM4. 字模5. 指令#xff08;1#xff09;清屏指令 0x01#xff08;2#xff09;光标归位指令 0x02#xff08;3#xff09;进入模式设置指令 0x06#xff08;4#xff09;显示开关控制指… 51单片机学习笔记14 LCD1602显示屏使用 一、LCD1602介绍1. 简介2. 引脚定义3. DDRAM4. 字模5. 指令1清屏指令 0x012光标归位指令 0x023进入模式设置指令 0x064显示开关控制指令5设定显示屏或光标移动方向指令6功能设定指令7设定CGRAM地址指令8设定DDRAM地址指令9读取忙信号或AC地址指令10数据写入DDRAM或CGRAM指令11从CGRAM或DDRAM读出数据指令 二、使用方式1. 显示字符的步骤2. 初始化过程 三、硬件及代码1. 硬件连接2. 代码实现1GPIO初始化2LCD1602初始化3写入命令实现4写入数据实现5清屏函数6写入字符串7主函数main.c 一、LCD1602介绍
1. 简介
LCD1602是一种常用的字符型液晶显示模块它由16列、2行的字符组成每个字符由5x8像素的点阵构成。 外观图 其主要特点有
显示能力LCD1602可以同时显示两行文字每行最多可显示16个字符。低功耗LCD1602采用液晶显示技术具有较低的功耗。易于控制LCD1602可以通过并行或串行接口与微控制器进行通信控制简单、灵活。通常使用的控制芯片为HD44780它提供了一套简单易用的指令集用于控制LCD的显示内容、光标位置等。背光显示LCD1602通常配有背光可以在暗环境中提供良好的可视性。背光可通过外部电路控制从而实现显示器的亮度调节或开关功能。
2. 引脚定义
以下是LCD1602的典型引脚定义及其功能说明
引脚编号功能描述1VSS (地)用于连接电源地2VDD (电源正)用于连接正向电源通常为5V3Vee控制LCD的对比度可通过外部电位器调节4RS (命令/数据)控制数据的传输方式0表示命令1表示数据5RW (读/写)控制数据的读写操作0表示写入数据1表示读取数据6E (使能)使能信号用于触发LCD读写操作7-14D0-D7数据线用于传输8位数据4位模式下只需连接D4-D7即可15A (背光阳极)背光电源的阳极通常接VDD或外部电源16K (背光阴极)背光电源的阴极通常接地
3. DDRAM
LCD1602的DDRAMDisplay Data RAM是用于存储显示数据的内存区域它是LCD控制器内部的一部分。DDRAM可以存储LCD屏幕上每个字符的数据包括字符形状和位置信息。通过修改DDRAM中的数据可以实现LCD屏幕上的文本显示。
以下是LCD1602的DDRAM地址与屏幕字符位置的对应关系表
行/列12345678第一行0x000x010x020x030x040x050x060x07第二行0x400x410x420x430x440x450x460x47
每行代表LCD屏幕的一行字符每列代表该行字符在DDRAM中的地址。
例如
第一行第一个字符的DDRAM地址为0x00第二行第一个字符的DDRAM地址为0x40。
通过对应关系可以确定每个字符在DDRAM中的地址从而实现字符数据的读写操作。
4. 字模
LCD1602 字符由5x8像素的点阵构成。字模描述了每个字符的像素排列方式以及每个像素的开启或关闭状态。
在HD44780里内置了192个常用字符的字模在于 CGROM中另外有8个允许用户自定义的字符产生RAM称为CGRAM。
5. 指令
发送指令时RS引脚为低电平 R/W也为低电平。
1清屏指令 0x01
清屏指令0x01用于清除LCD屏幕上的所有字符及光标位置并将光标移至起始位置0行0列。 Bit 0用于启动清屏指令的执行。其他位暂时保留一般不使用。
BitRSR/W76543210作用0000000001
一般清屏发 0x01 即可。
2光标归位指令 0x02
光标归位指令0x02用于将LCD光标移回起始位置0行0列、同时把地址计数器AC值设置为0。
BitRSR/W76543210作用000000001X
3进入模式设置指令 0x06
进入模式设置指令用于配置LCD的文本显示模式包括光标移动方向和字符显示是否移位等参数。
BitRSR/W76543210作用00000001I/DS
I/D 为0时写入数据后光标左移为1时写入数据后光标右移S 0时写入新数据后显示屏不移动为1时写入数据后显示屏整体向右移一个字符。
4显示开关控制指令
BitRSR/W76543210作用0000001DCB
D 0显示功能关1显示功能开C 0无光标 1有光标B 0光标闪烁1光标不闪烁。
5设定显示屏或光标移动方向指令
6功能设定指令
BitRSR/W76543210作用00001DLNFXX
DL 0数据总线为4位1数据总线为8位N0显示1行1显示2行F05x7点阵每字符15x10点阵/每字符
7设定CGRAM地址指令
DB5DB4DB3 为字符号即将要显示该字符时要用到的字符地址。(000~111)能定义八个字符DB2DB1DB0 为行号。000~111八行。
8设定DDRAM地址指令
设定下一个要存入数据的DDRAM地址
9读取忙信号或AC地址指令
10数据写入DDRAM或CGRAM指令
数据写入指令用于将数据字符或自定义字符写入到DDRAM或CGRAM中以在LCD屏幕上显示相应的内容。
Bit76543210作用指令执行状态写入模式保留保留保留保留保留指令触发描述写入“0”表示指令执行中不可接收其他指令写入“1”表示指令执行完成。写入“1”表示数据写入模式写入“0”表示命令写入模式。-----写入“1”时数据写入指令开始执行执行过程中Bit 7为“0”执行完毕Bit 7为“1”。
在数据写入指令的控制字节中Bit 7用于表示指令执行的状态写入“0”表示指令正在执行中写入“1”表示指令执行已完成。Bit 6用于选择写入模式写入“1”表示数据写入模式写入“0”表示命令写入模式。其他位暂时保留一般不使用。
11从CGRAM或DDRAM读出数据指令
二、使用方式
1. 显示字符的步骤
初始化LCD1602引脚配置LCD1602的控制字节如显示模式、清屏等发送数据或控制指令等待指令执行完成循环第2步完成显示。 2. 初始化过程
三、硬件及代码
1. 硬件连接 引脚说明
VO调节对比度 2. 代码实现
1GPIO初始化
void lcd1602_gpio_init(void){// 设置为输出LCD1602_RS 0;LCD1602_RW 0;LCD1602_EN 0;LCD1602_DATAPORT 0;
}2LCD1602初始化
void lcd1602_init(void){// 初始化IO口lcd1602_gpio_init();// 初始化lcd1602// 8位数据接口2行显示5*7点阵lcd1602_write_cmd(0x38);// 显示器开光标关光标闪烁关lcd1602_write_cmd(0x0c);// 光标右移lcd1602_write_cmd(0x06);// 清屏lcd1602_write_cmd(0x01);
}3写入命令实现
void lcd1602_write_cmd(u8 cmd){// 使能LCD1602_EN 0;// 写入命令LCD1602_RS 0;// 写入模式LCD1602_RW 0;// 数据口LCD1602_DATAPORT cmd;delay_ms(1);// EN上升沿LCD1602_EN 1;// 延时delay_ms(1);// EN下降沿LCD1602_EN 0;
}4写入数据实现
void lcd1602_write_data(u8 dat){// 使能LCD1602_EN 0;// 写入数据LCD1602_RS 1;// 写入模式LCD1602_RW 0;// 数据口LCD1602_DATAPORT dat;delay_ms(1);// EN上升沿LCD1602_EN 1;// 延时delay_ms(1);// EN下降沿LCD1602_EN 0;
}5清屏函数
/**
* brief 清屏
*/
void lcd1602_clear(void){lcd1602_write_cmd(0x01);
}6写入字符串
/*** 向LCD1602显示器写入一个字符串* param str 要写入的字符串以null结尾*/
void lcd1602_write_string(u8 x, u8 y, u8 *str){u8 addr;// 显示到第几个字符u8 i 0;// 判断x,y变量的有效性if(x 15 || y 1){return;}// 第一行if (y 0){addr 0x80 x;}else{addr 0xc0 x;}lcd1602_write_cmd(addr);while(*str){if(i 15 y0){addr 0xc0 x;i0;lcd1602_write_cmd(addr);}else if(i15 y 1){break;}i;lcd1602_write_data(*str);}
}
7主函数main.c
#include led_utils.h
#include ired_utils.h
#include segment_display_utils.h
#include uart_utils.h
#include lcd1602_utils.h/**
* brief 主函数
*/
void main()
{// 关闭所有ledled_all_off();// 速率 9600uart_init(0xfa);lcd1602_init();lcd1602_clear();lcd1602_write_string(0, 0, Hello World! Who are you?);while(1){}
}
本文代码开源地址 https://gitee.com/xundh/learn51.git
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87340.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!