基于C8051F的OLED控制电路的设计

发布者:RadiantBlossom最新更新时间:2010-12-26 来源: 微计算机信息关键字:SSD1303  控制电路  字模提取 手机看文章 扫描二维码
随时随地手机看文章

1 引言

  有机电致发光显示,又称有机发光二极管(Organic Light Emitting Diode, OLED)或有机发光显示器Organic Light Emitting Display(OLED),相较于目前市场上流行的液晶显示器(LCD)有明显的优势,主要表现为:自主发光(不需要背光源),无视角问题(视角可达170°以上),重量轻,厚度薄,亮度高,发光效率高,响应速度快(是液晶的1000倍),动态画面质量高,温度范围广(温度范围-40℃~80℃),低功耗,抗震能力强,制造成本低,可柔性显示。尤其适用于要求高亮度的仪表行业,以及条件要求更高的军工产品。与各方面已经发展成熟的LCD相比,OLED的发展还处于初级阶段,但随着以上这些优势的逐步实现,OLED将极有可能取代LCD在市场上的地位,OLED是被业界公认为最具发展前景的下一代显示器。

  2 硬件结构设计

  本文利用单片机C8051F023作为128×64单色OLED的控制核心器件,采用的是维信诺公司的一款屏VGG12864G,它利用Solomon公司的SSD1303为专用驱动IC。实现文字显示及图像的动静态显示。硬件整体设计结构框图如图1所示。

图 1 硬件设计结构框图

Fig.1 System diagram

  2.1 SSD1303 驱动及接口电路

  VGG12864G模块的OLED显示屏为128列,64行结构。图2为SSD1303结构框图,显示了模块逻辑电路和接口电路的框图。用户只需要给接口提供电源、产生驱动指令信号和显示数据信号,就能点亮OLED屏。从图中可以看出,行、列驱动器的输出通过FPC邦定到OLED屏,剩下的MCU接口、电压和电流控制器需要是其专门设计的接口和驱动电路,模块的外部信号仅与SSD1303发生关系。所以了解了SSD1303的输入特性及指令系统,就能方便地使用本模块了。

  SSD1303是晶门公司推出的驱动单色OLED的IC,采用TAB封装。这种基于CMOS工艺的驱动IC集成了行、列驱动器、振荡器、对比度控制器和图形数据存储器(GDDRAM),很大程度地减少了外围器件和功耗。可支持的最大分辨率为132×64,其中OLED屏底部132×16的点阵区域可以显示4色的局域色,并可编程实现64级灰度,当用于单色显示时,可编程控制256级对比度。根据所使用微处理器(MPU)的不同,它提供8位6800系列MPU并行、8位8080系列MPU并行和Serial Peripheral Interface (SPI)串行三种通信接口模式。

  控制命令通过MCU接口输入到控制命令解码器进行命令解码,然后输出时钟、行同步、场同步信号,从而控制OLED显示的振荡频率、显示器件的电压转换模块以及OLED显示内容的行列偏移量的驱动模块;如果是显示数据(128×64bits),那么显示数据由控制电路通过MCU接口输入到GDDRAM缓存,然后通过局域色解码器对数据进行解码,最后将解码后的显示数据通过行列驱动器驱动OLED显示,OLED上呈现了稳定的显示效果。

图2 SSD1303结构框图

Fig.2 Device configuration of SSD1303

  2.2 电源的设计

  硬件结构设计框图如图2所示,外部硬件电路的DC-DC转换器用TPS7333芯片将5V电源转换成3.3V电源,并将输出的电源信号通过电压和电流控制器控制整个SSD1303的电压和电流。整个系统需要3.3V和12V的电源,MCU(本文采用C8051F023)需要提供3.3V的电源电压,OLED需要3.3V的逻辑电源电压和9~12V的驱动电源电压,此驱动电源电压由外部电源转换器电路提供。

  2.3 各种控制信号

  再就是关于如何用MCU控制,MCU通过RES#、CS#、D/C、WR#、RD#和D0~D7共13个接口控制SSD1303驱动IC,从而控制OLED显示屏。CS#为片选信号,当CS#接低电平时MCU才能与驱动IC通信;RES#是复位使能端,当接低电平时,所有控制寄存器均被设定为出厂时的默认状态,同时图像寄存器清零;D/C为数据/命令选择信号;WR#和RD#分别为写和读选择信号,当CS#为低时,在其下降沿读写有效。通过改变D/C、WR#和RD#三个接口的高低,单片机对OLED的控制有四种状态,可由表1显示出来。
 

