在控制器接口方面,RA8816提供了多种接口方式,可直接支持8080/6800系列控制器的并行数据总线接口,并提供4位或8位的数据位宽。此外RA8816还支持串行总线控制接口,包括3线、4线(A—Type和B—Type两种)及I2C共四种的串行接口。
RA8816整合了多项的实用接口,包含内置DC/DC升压电路及液晶亮度调整电路,4 x 5的键盘扫描接口并支持长按及短按时间判断,8个通用IO口可直接驱动LED,这些接口极大地简化了外围电路设计。因此在系统开发时,可选用成本较低的微控制器与RA8816搭配,不仅使系统设计快捷、方便,而且能够降低开发成本。它四面319脚封装工艺。
一、RA8816引脚功能
二、RA8816内部方框图
三、RA8816功能和特性
1.支持1/65占空比,1/9~1/5偏压的LCD面板;
2. 内置2~4倍升压电路、电压调整电路及电压跟随电路;
3.内置RC振荡器;
4.支持文字与图形两种混和显示模式;
5.支持BIG5或GBO码
6.支持ASCII 8×8英文字型,8×16半角和16×16全角简体中文或繁体中文;
7.支持粗体、反白、滚动等多种显示效果。
四、RA8816硬件配置
RA8816可工作在并行模式或串行模式,工作模式的选择由P/S引脚状态来决定,P/S为高电平时,选择并行模式,否则为串行模式。引脚C86用来选择并行接口的类型,当C86为高电平时选择6800系列控制器接口,为低电平时选择8080系列控制器接口。引脚BIT4用来确定并行模式中数据总线的宽度,BIT4为高电平时总线宽度为4位,否则总线宽度为8位。当工作在串行控制模式时,其串行接口方式由表1确定。
LCD驱动方式及面板材质的不同,所需要的驱动电压是不同的;在实际应用系统中,系统能提供的电压也是有差异的。这要求LCD驱动芯片有较宽的电压工作范围,RA8816内置有步进升压电路,可以产生4倍、3倍或2倍于(VDD—VSS)电压的LCD驱动电压-VLCD,该电压供给电压调整器及内部LCD驱动电路使用。若在C1P与C1M跨接一个1μF左右的电容则能产生2倍于(VDD—Vss)电压;若C2P与C2M也跨接一个l μF左右的电容则产生3倍于(VDD—Vss)电压;若要产生4倍于(VDD—Vss)电压,则还要在C3P与C1M间跨接一个l μF左右的电容,如图2所示。RA8816灵活的VLCD产生方式,使得其能够驱动不同材质的LCD面板。
RA8816的系统时钟由引脚CLK_SEL的状态来确定,CLK SEL为高电平时,系统时钟由内部RC振荡电路产生;CLK SEL为低电平时,系统时钟需外电路提供并从EXT CLK引脚输入。RA8816的矩阵键盘扫描接口应用起来非常方便,只要将KsT[3..0]行扫描输出和KIN[4..0]列输入信号接上相应的按键,如图3所示,并通过相应命令寄存器的设置就能正常工作。当有按键按下时,引脚会产生中断信号,系统控制器就可以通过控制总线接口读入相应的键码。
四、RA8816软件编程
系统控制器对RA8816有两种控制时序,一种是对命令寄存器的读写(Rs=0),另一种是对数据寄存器的读写(RS=1)。RA8816的命令寄存器共有25个,在对命令寄存器读写时,控制器必须先告诉RA8816要对哪一个命令寄存器进行读或写,因此控制器传递给RA8816的第一个数据是RA8816命令寄存器的索引号,第二个数据才是真正写入(或读出)该命令寄存器的有效数据。命令寄存器控制着RA8816的显示属性,数据寄存器反映RA8816的显示内容。RA8816的控制接口有多种形式,下面以I2C接口为例,说明如何对RA8816命令寄存器进行读写,其他接口的读写过程与此相似。RA8816命令寄存器的写时序如图4所示。
根据图4所示时序,写命令寄存器的子程序如下所示:
当RS=I,表示控制器对RA8816进行数据寄存器的读写,如果写入(RW=O)数据到数据寄存器,写入的内容根据命令寄存器设置而显示在LCD屏上。如果是读取(RW=1)操作,则读取的是不同模式下的字模数据。
有了对寄存器的读写函数后,就可以对RA8816的显示进行控制,下面以文字滚动功能为例,说明RA8816的控制方法。RA8816提供LCD的显示画面,可根据命令寄存器任意指定一块区域,由硬件自动做屏幕画面的滚动,其中命令寄存器可以设置屏幕的滚动方向和速度,每次滚动画面的像素与滚动的范围等。与滚动相关的主要命令寄存器有:SWSXR[0x08]和SWSYR[0x09]两个寄存器决定滚动区域的左上角坐标x和Y;SWR xR[0x0A]和SWRYR[0x0B]两个寄存器决定滚动区域的大小Ax和△Y;SCOR[0x0C]表示滚动的位移量;ASCR[0x0D]的DB7’DB4决定滚动的速度,DB3~DB0决定每次位移的像素点数;SCCR[0x0E]的DB7和DB6决定滚动多少个像素点后产生中断,DB3和DB2决定屏幕滚动的方向。图5给出了屏幕滚动流程图。
图5.屏幕滚动流程图
屏幕滚动的主要代码如下:
网友评论