目录

1 LM016L液晶显示模块

1.1 基本参数

1.2 引脚定义

1.3硬件连接示例(AT89C52)

1.4 常用指令集(HD44780 子集)

1.5 常见问题与注意事项

1.8 结论

2 LM016L液晶显示模块控制电路原理图

3 LM016L液晶显示模块控制程序

4 常用16进制数的ASCLL字符对照表


摘要:LM016L是一款基于HD44780控制器的16×2字符型液晶显示模块,具有5×8点阵显示、5V工作电压和并行接口。文章详细介绍了其引脚定义、硬件连接示例(以AT89C52为例)、常用指令集及常见问题解决方案。同时提供了完整的控制程序代码,包括初始化、字符串显示和数值显示功能。该模块兼容性强,适合与各类微控制器配合使用,是嵌入式系统开发的经典显示解决方案。文中还附有ASCII字符对照表供参考。

1 LM016L液晶显示模块

LM016L 是一款基于 Hitachi HD44780 控制器或其兼容芯片的 16×2 字符型液晶显示模块(LCD Module,能够显示两行、每行 16 ASCII 字符(或自定义符号)。

1.1 基本参数

项目

典型值 / 说明

显示容量

16 字符 × 2 行

字符点阵

5 × 8 点阵(可显示 5 × 10)

外形尺寸

80.0 mm × 36.0 mm(常见公模)

视域尺寸

64.5 mm × 16.0 mm

工作电压

4.7 V – 5.3 V(大多 5 V 单电源)

背光类型

黄绿 LED(可带或不带背光)

接口方式

并行 8 位/4 位可选

控制器

HD44780 或兼容(KS0066、ST7066 等)

工作温度

−20 °C – +70 °C

储存温度

−30 °C – +80 °C

1.2 引脚定义

LM016L 采用 单排 16-pin2.54 mm 间距) 直插排针,常见引脚排列如下:

引脚

符号

功能说明

1

VSS

电源地(GND)

2

VDD

正电源 +5 V

3

VEE

对比度调节电压(0 – 5 V,通常接 10 kΩ 电位器)

4

RS

寄存器选择(0:指令寄存器;1:数据寄存器)

5

R/W

读/写选择(0:写;1:读;常直接接地做“只写”)

6

E

使能端(下降沿触发)

7 – 14

D0 – D7

8 位并行数据总线

15

A/LED+

背光阳极(若带背光)

16

K/LED–

背光阴极

提示:如果只需 4 位模式,D0–D3 可悬空或接地,只接 D4–D7 即可节省 MCU IO

1.3硬件连接示例(AT89C52)

LCD 引脚

连接AT89C52

VSS

GND

VDD

+5 V

VEE

GND

RS

P0.2

R/W

P0.1

E

P0.0

D4 – D7

P0.4\P0.5\P0.6\P0.7(4位模式)

1.4 常用指令集(HD44780 子集)

指令

二进制

HEX

功能

清屏

0000 0001

0x01

清屏并把光标移到左上角

光标归位

0000 0010

0x02

光标返回原点,DDRAM 地址清零

输入模式

0000 01 I/D S

0x06

设置光标移动方向、是否整体移位

显示开关

0000 1 D C B

0x0C

D=显示,C=光标,B=光标闪烁

功能设定

001 DL N F –

0x28

DL=8/4 位,N=行数,F=点阵

1.5 常见问题与注意事项

对比度无显示:调节 V0 电位器,或检查背光是否亮。

显示方块、乱码:通常是初始化时序不对或电源/地线接触不良。

背光过暗/过亮:在 A 与 K 之间串联 100 Ω 左右电阻限流。

3.3 V 系统驱动:HD44780 需 5 V 供电,但输入高电平需 ≥0.7 VDD ≈ 3.5 V,故 3.3 V MCU 需电平转换或选用 3.3 V 兼容型号(如 SPLC780D1)。

