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
}