OLED屏的驱动与使用
文/杜洋
【OLED时代来了】
一提到OLED,我想无人不知。智能手机的迅猛发展,使得屏幕显示技术不断推陈出新。虽然最新报出三星将产量更新颖的QLED屏幕,但在没有上市之前智能手机屏幕从显示原理上仍只有LCD和OLED两种。在三星和LG两家公司的高端手机上都采用了OLED屏幕,其他手机生产商还是采用传统的LCD屏幕。其两者最大的区别就是:LCD屏幕是由灯管或LED做背光照明,再通过LCD屏通过或阻断光线达到显示目的。OLED是有机发光二极管,它和我们常用的LED 是近亲。OLED不需要背光灯,其上面每一个像素点都能独立发光。综合来看OLED显示技术功耗更低、效果更有优势。我曾用过一款手机,采用的是SUPER OLED屏幕,无论从彩还是可视角度都非常出众。不过现在仅有几家大公司才能生产OLED屏幕,产量不足,价格昂贵。
OLED屏供应手机市场都不足够,作为一名电子爱好者更不敢奢求有一天能亲手把玩它了。记得3年前,
我在北京工作的时候,就曾在电子市场看到久闻未见的OLED屏幕。之所以让我一眼就识别出来,是因那柜台里每一块屏幕都只是一片薄薄的玻璃,发着光的文字和图案在上面不停切换,周围没有背光灯,没有电路板,只有一片玻璃。旁人也许并无感想,但对我这个电子发烧友来说,这种震撼不亚于第一次看到没有“大包”的液晶电视。站在柜台前看了半天,老板见势走过来。我指着那片1元硬币大小的屏幕问多少钱,老板一本正经地说:“这款小的便宜,你要多少?”我说只要1个。他有些不太高兴的说:“一个呀,280元”。听闻此言,二话没说,转身就跑。只是一块单的小屏幕,如果是LCD液晶屏顶多80元,就因为是OLED就多出200元。可是又忍不住对它的神奇所吸引,好想能早点把玩。
时间是把无情刀,能杀人,也能杀价。如今的OLED技术已经广泛被使用,产量高了,价格自然就降低了。从前上百元的OLED屏幕,现在只要几十元。还有各种尺寸大小、颜和分辨率。如此一来,我们每一位电子爱好者都有能力玩转OLED,体验新型显示技术所带来的乐趣,OLED屏的DIY时代已经到来了!对于我而言,OLED可是低功耗便携设备的优质显示屏,不用它来制作一款便携产品实在太可惜了。经过几个月的创新构想,我正在开发一款OLED屏幕的运动型手表,这款手表不仅能显示日期和时间,还有计步功能。更为重要的是,这是一款电子DIY的运动型手表,每位电子爱好者都能根据自己的需要订制显示内容。可以写上对某人的祝福,提醒某些重要纪念日。相信这款手表会带给电子爱好者一片新的制作领域。到时我也会撰文介绍这款作品。不过在手表问世之前,我想把刚刚研究明白的OLED驱动及中英文显示的方法与大家分享,希望大家能通过我的文章学会OLED的使用。
【OLED屏的硬件连接】
OLED屏虽然说是新鲜事物,但依然遵循、沿用LCD显示屏的设计方案。一来是降低开发成本,二来也让曾使用LCD 屏的人快速上手。OLED屏有全彩和单屏两种,前者用在手机等3C产品上,后者用在工业、医疗、商业的嵌入式产品上。在工业、医疗、商业领域,早就采用了LCD显示屏,比如我们熟悉的LCD1602、LCD12864等。但LCD屏的体积大、背光功耗大、环境要求高,而新的OLED屏正好可以解决这些问题,OLED屏的生产商是希望自己的OLED屏可以取代传统LCD屏,所以OLED屏被设计成可兼容原来LCD屏的规格,如尺寸、分辨率、安装方式。原来LCD屏常用的分辨率有128x64,那OLED屏也照旧。在屏幕驱动控制上,OLED屏生产商也尽量与传统驱动电路的指令保持一致。相同功能的直接照搬,有差异的尽量靠近。所以请大家放心,学会OLED屏的驱动和显示并不难。
本文介绍的这款DYS864显示屏模块,是一款0.96英寸的OLED屏。模块由一片OLED玻璃屏幕和一个驱动PCB板组成。屏幕有单白和黄绿双两种颜可选,其中黄绿双并不是传统上理解的双屏。而是把屏幕分成上下两部分,上面1/4是黄,下面3/4是蓝。模块分辨率是128x64,内置了升压电路(OLED点亮显示8~14V的高电压)和复位电路,所以只要3~5V电源输入电压即可。采用I2C
总线通过,电路连接简洁。0.96英寸的大小与1元硬币差不多。小体积带来小的功耗,只要3mA左右的电流就能让它显示内容,而点亮一支LED灯还需要20mA的电流呢。把它放在用电池供电的小制作上,再完美不过了。
【图1】DYS864模块的体积小巧
【图2】两种颜OLED屏的显示效果
你可以把OLED屏上的像素点理解成LED灯,小小玻璃片上嵌入了8192(128x64)个LED,对应的LED点亮或熄灭,则形成图案和文字。想一想,用单片机驱动LED灯阵列时通常要专用的驱动芯片,那OLED屏上的“LED灯”自然也要有一个驱动芯片。可是你并不会发现有什么芯片,那是因为生产商把驱动芯片嵌到玻璃片当中了,就在显示区域的正下方。这种设计工艺叫COG,很多LCD液晶屏也采用过这种设计。OLED屏驱动芯片的型号有很多种,我们这款用的是SH1106芯片,你能在网上搜索到这款芯片的数据手册。驱动芯片的引脚非常多,主要是用来连接OLED屏阵列上的“LED灯”,留给用户的接口并不多。DYS864模块的PCB上已经将驱动芯片的外围电路做好了,留给你使用的只有电源、I2C总线和复位接口。你不需要了解复杂的驱动电路设计,只要把DYS864与单片机连接,专心于编程部分即可。【图3】是DYS864模块的接口定义,【图4】是模块与单片机连接的电路图。其中模块的1和5脚是VCC和GND,接3V或5V电源(我用的是5V)。2和3脚是I2C总线接口,与单片机的I/O接口连接。我使用的是STC12C5A32S2型单片机,其内部没有I2C的硬件控制器,要用软件模拟I2C总线。模拟程序部分我已经写好了,在源程序里直接调用。【图4】中所画的两个4.7KΩ电阻是I2C总线设计时必须的上拉电阻,它能让没有强上拉能力的单片机在模拟总线时保持很好的稳定性,不过我们使用的STC12系列单片机有强上拉能力,所以电阻可省去不接。最后,模块上的4脚(RST)是复位引脚,如果你想用单片机随时控制OLED模块重新复位初始化,可把第4脚连到I/O接口上,I/O接口输出低电
平时屏幕复位。不过在我们的使用当中用不到复位,所以第4脚可不接。如此一来,不需要接电阻,不需要接复位,把2根电源线和2根I2C总线接到单片机上就行了。如果你有其他I2C总线模块也可以挂在同一条总线上,电路制作十分简单!
祭奠英烈短句【图3】DYS864模块接口定义
三有野生动物是什么意思【图4】DYS864模块与单片机连接电路图
【模块初始化与功能设置】
要想点亮OLED屏模块,编程部分是关键。幸好我已经写好了一套示例程序,你可以在《无线电》杂志的上到下载链接。【图5】这是名为“OLED12864”的一套KEIL4工程文件,打开工程文件可以看到名为OLED12864.c的主程序,还有VIIC_C51.c的I2C总线模拟程序。这里我们重点讲解OLED12864.c。在主程序里还包含了4个头文件,stc12c5a60s2.h是单片机头文件,dys864testpic.h和pic2.h是全屏图片显示时所用的图片数据表,ascii.h是显示英文、数字、符号用的数据表,cc.h是显示汉字用的数据表。也就是说,接下来我会讲到如何用DYS864模块显示全屏图片、英文和汉字内容,但在此之前必须先让模块初始化,设定好屏幕的相关参数,然后才能开始显示。
【图5】工程文件的内容
好声音 张玮【程序1】DYS864模块初始化程序
void OLED_INIT (void){//DYS864模块初始化程序
unsigned char buf[]={//以下是初始设置参数
0xae,//【0xae:关显示,0xaf:开显示】
0xd5,0x80,//显示时钟频率(不要改动)
0xa8,0x3f,//复用率(不要改动)
0xd3,0x00,//显示偏移(不要改动)
0x40,//显示开始线
0x8d,0x14,//VCC电源(不要改动)
0xa1,//设置段重新映射(不要改动)
0xc8,//COM输出方式(不要改动)
0xda,0x12,//COM输出方式(不要改动)
0x81,0xff,//对比度【指令:0x81,数据:0到0xff(最高)】
手工盲盒怎么做0xd9,0xf1,//充电周期(不要改动)
0xdb,0x30,//VCC电压输出(不要改动)
0x20,0x00,//水平寻址设置
0xa4,//【0xa4:正常显示,0xa5:整体点亮】
0xa6,//【0xa6:正常显示,0xa7:反显示】
0xaf//【0xae:关显示,0xaf:开显示】
};
龙岩莲花山公园RET=0;//OLED复位
DELAY_MS (50);
RET=1; //复位脚放开
DELAY_MS (50);
ISendStr(OLED12864_ADD,COM,buf,25);//写入25个字节的初始设置参数
}
【程序1】是DYS864模块的初始化程序,其内容是将25个指令写入OLED屏的驱动芯片。这些指令能让显示屏调整到正常的工作状态,就好像新买的手机需要先设置好铃声、音量、亮度一样,是一个初始的过程。【程序1】里已经把每一个指令后面加了解释,有兴趣可以看一下,要想了解更深层的意思,就要看驱动芯片的数据手册了。虽然手册是英文的,但还是不难看懂的。但请注意,如果不明白的指令就不要改动。其中“0x81,0xff”(双字节指令,对比度调节)可以根据你的喜好调下对比度(也就是亮度),后一个字节的值从0x00到0xff,一共256级对比度调整。写入25个字节数据之前,程序先给复位引脚一个低电平,让显示屏复位。不过上电时DYS864模块内部的复位电路已经使它复位一次了,所以不接复位引脚也没关系。写入指令后,显示屏就准备就绪,可以写入内容了。
粼粼的拼音【全屏图片显示方法】
和LCD屏幕一样,OLED也能全屏显示单图片。这里介绍两种全屏图片显示的方法,第一种是用同一个数据复位写满全屏。【程序2】是单字节数据重复写入全屏的程序,它是写入0xff也就是所有点全亮的效果,如【图6】所示。在【程序2】中分析,实现起来并不难,只要用for循环,重复写入0xff这个数据1024次,每次写入后驱动芯片会自动将写入点移到下一格,所以我们不用考虑换行的问题。
【程序2】单字节数据的全屏写入
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论