您的当前位置:首页正文

LCD显示控制程序入门

2021-03-26 来源:欧得旅游网


液晶显示控制器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对比度设置 指令代码: 81H + 00H~FFH

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<m=RdData(); // 空读操作 m=RdData(); // 读数据 SdCmd(0xe3); // 空操作 m=m|y;

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(y1if(err<0) {

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(x1if(err<0) {

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(y1if(err<0) {

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;iSdCmd(y|0xb0); // 设置页地址

SdCmd(x&0x0f); // 设置列地址低4位 SdCmd((x>>4)|0x10); // 设置列地址高4位 for(j=0;jSdData(*bmp++); // 写图形数据 }

y=y+1; // 页地址修正 } }

深圳市拓普微科技开发有限公司制作

www.topwaydisplay.com 深圳市拓普微科技开发有限公司 www.topwaysz.com page 17/18

因篇幅问题不能全部显示,请点此查看更多更全内容