表1 读写状态一览表

D/C

WR#

RD#

状态

0

0

1

写命令

0

1

0

读命令(“忙”检测)

1

0

1

写数据

1

1

0

读数据

  2.4  读写的时序

  只要按照VGG12864G的时序波形图进行读和写,即可完成OLED的显示。但是,通过软件编程拼时序的话,要考虑到许多时间参数,有一定的难度。为了使得数据和命令能够更容易的顺利读写,我们采用另外一种办法。如图1所示,将WR#和RD#分别接C8051F023的/WR和/RD,即P0.7和P0.6。在C语言编程时定义指针类型为xdata型,它是指向片外存储器的,通过给指针的赋值访问片外的数据存储区,当访问片外存储器时,/RD和/WR会在读和写时自动变低,同时P3端口为数据总线,非复用方式下,地址总线的高8位使用P1口,低8位使用P2口;复用方式下,地址总线高8位仍使用P1口,低8位和数据总线复用P3口,P2口就不会受到影响。所以最好设置成复用方式(EMIOCF.4=0),P2口就可以用来作别的输出端口,自由地控制RES#、CS#、DC。虽然不需要地址总线,但访问片外存储器时地址线会被使用,所以仍要避开。实验结果的时序波形图如图3所示。只要CS#为低时,在WR#(RD#)的下降沿写入(读出)数据或命令,即可有效地完成读写的工作。

图3 时序波形图

Fig.3 Timing characteristics

  3 软件程序的设计

  整个单片机控制OLED的显示程序用C语言编写,主要程序流程图如图4所示。单片机初始化包括关闭看门狗、时钟初始化、端口初始化,以及定时器和中断的初始化。OLED初始化包括开显示、设置显示模式、设置对比度控制器、对比度设置(1~256)、设置行列起始地址、设置具体位置颜色、设置串口管脚配置。清OLED屏和OLED显示都是往GDDRAM里写数据,包括读状态、写命令、写数据子程序,清OLED屏就全写“0”,OLED显示只要写入所要显示的文字或图片的字符代码即可。每次写(命令或数据)之前都要读状态,看最高位D7是否为“0”,也称之为“忙”检测,如果为“1”,表示“忙”;反之为“闲”,在“闲”的状况下才可以写操作。

图4 程序流程图

Fig.4 Flowchart of software

  4 文字和图片的显示

  VGG12864G内置128×64 bits的显示存储器,用于存储显示数据,图5为RAM的地址结构。RAM容量为128×64=8192 bits,它被分成8页(page0-page7),每页8行,每页的第一列刚好是一个字节,低位在上,高位在下;显示屏上各像素点的显示状态与显示存储器的各位二进制数据一一对应,显示存储器的数据直接作为图形显示的驱动信号。数据显示为“1”,相应的像素点显示;数据显示为“0”,相应的像素点不显示。

  所显示文字或图片的字符库,需要自己造,但人工的几乎不可能,可以选用字模提取软件——“字模提取 V2.2 ”,该软件提供两种取模方式:横向和纵向。再根据OLED显示数据的RAM地址结构,选纵向的取模方式,由于OLED模组的字节结构是高位在下低位在上,所以要设置成字节倒序,字符的字体、字形、大小和显示效果(下划线和删除线)可根据需要进行调整,然后采取C51格式(若用汇编语言编程可采取A51格式)取模生成单个字符的点阵显示代码,最后根据需要在OLED屏上的显示效果,对代码进行相应调整即可得到所需字符库。

