OLED显示模块与C8051F单片机的接口设计

上传人:汽*** 文档编号:476834732 上传时间:2022-10-17 格式:DOC 页数:6 大小:62KB
返回 下载 相关 举报
OLED显示模块与C8051F单片机的接口设计_第1页
第1页 / 共6页
OLED显示模块与C8051F单片机的接口设计_第2页
第2页 / 共6页
OLED显示模块与C8051F单片机的接口设计_第3页
第3页 / 共6页
OLED显示模块与C8051F单片机的接口设计_第4页
第4页 / 共6页
OLED显示模块与C8051F单片机的接口设计_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《OLED显示模块与C8051F单片机的接口设计》由会员分享,可在线阅读,更多相关《OLED显示模块与C8051F单片机的接口设计(6页珍藏版)》请在金锄头文库上搜索。

1、OLED显示模块与C8051F单片机的接口设计 来源:单片机及嵌入式应用作者:华中科技大学梁燕胡浩卢益民点击数:13971更新时间:2006-6-30 摘要:OLED作为新一代显示技术,广泛用于各种仪器仪表的显示终端,实时显示字符、汉字、曲线等信息。文中介绍一种点阵式OLED模块VGS12864E的结构特征、指令系统;给出它与Cygnal C8051F020单片机的间接访问接口电路设计,以及显示模块的硬件驱动和显示168点阵西文字符的Keil C51程序代码,并对相关代码进行注释。由于此款显示模块的指令系统与液晶显示驱动控制器HD61202兼容,故程序代码也可作为指令系统与它兼容的液晶显示编程

2、的参考。关键词:点阵显示模块 OLED C8051F 接口设计有机发光显示OLED(Organic Light Emitting Display)是比液晶显示技术更为先进的新一代平板显示技术,是被业界公认为最具发展前景的下一代显示技术。它与液晶显示技术相比,具有超轻薄、高亮度、广视角、自发光、响应速度快、适应温度范围宽、抗震强、功耗低、可实现柔软显示等优越性能,可广泛应用于通信、计算机、消费电子、工业应用、商业、交通等领域。下面以VGS12864E显示模块为例,介绍C8051F020单片机与它的接口设计及软件编程方法。1 VGS12864E显示模块VGS12864E是12864行点阵的OLED

3、单色、字符、图形显示模块。模块内藏6464的显示数据RAM,其中的每位数据都对应于OLED屏上一个点的亮、暗状态;其接口电路和操作指令简单,具有8位并行数据接口,读写时序适配6800系列时序,可直接与8位微处理器相连;与Intel 8080时序的MCU连接时需要进行时序转换。2 显示模块结构2.1 模块框图VGS12864E显示模块显示屏为128列、64行,使用1片有64行输出的行驱动器和2片列驱动控制器,其中每片列驱动器有64路输出。行驱动器与MCU没有关系,只要提供电源就能产生驱动信号和同步信号,模块的外部信号仅与列驱动器有关。列驱动器内置6464位显示存储器,RAM被分为8页,每页8行;

4、显示屏上各像素点显示状态与显示存储器各位数据一一对应,显示存储器的数据直接作为图形显示的驱动信号,为“1”显示,为“0”不显示。图1为模块的逻辑电路接口框图。图1VGS12864E逻辑框图2.2 模块引脚功能及指令系统模块引脚功能如表1所列。模块的指令系统与液晶显示驱动控制器HD61202兼容,共有7条指令。这里不作详细描述,仅列出表2指令列表。其中,前两条为显示状态设置类指令,其余的为读写操作类指令。表1VGS12864E引脚功能 表2VGS12864E指令列表 3 显示模块与Cygnal单片机硬件接口设计VGS12864E的接口连接方式有两种:一种是直接访问方式,另一种是间接访问方式。不论

5、哪种方式,要访问模块都必须先读取状态寄存器内容,判断“忙”标志,不忙时才可以访问。直接访问方式是将模块接口作为存储器或I/O设备直接挂在MCU总线上,MCU以访问存储器或I/O设备方式对模块进行操作。间接访问方式是MCU通过软件模拟控制时序对模块进行操作。这里介绍的是Cygnal C8051F020单片机与VGS12864E的间接访问接口设计。C8051F020是美国Cygnal公司推出的一种混合信号SoC型8位单片机,是集成度很高的混合信号系统级的芯片。它具有100脚的TQFP封装,功耗低,供电电压为2.73.3 V,全部I/O、RST、JTAG引脚均耐5 V电压;有高速、流水线结构的805

