摘要:为了进步图形信息的显现速度,并得到更多的显现作用,文章根据FG_V1.2单片机开发板,根据OLED12864显现屏的操作时序要求,用51单片机完结了根据0.96英寸OLED屏的显现体系规划。经实践测验标明,其具有比12864LCD模块更快的改写速度和更好的显现作用。
OLED(Organic Light Emitting Display)显现技能是比液晶显现技能更为先进的新一代平板显现技能,其被业界公以为是继LCD、PDP之后最抱负和最具开展前景的第三代显现技能。比较于液晶显现技能,其具有超轻薄、高亮度、广视角、自发光、呼应快、抗震强、功耗低、习惯温度规模宽,可完结柔性显现等优胜功能,有“梦境显现器”的美誉,可广泛使用于通讯、计算机、消费电子、工业使用、商业、交通等范畴。在显现输出方面,现在首要选用3种方法,即:图形、数字或专用符号,在嵌入式范畴,显现常选用LED、数码管及液晶显现器。前两种完结简略,但显现内容不行丰厚。LCD显现器虽能显现较为丰厚的内容,但其呼应慢(呈现残像),且亮度相对较低。OLED则呼应较快,其呼应速度可达液晶的1000倍以上,且OLED无需背光,亮度高,在功耗、视角等方面也均优于LCD显现器,鉴于此,OLED显现屏越来越广泛地使用在日常日子傍边。
该文以宏晶公司的STC89C52单片机为操控中心,信意电子科技供给的0.96寸OLED模块为显现输出设备,在Keil环境下编写OLED显现模块驱动程序,并下载Hex文件至单片机,然后完结OLED显现体系规划。
1 完结原理
文中所选用的OLD模块具有和12864LCD相同的分辨率,但其在单位面积上具有更多的像素点。该模块的驱动芯片是SSD1306Z,它是一款专门用于驱动OLED点阵屏的COMS芯片,其包括128个段和64个公共端。为了可以经过外部操控器向其写入用于显现的数字信息,其对外供给了8个数据引脚和5个操控脚,并向用户供给了4种总线接口。文中所选用的OLED模块可完结SPI和IIC两种总线接口形式,默以为SPI形式。在SPI形式下,仅有数据引脚的低2位和操控引脚的CS#,D/C#和RES#与单片机进行接口。为了能让OLED具有丰厚的显现作用和灵敏简洁的操作方法,SSD1306Z向用户供给了丰厚的操作指令集,别的还向用户供给了128×64位的GDDRAM(Graphic Display Data RAM)。由于所选用的OLED不带字库,因而无论是显现图形仍是显现汉字,均需经过取模软件进行编码,然后按SPI协议,将对应的编码依照所确认的地址形式写入对应的CDDRAM中。编码原理如图1所示。图1给出了16*8编码格局的字符‘A’,由于8行为一页,因而其占有2页的高度,而宽度则占有8列。图1中的每一个方格代表一位,若要显现则置1,反之置0。向GDDRAM傍边送数据时,先经过指令确认操作所需的地址形式及存储器的地址,然后先写‘A’的第2页的编码,再写其第3页的编码,即可完结编码的写入操作。图1所对应的编码为0x00,0x00,0xe0,0x 9c,0xf0,0x80,0x00,0x00,0x08,0x0f,0x08,0x00,0x00,0x0b,0xoe,0x08,编码时高位鄙人,低位在上。同理,可得对恣意汉字的编码。
2 时序剖析
操作时序为%&&&&&%芯片的牢靠作业供给了正确的节拍,因而操作时序正确与否将直接影响芯片的作业状况,文中OLED模块默许作业方法为4线SPI,其操作时序如图2所示。图2上部分为操作一位对应的时序,下部分为操作一个字节所对应的时序,由图2可知当发送一个字节时,先发该字节的最高位,最终发最低位。
图2中,CS#为OLED片选信号线,低电平有用,在芯片有用后,可经过拉低或拉高D/C#来决定是进行指令写入操作仍是进行数据写入操作,在时钟SCLK拉高之前树立D/C#信号,其树立时刻为tAS,SDIN在SCLK低电平有用,并在SCLK上升沿时进行数据的读取,数据坚持时刻为tDHW,之后可产生数据交换,为下次数据读取作预备。图2中详细的时
序特性如表1所示。
表1给出了正确完结OLED操作的时序要求,由表1可知时刻参数的最小值均小于1μs。文中操控器选用的是STC89C52,选用12 M晶振时机器周期为1μs,因而,只需让STC89C52按上图时序次序履行程序,则其操作进程便可彻底满意4线SPI操作的时序要求。
3 软件完结
要使OLED正确显现出所需的信息,除了在其运转进程中严厉按时序进行操作外,在起动时还要满意必定的上电次序,之后还要对其进行相应的初始化。OLED的上电次序如图3所示。
图3中,在VDD得电并安稳后,RES#引脚被拉低并保持低电平至少3μs(t1),然后再接其拉高,然后完结芯片复位。在芯片完结复位后,VCC上电。在VCC安稳之后,可发送0XAF指令开显现,而OLED的段和公共端(SEG/COM)则需再推迟100 ms,方可得电。按此可得对应的软件完结为:
OLED按图3完结正确的上电之后,需对SSD1306Z进行相应的初始化方可使其正常运转。OLED软件初始化进程为:
依照图2时序图要求,发送一个字节指令的函数完结如下:
同理可知,若将D/C#引脚电平拉高,则可得到发送一个字节数据的函数完结。
4 硬件接口
硬件根据自主开发的FG_V1.2开发板,中心操控芯片为宏晶公司LQFP-44封装的贴片STC89C52单片机,OLED的时钟引脚SCLK(D0)与单片机的P16引脚进行接口,数据引脚SDA(D1)与单片机的P17引脚进行接口,操控脚RST#与单片机的P36引脚进行接口,D/C#引脚与单片机的P37引脚进行接口,片选信号CS#已接至地。详细的硬件接口电路如图4所示。
5 完结作用
SSD1306Z驱动芯片为OLED供给了丰厚的指令集,可以使OLED在完结数据显现的一起,还能具有多种显现作用(如反白、突变、闪耀等)和动态作用(如左移、右移、斜角斜屏、动态区域设置等)。详细显现作用如图5所示。
图5为OLED模块在STC89C52单片机操控下的几种显现作用。(a)为静态显现作用,(b)为反白显现作用,反白后经过相机可见屏幕傍边有动态黑色条纹,这是由于反白显现时呈现了串扰(Crosstalk)现象,而这种现象被相机捕获到了,人眼调查是不存在动态黑色条纹的。(c)为区域动态作用,屏幕汉字部分设置为静态,而网址部分设置为接连右移的动态作用。由此可见,OLED比较照LCD显现,其具有更丰厚的显现作用。
6 定论
文中经过STC89C52单片机对OLED显现模块进行了驱动,试验标明,其不只硬件接口简略,并且在软件完结上极具灵敏性,模块驱动芯片SSD1306Z包括丰厚指令集,不只简化了软件完结,并且丰厚了显现作用。比较于同分辨率的12864LCD模块,OLED显现模块细巧精美,改写速度快,显现作用丰厚,本钱相对也较低,是12864LCD模块的抱负代替产品。跟着OLED技能的开展,信任显现技能必将开展到一个新的阶段。