基于proteus 18LCD1602液晶显示字符的51单片机开发实例

1. 基于proteus的51单片机开发实例18-LCD1602液晶显示1.1. 实验目的图1 LCD1602显示电路前面我们已经学习了使用数码管显示数字和简单

各位老铁们,大家好,今天由我来为大家分享基于proteus 18LCD1602液晶显示字符的51单片机开发实例,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

前面我们学习过用数码管来显示数字和简单的字符,但是数码管的显示内容有很大的局限性。例如,显示的字符数量有限,在显示复杂的字符形状时,显示效果不是很好。例如用8段数码管显示字符“S”时,效果如下图。可以看出,这个“S”与数字“5”非常相似。事实上,在数码管显示的字符的段码表中,字符“S”和数字“5”的段码是相同的。

数码管显示数字和字符

在本例中,我们使用更丰富的LCD 来显示字符和数字。使用LCD1602液晶显示两行字符“老马士图单片机”和“0123456789”,从而熟悉和掌握LCD1602液晶的原理、驱动方法和编程实现。

这个例子有两个目的:

1、了解LCD1602液晶的显示原理及驱动电路设计;

2、掌握51单片机编程控制LCD1602液晶显示字符和数字的方法。

1.2. 设计思路

本例从LCD1602液晶的工作原理开始。根据其工作原理,在proteus中画出LCD1602液晶的工作电路,然后利用51单片机编程实现LCD1602液晶的显示控制。

1.3. 基础知识

LCD大家一定都很熟悉了。液晶的显示内容可分为段式、字符式、点阵式三种。分段液晶的显示内容与数码管相同,其原理和驱动方法可借鉴数码管。本例中我们使用的LCD1602液晶是字符液晶。下面的实施例将研究点阵液晶。

首先我们从字面上理解一下LCD1602液晶。 16表示液晶屏每行可以显示16个字符,02表示液晶屏有两行。因此,LCD1602液晶总共可以显示32个字符。

下面两张图是LCD1602液晶的实物图和引脚图。

LCD1602液晶屏实物图

LCD液晶引脚图

我们知道,单片机编程主要是根据不同的情况(模拟功能除外)检测端口的电平,并控制端口输出高低电平。因此,对于控制LCD1602液晶,了解其引脚功能是编程的必要条件。

1.3.1. Lcd1602液晶的引脚功能

VSS:电源地

VDD:电源

VEE:LCD对比度调节引脚,可通过电位器连接到VDD来调节对比度。

RS:寄存器选择引脚。当RS=0时,选择指令寄存器;当RS=1时,选择数据存储器。

R/W:读写控制引脚。当R/W=0时,可以对LCD1602进行写操作,当R/W=1时,可以对LCD1602进行读操作。

E:使能信号引脚。在该引脚的下降沿,数据被写入LCD1602。当该引脚为高电平时,可以从LCD1602 读取数据。

D0~D7:数据总线引脚。

LEDA:背光电源地

LEDK:背光电源

1.3.2. LCD1602液晶显示字符的过程

通过电路和编程来控制LCD1602液晶显示字符,需要解决三个问题。

1、字符标准ASCII码的生成

常用字符的标准ASCII码必须手动生成。在程序中定义字符常量或字符串常量时,C语言编译后会自动生成其标准ASCII码。只要将生成的标准ASCII码通过单片机的I/O口发送到LCD1602的数据显示寄存器DDRAM,内部控制电路就会自动将字符传送到显示器上。

单片机中字符数据或字符串数据的定义一般采用数组的方式。例如定义一个字符串unsigned char code string[ ]={‘laomashitu mcu’};如您所见,该数组没有定义长度。 C51会根据字符串的长度自动指定数组的长度。注意该数组的最后一个。默认字符为空字符“\0”,字符串用双引号括起来。

2. LCD1602显示模式设置

为了让LCD1602液晶显示字符,必须设置“是否有光标、光标移动方向、光标是否闪烁、字符移动方向”等,这样液晶屏才会显示按设计要求进行展示。这些设置是通过一系列控制指令来实现的。下面详细描述控制指令。

需要说明的是,发送控制指令时,需要相应设置RS和R/W引脚的电平。不同的指令对RS和R/W引脚的电平有不同的要求。

3. 如何指定字符显示位置

要显示字符,必须让LCD1602液晶控制器知道要显示到哪里,即显示哪一行哪一列。也就是说,首先要将要显示的字符的地址输入到LCD控制器中。 (具体地址定义详见下面的控制指令)。

LCD1602液晶内部显示地址如下图所示。指定显示位置的方法是“80H+地址码(第一行00H~0FH,第二行40H~4FH)”。例如,要显示第一行第二列的字符,则地址码应指定为80H+01H=81H。

LCD1602液晶内部显示地址

1.3.3. LCD1602液晶的控制指令

清屏指令

清除屏幕上显示的内容。用于清除DDRAM和AC的值。

归零指令

将屏幕光标返回到原点。

输入方式选择指令

设置光标和屏幕的移动方式。

I/D=1:数据读写操作完成后,AC自动加1;

I/D=0:数据读写操作后,AC自动减1。

S=1:数据读写操作完成后,屏幕移动;

基于proteus 18LCD1602液晶显示字符的51单片机开发实例

S=0:数据读写操作后,屏幕保持不变

显示开关控制指令

用于设置显示、光标和闪烁的打开和关闭。

D=1:显示开启;

D=0:显示关闭。

C=1:光标处于打开状态;

C=0:光标关闭。

B=1:闪烁;

B=0:闪烁。

光标和画面移动指令

用于移动光标和屏幕而不影响DDRAM。

S/C=1:屏幕移动一位字符;

S/C=0:光标移动一个字符。

R/L=1:右移;

R/L=0:左移。

