单片机学习笔记---LCD1602

LCD1602介绍

LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符(比如日文的片假名),还可以有8个自定义字符

显示容量:16×2个字符,每个字符为5*7点阵(其实是5*8的点阵,只不过字符只占了5*7)

引脚及应用电路

D0~D7口是数据口,代表一个字节的8位,是并行的传输接口

RS,RW,E控制数据是干什么的,或者控制什么时候改传输数据

我们开发板上的LCD1602的原理图

D0~D7接在单片机的P0口

内部结构框图

字模库就相当于数码管的段码表,其中CGRAM是可写的,是我们自定义字符的一个数据存储区。CGROM是不可写的,是内部固定的一个字模区。

我们想要它显示的数据实际上是写在DDRAM这一个存储单元里面去,然后再通过DDRAM里面的这个数据来向字模库找到相应字符的显示点阵的字模,然后再在屏幕的对应位置上显示我们的数据。DDRAM中虽然有40列,但是只有前16列才能映射到屏幕中。后面多出那么长可以利用内部指令向左移平,左边移出去的数据会重新回到右边来。如果我们循环使用移平指令的话就可以实现流动字幕的效果。

AC(光标位置)和我们前面将的AT24C02的这个地址计数器是一个东西,操作后会自动增加。我们可以把它想象成一个AT24C02,我们可以把光标位置设置在某个存储器的地址,然后写数据,那这个光标位置会自动加1向下,这样我们就可以连续写,就可以写一串数据了。

那这个AC的地址是怎么确定的呢?它也是我们的指令来确定的。

存储器结构

DDRAM(数据显示区)

CGRAM+CGROM(字模库)

它最多只能定义8个自定义字符。后面8个和前面8个地址是重复的地址,一样的。

后面都是ROM区,是固定的,不能改的字符,比如想要显示A,那它的索引码就是0100 0001,换成16进制就是0x41。

并且这个索引码和ASCII码值是一样的,所以我们在写索引码的时候可以直接用单引号把大写的A引出来’A’,就相当于写一个0x41

时序结构

写数据/指令

我们主要是给LCD1602写数据,所以读的时序就不管了。

LCD1602指令集

第一个指令(指令码0x01):清除AC就是光标复位,清除DDRAM就是清屏

第二个指令中*号是代表无关位

第三个指令(输入方式设置):我们常用的是0x06那个指令码

第四个指令(显示开关控制):我们常用的是0x0C那个指令码

第五个指令中的0x18指令码可以用来做流动字幕

第六个指令我们常用的是0x38那个指令码

第七个指令是可以用来设置自定义字符

第八个指令是很关键的一条指令,1固定在最高位。PS:比如如果想要把光标设置在第一行第一列,我们应该发的指令是0x80,因为最高位表示设置光标位置,剩下7个0就代表它的实际地址;如果想要设置在第二行第一列,那我们就设置成1100 0000=0xC0

我们一般不用读所以先不管第九条指令

LCD1602操作流程

初始化:

发送指令0x38 //八位数据接口,两行显示,5*7点阵

发送指令0x0C //显示开,光标关,闪烁关

发送指令0x06 //数据读写操作后,光标自动加一,画面不动

发送指令0x01 //清屏

显示字符:

发送指令0x80|AC //设置光标位置(原因请看前面第八条指令的举的例子就明白了)

发送数据 //发送要显示的字符数据

发送数据 //发送要显示的字符数据

……

以上就是本节的内容,下一节开始代码演示!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/471438.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能汽车专题:华为赋能下的车企,具备下一阶段Winner的潜质

今天分享的是智能汽车系列深度研究报告:《智能汽车专题:华为赋能下的车企,具备下一阶段Winner的潜质》。 (报告出品方:广发证券) 报告共计:27页 华为汽车业务历史沿革 基于ICT领域的深厚积累…

家里台式机需要把一个网站发布到外网可用,怎么搞?--DDNS配置(动态域名解析配置)

