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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1 u5 k; L8 p( i9 [2 \& H
我们将使用LCD1602模块让单片机用图形和文字来展现信息,因为LCD1602的操作相对比较简单。
- e" B) W: O0 E2 Z9 k( e! |! ~/ N& u5 h/ D) Q1 Z5 K
一、LCD1602模块介绍+ ?# @' Q& N. _
LCD1602是十分基础常见的显示模块,它有三位控制引脚与8位数据引脚,其中E为使能端口,RS代表接下来传输的是命令或是要显示的数据,RW则是代表下一步是要读出数据还是向模块中写入。2 E  Q5 b. E4 N/ L# v
同时,LCD1602在CGROM(字符发生存储器)中集成了ASCII码表,每一个字符都有一个固定的地址,这让它可以轻松的展现英文单词以及一些常用字符。
* s5 s% q$ O  X& z/ \9 n0 T3 `  E比如'A'的存放地址为41H,显示A时就是将地址为41H的点阵字符图形取出,并显示在屏幕上。
) i# L1 k( W) O, g  E4 _如果你对LCD1602模块足够熟悉,你甚至可以将它用于数据存储(虽然并不好用也不能断电保存),还能够利用让它显示自定义的字符图案,但这属于LCD1602的拓展功能,本文中只是简单一提,请大家下课自己通过查看LCD1602中文手册掌握。' q5 Q& g. o+ G& b# d4 g
1、LCD1602引脚接口功能
/ H4 |9 Y9 n3 C! `VSS:接地' l1 G! S8 G3 o; }# `) y
VDD:接5V电源. ~7 Y7 ^+ u2 Z, A1 z4 c. z
VE:为对比电压,用于调整液晶屏显示对比度,
. @7 `0 q7 Z+ b1 P; J- L& Y" cRS:数据/命令选择端口,高电平代表数据位传输的是数据,低电平相反  _" \- {6 G7 m4 P/ z9 w
RW:读/写选择端口,高电平代表数据位用于外部读取RAM数据,低电平则相反
" H; E& S9 u+ H5 d0 _! K7 RE:使能端口,低电平有效( R- C3 P9 x1 H' v7 J/ J; L
D0~D7: 数据位
7 R6 J' p# u! u$ N* GA:背光板正极* d* U0 K& p5 J" \! `
K:背光板负极
1 Q. Q/ T2 ?) V5 j( ]; _1 N, l可以看到,在使能端口可用时,主要是靠RS、RW两个端口相互配合,以完成模块的初始化配置(命令/写入)以及字符显示(数据/写入)。
- y6 P& R! I1 H  J4 f* g7 O- I首先,我们会向LCD1602中依次写入如下命令来进行配置(RS、RW都为低电平)。
& H/ o  I9 e  ?# b6 u# a& D/ a) Z
! q+ ~- M8 A! \- Z% D2、LCD1602常用控制命令& |1 E/ x: D. e1 a
设置模式   : 0x38
; G6 W+ N/ q4 X; F开显示,不显示光标,光标不闪烁 :0x0C; P: y: h( d$ C, d
读写字符后地址加一,屏显不移动 :0x06
7 Z, E2 }" ~' d1 V4 x清屏,数据指针清零: 0x01
' o+ L/ E( m% r" |- P1 J( K设置数据地址指针初始值:0x80) t9 g  O2 [; I! c8 ]
配置完成后,就可以将RS转换为数据模式,向8位数据端口输入ASCII码值,在屏幕上逐个逐行显示不同字符。
& V8 {: [7 h% K% q5 r$ ?9 ?接下来,我们将会从项目创建开始,教给大家如何将项目构建的清晰明了。/ s. M, B- N9 m  w- N; [

4 W3 o0 \7 b% K二、一种规整的项目排布方式+项目代码
* O3 O: M- c, n首先,我们新建一个文件夹用于存放项目文件,并在其中新建Doc、User与Project文件夹,分别存放项目说明文件、代码文件以及KEIL项目文件。, T8 T* X" z; b. r4 F  F7 Q
打开User文件夹,创建main.c、LCD1062.c与LCD1602.h文件。
, m  R! c" M% C1 v( t' ?main.c文件内存放的自然是主函数;" L0 L2 ~/ b: g# |
LCD1602.c放的是定义好的LCD命令、数据读写函数,读者也可以自行将字符重定义函数放在里面;
8 x0 s2 I5 A7 M) U  J: xLCD1602.h则是函数声明以及#define。! g# C& n- ?5 ^: r8 _  a
项目构建完成后,Keil中排布如图所示) T6 z; n/ B7 W; n* A; P- k" N9 i
5 q6 Q3 ^0 C: L. e1 q
1、LCD1602.h文件代码6 {5 X8 r0 y0 ^& a( I
#ifndef __LCD1602_H! M3 \3 h6 \, L6 N' M, {3 `
#define __LCD1602_H
: B5 v* }8 t; v+ R- j# U$ U5 B0 e* j( h* j, s8 r* W# T4 T
#define LCDData P0
$ q9 v% b' W4 `9 c#define uchar unsigned char8 I$ \0 l2 p" g9 c
#define uint unsigned int+ P( Z( P: Z9 V$ U8 a; s
#define register_addr 0x00
# W/ A) b, b4 q#define device_addr 0x800 _+ W) w" X1 Z6 |/ i

$ @2 {4 l/ `4 L0 S; P, Ovoid delay(uchar c);
" \6 m0 `* {' @9 |% c# ^& E7 q" }* F. nvoid LCDWriteCom(uchar i);
( R1 s4 D& M  C  c7 pvoid LCDWritEDAta(uchar i);7 C/ F) f5 x5 m/ }% G' b
void LCDClean();
0 y8 q( W' F) X4 G9 uvoid LCDInit();0 d  t% v' x' F- _4 T
#endif /*__LCD1602_H*/' b: c0 ~% \* M4 P
......
( M' p: u$ e9 D* W4 E5 L! X6 a. O- h5 h

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

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

该用户从未签到

2#
发表于 2022-5-19 13:51 | 只看该作者
我就点个赞,机智楼主 / V- b  n, s9 k) U: p$ u% e# ~; S; @
楼主挺厉害的

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-12 15:05 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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