VS80480M70
版本:V3.1
多功能总线型彩色液晶模块使用说明书
Size:7.0inch
Resolution:800X480
Technical Support Hotline:17507586671
1. 简介
VS80480M70 是一款文字与绘图模式的液晶显示模块,可结合文字或2D 图形应用。
其特有的BTE 功能,能让用户轻松完成各类图形文字处理功能,提高MCU 软件执行效率。
并且该模块能支持8-bit 或16-bit 数据总线,类似单色屏的操作模式能让用户轻松升
级产品显示界面。
●支持5V 和3.3V 两种系统电压
●支持65K 色的800*480 单图层显示
●{zg}支持2x16M 的FLASH 存储,可快速存储调用图片。
●{zg}技术支持17507586671
●支持MCU 界面:8-bit 或16-bit 数据总线的8080/6800 系列,支持SPI 串口
●支持水平和垂直区域卷动
●支持2D 的BTE 引擎,可用于处理大量图形数据转换
●支持PWM 背光亮度控制
●支持几何图形加速绘图引擎
●支持文字和绘图两种混和显示模式
4. 连接及传输协议
8080 模式与6800 模式:两种模式都支持8 位,16 位数据总线。区别只是在操作时
序上不一样而已。4-wire SPI 与3-wire SPI 区别只是少了一个接口,SDO 兼负输入和
输出功能。用户可以根据自己的需求在模块上用电阻跳线使用。
4.1. 跳线点说明
VS80480M70 主要有5 个跳线点以下是5 个跳线点的功能说明:
4.1.1. 背光跳线点
“R22/R23”焊上0 欧电阻后,背光引脚27、28 将与电源引脚1、2 接通。
此跳线点默认是已经连接好的。
4.1.2. 8080/6800 模式跳线点
“R8/6”当选择8080 并口模式时,短路电阻焊接于“-”:当选择6800 并口模式时,短
路电阻焊接于“+”。
此跳线点默认连接8080 模式。
4.1.3. 串并口模式选择跳线点
1.“RPS” 当选择并口模式时,短路电阻焊接于“-”:当选择串模式时,短路电阻焊接
于“+”。
2.“RSF1/RSF0”并口模式:RSF0\RSF1 :“-”\“-”
3-Wire SPI: RSF0\RSF1 :“+”\“-”
4-Wire SPI: RSF0\RSF1 :“-”\“+”
此跳线点默认连接并口模式。
4.6. 读取状态寄存器
模块可以接受四种数据传输周期,分别是「指令写入周期」、「状态读取周期」、「数据写入
周期」以及「数据读取周期」。状态寄存器是一只能读(Read Only)的寄存器,当 “RS” 为H时,
MCU若对VS80480M70进行读取周期,将会得到状态寄存器的数据。请参考上面的时序图。
快速技术支持:17507586671
4.7. 写入指令寄存器
模块有数十个指令寄存器,当要针对某指令寄存器进行写入指令时,首先必须先执行「指令写
入周期」,包括欲写入寄存器之地址,然后再以「数据写入周期」将数值写入该寄存器。因此,「写
入指令」意指「将数值数据写到寄存器当中」,在前述两个周期执行之后,数值数据(指令)将被
写入到该寄存器。
如果欲读取寄存器中的内容值,则第二个数据传输周期为「读取数据周期」。 需注意的是上图是
以 8080 的传输界面来举例。
4.8. 内存写入与读取
当欲写数据到内存(可能是显示内存或字型产生内存)时,必须先执行寄存器编号为 [02h]的
「写入指令周期」,如果是欲读取内存中的数据,也是先执行寄存器编号为 [02h] 的「写入指令
周期」,请参考下图:
4.9. 16 位数据总线
VS80480M70支持8-bit/12-bit/16-bit颜色格式的TFT屏,也就是所谓的256色、4K色、65K色TFT
屏,在MCU的Data Bus传送不同的色彩讯息其对应的方式不同,本节是当MCU使用16-bit时,Data Bus
所对应到的RGB数据。
4.11. 中断
VS80480M70 的中断信号会在以下事件发生时产生,相对应的缓存器为 [F1h]。
□ BTE 完成数据读写动作时,REG [F1h] Bit 0 被设定为1。
□ 文字 (Font) 写入时,REG [F1h] Bit 0 被设定为1。
□ BTE 完成图形移动或塡图时,REG [F1h] Bit 1 被设定为1。
□ 触控面板发生被触摸事件时,REG[F1h] Bit 2 被设定为1。
□ DMA 事件完成时。
□ 键盘扫描 (KEYSCAN) 事件动作时。
这些中断事件的开启 (Enable)或关闭 (Disable) 可以透过缓存器 INTC1(REG[F0h] 的设定
来控制。另外,VS80480M70 还提供了软件中断功能,当使用者的系统不支持硬件中断信号时,可
以透过询问的方式进行软件中断。要进行硬件中断时,使用者必须要把中断屏蔽位(Interrupt Mask)
设为1,其进行步骤如下:
□ VS80480M70 发出中断信号给MCU。
□ MCU 收到中断信号后,其程序计数器 (PC)会跳到中断服务程序 (ISR) 的起点。
□ 同一时间VS80480M70 的中断事件相对的旗标位会被设定为“1” (REG[F1h])。例如,当触控面
板控制器中断产生,其触控面板中断标志位就会被设为 “1”。
□ 在ISR 完成时,旗标位必需被qc。也就是,写入“1”到相对的状态缓存器。
若使用软件中断方式时,使用者不需要任何外部设置,只要透过读取缓存器 INTC2 的相关位
就可以检测中断是否发生。此外,中断屏蔽 (Interrupt Mask)设置只能应用在硬件中断,不能屏
蔽缓存器 INTC2 的相关状态。要注意的是,因为中断旗标位不会自动qc,所以使用者必须在进
入中断程序后手动qc为”0”,就是缓存器 INTC2(REG[F1h])的 Bit2 写入 1,否则中断会一直存
在而使后续的中断错误。
4.12. 等待
模块提供一等待(WAIT#)信号,当忙碌标志位为 “0” 时就意味着VS80480M70正处于忙碌状
态,而不能把数据写入显示内存(DDRAM)里。而其处于忙碌情况可分为以下四种:
1. 当 MCU 用文字模式写入数据时,字体大小不同的字型需要不同的时间去写入DDRAM里,在这段
时间里 VS80480M70是不能再往 DDRAM里写数据的,此时正处于内存写入忙碌状态。
2. 当 MCU 发指令让 VS80480M70 执行qc屏幕功能时,这段时间里的 VS80480M70 在清理DDRAM
同时也会引起内存写入忙碌。
3. 当 VS80480M70 在执行 BTE 搬移功能时,此时的 VS80480M70 会自动进行 DDRAM 的写入或读
取功能,此时MCU执行DDRAM的存取会造成显示异常。
4. 当MCU执行指令写入,VS80480M70约需要一个频率时间 (System Clock) 来写入,若MCU 速度
比 VS80480M70 的频率快出许多,有可能在一个频率时间内执行两个或更多的 VS80480M70 命令,
此时建议要检查 VS80480M70 是否处于忙碌状态,当然大部分情况下是不需要特别确认的。
在内存写入忙碌时,向 DDRAM 写入数据会造成显示数据的遗失。所以使用者在以上四种情况
下写入显示数据时,一定要检查等待状态。正常情况下,会把等待信号“WAIT#” 接到MCU的输入
脚上, MCU 会在 VS80480M70 写入数据前,对其忙碌状态进行监控,其具体时序图如下所示。
5. 寄存器描述
VS80480M70 的MCU 接口有4 种周期 (Cycle) 类型,请参考表 5-1。缓存器的设定或读取
功能是由这些周期所组成的。VS80480M70 包括一个状态缓存器及数十个指令缓存器。状态缓存器
是一个只读的缓存器,只能透过「状态读取」周期读取。指令缓存器可用于存取大部分的功能, 可
透过指令写入周期及数据写入周期进行存取。「指令写入」周期设定缓存器的号码,而「数据写入」
周期则设定缓存器的写入数据。当读取特定的指令缓存器时,MCU 需要先下「指令写入」周期然后
再下「数据读取」周期。「指令写入」周期对程序设定缓存器数量,而「数据读取」周期读取缓存
器的数据。指令缓存器分为15 个类别,请参考表 5-2,且大部分都可读或写。下面章节将对所有
缓存器的内容进行说明。
6.3.2. 文字光标
●光标位置:
文字写入光标是用在文字模式,是可见的。此光标的位置可以与内存读取光标分开设
定,与内存写入光标类似,文字写入光标可以被设为自动增加或非自动增加、闪烁或不闪
烁。光标可以在工作窗口内自动移动。当在写入文字时,光标会自动移动到下一个文字写
入的位置。依据文字的大小与文字方向,当碰到工作窗口的边界线时,光标会自动换下一
列。两列之间的距离可以由像素 (Pixel)来设定。
●光标闪烁:
用户可用寄存器 BTCR(REG[44h])来控制光标闪烁开启或关闭。闪烁时间的计算为:
闪烁时间 = BTCR[44h] *[1/画面更新率(Frame_Rate)]
●光标高度和宽度:
除了图形光标与内存读取光标,另外两种形式的光标是可以透过设定来设定高度与宽
度。文字写入光标的可设定宽度与高度组成一个区块, 控制的缓存器为
CURHS(REG[4Eh]) 、CURVS(REG[4Fh])。内存写入光标的形状是一条线可以设定宽度,高
度则固定为 1 像素。宽度的控制的缓存器与文字写入光标相同,例如CURHS(REG[4Eh])。
文字写入光标的高度与宽度也与另外一个系数相关,那就是文字放大的设定缓存器
(REG[2Eh] Bit3~0)。若放大的系数为 1,宽度就只透过CURHS/CURVS 的设定为 1~32 像
素。若放大的系数不是 1,则为实际的游标的宽度与高度必须再乘上这个放大系数。需注
意文字写入光标不会被文字旋转影响,若文字旋转90 度,文字写入光标仍然会正常的情
况相同。
6.4. 字库与文字功能
6.4.1. 内建 Font ROM
VS80480M70 内建 8*16 dots ASCII 字型 ROM(Font ROM),此内建字型 ROM 支持
ISO8859-1~ ISO8859-4(也就是Latin1 ~ Latin4)的标准字集,用户可利用标准字集
编码写入文字,VS80480M70 就会将对应的 ASCII 字型自动写入到DDRAM。除此之外,用
户可设定REG[42h] 选择前景颜色和设定 REG[43h] 选择背景颜色,文字的前景颜色有
256 色可设定,文字的背景颜色也有 256 色可设定。
下表含符合 ISO/IEC 8859-1 标准的字集,ISO 是国际标准化组织的简称。ISO 8859-1 又
称Latin-1 或「西欧语言」,是国际标准化组织内ISO/IEC 8859 的{dy}个8 位字符集。
它以ASCII 为基础,在空置的 0xA0 ~ 0xFF 的范围内,加入192 个字母及符号,藉以供
使用变音符号的拉丁字母语言使用。此字符集支持部分于欧洲使用的语言,包括阿尔巴尼
亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、法罗语、弗里斯语(Frisian)
加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语、意大利语、拉丁语、卢森堡语、
挪威语、葡萄牙语、里托罗曼斯语、苏格兰盖尔语、西班牙语及瑞典语。
英语虽然没有重音字母,但仍会标明为ISO 8859-1 编码。除此之外,欧洲以外的部
分语言,如南非荷兰语、斯瓦希里语、印度尼西亚语及马来语、菲律宾他加洛语(Tagalog)
也可使用ISO 8859-1 编码。
9. 附录(程序代码与应用软件)
9.1. 参考初始化程序
建议用户直接移植使用,或详见网站资料和完整的参考程序。
Technical Support Hotline:17507586671
void PLL_ini(void)
{
LCD_CmdWrite(0x88);
LCD_DataWrite(0x0a);
Delay1ms(1);
LCD_CmdWrite(0x89);
LCD_DataWrite(0x02);
Delay1ms(1);
}
void LCD_Initial(void)
{
PLL_ini();
LCD_CmdWrite(0x10);//SYSR bit[4:3]=00 256 color bit[2:1]= 00 8bit MPU interface
LCD_DataWrite(0x0C);// 1x 64k color 1x 16bit
//Horizontal set
LCD_CmdWrite(0x14); //HDWR//Horizontal Display Width Setting Bit[6:0]
LCD_DataWrite(0x63);//Horizontal display width(pixels) = (HDWR + 1)*8
LCD_CmdWrite(0x15); //Horizontal Non-Display Period Fine Tuning Option Register
(HNDFTR)
LCD_DataWrite(0x03);//Horizontal Non-Display Period Fine Tuning(HNDFT) [3:0]
LCD_CmdWrite(0x16); //HNDR//Horizontal Non-Display Period Bit[4:0]
LCD_DataWrite(0x03);//Horizontal Non-Display Period (pixels) = (HNDR + 1)*8
LCD_CmdWrite(0x17); //HSTR//HSYNC Start Position[4:0]
LCD_DataWrite(0x02);//HSYNC Start Position(PCLK) = (HSTR + 1)*8
LCD_CmdWrite(0x18); //HPWR//HSYNC Polarity ,The period width of HSYNC.
LCD_DataWrite(0x00);//HSYNC Width [4:0] HSYNC Pulse width(PCLK) = (HPWR + 1)*8
//Vertical set
LCD_CmdWrite(0x19); //VDHR0 //Vertical Display Height Bit [7:0]
LCD_DataWrite(0xdf);//Vertical pixels = VDHR + 1
LCD_CmdWrite(0x1a); //VDHR1 //Vertical Display Height Bit [8]
LCD_DataWrite(0x01);//Vertical pixels = VDHR + 1
LCD_CmdWrite(0x1b); //VNDR0 //Vertical Non-Display Period Bit [7:0]
LCD_DataWrite(0x14);//Vertical Non-Display area = (VNDR + 1)
LCD_CmdWrite(0x1c); //VNDR1 //Vertical Non-Display Period Bit [8]
LCD_DataWrite(0x00);//Vertical Non-Display area = (VNDR + 1)
LCD_CmdWrite(0x1d); //VSTR0 //VSYNC Start Position[7:0]
LCD_DataWrite(0x06);//VSYNC Start Position(PCLK) = (VSTR + 1)
LCD_CmdWrite(0x1e); //VSTR1 //VSYNC Start Position[8]
LCD_DataWrite(0x00);//VSYNC Start Position(PCLK) = (VSTR + 1)
LCD_CmdWrite(0x1f); //VPWR //VSYNC Polarity ,VSYNC Pulse Width[6:0]
LCD_DataWrite(0x01);//VSYNC Pulse Width(PCLK) = (VPWR + 1)
LCD_CmdWrite(0x04); //PCLK
LCD_DataWrite(0x81); //
LCD_CmdWrite(0x8c);//PWM 控制设置
LCD_DataWrite(0x80);//开启PWM
LCD_CmdWrite(0x8c);//PWM 控制设置
LCD_DataWrite(0x81);//开启PWM
LCD_CmdWrite(0x8d);//背光亮度
LCD_DataWrite(0xff);//亮度参数0xff-0x00
}