功能设置指令

用于设置工作模式。 (初始化命令)

DL=1:8位数据接口;

DL=0:4位数据接口。

N=1:两行显示;

N=0:显示一行。

F=1:5*10点阵字符;

F=0:5*7点阵字符。

CGRAM设置指令

用于设置CGRAM地址,A5~A0=0x00~0x3f。

DDRAM设置指令

用于设置DRAM地址。

N=0:一行显示,地址:A6~A0=0~4fH;

N=1:两行显示,第一行地址A6~A0=0~2fH,第二行地址A6~A0=40~64H。

l读RF和AC指令

BF=1:忙;

BF=0:准备就绪。此时AC值为最新地址设置(CGRAM或DDRAM)的值。

写数据指令

用于将地址码写入DDRAM中,使LCD显示相应的图形或将用户创建的图形存储到CGRAM中。

读数据指令

根据当前设置的地址从DDRAM或CGRAM读取数据。

1.3.4. LCD1602的初始化步骤:

1、设置LCD1602的功能;

2、设置LCD1602的输入模式

3、设置LCD1602的显示模式

4. 清屏LCD1602

1.4. 电路设计

本例电路如图1所示,LCD1602液晶的数据引脚连接到单片机P3口的P3.0~P3.7。 LCD1602液晶的控制引脚RW、RS、E分别与P2口的三个引脚相连。整体电路非常简单。

1.5. 程序设计

1.6. 实例仿真

程序编译完成后,将生成的hex文件加载到proteus电路的单片机中,开始仿真,看看LCD1602显示的内容是否符合设计预期。

下面的视频是这个例子的模拟过程。

用户评论

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
怀念·最初

Proteus真是太实用了,可以直接模拟电路效果,比实际烧板测试方便多了!这个基于 PROTEUS 的 51 单片机开发实例很实用,我正在学习嵌入式开发,这种操作步骤清晰的案例对我非常有帮助。

    有20位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
﹏櫻之舞﹏

刚接触到单片机和LCD显示,这篇教程讲解得很详细,对于初学者来说简直是福音! 我终于明白如何在 Proteus 里模拟 51 单片机控制 LCD 的过程了。

    有19位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
我就是这样一个人

做工程设计的时候使用 PROTEUS 软件很常见,这款软件确实很有用,可以快速预览电路的效果,省去了很多调试时间。这个项目实例感觉很有实用性!学习完希望能自己动手试试。

    有5位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
涐们的幸福像流星丶

对于 51 单片机开发,我一直觉得LCD显示是比较基础的操作,希望可以通过这个案例加深对嵌入式系统设计的理解。

    有13位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
有阳光还感觉冷

这个案例演示了如何使用 Proteus 模拟控制 LCD 显示字符,对于想要深入了解 51 单片机的同学来说可以参考下。不过对于初学者来说可能稍微有点难度…

    有10位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
弃我者亡

51 单片机和 LCD 显示器都是基础电子学习内容,这个 案例很好的结合了两者,希望能看到更多实战案例的分享!

    有9位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
此生一诺

最近在学习 Proteus,觉得这款软件真的非常简单易用! 这次的实例讲解很清晰,让我更容易理解如何使用 ProteUS 来模拟控制LCD显示字符。

    有6位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
浅巷°

感觉这个例子挺有意思的,通过 proteus 模拟实现单片机控 LCd 显示 字符,可以更直观地了解嵌入式系统设计的流程。

    有15位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
繁华若梦

Proteus 太棒了!学习 51 单片机的过程,可以用 Proteus 来模拟环境,省去了很多调试的时间。这个案例很实用,我以后可以用它来开发自己的项目。

    有11位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
不忘初心

对初学者来说,这个例子可能稍微难度有点大,建议可以逐步分解讲解每一步操作,这样更容易理解。

    有19位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
安好如初

51 单片机和 LCD 显示器一直是我的学习目标,希望能跟着这个案例学到一些技能,自己动手完成一个类似的应用项目!

    有15位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
沐晴つ

这个实例挺不错,直接演示了如何通过 Proteus 控制 1602 LCD 显示字符,可以方便大家快速了解相关操作步骤。学习嵌入式系统开发真是方便!

    有6位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
幸好是你

对于想了解更多 51 单片机编程知识的小伙伴来说,这个案例就是一个很好的入门点。它能够帮助你理解如何用代码实现 LCD 显示的原理。

    有17位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
ー半忧伤

虽然 Proteus 可以模拟电路效果,但实际操作还是需要自己动手烧板测试才能真正掌握。希望看到更多案例分享,包括实际硬件设计和调试过程。

    有7位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
面瘫脸

感觉这个案例可以作为 51 单片机学习课程的一部分,帮助学生更直观地理解单片机控制 LCD 的原理。

    有12位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
神经兮兮°

Proteus 功能强大,模拟效果真实,学习起来确实方便快捷。期待看到更多基于 Proteus 开发实例的分享!

    有12位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
有你,很幸福

这个案例讲解的非常详细,对于初学者来说可以完全按照步骤进行操作学习。学习过程中会遇到许多问题,希望能够添加一些常见问题的解答和解决方案。

    有6位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
嗯咯

对 51 单片机编程基础有了解的人来说,这个案例确实很有参考价值,可以借鉴其中的一些思路来完成自己的开发项目

    有20位网友表示赞同!

基于proteus 18LCD1602液晶显示字符的51单片机开发实例
算了吧

对于想要入门 Proteus 软件学习的同学,强烈推荐此实例。通过实际操作流程,可以快速掌握 Proteus 软件在单片机开发过程中应用方法。

    有5位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/195884.html

(0)
小su's avatar小su
上一篇 2024年9月25日 下午6:20
下一篇 2024年9月25日 下午6:32

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注