I²C 转接板:市面上常把 LM016L 与 PCF8574T I²C 转接板焊成一体,可节省 IO,仅需 2 根信号线(SDA/SCL)。

1.8 结论

LM016L = 经典的 16×2 字符 LCD,与 HD44780 指令完全兼容,资料丰富、社区生态完善。无论是拿 ArduinoSTM32Raspberry Pi Pico 还是 8051,都能快速上手。

2 LM016L液晶显示模块控制电路原理图

如上图所示,LM016L液晶显示模块控制电路由AT89C52单片机、上拉排阻、LM016L液晶显示屏和晶振与复位电路,能够实现字符、数字等数据的显示。

3 LM016L液晶显示模块控制程序

如上图所示,LM016L液晶显示模块控制程序能够实现显示屏显示两行字符串数据,控制程序如下所示。

//头文件与位定义
#include <reg52.h>
#include <string.h>typedef unsigned char uchar;
typedef unsigned int uint;sbit EN = P0^0;//使能端
sbit RW = P0^1;//读0写1选择
sbit RS = P0^2;//寄存器选择0:指令1:数据int time=1314;						//time:占空比(0~10)
int freq=6666;void Write_Cmd(uchar cmd);  		//写指令函数
void Write_Dat(uchar dat);  		//写入数据
void LCD1602_Init();				//LCD初始化
void PrintStr(char *str);			// LCD输出字符串
void DisplayNum(int m);				// LCD显示数值
void delayms(unsigned int xms); 	//微秒级延时函数
void delay(unsigned int x);/*****************主函数***********************/
void inittimer()
{TMOD = 0x01;        // T0 方式 1TH0  = 0xFC;        // 1 msTL0  = 0x18;TR0  = 1; ET0 = 1; EA = 1;//中断设置值
}
void delay(unsigned int ms)
{unsigned int i;for (i = 0; i < ms; i++){while (!TF0);  // 等待定时器T0溢出TF0 = 0;       // 清除溢出标志}
}//中断服务函数
void Timer0_ISR() interrupt 1
{TH0 = 0xFC; TL0 = 0x18;}void main()
{inittimer();LCD1602_Init();  	// 初始化LCD1602while(1){Write_Cmd(0x80 | 0x00);	//显示地址,0x80是第一行的的首地址。0x80|0x06表示数据从第一行第1个字符位置开始显示PrintStr("CSDN:");DisplayNum(freq);PrintStr("!");Write_Cmd(0xc0| 0x00);	// 显示第二行PrintStr("STUDY:");DisplayNum(time);Write_Dat('!');}
}
void Write_Cmd(uchar cmd)  //写指令函数
{P1 = cmd;   	//写入十六进制形式的指令(command)RS = 0;//指令寄存器EN = 0;delay(1);EN = 1;     	//写指令的操作时序:RS=0,RW=0,EN=高脉冲delay(1);EN = 0;         	//获得高脉冲后使能端重新置零
}
void Write_Dat(uchar dat)  //写入数据
{P1 = dat;    	//P0口写入数据RS = 1;//数据寄存器EN = 0;delay(1);EN = 1;          	//写数据操作时序:RS=0,RW=0,EN=高脉冲delay(1);EN = 0;          	//获得高脉冲后使能端重新置零
}void LCD1602_Init()
{RW = 0;//读Write_Cmd(0x38);//设置16*2显示delay(8);Write_Cmd(0x0f);//开显示 显示光标,光标闪烁delay(8);Write_Cmd(0x01);//清屏delay(8);Write_Cmd(0x06);//地址指针移位命令delay(8);//Write_Cmd(0x80 | 0x00);//显示地址,0x80是第一行的的首地址。0x80|0x06表示数据从第一行第7个字符位置开始显示}
// 打印字符串的函数,使用到了strlen函数,需要引入string.h头文件
void PrintStr(char *str)	// LCD输出字符串
{char i,len;len = strlen(str); 		// 获取字符串长度for(i=0;i<len;i++){Write_Dat(*str);str++;}
}void DisplayNum(int m)		// LCD显示数值
{int disdata[4];		//数值disdata[0] = m/1000+0x30;disdata[1] = m%1000/100+0x30;disdata[2] = m%100/10+0x30;disdata[3] = m%10+0x30;if(disdata[0]==0x30)		//如果千位为0,让LCD不显示{disdata[0]=0x20;if( disdata[1]==0x30)		//如果百位为0,让LCD不显示{disdata[1]=0x20;if( disdata[2]==0x30)		//如果百位为0,让LCD不显示{disdata[2]=0x20;}}}Write_Dat(disdata[0]);delay(4);Write_Dat(disdata[1]);delay(4);Write_Dat(disdata[2]);delay(4);Write_Dat(disdata[3]);delay(4);}

4 常用16进制数的ASCLL字符对照表

下面给出常用的十六进制数 → ASCII 字符 对照表(仅列 0x00–0x7F 的标准 7-bit ASCII)。

HEX

Char

HEX

Char

HEX

Char

HEX

Char

0x00

NUL

0x20

(空格)

0x40

@

0x60

`

0x01

SOH

0x21

!

0x41

A

0x61

a

0x02

STX

0x22

"

0x42

B

0x62

b

0x03

ETX

0x23

#

0x43

C

0x63

c

0x04

EOT

0x24

$

0x44

D

0x64

d

0x05

ENQ

0x25

%

0x45

E

0x65

e

0x06

ACK

0x26

&

0x46

F

0x66

f

0x07

BEL

0x27

'

0x47

G

0x67

g

0x08

BS

0x28

(

0x48

H

0x68

h

0x09

HT

0x29

)

0x49

I

0x69

i

0x0A

LF

0x2A

*

0x4A

J

0x6A

j

0x0B

VT

0x2B

+

0x4B

K

0x6B

k

0x0C

FF

0x2C

,

0x4C

L

0x6C

l

0x0D

CR

0x2D

-

0x4D

M

0x6D

m

0x0E

SO

0x2E

.

0x4E

N

0x6E

n

0x0F

SI

0x2F

/

0x4F

O

0x6F

o

HEX

Char

HEX

Char

HEX

Char

HEX

Char

0x10

DLE

0x30

0

0x50

P

0x70

p

0x11

DC1

0x31

1

0x51

Q

0x71

q

0x12

DC2

0x32

2

0x52

R

0x72

r

0x13

DC3

0x33

3

0x53

S

0x73

s

0x14

DC4

0x34

4

0x54

T

0x74

t

0x15

NAK

0x35

5

0x55

U

0x75

u

0x16

SYN

0x36

6

0x56

V

0x76

v

0x17

ETB

0x37

7

0x57

W

0x77

w

0x18

CAN

0x38

8

0x58

X

0x78

x

0x19

EM

0x39

9

0x59

Y

0x79

y

0x1A

SUB

0x3A

:

0x5A

Z

0x7A

z

0x1B

ESC

0x3B

;

0x5B

[

0x7B

{

0x1C

FS

0x3C

<

0x5C

\

0x7C

|

0x1D

GS

0x3D

=

0x5D

]

0x7D

}

0x1E

RS

0x3E

>

0x5E

^

0x7E

~

0x1F

US

0x3F

?

0x5F

_

0x7F

DEL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94059.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94059.shtml
英文地址,请注明出处:http://en.pswp.cn/web/94059.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

孤独伤感视频素材哪里找?分享热门伤感短视频素材资源网站

你是不是也经常在抖音上刷到很火的伤感视频&#xff0c;那么伤感视频素材都在哪里可以下载呢&#xff1f;作为一名从业多年的视频剪辑师&#xff0c;今天就跟大家聊聊那些可以下载伤感素材高清无水印的网站&#xff0c;如果你也在苦苦找寻伤感素材&#xff0c;快来看看吧&#…

笔记本怎么才能更快散热?

一、“物理降温法”​▪️ 垫高高&#xff01;别让底部 “窒息”​笔记本底部全是进风口&#xff0c;放床上 / 沙发上会被堵住&#xff01;垫点东西拉开底部空间&#xff0c;高度 1-2cm。​▪️ 给风扇 “松绑”​按「CtrlShiftEsc」打开任务管理器&#xff0c;点 “进程”&…

电机驱动实现插补算法之脉冲和方向接收(以stm32主控为例)

一、方案 A&#xff08;推荐&#xff09;&#xff1a;编码器模式吃脉冲&#xff08;TI1 STEP&#xff0c;TI2 DIR&#xff09; 核心思路 把定时器设为 Encoder TI1 模式&#xff1a;每个 STEP 上升沿计一次&#xff0c;在那个沿的瞬间用 TI2&#xff08;DIR&#xff09;的电…

[特殊字符] 潜入深渊:探索 Linux 内核源码的奇幻之旅与生存指南

文章目录 朋友们&#xff0c;敲黑板&#xff01;&#xff01;&#xff01;&#xff08;超级重要&#xff09;我们今天聊点硬核的——不是普通的代码&#xff0c;而是驱动了整个数字世界心跳的Linux内核源代码&#xff01;它藏在哪&#xff1f;就在那个传奇仓库&#xff1a;torv…

如何监控和管理微服务之间的调用关系

监控和管理微服务之间的调用关系需要结合分布式追踪、服务依赖分析、实时监控和可视化工具&#xff0c;以实现对调用链路的可见性、问题定位和性能优化。以下是具体的实现方案和工具链&#xff1a;一、核心监控目标调用链路可视化&#xff1a;展示服务间的调用关系、方向和频率…

3.4 缩略词抽取

概述 缩略词指的是一个词或者短语的缩略形式&#xff0c;其通常由原词中的一些组成部分构成&#xff0c;同时保持原词的含义。缩略词的检测与抽取在方法上与同义词的检测与抽取类似&#xff0c;但是相比同义词&#xff0c;缩略词在文本中出现的规则往往更简单。 不同语言缩略词…

Lua脚本如何执行主程序的C函数

Lua Call C function Lua脚本可以和C函数灵活的结合&#xff0c;Lua脚本作为控制语言&#xff0c;使用C函数来做性能计算部分。 Lua脚本的执行器有Lua 和 Luajit。 使用Lua执行器&#xff0c;可以通过C语言注册C函数到Lua State, 然后Lua脚本可以调用该C函数。 使用Luajit&…

农业-学习记录

1-git上传&#xff08;简易版&#xff09;首先&#xff0c;记得vscode打开的项目路径是/home/Agribrain。不然会提示上传很多项目无关的文件。① 暂存所有更改②使用vscode终端注意&#xff1a;终端打开路径&#xff1a;/home/Agribrain/agribrain【git项目的所在目录】&#x…

什么是数据集成?数据集成对数据治理有什么影响

在大数据与人工智能驱动的时代&#xff0c;数据已经成为企业的“新型生产力”。然而&#xff0c;企业内部数据往往分散在不同系统、不同格式、甚至不同地域中。如果缺乏有效管理与整合&#xff0c;数据价值就无法真正释放。这时&#xff0c;“数据集成”应运而生&#xff0c;它…

技术成长战略是什么?

文章目录技术成长战略是什么&#xff1f;1. 前言2. 跟技术大牛学成长战略2.1 系统性能专家案例2.2 从开源到企业案例2.3 技术媒体大V案例2.4 案例小结3. 学习金字塔和刻意训练4. 战略思维的诞生5. 建议技术成长战略是什么&#xff1f; 1. 前言 在波波的微信技术交流群里头&am…

从0到1打造一台机器人走起来

聚焦仿人双足机器人,着重解决其下肢鲁棒行走中仿真到实机间隔(SimToReal gap)的误差问题 总述 硬件:采用傅利叶智能科技一体化关节模组: 1)胯部和膝关节选用 FSA80 - 29E 电机,以承受较大扭矩; 2)大腿部分采用 FSA60 - 43E 电机,兼顾扭矩和转速需求; 3)小腿选用 …

【Cmake】Cmake概览

目录 一.环境准备 1.1.Cmake安装 1.2. VSCodeCMake插件安装 1.3 快速样例-helloworld⼯程 二. cmake的基础命令⾏使用示例 2.1.文件准备 2.2.⽣成构建系统 2.3.编译连接 2.4.测试Ctest模块 2.5.测试安装模块 2.6.测试打包模块 2.7 查看帮助 CMake语法简洁清晰&…

概率核心概念学习笔记:随机事件与样本空间、古典概率与条件概率、全概率公式与贝叶斯公式

目录 一、 随机事件与样本空间 1. 原理讲解 2. 类型与关系 3. 案例计算 4. 应用场景 二、 古典概率与条件概率 1. 古典概率 (Classical Probability) 2. 条件概率 (Conditional Probability) 三、 全概率公式与贝叶斯公式 1. 全概率公式 (Law of Total Probability) …

优考试局域网系统V6.0.0版

优考试局域网系统迎来V6.0.0版本更新&#xff0c;核心在于提升功能性能与优化操作体验。重点对学情分析、移动端考试支持、考试监控和答题体验等方面进行了实用性更新&#xff0c;进一步提升了局域网环境下考试系统的灵活性与管理效率。 一、增加学情分析功能&#xff0c;教学…

Autosar之Com模块

Com模块主要实现了Signal在I-PDU中的封装及解析功能,为RTE层提供了基于Signal的发送与接收接口,实现了基于Signal的网关功能,实现了PDU的不同发送模式,以及Signal滤波,Update bit,Pdu Counter等功能 图 Com模块层次图 Com模块处于AUTOSAR架构中的通信服务层,其下层模块…

【iOS】NSRunLoop

目录 概念 RunLoop与线程的关系 Runloop对外的接口 CFRunLoopSourceRef Source0 Source1 CFRunLoopTimer CFRunLoopObserver RunLoop的Mode 应用场景 Runloop的内部逻辑 Runloop应用 tableView延迟加载图片&#xff0c;保证流畅 Timer不被ScrollView的滑动影响 A…

HTTP接口鉴权方式

几种主流且可行的HTTP接口鉴权方式&#xff0c;从简单到复杂&#xff0c;各有其适用场景。我将它们分为两大类&#xff1a;传统方式和现代方式。一、传统方式这类方式简单易用&#xff0c;但通常安全性较低或扩展性较差&#xff0c;适用于内部系统或简单API。1. HTTP Basic Aut…

DIC技术极端环境案例分享:系泊链在海水环境下氢脆化性能测试

实验结果的具体视频可详见以下链接&#xff1a;研索仪器DIC技术在极端条件下的应用 01 海水环境&#xff1a; DIC技术在海水环境下的应用核心挑战在于恶劣的光学条件&#xff08;如散射、衰减、畸变&#xff09;、严酷的化学/生物环境&#xff08;腐蚀、生物污损&#xff09;…

DL00291-联邦学习以去中心化锂离子电池健康预测模型完整实现

联邦学习在锂离子电池健康预测中的应用&#xff1a;去中心化训练与客户选择策略在锂离子电池健康预测领域&#xff0c;随着电池使用环境的多样化以及电池状态监测需求的不断增长&#xff0c;传统的集中式数据训练方法逐渐显现出局限性。为了解决数据隐私保护和大规模数据集中处…

TCP协议大全

什么是TCP&#xff1f;基本定义与属性TCP&#xff08;传输控制协议&#xff09;是传输层的重要协议&#xff0c;具有面向连接&#xff08;传输前需先建立连接&#xff0c;是发送方和接收方的点对点一对一连接&#xff09;、基于字节流&#xff08;以字节流形式传输数据&#xf…