图5 显示数据RAM的地址结构

Fig.5 GDDRAM Address Map

  根据所要显示的文字或图片生成所需字符库,通过OLED显示程序将字符代码写入并存储在SSD1303的GDDRAM模块后,就可以稳定地显示出来。通过软件编程也可实现图片的动态显示,如图6为该系统所完成的文字和图片显示。

图6 字符的显示

Fig.6 Display of characters


图7 静态图片的显示

Fig.7 Display of static pictures

  5 结论

  设计了一种基于单片机实现OLED显示的方法。针对其功能和特性,解决了相关部分的电路设计,并在所开发的系统上实现了文字、动静态图片的显示。实验证明:该设计电路简单,为该系统大大降低了成本,使该系统可以应用在小型设备上。

关键字:SSD1303  控制电路  字模提取 引用地址:基于C8051F的OLED控制电路的设计

上一篇:采用C8051F020设计的嵌入式测试仪
下一篇:基于C8051F021的直流电源监控系统

推荐阅读最新更新时间:2024-03-16 12:31

电容式接近控制电路设计
    在图中,三极管VT1与周围元件构成一个射频振荡电路;金属感应电极片连在VT1的集电极作为探测器。在没有其他导体接近感应电极片时,VT1组成的振荡电路正常振荡,此时VT1发射极输出的射频电压信号经VD1、VD2检波后成为直流控制信号,该信号使开关管VT2导通,继电器得电吸合,接通被控电路的电源:当有导体接近感应电极片时,由于任何靠近感应电极片的导体都会感应出电极片和“地”之间的电容,而电容的增加就会降低振荡器的正反馈量直至振荡器停止振荡,如果振荡器停振,射频检波电路就不再输出直流控制信号,此时开关管VT2就会截止,使继电器失电断开,而且继电器断开后需要再松开开关S再闭合后,电路才能进人下一次振荡状态,否则继电器就一直断开。  
[嵌入式]
简单人工智能的温度控制电路设计
  介绍一种具有简单人工智能的温度控制电路,使用该电路进行温度控制时,只需将开关打在2的位置,通过设定控制温度,并通过3位半数显表头所显示的温度值,即可精确地控制温度,使得温控操作变得十分方便。LM35是一种内部电路已校准的集成温度传感器,其输出电压与摄氏温度成正比,线性度好,灵敏度高,精度适中.其输出灵敏度为10.0MV/℃,精度达 0.5℃.其测量范围为-55—150℃。在静止温度中自热效应低.工作电压较宽,可在4——20V的供电电压范围内正常工作,且耗电极省,工作电流一般小于60uA.输出阻抗低,在1MA负载时为0.1Ω。根据LM35的输出特性可知,当温度在0—150℃之间变换时,其输出端对应的电压为0—150V,此电压经电
