网易首页 > 网易号 > 正文 申请入驻

透彻理解液晶显示模组LCD1602指令集与驱动编程(2)

0
分享至

来源:今日头条——电子制作站

通过前一篇文章的学习,我们已经可以在液晶显示模组LCD1602上显示想要的字符,接下来就是逐条指令逐步调试的过程。在实际学习与应用时,新手工程师不可能从一开始就能够透彻理解每一条指令的细节,此时我们最好给LCD1602发送指令并且观察相应的显示效果,同时对照数据手册来理解指令的具体行为。

有些人老早就憋了一肚子话了:你丫的就只有从屏幕左上角开始显示字符本事吗?能不能把字符写在右上角,使字符串“dzzzzcn”的最后一个字母“n”恰好显示在液晶屏的最右侧呢?做到了我给你写个“服”字。

坦率的讲,我的本事的确不大,但是将显示位置加以修改这种“高难度”的操作还是难不倒我的,只需要使用“DDRAM地址设置(Set DDRAM address)”指令即可,如下图所示:

可以看到,“DDRAM地址设置”指令的低7位是可以更改的,换句话说,这条指令可以设置的DDRAM地址有效范围为0x00~0x7F,总共128个地址。前面我们已经提过,HD44780内部DDRAM地址有80个,最大的地址为0x67,所以“DDRAM地址设置”指令可以指定80个DDRAM地址中任意一个作为数据写入的目的地。值得一提的是:设置DDRAM地址本质上就是设置AC(地址计数器)值,所以它同样也改变了光标的位置。

假设需要在右上角贴着右边界显示字符串“dzzzzcn”,应该设置的地址为多少呢?我们还是观察一下DDRAM地址与屏幕显示位置对应关系,如下图所示:

由于我们需要连续写入多个字符,所以只需要确定小写字母“d”的首地址即可,从上图可以看到,我们应该使用“DDRAM地址设置”指令将AC设置为“0x09”,然后连续写入“dzzzzcn”即可。但是需要注意的是,“DDRAM地址设置”指令的DB7位是为1的,所以应该写入指令应该是“0x89(0b1000_1001)”,我们来看看VisualCom软件平台中相应的预置数据:

我们只是在往DDRAM中写入字符串“dzzzzcn”之前,设置了DDRAM地址为0x09。另外,我们关闭了光标闪烁,这样就可以清楚地看到光标及所在位置显示的字符(光标闪烁状态下只能看到一个黑块,或只能看到显示字符),相应的仿真结果如下图所示:

可以看到,此时AC值为0x10,它已经超出了正常情况下屏幕可以显示的区域(第一行最右侧DDRAM地址为0x0F),由于AC值同样也是光标地址,所以在屏幕上是看不到光标的。

尽管我很不愿意再次讨论类似“从屏幕左上角显示字符”的话题,以免让你太过于小看我。然而,佛家有云:我不入地狱谁入地狱!为了更全面地讨论HD44780的指令集,我毅然决定忍辱负重介绍另外一条可以让我们从左上角开始显示字符的指令,它就是“归位(Returnhome)” 指令,如下图所示:

由于DB0是无效的,所以“0x2”与“0x3”都可以作为归位指令。我们来看看执行这条指令后都做了什么,数据手册的说明如下:

可以看到,归位指令首先将AC清零,如果移屏了就恢复原位,也就意味着光标位置回到显示屏的左上角(也就是说,关于光标位置变化的描述其实是多余的)。

前面仿真结果中的光标不是不见了嘛?我们使用归位指令就可以把光标显示在左上角,只需要在前面的预置数据结尾再加一条命令“0x2”或“0x3”即可,相应的效果如下图所示:

注意到AC=0,所以光标在左上角,但是DDRAM中的数据与前图并无二致。

HD44780还有一条可能会引起初学者混淆的“光标与屏幕移动(Cursor or Display shift)”指令,顾名思义,它可以控制光标的位置与移屏量,如下图所示:

有人可能会想:前一篇文章不是已经介绍了“进入模式设置”指令吗?其中就有移屏S位呀!这条指令是不是重复了?非也!这里需要指出的是,“进入模式设置”指令中开启的移屏功能只有在往DDRAM中写入数据时才是有效的,而“光标与屏幕移动”指令是一条专门用于移动光标与屏幕的指令,每写一次指令就会引起一次光标与移屏的变化,S/C表示你想要移动光标(S/C=0)还是想移动屏幕(S/C=1),而R/L则表示想往左移(R/L=0)还是往右移(R/L=1),数据手册有对这两位组合的说明,如下图所示:

