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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

5 {4 J9 A1 [& o7 @  x2 D我们将使用LCD1602模块让单片机用图形和文字来展现信息,因为LCD1602的操作相对比较简单。6 M& T+ [  X0 z/ M6 _2 Q5 p% |
! p* Q4 n- d8 @6 b& Z' }/ C9 V
一、LCD1602模块介绍3 {: d" Q4 j2 O6 x5 V# M
LCD1602是十分基础常见的显示模块,它有三位控制引脚与8位数据引脚,其中E为使能端口,RS代表接下来传输的是命令或是要显示的数据,RW则是代表下一步是要读出数据还是向模块中写入。
: c+ G. c1 k5 Z9 p, D! w: |$ W同时,LCD1602在CGROM(字符发生存储器)中集成了ASCII码表,每一个字符都有一个固定的地址,这让它可以轻松的展现英文单词以及一些常用字符。
4 @1 X8 F5 D. `) t9 x5 a* G! X比如'A'的存放地址为41H,显示A时就是将地址为41H的点阵字符图形取出,并显示在屏幕上。
& r6 x; e# G; D: ~如果你对LCD1602模块足够熟悉,你甚至可以将它用于数据存储(虽然并不好用也不能断电保存),还能够利用让它显示自定义的字符图案,但这属于LCD1602的拓展功能,本文中只是简单一提,请大家下课自己通过查看LCD1602中文手册掌握。
( N# n& ]% j8 P4 B2 Y" B1 ?% w1、LCD1602引脚接口功能8 Z( l& c+ b/ e7 Q* {5 |
VSS:接地2 ~" Q% ]# A9 J. \7 |- y
VDD:接5V电源
5 h# N# M9 k& M; ]/ fVE:为对比电压,用于调整液晶屏显示对比度,
1 {( |" ]& F6 c' M% A- q- g* rRS:数据/命令选择端口,高电平代表数据位传输的是数据,低电平相反
5 W+ K1 B3 v- \9 W, u! b" S1 r4 DRW:读/写选择端口,高电平代表数据位用于外部读取RAM数据,低电平则相反8 |% D8 N; K7 @. n4 x5 R6 C
E:使能端口,低电平有效
. x6 |8 h% [( s$ T* @% A* R( a8 ID0~D7: 数据位$ }/ J# e; m( J" F% L1 x
A:背光板正极! L2 {& s- ^9 h* I
K:背光板负极
8 |9 h; o3 c# R/ {7 O& Z+ M6 k可以看到,在使能端口可用时,主要是靠RS、RW两个端口相互配合,以完成模块的初始化配置(命令/写入)以及字符显示(数据/写入)。  B& j# M: N1 z6 u" a2 L
首先,我们会向LCD1602中依次写入如下命令来进行配置(RS、RW都为低电平)。1 v9 m; D  C; s. O  K

9 D2 K5 e2 {7 b2、LCD1602常用控制命令, L4 a  @- R+ B% ]# \
设置模式   : 0x38
9 Y- }% X! v" S$ D6 C开显示,不显示光标,光标不闪烁 :0x0C+ q1 b/ E3 O1 N7 |; {
读写字符后地址加一,屏显不移动 :0x06
: \; \3 p: e+ H6 a2 I7 S4 Y6 \清屏,数据指针清零: 0x01) \" N- r& i/ t+ A7 p1 c4 L& w
设置数据地址指针初始值:0x80" e) L& t: e0 W2 Z& m- L
配置完成后,就可以将RS转换为数据模式,向8位数据端口输入ASCII码值,在屏幕上逐个逐行显示不同字符。  }. x9 l9 D5 p' z; H* N
接下来,我们将会从项目创建开始,教给大家如何将项目构建的清晰明了。
) E! ^! \  m1 F1 Q( d- e  ?) [
6 M3 J6 e4 h0 O# J$ d二、一种规整的项目排布方式+项目代码
. `5 [; u' W$ N( H首先,我们新建一个文件夹用于存放项目文件,并在其中新建Doc、User与Project文件夹,分别存放项目说明文件、代码文件以及KEIL项目文件。
* h0 t7 v) d4 V0 X# p# q) g( l" M打开User文件夹,创建main.c、LCD1062.c与LCD1602.h文件。. t% V6 `1 `1 r; }* i
main.c文件内存放的自然是主函数;
+ X1 X* Q- n; ^LCD1602.c放的是定义好的LCD命令、数据读写函数,读者也可以自行将字符重定义函数放在里面;
% O" \( J7 G9 q8 }" rLCD1602.h则是函数声明以及#define。/ o1 r) ~7 g" _/ g
项目构建完成后,Keil中排布如图所示: P0 g) n9 J6 ?# D- y3 M0 c
% i5 i1 d* U% I/ j0 ^' }- B4 }
1、LCD1602.h文件代码
! [. K1 R8 p; d$ A, ]#ifndef __LCD1602_H% w6 E8 p+ R+ r: N& C0 b6 P8 W
#define __LCD1602_H
' Q: p: ]% F' h! [, |1 T  ]. L; X2 z. U2 D* Y& s
#define LCDData P0
0 t. s$ n: m7 I' w4 ^/ Q#define uchar unsigned char. L! I' V) A9 e4 c* c
#define uint unsigned int
9 m9 O. J8 _, E; |- M7 x#define register_addr 0x00
& p0 ^: U4 w4 d#define device_addr 0x80
/ p2 o' P+ V8 E. k
5 u& f  R. E- o# @4 dvoid delay(uchar c);
) t- Y& a; s+ [void LCDWriteCom(uchar i);
9 }! k, D! R7 ^* }# r  [void LCDWritEDAta(uchar i);
# e" B" j/ f9 I. N: @void LCDClean();
# {  _9 j* X' u! a9 avoid LCDInit();
) @' _. [6 O! V#endif /*__LCD1602_H*/) m2 g- o0 p8 Q
......
1 M/ K4 r7 {' d" @; M+ `) e+ h+ }' J0 A* R& m. [) d* y9 J

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

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

该用户从未签到

2#
发表于 2022-5-19 13:51 | 只看该作者
我就点个赞,机智楼主 % X- \, G, W1 C" t! K
楼主挺厉害的

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 07:16 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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