基于51单片机的LCD1602显示的proteus仿真(附源码) 您所在的位置:网站首页 51单片机仿真图元件符号对照表 基于51单片机的LCD1602显示的proteus仿真(附源码)

基于51单片机的LCD1602显示的proteus仿真(附源码)

2024-07-16 11:36| 来源: 网络整理| 查看: 265

文章目录 一、LCD1602模块简介1.1 特点1.2 结构及其引脚示意图1.3 基本操作时序1.4 指令集1.5 连接方式1.直接控制方式2.间接控制方式 二、LCD1602显示仿真图仿真程序main.clcd.clcd.h 三、总结

一、LCD1602模块简介 1.1 特点

LCD1602是一种工业字符型液晶,能够同时显示16X02即32个字符。(16列2行)

LCD1602分为带背光和不带背光两种,其控制器大部分为HD44780。带背光的比不带背光的厚,是否带背光在实际应用中并无差别,不同厂家提供的1602模块可能不同的字符颜色或者背光,但是基本上是一致的。

下面是5V的1602模块的规格:

显示容量16x2个字符芯片工作电压4.5-5.5V工作电流2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.95x4.35(WXH)mm

好像也有3.3V的版本,这里就不介绍了。

1.2 结构及其引脚示意图

下面是一般的1602 模块的结构尺寸示意图。

在这里插入图片描述 下面是一般的1602 模块的引脚示意图。

在这里插入图片描述

编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极 第1脚:VSS为电源地GND;第2脚:VDD为电源正极5V;第3脚: VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度;第4脚:RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器;第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作.当RS和R/W共同 为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当 RS为高电平R/W为低电平时可以写入数据;第6脚: E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;第7-14脚:D0~D7为8位双向数据线;第15脚:背光源正极;第16脚:背光源负极。 1.3 基本操作时序

1602液晶的功能相对较简单,下面从基本操作简单介绍下

主要分为下面4种基本操作:

状态字读操作:输入 RS=低、RW=高、EP=高; 输出:DB0~DB7 读出为状态字;数据读出操作:输入 RS=高、RW=高、EP=高;输出:DB0~DB7 读出为数据;指令写入操作:输入 RS=低、RW=低、EP=上升沿; 输出:无;数据写入操作:输入 RS=高、RW=低、EP=上升沿; 输出:无。

读操作的时序图如下:

在这里插入图片描述

写操作的时序图如下:

在这里插入图片描述 时序时间参数如下表:

在这里插入图片描述 信号真值表:

在这里插入图片描述

1.4 指令集

LCD1602液晶模块内部的控制器共有11条控制指令,如下表所示: 在这里插入图片描述

LCD1602液晶模块的读/写操作、显示屏和光标的操作都是通过指令编程来实现的(其中,1为高电平,0为低电平),分别介绍如下。 (1)指令1:清屏。指令码01H,光标复位到地址00H。 (2)指令2:光标复位。光标复位到地址00H。 (3)指令3:输入方式设置。其中,I/D表示光标的移动方向,高电平右移,低电平左移;S表示显示屏上所有文字是否左移或右移,高电平表示有效,低电平表示无效。 (4)指令4:显示开关控制。其中,D用于控制整体显示的开与关,高电平表示开显示,低电平表示关显示;C用于控制光标的开与关,高电平表示有光标,低电平表示无光标;B用于控制光标是否闪烁,高电平闪烁,低电平不闪烁。 (5)指令5:光标或字符移位控制。其中,S/C表示在高电平时移动显示的文字,低电平时移动光标。 (6)指令6:功能设置命令。其中,DL表示在高电平时为8位总线,低电平时为4位总线;N表示在低电平时为单行显示,高电平时双行显示;F表示在低电平时显示5×7的点阵字符,高电平时显示5×10的点阵字符。 (7)指令7:字符发生器RAM地址设置。 (8)指令8:DDRAM地址设置。 (9)指令9:读忙信号和光标地址。其中,BF为忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平则表示不忙。 (10)指令10:写数据。 (11)指令11:读数据。

1.5 连接方式

LCD1602与单片机的连接有两种方式,一种是直接控制方式,另一种是所谓的间接控制方式。它们的区别只是所用的数据线的数量不同,其他都一样。

1.直接控制方式

LCD1602的8根数据线和3根控制线E,RS和R/W与单片机相连后即可正常工作。一般应用中只须往LCD1602中写入命令和数据,因此,可将LCD1602的R/W读/写选择控制端直接接地,这样可节省1根数据线。VO引脚是液晶对比度调试端,通常连接一个10kΩ的电位器即可实现对比度的调整;也可采用将一个适当大小的电阻从该引脚接地的方法进行调整,不过电阻的大小应通过调试决定。

2.间接控制方式

