[STM8L]基于STM8L152的TAB段式LCD液晶驱动的分析 - 单片机干货 - 中国电子技术论坛 - 最好最受欢迎电子论坛!...

[STM8L]基于STM8L152的TAB段式LCD液晶驱动的分析 - 单片机干货 - 中国电子技术论坛 - 最好最受欢迎电子论坛!.md 主控 芯片为STM8L152C4T6自带LCD控制器,低功耗系列,最近公司用到这个芯片,第一次接触STM8,刚毕业第一次做产品,也算是满成功的,发个帖纪念一下, 顺便记录一下自己学习段式LCD的过程,在查找段式LCD工作资料的过程中,确实有几篇好的博客,给了很大的帮助,但是仍然觉得不够详细,希望这次分析能够帮助到大家。首先看STM8的LCD控制器的两个关键寄存器:
一: Port mask registers (LCD_PM)
这是映射LCD控制IO的寄存器,寄存器内容如下:
215532y4wn4w4jijjt4eok.png.thumb.jpg

由图可知,当你使用了对应的IO口作为LCD的控制IO时,将对应的位置一即可,否则做普通IO处理。
二: LCD display memory (LCD_RAM)
215828xd0v9dtfuu9cfkcf.png.thumb.jpg
这是LCD显示缓冲寄存器,把需要写入的显示数据写入该寄存器即可显示,这个结合下面公司制作的LCD详细分析。
下面是我们公司制作的LCD原理图以及LCD接口原理:
220150wu7q7dy2n5i2qund.png.thumb.jpg220208aj252o4fg2elsv57.png.thumb.jpg220957kgf477wwrfvv7gv4.png.thumb.jpg





因为截图限制,在此说明LCD另外两个重要的工作参数,LCD_Duty_1_4,LCD_Bias_1_3,内部3V工作电压,这三个参数的具体含义在STM8L手册有关LCD的章节可以查阅到。
由段式LCD原理图可以看到,用户编号为S1,个数为S2,信号为S3,S4,S5,S6,S7,电池电量为S8,S9,S10,S11,五个“8”分别为1,2,3,4,5,以第一个“8”为例,七个段分别为1A,1B,1C,1D,1E,1F,1G,分别由PIN5,6跟COM1,2,3,4一起控制,因此需要将 Port mask registers (LCD_PM) 中的SEG20,SEG21置一,同时要在 LCD display memory (LCD_RAM) 中将显示的数据写入S0,S1,S2,S3对应的20,21位,这样就可以显示你想要的数据,前提是LCD初始化成功,下面分析下LCD初始化,是基于库函数形式的,工程模板是STM8L-EVAL板的LCD TEST工程,这是根据模板移植的初始化函数:
221549y12cho5z7vofedjj.png.thumb.jpg

首先是开启LCD工作时需要的时钟:
221702v5xoxb88ctxxf88x.png.thumb.jpg

接着是配置LCD需要的工作参数,即前面提到的三个重要参数以及其他参数,在STM8L参考手册中可查阅,最后使能LCD:
221815ghg0vhnvcvhhv8y1.png.thumb.jpg



221825ijkvzaajvx5vlcjt.png.thumb.jpg

再介绍一下清屏函数:
221933ayh4qwwq01qoch10.png.thumb.jpg

将显示缓冲寄存器中的所有地址写0即可实现LCD的全屏清除。
接下来在介绍下在初始化完毕后如何向LCD显示缓冲区写入显示数据:
先介绍下显示字符缓冲区的设计:
222134txybb1v4yn09kvqn.png.thumb.jpg

这是按照ABCDEFG的断码顺序设计的段码表,最后一位没有用到定为0,假设我们要写入0,那么需要将0对应的0XFC写入显示缓冲区,以第一个“8”为例,我们需要写入1A,1B,1C,1D,1E,1F,1G对应的数据,即1A=1, 1B= 1, 1C= 1, 1D= 1, 1E= 1, 1F= 0, 1G= 0,而 1A,1B,1C,1D,1E,1F,1G的地址结合LCD原理图,LCD接口原理图,以及显示缓冲寄存器可知1A=S0[21],1B=S1[20],1C=S3[20],1D=S3[21],1E=S2[21],1F=S1[21],1G=S1[20],所以讲上述数据写入这些地址后即可显示“0”。那么问题来了,1A对应[7]位,而S0[21]对应显示缓冲区的[5]位,无法直接写入怎么办?
所以在写入数据前需要对数据进行处理:
223240vc8l94pfrlkn4dil.png.thumb.jpg
过程不多做解释啦,希望大家看得明白。
下面是显示缓冲地址与段码对应的表格,大家或许能看的更清楚:
223508pk71p9xwwk7fprh9.png.thumb.jpg

总结一下:
一:初始化LCD,开启对应时钟,设置好工作模式及工作电压;
二:配置好LCD控制IO;
三:写入显示数据到显示缓冲区;
而关于显示数据的处理办法:先根据段码顺序制作好段码表,在写入时根据对应位做相应处理。
应工作要求只能提供以下附件,程序为EVAL板的程序,非此次LCD相关程序,可供大家参考,抱歉! STM8L_LCD.rar (75.52 KB, 下载次数: 264)
STM8L152C4T6Datasheet.pdf (1.83 MB, 下载次数: 202)

这次也只是做了初步了解,以后有机会再仔细研究!






转载于:https://www.cnblogs.com/mcumagic/p/6908154.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值