kaiyun官方注册
您所在的位置: 首页> 显示光电> 设计应用> 采用80C51单片机驱动的OLED模块设计
采用80C51单片机驱动的OLED模块设计
摘要:本文将介绍维信诺公司的VGG12864G系列产品,并给出80C51单片机控制OLED的应用实例。
Abstract:
Key words :

有机发光显示器(OLED)是以有机电致发光材料为基础的新一代平板显示技术,与传统的显示技术相比,Oled具有更薄更轻、主动发光(不需要背光源)、广视角、高清晰、快速响应、低能耗、耐低温和抗震性能优异、潜在的低制造成本及柔性与环保设计等显示器件制造所要求的几乎所有优异性能,因而被广泛应用在消费电子、医疗、汽车、电力、能源、工控等领域的人机界面中。

维信诺公司专业从事OLED显示器的研发和制造,于2003年将OLED产品推向市场,是中国大陆第一家批量生产和销售OLED屏体及模块产品的公司。维信诺公司根据市场需求的变化,不断进行技术创新和产品升级,推出了一系列的OLED显示模块,并针对各种领域客户提供多种解决方案。维信诺公司自主研发的 OLED产品具有一定的行业代表性,备受业界客户的关注。本文将主要介绍维信诺公司的VGG12864G系列产品,并给出51单片机控制OLED的应用实例。

VGG12864G是显示容量为128列×64行的单色、字符、图形OLED显示模块,接口电路简单,使用方便。该模块具有如下特点128×64像素点阵,绿光;内置128×64位显示RAM,每一位对应一个像素状态;IntEL 8080或Motorola 6800 8bit数据总线接口或串行接口;Solomon SSD1305 OLED驱动器,推荐逻辑电压为+3V±10%;驱动电压+9V~+12V;工作温度-40度~+80度;低功耗:≦80mW。

<a class=OLED模块逻辑电路和应用接口框图。" border="0" height="214" src="//www.ninimall.com/files/images/20110427/34f63e7f-4655-42c7-a5f9-17ef0b0ff4ea.jpg" width="472" />
图1:OLED模块逻辑电路和应用接口框图。

图1为模块逻辑电路和应用接口框图。用户只需要给接口提供电源、理解SSD1305的显示缓存RAM特性及其指令系统,并利用MCU模拟产生匹配的驱动指令和显示DATA信号,就能点亮OLED屏。从图中可以看出,OLED模块的外部应用接口就是SSD1305 IC,其定义如下:

由于SSD1305 IC支持6800与8080总线接口,并提供自定义的串行接口模式,因此,VGG12864G OLED模块很容易嵌入到多种单片机系统中,如8051 AVR DSP ARM MSP等。

采用<a class=80C51单片机驱动VGG12864G模块的参考电路原理图。" border="0" height="258" src="//www.ninimall.com/files/images/20110427/dabcd355-3f23-4e85-a02c-cc0902a75120.jpg" width="545" />
图2:采用80C51单片机驱动VGG12864G模块的参考电路原理图。

0C51在国内有广泛的客户群体,随着开云棋牌官网在线客服技术的日新月异,众多知名厂商纷纷推出速度更快,集成度更高,性能强大的增强型单片机。下面以美国STC公司的STC89LE516RD+ MCU为例,介绍80C51单片机驱动VGG12864G模块方案。图2为其参考电路原理图,图3为VGG12864G应用接口时序。


SSD1305 8080总线模式。
图3:SSD1305 8080总线模式。

初始化:

//程序流程图

底层驱动代码:

写指令:

void write_command(uchar command)

{

DC = 0;

_nop_ ();

P1 = command;

_nop_ ();

CS = 0;

_nop_ ();

OLED_WR = 0;

_nop_ ();

OLED_WR = 1;

_nop_ ();

CS = 1;

_nop_ ();

}

写显示数据:

void write_data(uchar data_bak)

{

DC = 1;

_nop_ ();

P1 = data_bak;

_nop_ ();

CS = 0;

_nop_ ();

OLED_WR = 0;

_nop_ ();

OLED_WR = 1;

_nop_ ();

CS = 1;

_nop_ ();

}

显示一幅图画:

void oled_display(uchar picture[]) //picture[]是一幅图片的数据

{

uchar j;

for(page=0;page<8;page++)

{

write_command(0xB0+page); //set page address

write_command(0x00); //set low address

write_command(0x10); //set higher address

for(j=0;j<128;j++)

{

write_data(picture[j+page*128]); //送数据到显存

}

}

}

此内容为AET网站原创,未经授权禁止转载。
Baidu
map