6、1兼容的CIP51内核(可达25 MIPS)。该MCU具有P0P7共64个通用I/O端口,每个端口引脚都可以被配置为推挽输出或漏级开路输出。对于VGS12864E,由于其工作电压是5 V,而C8051F020的工作电压是3.3 V,所以要C8051F020的输出能更好地驱动5 V输入的OLED,需要对系统进行额外配置。除了将对应端口的输出方式设置为“漏极开路”外,还应在电路上将每个端口通过一个上拉电阻接到5 V电源,这样可以保证C8051F020的逻辑“1”输出能够被提升到5 V。接口电路如图2所示。4 软件编程软件编程采用Keil C51语言,包括显示模块硬件的驱动程序(即写指令和写数据),

7、显示模块初始化和清屏等通用子程序以及西文字符的显示实现程序。由于此模块指令系统与液晶显示驱动控制器HD61202兼容,故这些程序具有较高的通用性。对于字符汉字显示,该模块的字符库数据特点是以列数据形式编制,即1个字节数据表示1列81的数据,和通常的字符库相比,该字符是旋转了90的字模数据。使用Zimo21.exe取字模软件,并设置提取方式为纵向取模,可以很方便地取得所需的中西文字模。由于该显示模块的每一列81的数据是低位在前,高位在后,为进一步实现中西文的正确显示,还需对通过上述方法取得的字模的每个字节的高低位进行一次对调,程序中使用了一个数组UpsetChar来实现。程序中使用的西文字符是1

8、68点阵,汉字是1616点阵。Cygnal单片机通过间接访问方式控制OLED。其I/O端口需要进行配置,配置如下:void C8051F020_output_config() P2MDOUT = 0x00; /配置P2.5(lcd_wr),P2.6(lcd_rd),/P2.7(lcd_rs)为推挽输出方式P74OUT = 0xf3;/配置P5.0P5.7(lcd_d0 lcd_d7)/为推挽输出方式对显示模块进行写指令操作和写数据操作分为写左半屏和写右半屏。写左右半屏的差别仅在于置位相应的片选信号,而写指令与写数据的差别在于写数据时置位RS寄存器选择信号。初始化操作完成显示位置的确定和打开显示

9、。现以写左半屏命令和写左半屏数据为例,说明各操作函数。图2C8051F020与VGS12864E间接访问方式接口电路 (1) 写左半屏命令void wr_command1() cs1=1; cs1=1; cs1=1;/选择左半屏cs2=0; cs2=0; cs2=0;read_status();/读BUSY位状态r_w=0; r_w=0; r_w=0;P5=com; /将命令字节送I/O口e=1; e=1; e=1;e=0; e=0; e=0;/在E下降沿,命令字节被写/入列驱动器(2) 写左半屏数据void wr_data1() cs1=1; cs1=1; cs1=1;/选择左半屏cs2=0

10、; cs2=0; cs2=0;read_status();/读BUSY位状态d_i=1; d_i=1; d_i=1;r_w=0; r_w=0; r_w=0;P5=dat; /将数据字节送I/O口e=1; e=1; e=1;e=0; e=0; e=0;/在E下降沿,数据字节被写/入列驱动器其中,读状态位的函数采用查询标志位的方式,即void read_status() reentrant uchar busy;uchar temp;d_i=0; d_i=0; d_i=0;/进行指令操作r_w=1; r_w=1; r_w=1;/进行读操作do P5=0xff;e=1; e=1; e=1;busy=

11、P5;/读入P5端口状态e=0; e=0; e=0;temp=busy&0x80;while(temp!=0);(3) OLED初始化void init_lcd() com=0xc0;/从第0行开始wr_command1();wr_command2();com=0x3f;/打开显示wr_command1();wr_command2();(4) OLED清屏void clear_lcd() uchar column1;uchar page;for(page=0;page8;page+) com=(0xb8+page);/设置页号wr_command1();wr_command2();com=0x

12、40; /设置起始列为0,写操作完/后列地址计数器自动加1wr_command1();wr_command2();for(column1=0;column164;column1+) /清左半屏dat=0;wr_data1();for(column1=64;column1128;column1+) /清右半屏dat=0;wr_data2();(5) 显示168字符的程序void lcd_write_char_code(uchar page8,uchar column8,uchar* block168) reentrant uchar column1;set_position(page8,colu

13、mn8);/设置所写字符起始页位置for(column1=0;column18;column1+) dat=block168column1;/从字库中取出上半页88点阵字模数据dat=UpsetChardat;/将每个字节数据高低位进行对调if(column8=7)/如果设置的所写位置在左半屏,调用写左半屏/数据的函数wr_data1(); else/如果设置的所写位置在右半屏,调用写右半屏/数据的函数wr_data2();page8+; set_position(page8,column8);/设置所写字符下半页位置for(column1=8;column116;column1+) dat=block168column1;/从字库中取出下半页88点阵字模数据dat=UpsetChardat;/将每个字节数据高低位进行对调if(column8=7)/如果设置的所写

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号