位置:51电子网 » 技术资料 » 单 片 机

一种基于单片机实现OLED显示的设计

发布时间:2008/8/22 0:00:00 访问次数:1413

  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。实现文字显示及图像的动静态显示。

  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.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的控制有四种状态。

  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 软件程序的设计

  整个单片机控制oled的显示程序用c语言编写,主要程序流程图如图4所示。单片机初始化包括关闭看门狗、时钟初始化、

  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。实现文字显示及图像的动静态显示。

  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.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的控制有四种状态。

  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 软件程序的设计

  整个单片机控制oled的显示程序用c语言编写,主要程序流程图如图4所示。单片机初始化包括关闭看门狗、时钟初始化、

相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!