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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
) F! q, g% h) Y
我们将使用LCD1602模块让单片机用图形和文字来展现信息,因为LCD1602的操作相对比较简单。
! y# h' |$ H& f% ~) R* G. H/ ?# ~, |3 d& o7 X
一、LCD1602模块介绍9 O7 w, [5 T* e+ R
LCD1602是十分基础常见的显示模块,它有三位控制引脚与8位数据引脚,其中E为使能端口,RS代表接下来传输的是命令或是要显示的数据,RW则是代表下一步是要读出数据还是向模块中写入。1 l+ V, l$ k" A, w& J
同时,LCD1602在CGROM(字符发生存储器)中集成了ASCII码表,每一个字符都有一个固定的地址,这让它可以轻松的展现英文单词以及一些常用字符。
, V+ I% _; d! p3 B- [4 q# P1 M比如'A'的存放地址为41H,显示A时就是将地址为41H的点阵字符图形取出,并显示在屏幕上。1 W, x) @- R" R
如果你对LCD1602模块足够熟悉,你甚至可以将它用于数据存储(虽然并不好用也不能断电保存),还能够利用让它显示自定义的字符图案,但这属于LCD1602的拓展功能,本文中只是简单一提,请大家下课自己通过查看LCD1602中文手册掌握。4 l/ G3 Y! z2 c: ]
1、LCD1602引脚接口功能
" E- [, T. A  N2 D( w" o# D. `VSS:接地; u" z6 l. o5 t; ~
VDD:接5V电源% ]- X$ Y! j$ a+ V* ]
VE:为对比电压,用于调整液晶屏显示对比度,. {9 s; U/ z2 a( |3 |6 e
RS:数据/命令选择端口,高电平代表数据位传输的是数据,低电平相反
( x" p3 z  O5 f" G4 KRW:读/写选择端口,高电平代表数据位用于外部读取RAM数据,低电平则相反
  I9 |, ~/ w; _2 f& K( o6 z! BE:使能端口,低电平有效
$ Q8 \8 Y- O5 RD0~D7: 数据位
% `/ z- s, t; k$ G6 G' f9 fA:背光板正极# @3 m' X7 h2 D. n8 C- t2 [
K:背光板负极" Y6 m- f0 Q$ {, W! b; L3 X8 Q
可以看到,在使能端口可用时,主要是靠RS、RW两个端口相互配合,以完成模块的初始化配置(命令/写入)以及字符显示(数据/写入)。
6 W% |) T' B! v: Z/ a1 j* `首先,我们会向LCD1602中依次写入如下命令来进行配置(RS、RW都为低电平)。8 A* o1 T! `2 f) K3 B2 T9 f7 i
/ O: A  ?' l* w. u* ?
2、LCD1602常用控制命令. ~5 g5 }  k$ [4 b* ^
设置模式   : 0x389 N# c3 i, i! M8 P
开显示,不显示光标,光标不闪烁 :0x0C2 |/ k* ^4 H- j& x; q3 E
读写字符后地址加一,屏显不移动 :0x068 r% k& i0 l6 l! D: U; K; A
清屏,数据指针清零: 0x017 I4 k9 g1 o& |) n, i
设置数据地址指针初始值:0x80
; z+ Y- Q8 {- f$ m4 S6 X' o配置完成后,就可以将RS转换为数据模式,向8位数据端口输入ASCII码值,在屏幕上逐个逐行显示不同字符。
5 I0 f7 N2 F" ^1 \接下来,我们将会从项目创建开始,教给大家如何将项目构建的清晰明了。* d7 G5 z& J1 q! D: \

) A3 q3 v7 S$ }二、一种规整的项目排布方式+项目代码
, ^( a( {' }5 `" j. w0 V首先,我们新建一个文件夹用于存放项目文件,并在其中新建Doc、User与Project文件夹,分别存放项目说明文件、代码文件以及KEIL项目文件。
- M  U7 @# L. _5 w9 A" E# ~  D打开User文件夹,创建main.c、LCD1062.c与LCD1602.h文件。
, i! ~1 ]; n3 Z8 C: J% z2 Omain.c文件内存放的自然是主函数;3 c0 r0 h8 i+ @( \7 y. ~
LCD1602.c放的是定义好的LCD命令、数据读写函数,读者也可以自行将字符重定义函数放在里面;  C- U- ^2 x# z9 w. U% Z8 N( c& e' b- T
LCD1602.h则是函数声明以及#define。
0 F) U& v' J! a2 w项目构建完成后,Keil中排布如图所示2 S; U+ a* y7 g7 Z" g

* z* s5 B& i* Y. H1、LCD1602.h文件代码
! ^, z: i4 V! V: N1 p; B+ ~4 ?#ifndef __LCD1602_H) {; c5 ]4 @9 J# Q1 M1 r
#define __LCD1602_H
% ]  A( H4 k% @
* @; C4 s- m8 a7 W3 ?0 ?4 _#define LCDData P0: ^. D/ [% S/ T, c& Y9 N
#define uchar unsigned char1 Y5 ~5 g( i" `; ]6 h% k8 F
#define uint unsigned int
# [6 I9 K+ [! S- r, k- ^#define register_addr 0x00! u7 y$ ~# u* O  E2 }) f
#define device_addr 0x80
' x9 V6 {& m: A" P" V/ ]1 z  R' C1 l
void delay(uchar c);( s; G; _1 _4 O& u
void LCDWriteCom(uchar i);( Q4 R. `0 ^. b6 ~0 ~
void LCDWritEDAta(uchar i);- q* [1 ?0 D+ ~( E& x6 W5 U# X
void LCDClean();- e  k* z( R) ^0 R. q/ C
void LCDInit();
6 L! e3 @8 A$ O4 W#endif /*__LCD1602_H*/  m0 Q6 K/ A/ b* [
......2 i8 ?1 @* Q' L7 Y7 d8 i, a
. ~( Y& N/ O) F% L5 [

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

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

该用户从未签到

2#
发表于 2022-5-19 13:51 | 只看该作者
我就点个赞,机智楼主
( d0 q$ C* O1 W$ R$ ~- g" ]6 I楼主挺厉害的

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2026-4-18 23:37 , Processed in 0.093750 second(s), 27 queries , Gzip On.

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

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

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