假设我现在要使光标往右移一次,应该设置S/C=0(移动光标)与R/L=1(右移)。由于DB4为1,所以应该执行的指令为“0x14(0b0001_0100)”。(因为DB1、DB0无效,所以0x15、0x16、0x17与0x14的执行结果一样)

有心人可能会问:这条指令把光标移动了,那AC值是不是也发生了相应的变化呢?这是一个好问题!答案是肯定的。从上图中也可以看到括号中的说明:移动光标时,AC会自动累加或自减(AC isincremented/decremented by one)。反正我们始终要记往关键的一点即可:AC值代表着光标位置!就像只要学了九阳神功,神马龙爪手之类的少林绝学都是浮云,学其它神马武功也都不在话下,万变不离其宗,张无忌也忒厉害,武当山大展神威,太极剑以己之钝挡敌之无锋……

数据手册对AC的变化也有详细的说明,如下图所示:

我们注意最后一句:如果你执行的只是移屏操作,AC值是不变的。这句话反过来理解就是:如果你执行的是光标移动,AC值也会有相应的变化。另外,我们还要注意一个细节:使用“光标与屏幕移动(Cursoror Display shift)”指令移动光标时,在两行显示模式下,如果光标增加到了第一行结尾(0x27),再执行该指令将会使光标移到第二行的开始(0x40),这与往DDRAM中写入数据而引起的光标变化是不一样的,因为这时光标总是不会换行。

前面我们已经通过返回指令把光标定位到了左上角,现在我要把光标定位到小写字母“d”的位置,应该怎么做呢?你当然再次可以使用“DDRAM地址设置”指令,这里毫无疑问的,但你也可以使用9次“光标与屏幕移动(Cursoror Display shift)”指令将光标往右移9次。我们在前面的预置数据后插入9次“0x14”命令,如下图所示:

相应的效果如下图所示:

移屏功能有时也很有用,例如我需要在屏幕上显示的数据超过了一屏(字模数量超过了32个),由于屏幕的限制,某一时刻只能显示一部分,所以我决定按一定的速度左右移屏以展示所有内容,如下图所示:

这种移屏效果使用以前介绍的“进入模式设置”指令不太好实现,因为它每次移屏需要往DDRAM中写入数据,当然,也并不是实现不了,只要我们设置好地址重新刷一遍相同数据就可以,但是如果使用“光标与屏幕移动”指令则要简单得多。

最后我们来分析数据手册自带的一个实例,如下图所示:

该案例中的全部指令我们已经全部详细讨论过,但请大家注意第3步,它打开了显示与光标(不闪烁),但是在此之前只执行了“功能设置”指令,那为什么光标却还在左上角呢?大家请看第1步说明:HD44780U在上电时会被内部复位电路初始化。初始化后是什么状态呢?数据手册说明如下:

看到没有,复位后会执行清屏指令,而我们前面已经提过,清屏指令会将AC清零,也就是把光标移到左上角,所以在第3步执打开显示与光标指令后,光标就显示在左上角了。

在写第二行数据时(第8步),该案例使用了一条“DDRAM地址设置”指令(0xC0),在第12步开启了移屏功能,此后我们每往DDRAM中写入一个数据,屏幕就会进行一次左移屏。最后使用归位指令取消了移屏状态,并且将光标显示在左上角。

需要特别注意的是:虽然数据手册已经说明上电会复位,并且给出了复位后的状态,但是在实际产品设计时,我们仍然还是会使用相应的指令重新设置一遍,毕竟你要考虑到芯片复位失败的可能性,产品稳定性的设计还是需要考虑的

我们也按照案例将指令输入到VisualCom软件平台,相应的预置数据如下图所示:

与案例有所不同的是,我们多添加了一条清屏指令,因为为了突显《电子制作站》,我们从库中调出来的器件已经初始化了“join weixin mp dzzzzcn”这几行字。另外,我们写的都是字符串“dzzzzcn”,我想你是能够理解的,么么哒。相应的效果如下图所示:

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
重磅信号!统一可能要提前了!

重磅信号!统一可能要提前了!

大嘴说天下
2024-06-02 21:36:26
台湾问题根本不是武统与和统的问题了,而是以下这两方面问题

台湾问题根本不是武统与和统的问题了,而是以下这两方面问题

星辰故事屋
2024-05-24 20:01:38
地方政府主导城投贷款买自己的地,比例2年涨3成,背后隐藏大雷

地方政府主导城投贷款买自己的地,比例2年涨3成,背后隐藏大雷

爆角追踪
2024-06-02 16:58:51
复旦大学冯玉军:中国人民支持乌克兰,俄罗斯必败,乌会是胜利者

复旦大学冯玉军:中国人民支持乌克兰,俄罗斯必败,乌会是胜利者

