浅谈LCD、OLED、TFT取模及其程序开发的算法取舍 |
您所在的位置:网站首页 › lcd显示驱动程序设计及其字符图像设计方法 › 浅谈LCD、OLED、TFT取模及其程序开发的算法取舍 |
做任何电子产品,必然有人机交互的部分,对于开发人员而已,可能性只需要一个简单的串口就可以完成产品所有功能上的开发,但是产品推广后期必然会加入一些显示器件,最常用的就是LCD、OLED、TFT(可能还有一些,毕竟天外有天),这里罗列出本人所使用过的一些显示器件,并对这些显示器件的开发小工具及其算法简单的进行说明(个人的理解,可能会有偏差)。 本文以OLED12864为硬件平台,以取模软件PCtoLCD2002为软件平台,分析逐列式、逐行式、列行式、行列式四种取模方式及其算法以及算法的选择。(算法主要针对16X16像素汉字,但亦可稍作修改移植运用到写16X8像素字符或图片显示)(为便于理解,算法没做太多优化) 一、常用的显示器件:(介绍最常见的6种)(1)LCD1602(单片机初学者最熟悉不过的型号,实际上LCD1602也可以显示中文,但是效果不是很好,这里不再详细说明)
(2)LCD2004(每行可显示20个字符,共4行,操作方法和LCD1602几乎相同,只是把LCD1602的80字节的内存数据全部显示出来而已)
(3)NOKIA5110(SPI协议,可显示中文)
(4)LCD12864(又分为有字库液晶12864和无字库液晶12864,但是都可以显示中文)
(5)OLED12864(和LCD12864类似,但是其优点更多,未来趋势,本文章的实验硬件平台)
(6)TFT液晶屏(暂无图片) 二、常用的液晶屏取模软件 (1)《Image2Lcd 2.9(破解版)》 下载链接:http://pan.baidu.com/s/1mg9ZFAw Image2Lcd 界面:
对于这个软件,本人目前没有使用过,所以暂时没有发言权,如果有使用过的朋友,希望可以不吝赐教。
(2)《zimoV2.2》 下载链接:http://pan.baidu.com/s/1qWuYy8s
(3)《LcmSim LcmZimo TakeDotLib 组合软件》 下载链接:http://pan.baidu.com/s/1gd2csP9 LcmSim 界面:
LcmZimo界面:
TakeDotLib界面:
(4) 《PCtoLCD2002》 (本文章的实验软件平台 ) 下载链接:http://pan.baidu.com/s/1qWKGR16 PCtoLCD2002界面:
三、OLED实验效果演示: 首先,介绍一下我所使用的OLED12864,其驱动为SSD1306,支持以下5中通信模式: 1. IIC通信模式 2. 3线式SPI通信模式 3. 4线式SPI通信模式 4. 6800系列并行通信模式 5. 8080系列并行通信模式 本次实验,我采用IIC通信模式。(实际上不论是哪一种通信模式,区别只是在写命令函数和写数据函数的具体操作不同,所以只需要修改这两个函数,就可以达到移植的目的)
(1)OLED12864显示ASCII值:
(2)OLED12864横向滚屏: (3)OLED12864纵向滚屏
(4)OLED12864斜向滚屏
(5)OLED12864综合滚屏:
(6)OLED12864画棋盘;
(7)OLED12864画图片
(8)OLED12864反转显示:
四、算法分析 OLED12864内部没有集成字库,所以需要我们自己利用PCtoLCD2002取模软件取出我们需要的文字,然后在程序中对照数据,进行编写程序。在讲解具体算法之前,需要先了解OLED12864的地址结构。蓝色部分表示默认情况下的页和列配置,红色部分是进行页和列的重映射后的情况页地址和列地址。
正因为OLED12864可以进行页地址和列地址的重映射,所以可以做到下图的效果:(实际上很多液晶屏都有这种特性) (默认情况:上图Figure8-13中的蓝色部分配置时显示文字)
(重映射情况:上图Figure8-13中的红色部分配置时显示文字)
另外, OLED12864的三种地址模式,分别是:页地址模式、水平地址模式、垂直地址模式。(默认页地址模式) (1)页地址模式 在页地址模式中,当RAM数据被读取或者写入后,列地址指针自动加一。如果列地址指针到达本页的最后一列后,再增加一则回到本页的第一个Column0列地址,而页地址指针不变(还在本页)。用户需要设置新的一页的第一列地址然后再去写RAM数据。如下图所示:
(2)水平地址模式: 在水平地址模式下,当RAM被读取或者写入后,列地址指针增一,当列地址到达本页的最后一个地址时,再增加一则列地址变为Column0,但页地址同时也会增加一。当列地址和页地址都到达最后时,再增加一则列地址和页地址都会跳转到最开始的位置,即Column0和Page0.
(3)垂直地址模式: 在垂直地址模式下,当RAM被读取或者写入后,页地址自动增加一,如果页地址到达Page7,再增加一会变为Page0,同时列地址加一。当页地址和列地址都到达最后,再增加一就会变为Page0和Column0.
以上主要以OLED12864入手,讲解了其内部的地址模式,尽管其他的显示模块和OLED12864的模式会有不同之处,但是主要思路是相似。下面结合PCtoLCD2002来讲解具体算法。取模软件PCtoLCD2002有四种取模方式,如下图红色部分所示(蓝色部分默认即可),
(1)逐列式 逐列式取模过程如图所示:
逐列式程序控制书写过程:
逐列式其算法思路是: (1)确定地址(页地址和列地址) (2)写数据 (3)页地址加一 (4)写数据 (5)返回步骤1所处的页地址(列地址指针自动加一,无需程序控制) (6)上面步骤1~5重复16次,完成16X16像素汉字书写。 算法如下: [cpp] view plain copy print ? /*逐列式*/ for(j=0;j |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |