找回密码
 注册
关于网站域名变更的通知
查看: 230|回复: 3
打印 上一主题 下一主题

51单片机经典范例演练1(使用LCD1602模块展现图文信息

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-5-19 09:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

) \' X0 w1 ~: `9 [我们将使用LCD1602模块让单片机用图形和文字来展现信息,因为LCD1602的操作相对比较简单。
* i: Q+ R2 J& Y4 W7 \& ]3 {3 }( J, Z4 @
一、LCD1602模块介绍
0 `$ y5 l- l7 l% j& }2 b$ ~6 k+ K& R3 hLCD1602是十分基础常见的显示模块,它有三位控制引脚与8位数据引脚,其中E为使能端口,RS代表接下来传输的是命令或是要显示的数据,RW则是代表下一步是要读出数据还是向模块中写入。
% X5 i- }4 }% I( C. V: p同时,LCD1602在CGROM(字符发生存储器)中集成了ASCII码表,每一个字符都有一个固定的地址,这让它可以轻松的展现英文单词以及一些常用字符。
- n( ]6 r# D9 `9 U- V比如'A'的存放地址为41H,显示A时就是将地址为41H的点阵字符图形取出,并显示在屏幕上。
; b# h$ i3 T7 `8 [. V! z: Z如果你对LCD1602模块足够熟悉,你甚至可以将它用于数据存储(虽然并不好用也不能断电保存),还能够利用让它显示自定义的字符图案,但这属于LCD1602的拓展功能,本文中只是简单一提,请大家下课自己通过查看LCD1602中文手册掌握。
1 r7 O9 Z; Y3 {* l% N9 I1、LCD1602引脚接口功能2 q! Q* r3 m4 O% H1 ^2 B
VSS:接地; _" x4 P/ h' E% r# d+ m% i3 w" C
VDD:接5V电源
1 p. S, d9 l% T! Q2 FVE:为对比电压,用于调整液晶屏显示对比度,
7 U, h9 G; r- n0 \% v5 S( lRS:数据/命令选择端口,高电平代表数据位传输的是数据,低电平相反
2 C+ b6 e# Y) ?! Q2 W+ G7 B+ VRW:读/写选择端口,高电平代表数据位用于外部读取RAM数据,低电平则相反0 ~/ a8 _" z7 O1 K
E:使能端口,低电平有效( A3 e1 d* B1 _* h
D0~D7: 数据位
+ N; [- F! @+ w/ Q# ?A:背光板正极9 e7 ?! I8 x6 L% ^
K:背光板负极  a4 O% a) V$ Y: ~1 }$ y  b+ A
可以看到,在使能端口可用时,主要是靠RS、RW两个端口相互配合,以完成模块的初始化配置(命令/写入)以及字符显示(数据/写入)。. }' h8 _3 w/ c/ }
首先,我们会向LCD1602中依次写入如下命令来进行配置(RS、RW都为低电平)。  {3 h6 @6 ?6 t; C; y" m3 o

8 G( @$ u8 e" F7 \2、LCD1602常用控制命令; M# Y7 L. B8 S
设置模式   : 0x38
) Z. Y5 }! v) s; D/ X; A1 B9 @! t/ Z开显示,不显示光标,光标不闪烁 :0x0C0 |& i  A4 Y: Z2 T. Y; l
读写字符后地址加一,屏显不移动 :0x06
% |. Q% @( u# J! u+ F( j9 ^清屏,数据指针清零: 0x01
* u- K8 b* j+ H  h1 [( d. T设置数据地址指针初始值:0x808 J1 ~- [2 F) `. L% n5 W9 L
配置完成后,就可以将RS转换为数据模式,向8位数据端口输入ASCII码值,在屏幕上逐个逐行显示不同字符。& h$ \+ A* s# _, U( _
接下来,我们将会从项目创建开始,教给大家如何将项目构建的清晰明了。2 b; f' c1 @: r
: j- m% P/ X' v& ]2 D" \1 Y
二、一种规整的项目排布方式+项目代码
6 n; P' z! R. M' w( J首先,我们新建一个文件夹用于存放项目文件,并在其中新建Doc、User与Project文件夹,分别存放项目说明文件、代码文件以及KEIL项目文件。
0 K2 }5 e- n8 r( ]$ ~" B打开User文件夹,创建main.c、LCD1062.c与LCD1602.h文件。5 ^2 |1 r4 O% @/ O: \* {
main.c文件内存放的自然是主函数;9 F+ S5 c( ]- W$ W) Z+ E
LCD1602.c放的是定义好的LCD命令、数据读写函数,读者也可以自行将字符重定义函数放在里面;1 \) t8 ]% q  O! V8 ?
LCD1602.h则是函数声明以及#define。* K& A7 B8 P5 F0 i, Y
项目构建完成后,Keil中排布如图所示  a( W, h  W1 b. A; v

% H$ N* J( K1 x( ]; U1、LCD1602.h文件代码2 O, \- Q! X3 H1 }* {5 _+ h6 G/ ~
#ifndef __LCD1602_H
' v7 w( Z4 Q. f* S& b  d#define __LCD1602_H
3 `  W) ~$ I9 A5 v4 ?! I8 a# U( W3 l  Y
#define LCDData P0
1 Q( u* I  S9 n- ?) I$ i: a; U#define uchar unsigned char: j5 j0 e( _* D! Y6 B; M! X
#define uint unsigned int- x; |% f; L* N* j0 Y
#define register_addr 0x00, k# u+ O9 b+ c& J1 }
#define device_addr 0x80
; n- L0 H4 m5 w' Y: w
/ m, N) `$ f1 x* T% kvoid delay(uchar c);2 ?; q8 \5 l7 \% [* {) ^
void LCDWriteCom(uchar i);
2 x2 Q  L/ u; j0 j7 i9 ~9 Dvoid LCDWritEDAta(uchar i);
. d1 Y- a, M" n# d+ b: C; f' zvoid LCDClean();4 _$ d% K; g6 U! M0 X# \# {6 J
void LCDInit();# H4 f; w5 b, _; c% q4 t5 ]
#endif /*__LCD1602_H*/
/ z; L. h/ j4 }* J" y) u......: l' A' D" U5 E& f, H. Y

& V9 K! o2 t$ O5 y

51单片机常见模块范例演练(一).pdf

252.49 KB, 下载次数: 0, 下载积分: 威望 -5

该用户从未签到

2#
发表于 2022-5-19 13:51 | 只看该作者
我就点个赞,机智楼主 & I+ H& v: r! }
楼主挺厉害的

该用户从未签到

3#
发表于 2022-5-19 15:40 | 只看该作者
给楼主,点个赞,O(∩_∩)O哈哈~

该用户从未签到

4#
发表于 2022-5-20 09:15 | 只看该作者
(~ ̄▽ ̄)~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-19 21:53 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表