泸沽湖
2024-06-02 12:07:47
何塞卢:我才刚拿一个欧冠,可有的混蛋都已经不庆祝了

何塞卢:我才刚拿一个欧冠,可有的混蛋都已经不庆祝了

懂球帝
2024-06-02 16:53:20
因失恋接拍三级片,她被多少人男人存在硬盘?

因失恋接拍三级片,她被多少人男人存在硬盘?

华人星光
2024-06-02 15:17:31
中国女排惨败意大利风波升级!排协深夜摊牌,蔡斌下课悬念揭晓

中国女排惨败意大利风波升级!排协深夜摊牌,蔡斌下课悬念揭晓

二哥聊球
2024-06-03 00:06:13
朱芳雨:不知道周琦被辽宁签走 我们一直在沟通:他在放假陪孩子

朱芳雨:不知道周琦被辽宁签走 我们一直在沟通:他在放假陪孩子

狼叔评论
2024-06-02 22:49:13
中国女排0比3不敌意大利,世界排名被日本女排超越

中国女排0比3不敌意大利,世界排名被日本女排超越

澎湃新闻
2024-06-02 20:50:31
震惊!阿里巴巴拒绝接受俄罗斯卢布付款,暂停向俄罗斯供货!

震惊!阿里巴巴拒绝接受俄罗斯卢布付款,暂停向俄罗斯供货!

杂谈空间社
2024-06-02 12:13:15
踩雷!知名国企巨头公告:3亿元理财到期,仅收回不到3000万元!曾花上百亿元买理财

踩雷!知名国企巨头公告:3亿元理财到期,仅收回不到3000万元!曾花上百亿元买理财

每日经济新闻
2024-06-02 18:04:11
总算尘埃落定了吧!“艾森豪威尔”号舰长再发动态,甲板运作如常

总算尘埃落定了吧!“艾森豪威尔”号舰长再发动态,甲板运作如常

影孖看世界
2024-06-02 20:43:32
加拿大最凶残“养猪场连环杀手”狱中遭袭身亡,曾自称杀害49名女性

加拿大最凶残“养猪场连环杀手”狱中遭袭身亡,曾自称杀害49名女性

红星新闻
2024-06-02 15:08:38
晨意帮忙丨“滴滴滴”怪声每半分钟响一次!长沙女子求支招:到底哪来的?

晨意帮忙丨“滴滴滴”怪声每半分钟响一次!长沙女子求支招:到底哪来的?

潇湘晨报
2024-06-02 21:44:11
惹怒“希尔顿们”的酒店代订,是门什么生意?

惹怒“希尔顿们”的酒店代订,是门什么生意?

潇湘晨报
2024-06-02 17:06:12
车管所发布通告:驾驶证自动降级正式启动!网友:我驾照白考了?

车管所发布通告:驾驶证自动降级正式启动!网友:我驾照白考了?

看看娱乐与体育
2024-06-02 22:17:26
动真格了,南京紧急通报,钱某某被拘留,花臂不简单,评论区沸腾

动真格了,南京紧急通报,钱某某被拘留,花臂不简单,评论区沸腾

历史有些冷
2024-06-02 18:00:02
泽连斯基指责龙国帮助俄罗斯破坏在瑞士举行的和平峰会

泽连斯基指责龙国帮助俄罗斯破坏在瑞士举行的和平峰会

亡海中的彼岸花
2024-06-03 03:00:03
伊朗前总统内贾德登记参选总统

伊朗前总统内贾德登记参选总统

界面新闻
2024-06-02 15:35:08
特朗普入驻TikTok 粉丝已破60万!

特朗普入驻TikTok 粉丝已破60万!

直新闻
2024-06-02 18:57:54
2024-06-03 06:26:44
慕乐科技说
慕乐科技说
给大家分享科技的新一代资讯
98文章数 97011关注度
往期回顾 全部

科技要闻

黄仁勋:2026年将推下代GPU架构平台Rubin

头条要闻

女子称穿7cm厚洞洞鞋下楼时崴脚摔倒 左腿粉碎性骨折

头条要闻

女子称穿7cm厚洞洞鞋下楼时崴脚摔倒 左腿粉碎性骨折

体育要闻

从0-1到2-1!石宇奇绝地反击逆转队友李诗沣,豪夺赛季第3冠

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

新造车5月销量: 小鹏乏力 问界暂"缺席"

汽车要闻

吉利银河E5 Flyme Auto智能座舱首发

态度原创

时尚
教育
健康
艺术
公开课

涂山“红红”现身戛纳?

教育要闻

TTS新传论文带读:中国互联网30年!一篇文章就给整明白!!!

晚餐不吃or吃七分饱,哪种更减肥?

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版