[电源管理]
简单人工智能的温度<font color='red'>控制电路</font>设计
吃透PLC控制原理的4个基本控制电路设计
实例1 单输出自锁控制电路 启动信号 I0.0 和停止信号 I0.1 持续为 ON 的时间般都短。该电路最主要的特点是具有“记忆”功能。 实例2 多输出自锁控制电路(置位、复位) 多输出自锁控制即多个负载自锁输出,有多种编程方法,可用置位、复位指令 实例3 单向顺序启停控制电路 1. 单向顺序启动控制电路是按照生产工艺预先规定的顺序,在各个输入信号的作用下,生产过程中的各个执行机构自动有序动作。只有 Q0.0 启动后,Q0.1 方可启动,Q0.2 必须在 Q0.1 启动完成后才可以启动。 2. 单向顺序停止控制电路就是要求按一定顺序停止已经执行的各机构。只有 Q0.2被停止后才可以停止 Q0.1,若想停止 Q0
[嵌入式]
吃透PLC控制原理的4个基本<font color='red'>控制电路</font>设计
图解变频器外接继电器正反转控制电路
1.变频器外接继电器控制正反转电路 2.变频器通电(按钮SB2) 3.正转(SB4) 4.反转(SB6,KA2与KA1形成互锁电路) 5.调速 6.变频器保护 7.电动机停止(SB3或SB5)
[嵌入式]
图解变频器外接继电器正反转<font color='red'>控制电路</font>
高性能超声电机驱动及控制电路的研制
摘要:介绍了一种高性能的超声电机驱动及控制电路。该电路使用直接数字频率全成器(DDS)作为信号源,通过高压运放将信号放大到峰-峰值为250V,用于驱动超声电机;借助温度传感器采集电机温度变化,利用计算机实时监控超声电机的运行。 关键词:超声电机 直接数字频率合成器(DD) 温度传感器 高压运放 超声电机是一种基于压电陶瓷逆压电效应的新型电机。与一般电磁电机相比,超声电机能直接输出低转速大力矩,且瞬态响应快(可达ms量级)、定位精度高(可达nm量级),非常适合取代传统的伺服电机及步进电机。目前超声电机已广泛应用于照相机及摄像机的自动调焦系统,而且在精密仪器以及航空航天领域也有许多应用。 尽管超声电机具有很多优点,但由于超声电机
[应用]
STCC05-BD4型空调器控制电路的功能和工作原理
摘要:STCC05-BDA是一种嵌入了空调器或电冰箱控制模块中的大多数模拟与功率电路的控制电路。文中介绍STCC05-BD4的特点、功能、工作原理及应用电路。 关键词:STCC05-BD4 家用控制电路 MCU接口 零电压同步 STCC05-BD4是意法半导体(ST)公司于2004年推出的空调器控制电路, 可用于电冰箱、电烘箱、压缩机、风扇、加热器和阀门等电路的数字控制。 1 主要特性 %26;#183;较宽的工作电压范围:7V~18V; %26;#183;5V%26;#177;5%稳压器,输出电流为50mA; %26;#183;MCU复位电路带触发延时和滞后; %26;#183;30μs的数字滤波器,过零电压同
[传感技术]
电动机控制电路原理详解
一、接触器连锁正反转电路 1、闭合电源 闭合总电源QF1,QF2,闭合控制电源QF3。 2、正转启动运行 按下启动按钮SB2,通过常闭触点KM2将4、5号线接通,线圈KM1得电,辅助触点KM1闭合,3、4号线接通自保持,接触器KM1主触点闭合,电动机得电正转运行。同时辅助触点KM1断开6、7号线,闭锁线圈KM2,防止其带电。 3、正转停止运行 按下停止按钮SB1,线圈KM1失电,接触器KM1主触点、辅助自保持触点恢复初始状态,电动机断电停止正转运行。 4、反转启动运行 按下启动按钮SB3,通过常闭触点KM1将6、7号线接通,线圈KM2得电,辅助触点KM2闭合,3、6号线接通自保持,接触器KM2主触点闭合,电动机得电反转运行。同
[嵌入式]
电动机<font color='red'>控制电路</font>原理详解
模拟流星雨LED控制电路设计
基于W79E2051单片机和LED恒流专用驱动芯片MBI5026设计了一款模拟流星雨LED控制电路,LED使用高亮白色,可根据需要接上36,48,64颗LED,通上电源,一字型排开的LED,会产生从上到下,从最亮的到渐暗的流星雨效果,效果逼真,可作为屋外,广场装饰灯. W79E2051单片机具有标准的串行输出口,可方便地向具有相同通信协议的驱动芯片MBI5026进行通信,同时对定时要求不高的场合,我们完全可以使用单片机内部的RC振荡时钟,这样单片机的外围元件及极简单,仅需要复位元件即可,由于流星雨效果是有着随机特性,在多个灯管同时使用时,为了达到伪随机效果,我们还推荐使用单片机的内部RC时钟.这样效果会更好.同时W79E2051在电
[电源管理]
模拟流星雨LED<font color='red'>控制电路</font>设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved