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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

2 `. n5 l( a+ w' Z3 v- b. l我们将使用LCD1602模块让单片机用图形和文字来展现信息,因为LCD1602的操作相对比较简单。: @8 S9 p% [) Y5 [, o$ X! W. _5 l5 j
$ \  {) ^  Z6 g9 t
一、LCD1602模块介绍6 }2 g8 C7 Y0 I  B+ a8 l9 q
LCD1602是十分基础常见的显示模块,它有三位控制引脚与8位数据引脚,其中E为使能端口,RS代表接下来传输的是命令或是要显示的数据,RW则是代表下一步是要读出数据还是向模块中写入。
9 z: `: {% n: s; S+ ]同时,LCD1602在CGROM(字符发生存储器)中集成了ASCII码表,每一个字符都有一个固定的地址,这让它可以轻松的展现英文单词以及一些常用字符。
- z; v7 F- X& A5 @2 S3 w) ^比如'A'的存放地址为41H,显示A时就是将地址为41H的点阵字符图形取出,并显示在屏幕上。+ @; O- a  G8 T% ]9 i7 {: c+ f
如果你对LCD1602模块足够熟悉,你甚至可以将它用于数据存储(虽然并不好用也不能断电保存),还能够利用让它显示自定义的字符图案,但这属于LCD1602的拓展功能,本文中只是简单一提,请大家下课自己通过查看LCD1602中文手册掌握。
+ i  v# h/ ?% b" w, N- \1、LCD1602引脚接口功能
* T+ X% D# V7 q6 ~6 mVSS:接地1 I+ p) c0 w* q
VDD:接5V电源' I% C" L) e+ x7 |+ u+ F
VE:为对比电压,用于调整液晶屏显示对比度,
9 a% N! h/ j) C# TRS:数据/命令选择端口,高电平代表数据位传输的是数据,低电平相反6 |- `  a, c9 X! B
RW:读/写选择端口,高电平代表数据位用于外部读取RAM数据,低电平则相反
' \4 t: I, t2 ~) K1 ME:使能端口,低电平有效4 z) Z# [5 H* q. v! [0 D
D0~D7: 数据位
8 D# Y- g4 C# Z" tA:背光板正极
/ v) y- M& z8 m* n- ?K:背光板负极
+ y* {" K5 K3 S/ G$ f. W9 }可以看到,在使能端口可用时,主要是靠RS、RW两个端口相互配合,以完成模块的初始化配置(命令/写入)以及字符显示(数据/写入)。; X$ s4 W5 y* [0 ^! p  q9 f7 T
首先,我们会向LCD1602中依次写入如下命令来进行配置(RS、RW都为低电平)。- e% Q* {  {, Z* b3 r
( I: k" D7 r9 z. O
2、LCD1602常用控制命令
3 c0 s2 M9 Q1 G设置模式   : 0x389 \  M9 [; c3 S" ^4 ~  ]- }: ^
开显示,不显示光标,光标不闪烁 :0x0C
, d. l, Z% D' }- k读写字符后地址加一,屏显不移动 :0x060 B8 A$ S& j$ w
清屏,数据指针清零: 0x016 C5 h" n, m4 L' s( W# W. V1 f
设置数据地址指针初始值:0x80" A/ D2 t6 [0 E8 @. L9 R
配置完成后,就可以将RS转换为数据模式,向8位数据端口输入ASCII码值,在屏幕上逐个逐行显示不同字符。
0 ]" b4 }9 e- u6 F% ^+ H接下来,我们将会从项目创建开始,教给大家如何将项目构建的清晰明了。9 N5 V5 }+ c5 L$ G2 O  d, B7 \) h
( i3 E. o# o$ T4 U
二、一种规整的项目排布方式+项目代码$ H/ L5 _! W0 M
首先,我们新建一个文件夹用于存放项目文件,并在其中新建Doc、User与Project文件夹,分别存放项目说明文件、代码文件以及KEIL项目文件。& c3 r- {8 ]9 ^8 s, O' s
打开User文件夹,创建main.c、LCD1062.c与LCD1602.h文件。
: U& ?5 P2 ?8 w6 P& [3 Nmain.c文件内存放的自然是主函数;  L* q5 K4 }1 f- m4 M6 }# D; I
LCD1602.c放的是定义好的LCD命令、数据读写函数,读者也可以自行将字符重定义函数放在里面;
2 |' }% O1 C/ [9 _, JLCD1602.h则是函数声明以及#define。
" j6 u! r! E0 F项目构建完成后,Keil中排布如图所示
/ |" ]( @( R! @; U1 j
: r9 q+ z7 w2 t9 |1、LCD1602.h文件代码) l  T+ i" Q; Z" A
#ifndef __LCD1602_H0 f+ t7 |2 C. n% l7 _8 j- g
#define __LCD1602_H
- E% u5 P- s% H9 l- o- p# z6 O! V* V* R# x) N# m, [
#define LCDData P0; w3 P' M$ A% V! X, G3 R
#define uchar unsigned char" S: S' V5 a" H+ K1 {
#define uint unsigned int
( c. x: h, Y9 O#define register_addr 0x00
1 V0 Y1 R1 F6 f- S#define device_addr 0x80
# Q; J  P# O4 J1 i7 o; g' X4 r
0 n7 F9 t$ {. C; V" dvoid delay(uchar c);3 x# m8 T: P4 K8 D# V. R
void LCDWriteCom(uchar i);) o" C+ C+ t; ]4 M1 j2 D- e3 l- V
void LCDWritEDAta(uchar i);4 g" k' @3 M( k- J' E& K3 l
void LCDClean();
) @/ [3 |# x: J! S) R8 m  [+ Xvoid LCDInit();
8 t0 E% r' M# @- w( m1 T#endif /*__LCD1602_H*/
; e# d; F  Z% y& `* R! V......
$ @0 o& T; |. ^( Y, @9 _4 [+ x7 e! `7 C+ l8 O# e

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

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

该用户从未签到

2#
发表于 2022-5-19 13:51 | 只看该作者
我就点个赞,机智楼主 ( j6 t, G) F0 D
楼主挺厉害的

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-6 23:03 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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