LCD库函数使用

        博主本人之前一直使用的是F10系列的STM32芯片,这次项目需要用到LCD显示,故选用了STM32的L053芯片其IO口自带LCD驱动功能。使用新的一款芯片,首先当然是下官方手册(官网英文版过于简洁,中文版的比较适合初学者),然后找相似例程进行分析。

        当然关于LCD显示的原理,这里就不过多赘述了,我之前一篇博客已经详细介绍过了。下面我就结合例程来分析下,如何用库函数写LCD的程序。首先硬件原理图上LCD显示屏的引脚连接到芯片具有LCD复用功能的IO口上,分别有公共端COM口以及段码SEG口,例程中相应的LCD图如下:

       LCD库函数使用_第1张图片

        或许大家和我一样刚开始看到这副图片都是不太明白的,其实简单分析下就发现个数码管其实由4个COM口和8个SEG口共同点亮的。在L0系列的芯片中,每个COM口都有对应的缓存区,里面写入的值即对应各个SEG口,下面是COM口缓存区的部分截图:

            LCD库函数使用_第2张图片

       由上图分析也可得这款芯片支持COM最多对应52个SEG口,方便数值操作,一般把一个COM口的寄存器写入分为两部分后面具体代码会有分析。之后,我们便开始编码了,将要显示的不同数字图案的段码编辑好。注意一点,这里与传统单片机(如51之类不自带LCD硬件口的)编码不同。之前的普通单片机写数码管,都是一位即一个COM口对应一个要显示的数码管位,然后我们则会把要显示的数字段码置位,然而你仔细看LCD图会发现这里要点亮一个数字需要用到4个COM口。所以编码一次COM口操作,对应SEG口只需要操作2位即可。具体段码表如下:

        LCD库函数使用_第3张图片

       一、编码完后,我们开始程序实现显示LCD的过程。第一步:当然是老步骤,初始化IO口,开启时钟,这里例程用到数码管显示计时所以也开启下定时器。其IO口配置与F10系列略有不同,具体代码如下:

       LCD库函数使用_第4张图片

   二、第二步便是显示段码的写入,这里也是最为重点部分。因为是4位显示,所以共用到8段码即可所以定义的是8位存放段码变量,写入的方法也是按2位操作,分4次每次移位2位最后完成8位段码变量的编写。注意SEG1变量实际指SEG0到SEG7共8个段码口的存放数据,具体代码如下:

LCD库函数使用_第5张图片

三、第三步便是调用写入COM口缓存区的库函数,参数主要有COM口寄存器序号,值得注意的是L0系列最多支持52个SEG口,所以这个COM0便分为RAM0与RAM1,每个RAM有32位数据存放。还有参数为掩码,具体数值为0即可,具体代码图如下:

三步之后,LCD即可点亮。具体要配合按键控制和计时显示,我下篇博客再详细分析。

 

你可能感兴趣的:(LCD库函数使用)