当前位置:首页 » 媒体中心 » 展会新闻 » 技术干货 | 晶华微:带32位MCU和高精度ADC的SoC产品—-SD93F系列开发指南

技术干货 | 晶华微:带32位MCU和高精度ADC的SoC产品—-SD93F系列开发指南

图片

杭州晶华微电子股份有限公司

杭州晶华微电子(简称“晶华微”)成立于2005年,致力于高性能混合信号集成电路设计及销售,为用户提供一站式系统解决方案。产品包括工业控制及仪表芯片、智能感知芯片、医疗电子芯片、智能健康衡器芯片等,广泛应用于工业控制、仪表、压力测量、智能家居、医疗健康等领域,拥有多项核心技术及专利/软著。本期内容,我们将带来晶华微电子带32位MCU和高精度ADC的SoC产品—-SD93F系列开发指南(三)。

01 前 言           

在开发指南(二)中,我们简单介绍了按键中断的使用方法,由于示例程序的各个测试内容都有使用到LCD显示,所以本章先给大家讲解一下LCD显示的基本使用方法,参考应用手册第25章节。

02 LCD 结构 

在讲解LCD显示功能之前先了解一下LCD整体结构图,如下图1:

图片

图1. LCD整体结构图

从图中我们看到LCD整体结构分为Charge pump电路和LCD Driver电路,前者负责提供VLCD电压给LCD驱动电路,后者负责根据设置驱动LCD进行显示,其中控制VLCD电压即可控制LCD显示的灰度,写入LCDDATA即可控制显示内容,注意VLCD需外接1uF电容到VDD/GND,否则会影响显示效果。

03 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显示验证结果

04 开发问题简析

开发阶段使用LCD模块遇到最多的问题是显示乱码、亮度不够、屏幕闪烁,要重点关注SEG口选择是否正确、写入LCD_DR寄存器的顺序是否正确、宏定义是否正确以及VLCD电容是否外接,根据需要选择合适的负载驱动能力。

 

05 总 结

LCD模块的使用最重要的还是要理解如何准确点亮液晶屏对应的液晶段,其他的如显示字符、闪烁等等内容都只是在基础上进行应用。