- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于C8051F的OLED控制电路的设计
有机电致发光显示,又称有机发光二极管(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 时序波形图 3 软件程序的设计 图4 程序流程图 4 文字和图片的显示 图5 显示数据RAM的地址结构 根据所要显示的文字或图片生成所需字符库,通过OLED显示程序将字符代码写入并存储在SSD1303的GDDRAM模块后,就可以稳定地显示出来。通过软件编程也可实现图片的动态显示,如图6为该系统所完成的文字和图片显示。 图6 字符的显示 5 结论 射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师... 天线设计工程师培训课程套装,资深专家授课,让天线设计不再难...
上一篇:电力线路基础的腐蚀发生的原因 射频和天线工程师培训课程详情>>
|