基于PIC16F877和RA8835的液晶显示界面的设计
2011-11-27周卓然徐道连斯芸芸邓继坤
周卓然,徐道连,斯芸芸,邓继坤,刑 磊
(重庆大学 光电技术及系统教育部重点实验室,重庆 400030)
随着电子产品设计技术的不断发展,电子产品的设计越来越重视人机交互界面设计的人性化,而其中的液晶显示屏由于其显示质量高、没有电磁辐射、可视面积大、体积较小、功率消耗小等优点得到了广泛的应用。同时,随着单片机技术的飞速发展,涌现了多种性能优良且成本很低的单片机品种[1],PIC系列单片机就是其中之一。在工程应用当中,低功耗的PIC16F877可在满足设计要求的前提下减低成本。因此,本文提出了一种基于PIC16F877和RA8835实现的低成本液晶显示方案。
1 液晶控制器RA8835模块结构
本文采用的液晶显示器型号为JRD320240B,其以功能强大的RA8835作为控制器。适配Intel8080系列和M6800系列MPU的两种操作时序电路,通过硬件设置,可选择二者之一,本文选择Intel8080时序。JRD320240B具有4 bit显示数据线,传输数据迅速;具有强大的作图功能;支持文本显示、图形显示以及图形和文本混合显示;具备简捷的MPU接口和功能齐全的控制指令集。
RA8835是台湾瑞佑科技公司推出的新版液晶控制芯片,内含功能强大的I/O缓冲器,价格低廉,可完全兼容SED1335控制器。RA8835的指令功能丰富,采用4 bit数据并行发送,可支持文字和图形的混合显示,并可将文字和图形的三层重叠显示、水平及垂直卷动等动态效果呈现在液晶屏上[2]。
本设计中,RA8835与PIC16F887单片机连接的主要接口控制引脚(Intel8080时序下)[3]如下:
DB0~DB7:三态数据总线,负责数据的传送与接收;
CS:片选信号,低电平有效,MCU访问 RA8835时,低电平有效;
RD:当为8080时序时,该引脚为读操作信号;
WR:当为8080时序时,该引脚为写操作信号;
A0:I/O缓冲器选择信号,当 A0为 0时,写数据参数和读忙标志,当A0为1时,写指令代码和读数据;
RES:复位信号,低电平有效,每次重新启动 RA8835时,需要使用指令SYSTEMSET;
SEL1、SEL2:为低电车时,选择 Intel8080时序(模块上 R24接 0 Ω 电阻,R25为空)。
2 PIC16F887与RA8835的接口电路设计
MCU采用 PIC16F877,PIC16F877是一款 8 bit单片机,采用纳瓦技术的28位引脚的8 bit CMOS闪存单片机,其具有指令少、执行速度快等优点,主要是因为PIC系列单片机与采用CISC(复杂指令集计算机)的单片机在结构上不同,PIC系列单片机采用了哈佛结构。同时,PIC单片机的功耗也比同类型的单片机要低。
图1 PIC16F877与RA8835的接口电路图
由于采用8080时序,因此将SEL1和SEL2都置为0。PIC16F877与RA8835的接口电路如图1所示。
接口引脚设置如下:/WR(4)脚接到单片机 RCO(32)脚上,/RD(5)脚 接到 RA6(31)脚上,CE 接到 RA7(30)脚上,A0(7)脚接到 RE2(27)上,复位引脚 RST(8)接到 RE1(26)上,数据线 DB0~DB7 分 别接到 RE0(25)、RA5(24)、RA4(DB2)、RA2(21)、RA1(20)、RA0(19)、RB5(15)、RB4(14)引脚上。
设置8080时序下,读写时序操作时序图如图2所示,接口信号的组合功能如表1所示。
图2 8080读写时序图
表1 8080接口信号组合功能
通过设置不同的读写时序,写入不同的指令和数据。
图3 RA8835驱动程序流程图
3 驱动程序设计
液晶显示器JRD320240B为动态驱动结构。对模块的初始化是模块进行显示之前的必要工作,包括初始化完成参数的设置,驱动程序包括系统设置,写入指令和数据,之后就可以方便实现汉字、字符和图形的显示,RA8835驱动程序流程如图3所示。
3.1 初始化程序设置
系统初始化设置程序如下:
其中需要注意的是,由于JRD320240B自带的160种5×7点阵字体的字符字体较小,不符合设计需求[5],因此,需要向里面写入 8×16点阵的 0~99的字体以及 16×16点阵的三种不同的显示状态的字符。由于不是调用内部字符,因此需要将OYLAY,即显示合成方式中的OY位设为1,即图形合成方式。所以LYLAY需要写入0x5b。
3.2 读写程序设置
初始化之后,向总线上写入一个指令:
通过忙标志(BF)检测RA8835是否空闲,如果BF位为0,就往总线上发送一个8 bit的数据并将其显示。
4 液晶显示界面
设计了一个可以显示0~99数字的界面,这100个数字显示100个设备端口接口号,通过单片机可以读入不同接口的号码,同时设计了三种不同的状态符号来显示不同接口对应的设备状态,三种符号及其定义分别为:“X”表示设备已经连上但工作异常,需要检查;“”表示设备已经连上并且正常;“≠”表示该设备未连接到检测设备上。
而 0~99的 8×16点阵以及三种 16×16点阵的状态符号则通过液晶点阵造字软件直接生成点阵代码。
为此,本文设计了两个函数,一个用来显示设备单元号 void LcdTextGraphic(void),另一个用来显示不同设备单元的状态unsigned char LcdSymbolGraphic(unsigned char num,unsigned char symbol),num 的范围为 0~99,通过调用不同的设备号,可以看到显示的设备状态。其函数如下:
由于JRD320240B是320×240点阵,而本设计最大显示的是 99#:,加上一位状态位,所以一行可以显示8个字,一共显示13行即可显示完。
在调试的时候,要注意背光电压大小,JRD320240B数据手册上给出的背光电压大小为5 V~30 V,但在调试过程中,调到24 V时屏幕才能显示出字体,在24 V以下完全看不到字体。
液晶显示程序流程图如4所示。
RA8835液晶控制器的控制能力强,显示速度也很快,本文探讨了基于PIC16F877单片机和RA8835液晶控制器的液晶显示界面的设计方法,给出了对RA8835进行有效控制的具体接口电路及驱动程序。本系统已经经过实际的工程测试,证明其性能稳定、设计的界面简洁,很符合设计要求,同时为相关型号的液晶显示系统的设计提供一种可借鉴的方法。
[1]邓亚平,贾颢.基于C8051F021和 RA8835的液晶显示系统设计[J].新特器件应用,2009,11(9):12-16.
[2]李广丽,王跃存.液晶控制RA8835与单片机的借口设计[J].仪器仪表用户,2008,15(8):14-15.
图4 液晶显示程序流程图
[3]RAiOTchnologyInc. RA8835 dotmatrix LCD controller specification.www.ratio.com.tw, 2007, 2008.
[4]Microchop公司.www.microchip.com.2011-04-01.
[5]重庆群鹤电子公司.JRD320240液晶显示模块使用手册.