【Protues仿真】基于AT89C52單片機的LCD液晶顯示屏顯示控制

目錄

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)。

I2C 轉接板:市面上常把 LM016L 與 PCF8574T I2C 轉接板焊成一體,可節省 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…