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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

- ~  c2 H8 M1 s9 B, m' B$ {我们将使用LCD1602模块让单片机用图形和文字来展现信息,因为LCD1602的操作相对比较简单。3 E% e& G* B- r- Z  `. c* H/ N9 z
# B5 d7 v+ e6 z: V
一、LCD1602模块介绍% z  Z4 \* o1 f  W8 k4 ^1 |
LCD1602是十分基础常见的显示模块,它有三位控制引脚与8位数据引脚,其中E为使能端口,RS代表接下来传输的是命令或是要显示的数据,RW则是代表下一步是要读出数据还是向模块中写入。
( a+ ^) V& N5 ~, l同时,LCD1602在CGROM(字符发生存储器)中集成了ASCII码表,每一个字符都有一个固定的地址,这让它可以轻松的展现英文单词以及一些常用字符。. K6 O9 F: Z5 @" c- ]6 i3 P
比如'A'的存放地址为41H,显示A时就是将地址为41H的点阵字符图形取出,并显示在屏幕上。
) I+ Z5 @6 T0 m  I+ z+ g7 a4 B如果你对LCD1602模块足够熟悉,你甚至可以将它用于数据存储(虽然并不好用也不能断电保存),还能够利用让它显示自定义的字符图案,但这属于LCD1602的拓展功能,本文中只是简单一提,请大家下课自己通过查看LCD1602中文手册掌握。" P$ a; z6 l: d  ^7 W
1、LCD1602引脚接口功能
4 {4 m- T9 E! ~, _( C8 V) F! A. ^VSS:接地+ c0 E, \) c. [: s" q* K
VDD:接5V电源7 e& @; e8 J; @! {
VE:为对比电压,用于调整液晶屏显示对比度,& J2 T9 I) E& o2 e4 ~
RS:数据/命令选择端口,高电平代表数据位传输的是数据,低电平相反
: K' c( t! R: l; T8 [1 F5 _RW:读/写选择端口,高电平代表数据位用于外部读取RAM数据,低电平则相反+ m7 i/ ^4 B" h$ C; B% J
E:使能端口,低电平有效
1 M3 s/ M; Z) l/ e* r- ~* N* U# \( dD0~D7: 数据位
& n$ f$ Q; L4 Z8 {5 jA:背光板正极
2 K$ c1 k/ \5 i: ?5 @, Q3 D: [# uK:背光板负极* o7 c, u9 U2 F6 Q5 y) {& |  ]( D
可以看到,在使能端口可用时,主要是靠RS、RW两个端口相互配合,以完成模块的初始化配置(命令/写入)以及字符显示(数据/写入)。! t/ U8 `; c6 f7 K& }1 ~
首先,我们会向LCD1602中依次写入如下命令来进行配置(RS、RW都为低电平)。$ w  B& W7 j* I

/ b2 B' f( s& i2、LCD1602常用控制命令
1 W4 w- ]% T$ G. a设置模式   : 0x38
' E6 v4 W9 W, L- H# q  \: h开显示,不显示光标,光标不闪烁 :0x0C7 m% R  Z! E$ p# C# v3 S
读写字符后地址加一,屏显不移动 :0x06, [7 v& q6 G3 [3 w7 v/ k7 c9 g1 v  K
清屏,数据指针清零: 0x012 u8 L8 e' N& Y! A/ r1 _
设置数据地址指针初始值:0x80
: J+ |5 Y7 W2 _3 p, o! C配置完成后,就可以将RS转换为数据模式,向8位数据端口输入ASCII码值,在屏幕上逐个逐行显示不同字符。
, s5 t  K- L6 [# r$ Z( @接下来,我们将会从项目创建开始,教给大家如何将项目构建的清晰明了。
# e" W2 c& d: |( e4 M/ T
& |5 }3 q6 ~) w2 p二、一种规整的项目排布方式+项目代码! f% G) Z3 [) v* h' F
首先,我们新建一个文件夹用于存放项目文件,并在其中新建Doc、User与Project文件夹,分别存放项目说明文件、代码文件以及KEIL项目文件。! ?; z, ^/ J" w3 S3 Z1 J. X
打开User文件夹,创建main.c、LCD1062.c与LCD1602.h文件。
4 Y! n0 b+ P9 m8 _0 M' ]main.c文件内存放的自然是主函数;
* |/ Z) f: h# [8 ELCD1602.c放的是定义好的LCD命令、数据读写函数,读者也可以自行将字符重定义函数放在里面;
! Z: p0 @$ A  o; T& D7 \8 O% tLCD1602.h则是函数声明以及#define。, E/ ^1 _/ `* h$ ^
项目构建完成后,Keil中排布如图所示3 [1 E8 m; {% f0 x  ~
( [8 p  a5 h  a! E
1、LCD1602.h文件代码* q6 A: i  U9 S3 @6 c7 A
#ifndef __LCD1602_H
! p- _4 }7 l* n: Z( I# }#define __LCD1602_H
1 q; F* h6 d% M3 s/ u" ]- Z& ]* i# I! D. J
#define LCDData P0
6 q- V. B9 C- G3 |+ f& y2 A6 }#define uchar unsigned char
6 J# Q6 w) {$ [3 p6 \% C  w  J3 _#define uint unsigned int6 X. ]9 L7 ^; u3 E+ G2 n# N: Q
#define register_addr 0x003 r4 Y. X$ Z# L9 ~: U
#define device_addr 0x800 J' ^- n0 I: J5 m9 }

' N1 _, `7 i4 ]9 V+ G2 I0 ^9 \1 Svoid delay(uchar c);! ?  }  q/ ?  g8 y* O& A3 R
void LCDWriteCom(uchar i);
$ u' O! O+ s5 q4 m$ Q3 ?2 w; nvoid LCDWritEDAta(uchar i);
7 U5 L1 e4 X7 ^void LCDClean();% y, D( G% s' q  W  f: `* o9 a
void LCDInit();
- o0 o, ]. \. }: ^#endif /*__LCD1602_H*/
9 }/ k/ s5 a6 t' _5 J......5 c2 }/ D9 Y# j$ G8 V
  `: \/ ]* @4 @4 q  V# N

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

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

该用户从未签到

2#
发表于 2022-5-19 13:51 | 只看该作者
我就点个赞,机智楼主
. F2 B1 S% @9 ~4 R" m( [7 o楼主挺厉害的

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-24 17:42 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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