网站首页 > 技术教程 正文
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_();
}
完整代码可进群免费领取!!!
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!
点击这里找小助理0元领取:扫码进群领资料
猜你喜欢
- 2024-11-13 51火灾警报系统 STC89C52RC+DS18B20+MQ2+LCD1602+蜂鸣器+按键*2
- 2024-11-13 LCD液晶屏和数码管比较(lcd与数码管)
- 2024-11-13 序列之11:4x4按键和LCD1602(lcdi4)
- 2024-11-13 基于51单片机的分拣系统演示仿真,涉及:LCD1602...
- 2024-11-13 Arduino用超声波模块+LCD1602测距并显示
- 2024-11-13 Arduino + LCD1602 + DS1302 实现时钟和定时器
- 2024-11-13 LCD1602 液晶显示电路(lcd1602显示电路工作原理)
- 2024-11-13 Arduino液晶显示---1602液晶带IIC模块
- 2024-11-13 LCD1602 51单片机驱动程序#电子电路
- 2024-11-13 STM8 单片机接入1602 LCD(stm8a系列单片机)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)