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

一: Port mask registers (LCD_PM)

这是映射LCD控制IO的寄存器,寄存器内容如下:



由图可知,当你使用了对应的IO口作为LCD的控制IO时,将对应的位置一即可,否则做普通IO处理。

二:LCD display memory (LCD_RAM)

这是LCD显示缓冲寄存器,把需要写入的显示数据写入该寄存器即可显示,这个结合下面公司制作的LCD详细分析。

下面是我们公司制作的LCD原理图以及LCD接口原理:

因为截图限制,在此说明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工程,这是根据模板移植的初始化函数:

首先是开启LCD工作时需要的时钟:

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

再介绍一下清屏函数:

将显示缓冲寄存器中的所有地址写0即可实现LCD的全屏清除。

接下来在介绍下在初始化完毕后如何向LCD显示缓冲区写入显示数据:

先介绍下显示字符缓冲区的设计:

这是按照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]位,无法直接写入怎么办?

所以在写入数据前需要对数据进行处理:

过程不多做解释啦,希望大家看得明白。

下面是显示缓冲地址与段码对应的表格,大家或许能看的更清楚:

总结一下:

一:初始化LCD,开启对应时钟,设置好工作模式及工作电压;

二:配置好LCD控制IO;

三:写入显示数据到显示缓冲区;

而关于显示数据的处理办法:先根据段码顺序制作好段码表,在写入时根据对应位做相应处理。

应工作要求只能提供以下附件,程序为EVAL板的程序,非此次LCD相关程序,可供大家参考,抱歉!

STM8L_LCD.rar

(75.52 KB, 下载次数: 264)

STM8L152C4T6Datasheet.pdf

(1.83 MB, 下载次数: 202)

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




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

  1. 基于等待队列及poll机制的按键驱动代码分析和测试代码

    按键驱动分析: #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> ...

  2. 页面显示LCD液晶字体或者其他特殊字体

    如果web项目中需要用到LCD液晶字体显示数值(如下图所示)该怎么办? 在这就需要用到@font-face(具体看一下语法) /* 定义 */ @font-face { font-family: 'M ...

  3. 基于FPGA的5寸LCD显示屏的显示控制

    基于FPGA的5寸LCD显示屏的显示控制 作者:lee神 1,图像处理基础知识 数字图像处理是指将图像信号转换成数字信号并利用计算机对其进行处理的过程.图像处理最早出现于 20 世纪 50 年代,当时 ...

  4. 单片机中不带字库LCD液晶屏显示少量汉字

    单片机中不带字库LCD液晶屏如何显示少量汉字,一般显示汉字的方法有1.使用带字库的LCD屏,2.通过SD 卡或者外挂spi flash存中文字库,3.直接将需要的汉字取模存入mcu的flash中. 第 ...

  5. 【雕爷学编程】MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏

    配套 2.4寸LCD屏 ST7789驱动器芯片(24P 320X240) ST7789驱动器芯片2.4寸LCD屏(24P 320X240)主要参数 1. 模块名称:液晶显示模块2. 型号:KD024C ...

  6. linux lcd设备驱动剖析一

    s3c2440 lcd驱动源码文件是:drivers/video/s3c2410fb.c 看驱动源码首先当然是先看入口函数,这里是s3c2410fb_init函数 [cpp] view plain? ...

  7. 水电表/燃气表/压力表/传感器/仪器仪表等,超低功耗段码LCD液晶显示驱动IC-VKL144A/B 超低工作电流,36*4COM显示,替代PCF8551/MCP144/BU9792/9B92/BL55072B等

    煤气罐的使用安全隐患较大,现在大部分城市使用管道输送燃气,燃气表的计费大都是通过远程抄表的方式,或者充值的方式,为了让用户更好地了解自家燃气表的使用情况,需要一款液晶屏来显示燃气表的状态和用气量等信息 ...

  8. 基于Spark和SparkSQL的NetFlow流量的初步分析——scala语言

    基于Spark和SparkSQL的NetFlow流量的初步分析--scala语言 标签: NetFlow Spark SparkSQL 本文主要是介绍如何使用Spark做一些简单的NetFlow数据的 ...

  9. 基于MT6752/32平台 Android L版本驱动移植步骤

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

随机推荐

  1. Qt编程简介与基本知识

    1. 什么是Qt? Qt是一个基于C++的跨平台应用程序和UI开发框架.它包含一个类库,和用于跨平台开发及国际化的工具. 由挪威Trolltech公司开发,后被Nokia收购,目前被Digia公司收购 ...

  2. GCC编译笔记

    需要移植一个vs2008的项目到linux上,代码比较复杂,重新写比较困难,于是开始折腾 首先移植到codeblocks上,sprints_s这类的vs函数都要改,windows调用要改 编译通过 c ...

  3. *** Python版一键安装脚本

    本脚本适用环境:系统支持:CentOS 6,7,Debian,Ubuntu内存要求:≥128M日期:2018 年 02 月 07 日 关于本脚本:一键安装 Python 版 *** 的最新版.友情提示 ...

  4. 如何选择Haproxy和Nginx

    对于做软负载,我们都知道主流的方案有LVS.Haproxy.Nginx!那么对于Haproxy和Nginx,我们如何选择呢?回答这个问题之前,我根据个人使用经验来讲下它们的特点! Haproxy特点 ...

  5. HDU5294——Tricks Device(最短路 + 最大流)

    第一次做最大流的题目- 这题就是堆模板 #include <iostream> #include <algorithm> #include <cmath> #inc ...

  6. 环信ONE SDK架构介绍

    环信ONE SDK架构介绍 摘要 环信即时通讯SDK自2014年6月正式公布2.0版本号至今已走过一个年头.从主要的单聊功能,到群聊功能,再到聊天室的实现.SDK无论是功能.稳定性,还是易集成性都在一 ...

  7. 面向对象程序的设计原则--Head First 设计模式笔记

    一.找出应用中可能需要变化的地方,把它们独立出来,不要和那些不需要变化的代码混在一起. 把会变化的部分取出并“封装”起来,好让其他部分不会受到影响.这样,代码变化引起的不经意后果变少,系统变得更有弹性 ...

  8. (十)jQuery对表单、表格的操作

    一.表单应用 1.HTML中的表单大致由三部分组成 (1).表单标签:包含处理表单数据所用的服务端程序URL,以及数据提交到服务器的方法. (2).表单域:包含文本框.密码框.隐藏域.多行文本框.复选 ...

  9. Runtime.getRuntime().exec()----记录日志案例

    Runtime.getRuntime().exec()方法主要用于运行外部的程序或命令. Runtime.getRuntime().exec共同拥有六个重载方法: 1.public Process e ...

  10. openssl生成https证书

    openssl生成https证书 分类: 其它2009-09-03 16:20 452人阅读 评论(0) 收藏 举报 includemoduleaccessapachessl服务器 openssl生成 ...