LCD1602
一、关于LCD1602:
在编写LCD1602程序前,我们必须了解其手册上一些非常重要的信息,如果这些信息不能理解透彻,编程可能会遇到或多或少的问题,在此先大致归纳几点。
1.管脚:
1602共16个管脚,但是编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W(读写选择端),E(使能信号);以后编程便主要围绕这三个管脚展开进行初始化,写命令,写数据。
以下具体阐述这三个管脚:
RS为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。
R/W为读写选择,高电平进行读操作,低电平进行写操作。
E端为使能端,后面和时序联系在一起。
除此外,D0~D7分别为8位双向数据线。
RS
|
R/W
|
操作说明
|
0
|
0
|
写入指令码D0~D7
|
0
|
1
|
读取输出的D0~D7状态字
|
1
|
0
|
写入数据D0~D7
|
1
|
1
|
从D0~D7读取数据
|
注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0.
读取状态字时,注意D7位,D7=1,禁止读写操作;D7=0,允许读写操作;
所以对控制器每次进行读写操作前,必须进行读写检测。(即后面的读忙子程序)
3.指令集:
LCD_1602 初始化指令小结:
0x38 设置16*2显示,5*7点阵,8位数据接口
0x01 清屏
0x0F 开显示,显示光标,光标闪烁
0x08 只开显示
0x0e 开显示,显示光标,光标不闪烁
0x0c 开显示,不显示光标
0x06 地址加1,当写入数据的时候光标右移
0x02 地址计数器AC=0;(此时地址为0x80) 光标归原点,但是DDRAM中断内容不变
0x18 光标和显示一起向左移动
4.显示地址:
LCD1602内部RAM显示缓冲区地址的映射图,00~0F、40~4F分别对应LCD1602的上下两行的每一个字符,只要往对应的RAM地址写入要显示字符的ASCII代码,就可以显示出来。
5.读写时序:
时序图1602手册中有,这里不引用了。时序图很重要,编程就是根据时序图设置寄存器,让LCD工作。
二、LCD1602程序编写流程:
LCD1602在了解完以上信息后便可以编写,这里我们把程序分为以下几步:
1.定义LCD1602管脚,包括RS,R/W,E。这里定义是指这些管脚分别接在单片机哪些I/O口上。
现举例如下:
sbit EN=P3^4;
sbit RS=P3^5;
sbit RW=P3^6;
2.显示初始化,在这一步进行初始化及设置显示模式等操作,包括以下步骤:
设置显示方式
延时
清理显示缓存
设置显示模式
通常推荐的初始化过程如下:
延时15ms
写指令38H
延时5ms
写指令38H
延时5ms
写指令38H
延时5ms
注:以上写38H指令可以看情况省略1~2步
(以上都不检测忙信号)
(以下都要检测忙信号)
写指令38H
写指令08H 关闭显示
写指令01H 显示清屏
写指令06H 光标移动设置
写指令0cH 显示开及光标设置
3.设置显示地址(写显示字符的位置)。
4.写显示字符的数据。
三、LCD1602各子程序模块及主程序编写:
LCD1602的更多相关文章
- Arduino下LCD1602综合探究(下)——如何减少1602的连线,LiquidCrystal库,LiquidCrystal库中bug的解决方法
一.前言: 上文中,笔者系统的阐述了1602的两种驱动方式,并简单的提到了Arduino的LiquidCrystal库.本文紧接上文,对以下两个问题进行更加深入的探讨:如何能够使1602对Arduin ...
- Arduino下LCD1602综合探究(上)——1602的两种驱动方式,如何使LCD的控制编程变得更简单
一.前言: LCD ( Liquid Crystal Display 的简称)液晶显示器,已经逐渐替代CRT成为主流的显示设备之一,因此也成为了单片机发烧友绕不过的话题之一:而LCD1602更是很多单 ...
- spi接口的ds1302时钟芯片控制在lcd1602上显示
spi接口的ds1302时钟芯片控制在lcd1602上显示 ...
- 如何为编程爱好者设计一款好玩的智能硬件(九)——LCD1602点阵字符型液晶显示模块驱动封装(下)
六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(八)——LCD1602点阵字符型液晶显示模块驱动封装(中)
六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(七)——LCD1602点阵字符型液晶显示模块驱动封装(上)
当前进展: 一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计 ...
- LCD1602写自定义字符的Verilog源码
开发工具:Quartus II 9.1: 仿真软件:Questa Sim 10.0c: 硬件平台:Terasic DE2-115(EP2C35F672C6): 外设:hd44780控制器lcd1602 ...
- 自制单片机之四……LCD1602的驱动
LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶.字 ...
- 树莓派的演奏音符3 -- LCD1602显示文章
LCD1602它是低-cost输出装置.它具有体积小.简单的操作.低功耗优势.因此,在一些DIY 用它来输出关于产品的一些信息. 昨日在使用,尽管平局网上资源,但仍存在一些问题,确处理. 一.LCD1 ...
- 任意2个io直接驱动LCD1602,并且不需外加芯片(转)
http://www.amobbs.com/thread-4301955-1-1.html *此处只摘录部分内容,详细内容请关注原贴. 这就是电路,细心的朋友会发现实物图中有几个贴片的阻容件,秘密就在 ...
随机推荐
- 170418、vmware 安装 centos 开启网卡自启动
前言:CentOS虚拟机安装成功后,默认开机未启用网关,通过修改配置文件,启用网卡 开启方法如下: 1.登录系统,虚拟机安装完成后,第一次登录系统,系统只有一个账号,即超级管理员root账户,输入安装 ...
- 160415、sql语句sort排序,sort为空的在后面
按sort排序,sort为空的在后面 select * from 表名 order by (case when sort is null or sort='' then 1 else 0 end),s ...
- linLINUX中常用操作命令
LINUX中常用操作命令 Linux简介及Ubuntu安装 常见指令 系统管理命令 打包压缩相关命令 关机/重启机器 Linux管道 Linux软件包管理 vim使用 用户及用户组管理 文件权限管理 ...
- TCP控制位 sendUrgentData 队列 队列元素 优先级 极限 急停 置顶
Socket (Java Platform SE 7 ) https://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#sendUrge ...
- VMwareWorkstation与Device/CredentialGuard不兼容
win10的虚拟与VMware Workstation的虚拟有冲突,需要关闭win10自带的虚拟Hyper-V功能. 1.Windows键 --- 设置 --- 搜索 “控制面板” --- 程序 - ...
- flask中db.init_app(app)讲解
http://www.pythondoc.com/flask/extensiondev.html http://www.pythondoc.com/flask/extensiondev.html#fl ...
- UNIX或LINUX时间戳转时间
ORACLE: select TO_DATE('19700101', 'yyyymmdd') + 1481148929 / 86400 + TO_NUMBER(SUBSTR(TZ_OFFSET(ses ...
- d3.js:数据可视化利器之 修改文档:DOM操作符
style: CSS样式操作符 style()操作符用来设置或获取选择集中各DOM元素的CSS样式: selection.style(name[,value[,priority]]) style()操 ...
- ubuntu 打开 gbk编码的txt乱码
iconv -f gbk -t utf8 filename.txt > filename.txt.utf8
- 兼容ie的半透明背景颜色过滤器,会影响事件的触发.
兼容ie的半透明背景颜色过滤器,会影响事件的触发.