网站首页 > 技术教程 正文
大家好,今天给大家介绍LCD1602屏幕,下方附有本文涉及的全部资料和源代码的获取方式,可进群免费领取。
1.接线说明
第1引脚:GND为电源地
第2引脚:VCC接5V电源正极
第3引脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4引脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5引脚:RW为读写信号线,高电平(1)时进行读操作,以51为例的简单原理图低电平(0)时进行写操作。
第6引脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。
第7~14引脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。第15引脚背光正极,第16引脚背光负极。
开发板接线图:
2.LCD1602显示原理
要想搞懂1602如何显示,就只需搞懂两个问题(在哪显示,如何显示)。
首先来说一下在哪显示这个问题:
LCD1602可以显示16*2个字符且通过D0-D7八个引脚传输数据八位数据,每一个显示的位置都对应上图的一个地址。例如我想在第一行的第三个位置显示,那么就可以锁定上表中的“02”,换算成二进制就是0000 0010。听上去很简单,但是LCD1602有个特点就是写入显示地址时要求最高位 D7 恒定为高电平。所以我们想显示真实的地址应该为1000 0010。
在哪显示说清楚了,现在来搞怎么显示这个问题:
在LCD1602的手册中给出了这样一个表格,我们想显示表格中的字符只需获取某个字符的高位和低位即可。例如我想显示“B”这个字符,就是0100 0010转换成16进制就是0x42,刚好对应‘B’的ASCLL码66。当然我们在编程的时候无需这样操作,只需输入字符即可,编译器会自动编译成对应的ASCLL码。
说到这里会发现无论是传输地址的指令还是传输字符的指令都是通过D0-D7这八根线进行传输,那么我们什么时候传输的数据,说明时候传输的是地址呢。我们靠的是在1602上的RS引脚,RS为高电平1时选择数据寄存器(写数据)、低电平0时选择指令寄存器(写地址)。
3.LCD1602时序分析
LCD1602的时序分为读操作时序和写操作时序,我们先分析一下最重要的写操作时序。我们无论是写入数据还是写入地址都必须要执行写操作,因此我们在编程是最好封装两个函数(写地址函数,写数据函数)。
写时序分析
首先看RS,RS的时序分析非常简单就正如上文所说我们只需搞清楚到底是是写地址还是写数据 ,写地址为0,写数据为1即可,没有太多好分析的。
R/W:可以从途中看出来R/W的时序低电平贯穿了整个时序,因此我们将R/W置0即可。
E:初始状态为0,然后延时至少tR之后置1(tR的值参考上表,25ns执行一个_nop_();函数即可),置1后要延时至少tPW(上图给出的tPW值为150ns,建议执行两个_nop_();函数),接着再至少延时tF(执行一个_nop_();函数)后置0。
代码如下(基于51单片机),其它单片机此原理都可适用。
#include "reg52.h"
#include "intrins.h"
#include "delay.h"
#define databuffer P0 //定义D0-D7引脚
sbit EN = P2^7;
sbit RS = P2^6;
sbit RW = P2^5;
void Write_cmd_Func(char cmd) //写命令函数
{
check_busy(); //检测忙信号函数
RS = 0; //RS为低电平:写指令
RW = 0;
EN = 0;
_nop_(); //执行一个空函数,延时约1us
databuffer = cmd;
_nop_();
EN = 1;
_nop_();
_nop_();
EN = 0;
_nop_();
}
void Write_data_Func(char datashow) //写命令函数
{
check_busy(); //检测忙信号函数
RS = 1; //RS为高电平:写内容
RW = 0;
EN = 0;
_nop_();
databuffer = datashow;
_nop_();
EN = 1;
_nop_();
_nop_();
EN = 0;
_nop_();
}
读操作时序:
读操作时序主要应用在检测忙信号,忙信号也在手册初始化中使用到,下文会提到。所以我们分析读操作时序的目的也就是为了写检测忙信号函数。
RS:置0,写命令
RW:高电平贯穿整个时序,因此置1。
E:初始状态为0,延时tR后拉高,之后再延时tPW后拉低。
读操作时序与写操作时序的区别在于:写操作时序在E=0的时候就开始传输数据,而读操作时序要等E=1之后才开始传输数据。
代码如下:
void check_busy()//检测忙信号函数
{
char tmp = 0x80; //创建一个变量,存放数据
databuffer=0x80; //初始值为忙,只要当单片机发数据后高位变低后才为不忙
while(tmp & 0x80){ //检测tmp的高位bf的值是否为高电平,如果为忙程序卡住不往下执行
//高电平:忙 低电平:不忙
RS = 0;
RW = 1;
EN = 0;
_nop_();
EN = 1;
_nop_();
_nop_();
tmp=databuffer;
EN = 0;
_nop_();
}
}
LCD1602初始化:
当然这里还需注意LCD1602的手册给出了使用前还需将LCD1602初始化,具体初始化内容如下,我们只需调用我们刚刚封装好的写命令函数一步一步执行手册所给的内容即可。
(1)延时 15ms
(2)写指令 38H(不检测忙信号)
(3)延时 5ms
(4)以后每次写指令,读/写数据操作均需要检测忙信号
(5)写指令 38H:显示模式设置
(6)写指令 08H:显示关闭
(7)写指令 01H:显示清屏
(8)写指令 06H:显示光标移动设置
(9)写指令 0CH:显示开及光标设置
void LCD1602_Init() //LCD1602初始化
{
Delay15ms();
Write_cmd_Func(0x38);
Delay5ms();
Write_cmd_Func(0x38);
Write_cmd_Func(0x08);
Write_cmd_Func(0x01);
Write_cmd_Func(0x06);
Write_cmd_Func(0x0c);
}
4.LCD1602显示一个字符
我们上面已经把写命令函数,写数据函数,初始化函数等都已经写完了,现在就可以在main函数里面操作让我们的LCD1602显示一个字符了。
代码如下:
void main()
{
char position = 0x80 + 0x08; //定义显示的位置
char datashow = 'E' //定义显示的字符
LCD1602_Init();
Write_cmd_Func(position);
Write_data_Func(datashow);
}
效果如下:
完整资料可进群免费领取!!!
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!
猜你喜欢
- 2024-12-18 51驱动电子时钟1602显示 电子时钟51单片机
- 2024-12-18 浅析初次使用LCD1602时都不能一次点亮显示的问题
- 2024-12-18 FlexLua教程三行代码实现IIC PCF8574 串口 1602 单色 LCD 屏显示
- 2024-12-18 LCD1602液晶显示屏应用 液晶显示lcd1602程序
- 2024-12-18 51单片机学习笔记14 LCD1602显示屏使用
- 2024-12-18 STM8 单片机接入1602 LCD 单片机怎么接lcd
- 2024-12-18 Arduino 通过 I2C 驱动 LCD1602 液晶屏
- 2024-12-18 1602LCD液晶显示屏的显示 1602液晶屏显示原理
- 2024-12-18 Ardrino实例(五)LCD 1602 lcd1602连接arduino接线
- 2024-12-18 我在高职教STM32——LCD液晶显示(一)
你 发表评论:
欢迎- 01-11关于Vmware workstation的网络设置
- 01-11使用VMware Workstation虚拟机安装Windows 10详细教程
- 01-11VMware Workstation 17.5.1 Pro for Windows & Linux - 桌面虚拟化软件
- 01-11VMware? Workstation 17 Pro软件中,如何显示 “我的计算机” 选项卡
- 01-11银河麒麟桌面操作系统安装VMware workstation pro
- 01-11VmwareWorkstation17.6安装windows7x64虚拟机后安装vmtools
- 01-11发布VMware Workstation Pro 17.0稳定版
- 01-11VMware Workstation安装ESXi 7安装篇
- 最近发表
-
- 关于Vmware workstation的网络设置
- 使用VMware Workstation虚拟机安装Windows 10详细教程
- VMware Workstation 17.5.1 Pro for Windows & Linux - 桌面虚拟化软件
- VMware? Workstation 17 Pro软件中,如何显示 “我的计算机” 选项卡
- 银河麒麟桌面操作系统安装VMware workstation pro
- VmwareWorkstation17.6安装windows7x64虚拟机后安装vmtools
- 发布VMware Workstation Pro 17.0稳定版
- VMware Workstation安装ESXi 7安装篇
- 如何安装虚拟机(vmware workstation)
- VMware Workstation之网络配置
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)