带32位MCU和高精度ADC的SoC产品(三)

一、前言
在开发指南(二)中,我们简单介绍了按键中断的使用方法,由于示例程序的各个测试内容都有使用到lcd显示,所以本章先给大家讲解一下lcd显示的基本使用方法,参考应用手册第25章节。
二、lcd结构:
在讲解lcd显示功能之前先了解一下lcd整体结构图,如下图1:
图1. lcd整体结构图
从图中我们看到lcd整体结构分为charge pump电路和lcd driver电路,前者负责提供vlcd电压给lcd驱动电路,后者负责根据设置驱动lcd进行显示,其中控制vlcd电压即可控制lcd显示的灰度,写入lcddata即可控制显示内容,注意vlcd需外接1uf电容到vdd/gnd,否则会影响显示效果。
三、lcd显示:
接下来我们按照main函数的执行顺序简单介绍一下如何控制lcd驱动液晶屏进行正常显示。上电后先对lcd模块进行初始化(见图2),第一步还是要先开启外设时钟源,然后根据使用的液晶屏规格选择com数量和seg数量,示例程序使用的液晶屏为4com,显示内容‘123456’只需要12个seg即可满足,因此可以选择任意的12个seg引脚作为液晶脚,示例程序以seg0-seg11作为液晶脚,其他seg引脚仍做数字功能使用,选择vlcd电压为3.3v,其余设置保持默认值,最后打开charge pump模块和lcd驱动电路。
图2. lcd初始化函数
lcd初始化完成后,接下来要在液晶屏上显示‘123456’。首先液晶屏的每个引脚都有对应控制的段码(参考图3),其中pin1-pin12引脚可以对应连接到芯片的任意12个seg引脚,为了便于代码编写,我们选择将pin1-pin12连接至芯片的seg0-seg11引脚,pin13-pin16连接至芯片的com0-com3引脚。
图3. 液晶屏段码
图4. 液晶屏段码对应
参考图4的示例和图3的段码可以发现每个‘8’形状的全部段码都被分配在两个相邻的pin脚,也就是说控制seg0-1、seg2-3、seg4-5、seg6-7、seg8-9、seg10-11就可以完全独立的控制6个‘8’的显示。
我们再看一下lcd_dr2寄存器(见图5,与其他lcd_drx寄存器仅控制的seg不同),可以分为4个部分s11c7-0,s10c7-0,s09c7-0,s08c7-0,其中s是seg的缩写,c是com的缩写,即s11c3代表可以控制seg11&com3对应的液晶段,也就意味着一个lcd_drx寄存器就能控制4个seg口进行显示,在8com设置下可驱动最多32段液晶段显示4个‘8’,由于我们使用的液晶仅需要4com,因此仅能驱动16段液晶段显示2个‘8’。
图5. lcd_dr2寄存器
由此可以根据需求控制液晶段组合显示成阿拉伯数字、大小写英文字母或其他人为定义的显示内容,例如从图3中可以看到seg11控制6f、6g、6e、p6,seg10控制6a、6b、6c、6d,seg9控制5f、5g、5e、p5,seg8控制5a、5b、5c、5d,共16段,按顺序在lcd_dr2寄存器写入0x0e0b0c0b,就可以控制lcd显示数字‘5’和‘6’(如图6),最后我们将常用的显示内容进行组合定义,便于随时取用(如图7,不同液晶屏的组合顺序不同,使用时需要注意)。
图6. lcd显示‘56’
图7. lcd显示字符组合
当这些准备工作完成之后,驱动lcd显示我们想要的内容就变得非常简单了,首先确定我们要显示在哪一位上,要显示的是什么字符,再调用函数lcd_displaydata,其中num表示显示在哪一位,data表示显示的是什么字符,例如在第1位显示数字‘0’,则num=1,data=0x00,通过比较即可将宏定义结果‘disp_num0’取出(如图8的过程),再进入显示程序lcd_mydisplay即可将数字‘0’显示在第1位上。
图8. 自编lcd函数
最后我们按顺序显示‘123456’,实际运行后的结果如图9。
图9.lcd显示验证结果
四、开发问题简析:
开发阶段使用lcd模块遇到最多的问题是显示乱码、亮度不够、屏幕闪烁,要重点关注seg口选择是否正确、写入lcd_dr寄存器的顺序是否正确、宏定义是否正确以及vlcd电容是否外接,根据需要选择合适的负载驱动能力。
五、总结:
lcd模块的使用最重要的还是要理解如何准确点亮液晶屏对应的液晶段,其他的如显示字符、闪烁等等内容都只是在基础上进行应用。
示例程序:sd93f115-jbs_test.zip


如何使用Arduino开发板连接干簧管(Reed Switch)
Android Wear深度解读:以通知为中心
iPhoneX和iPhoneSE将停产新品iPhone的价格大概是多少?
EMI测试外置预放是如何降低底噪的?
国际大厂争抢规格制定权,人工智能深入学习成应用焦点
带32位MCU和高精度ADC的SoC产品(三)
IGBT的模块温度循环及绝缘特性分析
Facebook:2018聚焦VR一体机 推动VR设备走向主流
新政出台:中央直补新能源汽车
中国联通与格力签署合作协议,打造领先的家电产业5G智慧工厂示范区
通过Goooood®狗帝 融合CDN解决内容传递痛点:
蔚来NIO Phone发布:蔚来风格,旗舰选择
中国的风电与光伏之争将在2026年后加剧
帮你解决功耗、效率问题!看看18W电源适配器方案有多给力
如何实现机智云开源框架下的换肤操作?
EMC静电防护方法
基于OpenVPX的嵌入式系统标准的三服务融合
人工智能在2020年的发展趋势你了解吗
油罐车尾的铁链消失不见,如何量化材料的电阻率?
努比亚Z17坐拥一大“世界第一”:率先启用QC4.0快充