前言 Dynamic DNS是一个DNS服务。当您的设备IP地址被互联网服务提供商动态变更时,它提供选项来自动变更一个或多个DNS记录的IP地址。 此服务在技术术语上也被称作DDNS或是Dyn DNS 如果您没有一个静态IP,那么每次您重新连接到互联网是IP都会改变。为了避免每次IP变化时手动更…

重磅!谷歌宣布发布Gemini 1.5 Pro,距离Gemini发布仅仅一个半月!最高支持1000万上下文长度,GSM8K评测全球第一

本文原文来自DataLearnerAI官方网站: 重磅!谷歌宣布发布Gemini 1.5 Pro,距离Gemini发布仅仅一个半月!最高支持1000万上下文长度,GSM8K评测全球第一 | 数据学习者官方网站(Datalearner)https://www.datalearner.com/bl…

Atcoder ABC339 D - Synchronized Players

Synchronized Players(同步的球员) 时间限制:4s 内存限制:1024MB 【原题地址】 所有图片源自Atcoder,题目译文源自脚本Atcoder Better! 点击此处跳转至原题 【问题描述】 【输入格式】 【输出格式】 【样例1】 【…

Python算法100例-1.6 打鱼还是晒网

1.问题描述2.问题分析3.算法设计4.确定程序框架5.求出指定日期距离1990年1月1日的天数6.完整的程序7.补充知识点 1.问题描述 中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起便开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”…

【AIGC】Stable Diffusion的常见错误

Stable Diffusion 在使用过程中可能会遇到各种各样的错误。以下是一些常见的错误以及可能的解决方案: 模型加载错误:可能出现模型文件损坏或缺失的情况。解决方案包括重新下载模型文件,确保文件完整并放置在正确的位置。 依赖项错误&#x…

Write operation failed: computed value is readonly问题解决

源代码: // 封装倒计时逻辑函数 import { computed, ref } from vue import dayjs from dayjs export const useCountDown () > {// 1.响应式数据const time ref(0)// 格式化时间const formatTime computed(()>dayjs.unix(time.value).format(mm分ss秒))/…

QPaint绘制自定义坐标轴组件00

最终效果 1.创建一个ui页面,修改背景颜色 鼠标右键->改变样式表->添加颜色->background-color->选择合适的颜色->ok->Apply->ok 重新运行就可以看到widget的背景颜色已经改好 2.创建一个自定义的widget窗口小部件类,class MyChart : public QWidget m…

Python算法题集_二叉树的层序遍历

Python算法题集_二叉树的层序遍历 题102:二叉树的层序遍历1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【DFS递归】2) 改进版一【BFS迭代】3) 改进版二【BFS迭代循环】 4. 最优算法 本文为Python算法题集之一的代码示例 题102&am…

我的NPI项目之嵌入式总线系列(一) -- SPI 总线

SPI总线很有意思, 如我的NPI项目之Android 安全系列 -- 外挂SE集成(SPI)接口-CSDN博客 提到SPI的接口,基本的电气特性已经给出。这边文章就针对协议部分进行详细解析。从协议网找到了原文:SPI protocol 还有wilipedi…

(五)【Jmeter】使用代理录制HTTP脚本操作步骤及注意事项

前置信息 软件版本Jmeter5.6.3服务网址备注drupalhttp://192.168.88.88:18080/(二)【Jmeter】专栏实战项目靶场drupal部署 用户名密码test1test1test2test2实操记录 1、启动jmeter,操作顺序见下图 2、在视图面板添加如下信息,点击开始

请标记你的龙年心愿关键词

昨天外孙陪我游了崇州市白头镇、道民镇(竹艺村),见我心情愉悦,今天再陪我去饱览其他风景名胜,所以笔者——本“人民体验官”特别推广人民日报官方微博文化产品《2024年第一批春花开了》《#大年初七#,标记你…