液晶显示控制器UC1608
应用指南
深圳市拓普微科技开发有限公司
版本 描述 0.1 0.2
新版本
P7 SdCmd(0x2C);改为 SdCmd(0x26);
日期 2009-06-24 2010-1-23
编者 郭强 郭强
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 1/18
液晶显示控制器UC1608应用指南 TOPWAY 目 录
第一章 液晶显示控制器接口特性.........................................................................................2 第二章 液晶显示控制器接口技术.........................................................................................4 第三章 液晶显示控制器指令系统.........................................................................................9 第四章 液晶显示控制器应用函数.......................................................................................14
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 1/18
液晶显示控制器UC1608应用指南 TOPWAY 第一章 液晶显示控制器接口特性
UC1608控制器的基本特性如下,使用UC1608的液晶显示模块利用了这些特性构造了模块产品应用的主要功能:
z 工作电源:3V
z 显示功能:单显示RAM区域、垂直卷动等 z 接口信号:
管脚符号 CS /RES D/C
管脚定义
片选信号输入端,高电平有效。CS=1时选通模块;CS=0时模块接口被封锁 复位信号输入端,低电平复位;正常运行时,为高电平状态
通道选择信号输入端,当D/C=0时,选择指令通道;D/C=1时,选择数据通道 输入端。当并行接口INTEL8080时序时,为写信号/WR,低电平有效;
/WR(R/W) 当并行接口INTEL6800时序时,为读/写选择信号,R/W=1,为读状态,R/W=0,为写状态
输入端。当并行接口INTEL8080时序时,为读信号/RD,低电平有效;
/RD(E) DB1 DB2 DB4 DB5 DB6 DB7
当并行接口INTEL6800时序时,为使能信号,E为高电平时,为读操作,E下降沿为写操作 输入/输出/三态。并行接口数据总线,当选择串行接口时,接VSS 输入/输出/三态。并行接口数据总线,当选择串行接口时,接VSS
输入/输出/三态。并行接口数据总线,当选择4位并行接口或串行接口时,接VSS 输入/输出/三态。并行接口数据总线,当选择4位并行接口或串行接口时,接VSS 输入/输出/三态。并行接口数据总线,当选择4位并行接口或串行接口时,接VSS
输入/输出/三态。并行接口数据总线,当选择4位并行接口时,接VSS;选择串行接口时,接VDD
DB0(SCK) 输入/输出/三态。并行接口数据总线,当选择串行接口时,为串行时钟信号输入端
DB3(SDA) 输入/输出/三态。并行接口数据总线,当选择串行接口时,为串行数据输入端
z 接口形式:8位/4位并行接口、4线/3线串行接口 z 操作模式:80mode(默认) 和68mode
z 时序关系:
1、并口时序(80mode)
图一 80mode模式时序图
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 2/18
液晶显示控制器UC1608应用指南 TOPWAY 时序参数表 (测试条件:2.7≤VDD<3.3V,ta=-30--+85C) 描述 地址建立时间 地址保持时间 读脉冲宽度(8/4位) 写脉冲宽度(8/4位) 高脉冲宽度 写信号(8/4位)
读信号(8/4位) 数据建立时间 数据保持时间 读取时间 输出无效时间 片选建立时间
符号 tAS80 tAH80 tPWR80tPWW80tHPW80tDS80 tDH80 tACC80 tOD80 tSSA80 tCSSD80tCSH80
信号
条件
最小 最大 单位 0 ns 20 140
ns 65 ns 35 ns D/C
系统时钟周期 8/4位总线(读/写) tCY80 /RD /WR /WR
/RD DB0-DB7
35 ns 65 30 ns 20 CL=100pF
- 12
60 20
ns
CS 10 ns 10 20
2、串口时序:
图二、4线SPI串行接口时序图
时序参数表 (测试条件:2.7≤VDD<3.3V,ta=-30--+85C)
符号
tSCYC tSHW tSLW tSAS tSAH tSDS tSDH tCSS tCSH
串行时钟周期 SCL高脉冲宽度 SCL低脉冲宽度 地址建立时间 地址保持时间 数据建立时间 数据保持时间 CS建立时间 CS保持时间
CS SDA D/C
描述
信号
SCK
MIN MAX 单位
50 - 25 - 25 - 20 - 10 - 20 10 - 20 40 ns
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 3/18
液晶显示控制器UC1608应用指南 TOPWAY 第二章 液晶显示控制器接口技术
对于液晶显示模块的接口而言,也是液晶显示控制器的接口,因此我们在探讨控制器的接口技术时,也是在探讨模块的接口技术。所以下面我们将“控制器”用“模块”代替,以期更清楚的描述控制器的应用。
一般来说,在计算机系统里,液晶显示模块属于低速外设,所以在与计算机连接时,需要注意双方的时序搭配。深圳市拓普微科技开发有限公司使用UC1608的液晶显示模块提供了多种的接口形式,用户可以根据自己的控制系统时序特性和系统资源,进行合理的选择。本章将以单片机89S52为控制系统,以模块LM240120A的INTEL8080时序接口的为实例 提供在总线寻址方式下和I/O寻址方式下接口的示意电路和驱动子程序,同时还推荐了串行接口的应用方法。深圳市拓普微科技开发有限公司制作
在并行接口方式下,模块还可以使用4位并行方式,在4位方式下,模块使用了数据线的低4位(DB3-DB0)作为数据总线,数据传输格式是先高4位,再低4位。传输时序关系同8位数据总线形式,只是一个字节的数据需要传输两次完成,这里将不做讨论。 一、 总线寻址方式接口电路及驱动程序
MPU使用总线方式与液晶显示模块直接连接,模块接口时序采用INTEL8080时序,如图三所示:
图三 总线寻址方式接口电路示意图
总线寻址方式是模块的数据总线直接挂在89S52的数据总线上,MPU的/RD、/WR作为模块的读、写控制信号, CS信号和D/C信号都由地址线译码产生,模块的/RST接RC复位电路。
总线寻址方式驱动子程序如下:(地址定义,根据用户平台接口修改)
//-----指令代码写入函数----------------------
void SdCmd(uchar Command) {
uchar xdata *wcom_addr; wcom_addr =0x8000; // 指令口地址 *wcom_rdata_addr = Command; // 写指令操作 }
//-----数据写入函数-------------------------- void SdData(uchar DData) {
uchar xdata *wdata_addr;
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 4/18
液晶显示控制器UC1608应用指南 TOPWAY wdata_addr =0x8100; // 数据口地址 *wdata_addr = DData; // 写数据操作 }
//-----数据读取函数------------------------ uchar RdData() {
uchar DData;
uchar xdata *rdata_addr; rdata_addr = 0x8100; // 读数据地址 DData = *rdata_addr; // 读数据操作 return(DData); //返回数据值 }
二、 I/O寻址方式接口电路及驱动程序
I/O寻址方式是MPU通过I/O并行接口连接模块,通过软件编程模拟信号之间的时序关系,间接实现对模块进行控制。该方式能够很好的回避MPU和模块接口之间的时序差异。根据模块的接口信号要求,需要占用MPU的2个并行接口,在图四给出的示例中,我们将89S52的P1口作为数据总线。P3口中4位端口为控制信号,它们是:P3.1为D/C信号,P3.7为/RD信号,P3.6为/WR信号,P3.4为CS信号,P3.5为/RST信号。深圳市拓普微科技开发有限公司制作
图四 I/O寻址方式电路示意图
I/O寻址方式的驱动子程序如下:
//----------------------------------- #define LCDBUS P1
sbit _RD = P3^7; sbit _WR = P3^6; sbit D_C = P3^1; sbit CS = P3^4; sbit _RST = P3^5;
//-------指令代码写入函数-------------------------- void SdCmd(uchar Command) {
D_C = 0; // 选择指令通道 LCDBUS = Command; // 设置指令代码 CS = 1; // 选通模块 _WR = 0; // 写信号有效 _WR = 1; // 写信号无效 CS = 0; // 封锁模块 }
//------数据写入函数----------------------------- void SdData(uchar DData)
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 5/18
液晶显示控制器UC1608应用指南 TOPWAY {
D_C = 1; // 选择数据通道 LCDBUS = DData; // 设置数据 CS = 1; // 选通模块 _WR = 0; // 写信号有效 _WR = 1; // 写信号无效 CS = 0; // 封锁模块 }
//-------数据读取函数------------------------- uchar RdData() {
uchar DData;
D_C =1; // 选择数据通道 LCDBUS=0xff;
CS=1; // 选通模块
_RD = 0; // 读操作信号有效 DData = LCDBUS; // 读数据
_RD = 1; // 读操作信号无效 CS=0; // 封锁模块 return(DData); // 返回数据值 }
三、 串行接口
使用UC1608的液晶显示模块的串行接口仅需要4个信号线,SCK为串行时钟信号,上升沿有效;SDA为串行数据端;D/C为数据的属性,D/C=0为指令码,D/C=1为显示数据; CS仍为模块的片选信号。串行数据传输的通讯协议也非常简单,见图五所示。在准备启用串行接口前,要将先将SCK信号设置为高电平,设置D/C状态,然后再将CS置“1”,选通模块,再将SCK置成“0”;SCK的每个正脉冲的上升沿都将会把SDA数据送入内部缓冲器内,当第8个脉冲的上升沿时,SCK将D/C状态读入内部控制位,并将已经读入8位数据并行送入D/C所确定的寄存器内进行处理。
图五 串行接口通讯规则
本章提供了串行接口电路示意图,见图六所示,并根据该电路制作了驱动子程序如下。需要说明的是,在串行接口的通讯中,只有向模块的写入功能,没有读取功能。深圳市拓普微科技开发有限公司制作
图六 串行接口电路示意图
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 6/18
液晶显示控制器UC1608应用指南 TOPWAY 串行接口驱动子程序如下:
//--- 串行通讯方式驱动子程序------------------------------ uchar bdata transdata; //该变量可为位操作之变量 sbit transbit = transdata^7; sbit CS = P3^4; sbit _RST = P3^5; sbit D_C = P3^1; sbit SCK = P1^0; sbit SDA = P1^3;
//-------指令代码写入函数------------------------ void SdCmd(uchar Command) {
uchar j;
transdata=Command; // 指令送位寄存器 SCK = 1; // 初始化SCK D_C = 0; // 选择指令通道 CS = 1; // 选通模块 SCK = 0; for(j=0;j<8;j++) {
SDA=transbit; // 位寄存器D7位送数据口 SCK=1; // 产生移位脉冲 SCK=0; // 上升沿有效
transdata=transdata<<1; // 位寄存器数据左移一位 }
CS=0; // 封锁模块 }
//-----数据写入函数-------------------------- void SdData(uchar DData) {
uchar j;
transdata=DData; // 指令送位寄存器 SCK = 1; // 初始化SCLK D_C = 1; // 选择数据通道 CS = 1; // 选通模块 SCK = 0;
for(j=0;j<8;j++)
{
SDA=transbit; // 位寄存器D7位送数据口 SCK=1; // 产生移位脉冲 SCK=0; // 上升沿有效
transdata=transdata<<1; // 位寄存器数据左移一位
} // 深圳市拓普微科技开发有限公司制作 CS=0; // 封锁模块 }
三、初始化子程序
UC1608的初始化程序中,我们设置了启用内部LCD驱动电压,对比度参数ContrastLevel的设置根据模块和使用环境设置。 1、初始化函数
void initLCDM(void) {
_RST=1; // 硬件初始化复位 delayms(100); _RST=0; delayms(1); _RST=1;
delayms(800); // 推荐延迟时间
ContrastLevel=0x28; // 设置对比度初始值为0x28
SdCmd(0x26); // 设置占空比1/128,温度系数设置 0.1%/C
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 7/18
液晶显示控制器UC1608应用指南 TOPWAY SdCmd(0x40); // 设置显示起始行=0
SdCmd(0x89); // 设置页/列地址自动加1功能 SdCmd(0xAF); // 开显示
SdCmd(0x90); // 固定区域行数=0
SdCmd(0xC4); // 设置水平映象为逆序,垂直映象为正序,数据排序为D0-D7 SdCmd(0xEA); // 设置占空比为1/12 SdCmd(0x2D); // 设置内部LCD电源 SdCmd(0x81); // 设置对比度
SdCmd(ContrastLevel); // 对比度初始值 }
2、清屏函数
清屏程序利用了初始化设置的列/页地址自动加1功能,所以全RAM区域写入时,只需要设置一次地址即可。
void ClearRAM() {
uchar i,j;
SdCmd(0xb0); // 页地址设置 SdCmd(0x00); // 列地址低4位 SdCmd(0x10); // 列地址高4位
for (i=0;i<16;i++) // 循环写16页 {
for(j=0;j<240;j++) // 循环写240单元 {
SdData(0); // 数据设置为0 } } }
程序说明:
初始化函数设置了模块运行的基本设置,显示状态为开显示。这样当运行初始化程序后,在模块显示屏上应该能看到有一定对比度的稳定显示的花屏,这是因为在初始化中没有对显示RAM进行清“0”,所以在屏幕上显示出来的都是显示RAM在上电时的随机数。这是正常的。由此,我们可以把初始化程序作为接口的调试程序,如果没有出现上述现象,则需要重新检查电路,或将初始化程序中的对比度参数再向大设置,在运行观察。
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 8/18
液晶显示控制器UC1608应用指南 TOPWAY 第三章 液晶显示控制器指令系统
UC1608的指令系统比较简单。内部的显示RAM结构见图七所示,RAM分16页,每页240个单元,每个单元的显示数据对应的显示屏像素是某一列的8点行像素,而且是数据的最低位DB0位对应本页中最上一行的像素。
图七 UC1608的RAM的地址结构
指令描述如下:
显示开关指令 指令代码:AEH / AFH
D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 1 1 1 1/0 功能描述:设置显示开关。指令AEH为关显示,模块进入SLEEP模式。所有驱动器输出、电压发生器和时序电路都将终止电源。指令AFH为开显示,退出SLEEP模式,进入正常显示。
设置所有像素点亮 指令代码:A4H / A5H
D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 1 0 0/1 功能描述:该指令强迫所有列驱动输出为ON信号,实现全屏点亮。该指令不影响RAM内容。指令
码A4H为正常显示,指令码A5H为全屏点亮。
正/负向显示设置 指令代码:A6H / A7H
D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 1 1 0/1 功能描述:强制所有列驱动取反数据输出,实现全屏反显效果。不影响RAM数据。指令A6H为正常显示,
A7H为全屏反显效果。
显示起始行设置 指令代码:40H ~7FH
D7 D6 D5 D4 D3 D2 D1 D0 0 1 S5 S4 S3 S2 S1 S0 功能描述:该指令设置了模块的显示起始行号,该起始行号是把固定区域与卷动区域的边缘行作为计算基点,顺序计算出的第S[5:0]行。如果固定区域行数为0,则S[5:0]即为显示屏的最顶行。S[5:0]取值为0-3FH,对应显示行数为0-63行。如果定时间隔等量修改该设置,将会出现显示向上或向下卷动或局部卷动的效果。
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 9/18
液晶显示控制器UC1608应用指南 TOPWAY 设置固定行 指令代码:90H~9FH
D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 1 FL3 FL2 FL1 FL0 功能描述:设置固定区域的行数,应用于局部卷动功能。模块将显示区分为固定区域和卷动区域,该指令
将定义固定的区域的宽度(行数),该区域在卷动功能下将不受卷动功能的影响。固定行区域为在MY=0时从顶行起2*FL行的区域或在MY=1时从底行起2*FL行的区域。见图八所示。 FL[3:0]:固定行数,0-15。
图八 显示区域分固定区域和卷动区域
RAM页地址设置 指令代码:B0H~BFH
D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 1 P3 P2 P1 P0 功能描述:该指令设置了显示RAM的页地址。P[3:0]取值为0-15,对应的显示RAM页为0-15页。
拓普微产品LM240120A的页地址为0~14,第15页将不被使用。
RAM列地址设置 指令代码:00H~0FH + 10H~1EH
D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 C3 C2 C1 C0 0 0 0 1 C7 C6 C5 C4 功能描述:该指令设置了显示RAM的列地址,指令为双字节格式,需要连续写入。列地址是为1个字节
宽度,在设置时被分解为两部分,指令的第一字节低4位为列地址低4位,第二字节低4位为列地址高4位。C[7:0]取值为0-239。
在MPU读、写显示RAM操作后列地址自动加1,以实现MPU连续对显示RAM的操作。达到最大列地址后,将根据RAM地址控制设置指令停止修改或者归0,从头开始。
RAM地址控制设置 指令代码:88H、89H、8CH、8DH
D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 1 AC2 AC1 AC0 功能描述:列地址增加模式固定为+1;当列地址增加到239时,下一个读写RAM的操作,列地址或返回
到列地址0,或驻留在地址239不变。页地址范围为0页到15页,当列地址增加到右边缘时,下一个读写RAM操作,页地址可以是加1方式或减1方式或不变。该指令将设置了RAM地址的增量控制。 AC2:页地址自动增加方向。AC2=0,页地址加1;AC2=1,页地址减1;
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 10/18
液晶显示控制器UC1608应用指南 TOPWAY AC1:保留位,设置为0;
AC0:列/页地址自动增量,AC0=0将禁止地址增量,即在列地址达到最大值时RAM地址(列、页)将驻留不变;当AC0=1时,在列地址达到最大值时,列地址将归0位和页地址根据AC2设置而修改。 拓普微产品LM240120A初始设置为89H,页地址自动加1,自动加1功能。
设置LCD映象控制 指令代码:CXH
D7 D6 D5 D4 D3 D2 D1 D0 1 1 0 0 MY MX 0 MSF 功能描述:设置显示RAM与驱动输出的对应关系。
MY:选择RAM行地址与驱动输出COM电极之间的对应关系。不影响RAM数据。当MY设置为0
时,RAM行地址与行驱动输出是正序排序关系,即RAM行地址0对应COM0;当MY设置为1时,RAM行地址与行驱动输出是逆序排序关系,即RAM行地址0对应COM127。该设置一经写入,驱动立刻实现转换,改变当前的图象显示效果。
MX:选择RAM列地址与列驱动输出SEG的对应关系。当MX设置为0时,RAM列地址与列驱动输
出是正序排序关系,即RAM列地址0对应SEG0输出;当MX设置为1时,RAM列地址与列驱动输出为逆序排序关系,即RAM列地址0对应SEG239。该设置写入后,当前已写入到RAM的内容不改变显示排序,在之后的写入数据将按照新的设置方式写入与显示,即影响到设置后的RAM读/写操作。深圳市拓普微科技开发有限公司制作 MSF:设置数据位与驱动输出的排序关系。当MSF设置为0时,在页地址中,数据线自上而下排序
D0-D7;当MSF设置为1时,数据线自上而下排序为D7-D0。该设置写入后,当前已写入到RAM的内容不改变显示排序,在之后的写入数据将按照新的设置方式写入与显示,即影响到设置后的RAM读/写操作。
拓普微产品LM240120A初始设置为C4H,MY=0,MX=1,MSF=0。
LCD偏压设置 指令代码:E8H ~EBH
D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 0 1 0 BR1 BS0 功能描述:该指令选择了LCD驱动的电压偏压比。拓普微LM240120A设置为EAH,为1/12偏压比。 BR[1:0]:00(1/10);01(1/11);10(1/12);11(1/13)。 拓普微产品LM240120A初始设置为EAH。
设置驱动占空比和温度补偿 指令代码:20H~27H
D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 0 0 MR TC1 TC0 功能描述:该指令设置了显示的占空比和温度补偿系数。
MR:占空比系数设置,1为96行扫描;1为128行扫描; TC[1;0]:设置温度补偿曲线斜率
00:-0.00%/C;01:-0.05%/C;10:-0.10%/C;11:-0.20%/C 拓普微产品LM240120A初始设置为26H。
电源控制 指令代码:28H~2FH
D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 0 1 PC2 PC1 PC0 功能描述:设置VLCD和LCD负载的选择。
www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 11/18
液晶显示控制器UC1608应用指南 TOPWAY PC2:选择VLCD的来源;0选自外部VLCD;1使用内部VLCD。 PC[1:0]:根据LCD屏的电容负载选取下面设置:
00:CLCD<26nf;01:26nf D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 0 0 1 GN1 GN0 PM5 PM4 PM3 PM2 PM1 PM0 功能描述:该指令为双字节指令,设置LCD驱动电压VBIAS和VLCD。GN[3:0]参数为VLCD的粗调设置,PM[5:0]为VLCD的细调设置。它们与偏压比BR参数一起,确定了VLCD的输出范围。见图九所示。初始化时为了调试电路,可以将该值可以设置大些,便于观察显示效果。 图九 GN、PM、BR设置与VLCD电压关系 GN[3:0]:取值0~3。设置VLCD4个电压档。 PM[5:0]:取值0~63。在GN确定的电压档内等值调节VLCD电压。 拓普微LM240120A初始对比度设置为28H( BR为1/128) 修改写功能设置 指令代码:EFH D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 0 1 1 1 1 修改写结束指令 指令代码:EEH D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 0 1 1 1 0 功能描述:该组指令完成修改写操作功能。修改写功能码EFH与修改写结束指令EEH成对出现。在写入指令码EFH后,所有的读取RAM数据的操作都不对列地址进行加1修正,只有向显示RAM写数据后才进行列地址的加1操作。这种功能将给绘图操作带来极大的方便,因为绘图需要在原图案的基础上增加相应的图形,所以需要先读出单元的数据,与新图形合成后再写回原单元。当完成修改写操作后,需要写入结束指令EEH,将列地址恢复到原进入修改写操作时的地址。 www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 12/18 液晶显示控制器UC1608应用指南 TOPWAY 写数据操作 D7 D6 D5 D4 D3 D2 D1 D0 显示数据 功能描述: 写数据操作是向数据通道(D/C=1)直接写入数据,数据被写到当前由页地址和列地址所指定的显示RAM单元内。写操作完成后,列地址和页地址将根据设置自动修改。MPU可以连续向显示RAM写入数据。 读数据操作 D7 D6 D5 D4 D3 D2 D1 D0 显示数据 功能描述: 读数据操作是从数据通道(D/C=1)的输出寄存器中读出显示数据,同时当前由页地址和列地址指向的显示RAM单元的数据传送到这个寄存器内。因此在设置新地址后第一次读数据时,需要有一次空读操作,以便将当前单元的数据传送到接口的输出寄存器内。读操作完成后,列地址和页地址将根据设置自动修改。MPU可以连续从RAM读出数据。 软件复位指令 指令代码:E2H D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 0 0 0 1 0 功能描述:该指令码E2H是模块的软件复位,该复位将花费15ms时间。它将完成指令寄存器的初始化操作,其作用同接口的/RESET脚功能。显示RAM单元内容不受影响。当系统对模块的/RESET硬件复位初始化后,该指令复位可以不做。 空操作指令 D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 0 0 0 1 1 功能描述:该指令不运行任何功能,其作用为调节内部运行时序。 读状态字 D7 D6 D5 D4 D3 D2 D1 D0 BZ MX DE RS WA GN1 GN0 1 功能描述:该寄存器为状态字寄存器,为MPU提供模块的内部运行信息。其中: BZ:忙标志位。BUSY=1表示模块内部正在处理指令码或在复位状态,此时不接受MPU发送的指令和数据。BUSY=0表示芯片可以接收MPU发送的新数据。深圳市拓普微科技开发有限公司制作 MX:表示显示RAM的列地址与列驱动输出的对应关系。当MX=0时,表示同顺序对应,即列地址序号与列驱动输出序号相同,列地址0-239对应列驱动输出0-239;MX=1时,表示反顺序对应,即列地址序号与列驱动输出序号反方向对应,列地址0-239对应列驱动输出239-0。 DE:表示显示开关状态,DE=0表示显示开状态,DE=1表示显示关状态。 RS:表示模块运行状态。RS=0为芯片在正常运行状态中,RS=1表示芯片处于复位状态,该复位状态字将指示硬件/RES信号或软件复位指令的状态。 WA:列、页地址自动修改状态,0无效,1有效。 GN[1:0]:VBIAS和VLCD的设置状态 www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 13/18 液晶显示控制器UC1608应用指南 TOPWAY 第四章 液晶显示控制器应用函数 我们提供的功能子程序完全使用显示画面上的坐标(X,Y)为显示数据读写操作位置,在程序中将计算出实际读写的RAM单元地址,因此模块使用者可以不必考虑实际的RAM地址。 一、对比度调节程序 1、对比度增强子程序 void LCD_Darker(void) // 对比度参数ConTrastLevel初始值在初始化程序中设置 { if (ContrastLevel<0xff) // 限制上限值 { ContrastLevel++; // 对比度参数加1 } SdCmd(0x81); // 对比度设置指令代码 SdCmd(ContrastLevel); // 写入对比度值 } 2、对比度减弱子程序 void LCD_Lighter(void) // 对比度参数ConTrastLevel初始值在初始化程序中设置 { if (ContrastLevel>0x00) // 限制下限值 { ContrastLevel--; // 对比度参数减1 } SdCmd(0x81); // 对比度设置指令代码 SdCmd(ContrastLevel); // 写入对比度值 } 二、字符写入程序 3、ASCII字符串写入程序 void PrintASCII(uint x,y,uchar *pstr) // 坐标(x,y),x为水平方向像素列;y为垂直方向字符行(8点像素/行) { uchar j; uint addr; SdCmd(y|0xb0); // 设置页地址 SdCmd(x&0x0f); // 设置列地址低4位 SdCmd((x>>4)|0x10); // 设置列地址高4位 while(*pstr>0) { addr=*pstr++; // 取字符代码 addr=(addr-0x20)*8; // 计算字符字模起始地址 for (j=0;j<6;j++) // 设置循环量,显示6*8点阵字符 { //深圳市拓普微科技开发有限公司制作 SdData(ASCIITAB[addr+j]); // 写字模数据 } } } 4、汉字写入子程序 void PrintGB(uchar x,y,uchar *pstr) // 坐标(x,y),x为水平方向像素列;y为垂直方向字符行(8点像素/行) { uint addr; uchar j,n; while(*pstr>0) www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 14/18 液晶显示控制器UC1608应用指南 TOPWAY { addr=*pstr++; // 取汉字代码 addr=(addr-1)*32; // 计算汉字字模起始地址 for (n=0;n<2;n++) { SdCmd(y|0xb0); // 设置页地址 SdCmd(x&0x0f); // 设置列地址低4位 SdCmd((x>>4)|0x10); // 设置列地址高4位 //深圳市拓普微科技开发有限公司制作 for (j=0;j<16;j++) // 写16字节字模数据 { SdData(CCTAB[addr+j+16*n]); // 写字模数据 } y=y+1; } // 页地址加1 y=y-2; // 页地址修正原值 x=x+16; // 列地址修正下一个汉字位置 } } 三、绘图程序 5 绘点程序 void Draw_Dot(uint x,y) // 坐标(x,y),x为水平方向像素列;y为垂直方向页(8点像素/页) { uchar k,m; k=y/8; SdCmd(k|0xb0); // 设置页地址 SdCmd(x&0x0f); // 设置列地址低4位 SdCmd((x>>4)|0x10); // 设置列地址高4位 SdCmd(0xef); // 设置修改写模式 y=y%8; m=1; y=m< SdData(m); // 写数据 SdCmd(0xee); // 退出修改写模式 } 6 绘线程序 void Draw_Line(uint x1,y1,x2,y2) // x为水平方向像素列;y为垂直方向页(8点像素/页) // 坐标(x1,y1)为线起始地址坐标;坐标(x2,y2)为线终止地址坐标。 { uint temp; int dalt_x,dalt_y,err=0; if (y1>y2) { temp=x1; x1=x2; x2=temp; temp=y1; y1=y2; y2=temp; } Draw_Dot(x1,y1); dalt_x=x2-x1; dalt_y=y2-y1; if(dalt_x>=0) www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 15/18 液晶显示控制器UC1608应用指南 TOPWAY { if(dalt_y>dalt_x)//k>1 { while(y1 x1=x1+1; y1=y1+1; err=err+dalt_y-dalt_x; } else { y1=y1+1; err=err-dalt_x; } Draw_Dot(x1,y1); } } else // 0<=k=<1 { if (dalt_y==0) y1=y1-1; while(x1 x1=x1+1; err=err+dalt_y; } else { y1=y1+1; x1=x1+1; err=err+dalt_y-dalt_x; } Draw_Dot(x1,y1); } } } else { dalt_x=x1-x2; if(dalt_y>dalt_x)//k<-1 { while(y1 x1=x1-1; y1=y1+1; err=err+dalt_y-dalt_x; } else { y1=y1+1; err=err-dalt_x; } Draw_Dot(x1,y1); } } else //0>k>=-1 { if (dalt_y==0) y1=y1-1; while(x1>x2) { www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 16/18 液晶显示控制器UC1608应用指南 TOPWAY if(err<0) { x1=x1-1; err=err+dalt_y; } else { x1=x1-1; y1=y1+1; err=err+dalt_y-dalt_x; } Draw_Dot(x1,y1); } } } } 7、图画写入子程序 void ShowBMP(uchar x,y,width,high,uchar *bmp) // 坐标(x,y),x为水平方向像素列;y为垂直方向页(8点像素/页) //width:图形水平像素点数;high:图形垂直页数;bmp[]:图形数组名 { uchar i,j; for(i=0;i SdCmd(x&0x0f); // 设置列地址低4位 SdCmd((x>>4)|0x10); // 设置列地址高4位 for(j=0;j y=y+1; // 页地址修正 } } 深圳市拓普微科技开发有限公司制作 www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 17/18 因篇幅问题不能全部显示,请点此查看更多更全内容