间接控制方式也称为四线制工作方式,是利用HD44780所具有的4位数据总线的功能,将电路接口简化的一种方式。为了减少接线数量,只采用引脚DB4~DB7与单片机进行通信,先传数据或命令的高4位,再传低4位。采用四线并口通信,可以减少对微控制器I/O的需求,当设计产品过程中单片机的I/O资源紧张时,可以考虑使用此方法。 [1]

我采用的第一种方式,如下图所示:

在这里插入图片描述

二、LCD1602显示 仿真图

在Proteus仿真中,直接搜Lcd1602是找不到的,要搜LM016L才是。

这里第3脚接的10k的电位器本意是想调节鬼影问题,但是仿真中好像不会有问题,所以也可以直接接地GND。

在这里插入图片描述

仿真程序

在这里插入图片描述

这里可能会有疑问,第一行的起始地址不是0x00,第二行的起始地址不是0x40吗

这里我们以第一行为例,在写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是0000 0000B(0x00H)+1000 0000B(0x80H)= 1000 0000B(0x80H),同理第二行的起始地址为1100 0000B(0xC0H)

main.c /************************************************************************************** * LCD1602液晶显示实验 * 实现现象:下载程序后插上LCD1602液晶在开发板上,即可显示 注意事项: ***************************************************************************************/ #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 #include "lcd.h" typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; u8 Disp[]=" xiaobuding "; u8 Disp2[]=" 2024-05-02 "; /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main(void) { u8 i,j; LcdInit(); LcdWriteCom(0x80); //设置数据指针起点 for(i=0;i LcdWriteData(Disp2[j]); } while(1); } lcd.c

这里的#ifndef LCD1602_4PINS就表示上面说明的连接方式是采用直接控制方式还是间接控制方式。

#include "lcd.h" /******************************************************************************* * 函 数 名 : Lcd1602_Delay1ms * 函数功能 : 延时函数,延时1ms * 输 入 : c * 输 出 : 无 * 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。 *******************************************************************************/ void Lcd1602_Delay1ms(uint c) //误差 0us { uchar a,b; for (; c>0; c--) { for (b=199;b>0;b--) { for(a=1;a>0;a--); } } } /******************************************************************************* * 函 数 名 : LcdWriteCom * 函数功能 : 向LCD写入一个字节的命令 * 输 入 : com * 输 出 : 无 *******************************************************************************/ #ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时 void LcdWriteCom(uchar com) //写入命令 { LCD1602_E = 0; //使能 LCD1602_RS = 0; //选择发送命令 LCD1602_RW = 0; //选择写入 LCD1602_DATAPINS = com; //放入命令 Lcd1602_Delay1ms(1); //等待数据稳定 LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); //保持时间 LCD1602_E = 0; } #else void LcdWriteCom(uchar com) //写入命令 { LCD1602_E = 0; //使能清零 LCD1602_RS = 0; //选择写入命令 LCD1602_RW = 0; //选择写入 LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; LCD1602_DATAPINS = com LCD1602_E = 0; //使能清零 LCD1602_RS = 1; //选择写入数据 LCD1602_RW = 0; //选择写入 LCD1602_DATAPINS = dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改 Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序 Lcd1602_Delay1ms(5); LCD1602_E = 0; LCD1602_DATAPINS = dat LcdWriteCom(0x32); //将8位总线转为4位总线 LcdWriteCom(0x28); //在四位线下的初始化 LcdWriteCom(0x0c); //开显示不显示光标 LcdWriteCom(0x06); //写一个指针加1 LcdWriteCom(0x01); //清屏 LcdWriteCom(0x80); //设置数据指针起点 } #endif lcd.h #ifndef __LCD_H_ #define __LCD_H_ /********************************** 当使用的是4位数据传输的时候定义, 使用8位取消这个定义 **********************************/ //#define LCD1602_4PINS /********************************** 包含头文件 **********************************/ #include //---重定义关键词---// #ifndef uchar #define uchar unsigned char #endif #ifndef uint #define uint unsigned int #endif /********************************** PIN口定义 **********************************/ #define LCD1602_DATAPINS P0 sbit LCD1602_E=P2^7; sbit LCD1602_RW=P2^6; sbit LCD1602_RS=P2^5; /********************************** 函数声明 **********************************/ /*在51单片机12MHZ时钟下的延时函数*/ void Lcd1602_Delay1ms(uint c); //误差 0us /*LCD1602写入8位命令子函数*/ void LcdWriteCom(uchar com); /*LCD1602写入8位数据子函数*/ void LcdWriteData(uchar dat) ; /*LCD1602初始化子程序*/ void LcdInit(); #endif 三、总结

今天主要讲了基于51单片机的LCD1602显示的proteus仿真。

感谢你的观看!

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有