摘要 介紹了基于T6963C控制器的液晶顯示模塊的硬件結構、特點和使用方法以及單片機控制下的硬件接口電路;敘述了T6963C的狀態(tài)字和指令集在軟件編程中的作用和特點,說明了基于該控制器的液晶顯示模塊圖形方式下的字符漢字顯示技術。
關鍵詞 T6963C;液晶顯示器;圖形方式;顯示技術
T6963C是一種點陣式液晶圖形顯示控制器,可直接與8位微處理器接口。T6963C的字符字體格式由硬件設置,具體格式為:5×8,6×8,7×8,8×8等4種。T6963C能以圖形方式、文本方式及圖形和文本合成方式進行顯示。較多廠家的液晶圖形顯示器采用了該控制器。下面以北京青云創(chuàng)新科技發(fā)展有限公司的圖形液晶顯示模塊LCM2401286為例介紹了基于T6963C控制器的液晶顯示模塊圖形方式下字符漢字顯示技術LCM2401286是黃綠模式的240×128點陣式LCD圖形顯示器,可顯示15×8行16×16點陣的漢字,其主控芯片為T6963C。正確使用該種顯示器需了解其硬件結構和軟件編程特點。
1 基于液晶模塊的硬件技術
1.1 引腳說明
由于基于T6963C控制器液晶模塊的諸多功能設置均是通過硬件來實現的,即通過不同引腳的電平狀態(tài)來設置,但基于T6963C控制器的各廠家的液晶模塊,由于各自的特點不同,故各廠家或各型號的液晶模塊主要引出腳也各不相同,因此要對這些重要引腳加以說明。T6963C的QFP封裝共有67個引腳,以LCM2401286顯示器為例,在T6963C控制器上的復位引腳,在LCM2401286顯示器引出腳中表示為,在T696 3C控制器上的單雙屏顯示模式選擇引腳DUAL,在LCM2401286顯示器中DUAL端直接接高電平,設置為單屏結構。在T6963C控制器上的顯示窗口長度設置引腳MD7、MD3,通過兩引腳不同的電平狀態(tài)可設置不同的顯示窗口長度,如表1所示,在LCM2401286顯示器中MD2,MD3端均接高電平,設置為每行字符數為32。
在T6963C控制器上的顯示窗口寬度(行)設置引腳MDS、MD1、MD0,其組合功能如表2所示,在LCM2401286顯示器中MDS,MD1,MD0設置100,即字符行16,總行數為128,占空比為1/128。
在T6963C控制器上顯示字符的字體選擇引腳FS1,FS0,通過這兩個引腳不同電平狀態(tài)的組合可選擇不同的字體模式,如表3所示。
1.2 電源和對比度調節(jié)端的連接方式
LCM2401286顯示器的電源連接和對比度調節(jié)端有兩種接線方式,如圖1所示。調節(jié)圖1中的電位器,可改變液晶顯示器的對比度,從而使背景色和圖形文字的色比達到最佳。
1.3 LCM2401286顯示器接口電路
LCM2401286顯示器接口電路如圖2所示,其中,電位器W3=20 kΩ可調節(jié)顯示器的底色,顯示器的背光電源A、K直接為有效。對比度調節(jié)端接線方式采用圖1(b)的方法。
2 液晶模塊的軟件設計
2.1 T6963C的狀態(tài)字和指令集
由于T6963C為可編程芯片,因此要求編程控制LCM2401286顯示器正常顯示,首先需掌握T6963C的狀態(tài)字和指令集。由于T6963C控制器指令集模塊的初始化通常由硬件設置完成,因此其指令系統(tǒng)將集中于顯示功能的設置上。T6963C的指令可帶一個或兩送入指令代碼,每次操作前先檢測狀態(tài)字,以確保指令的正確執(zhí)行。T6963C的狀態(tài)字如表4所示,其中,STA0為指令讀寫狀態(tài),STA1為數據讀寫狀態(tài),STA2為數據自動讀狀態(tài),STA3為數據自動寫狀態(tài)。由于各狀態(tài)位的作用不同,所以執(zhí)行不同指令時必須檢測不同的狀態(tài)位。在MPU每次讀寫指令和數據時,STA0和STA1要同時有效。當MPU讀寫數組時,需判斷STA2或STA3狀態(tài)。屏讀、屏拷貝指令應使用STA6。而STA5和STA7則反映T6963C內部運行狀態(tài)。
T6963C的指令包括指針設置指令、顯示區(qū)域設置指令、顯示開關指令、光標形狀選擇指令、數據自動讀/寫方式設置指令、數據一次讀/寫方式指令和位操作指令等。指針設置指令主要用于設置光標指針、CGRAM偏置地址和地址指針。顯示區(qū)域設置指令主要用于設置文本區(qū)和圖形區(qū)首地址以及文本區(qū)和圖形區(qū)的寬度。文本區(qū)和圖形區(qū)首地址對應顯示屏左上角字符位或字節(jié)位,修改該地址可產生卷動效果。文本區(qū)寬度設置和圖形區(qū)寬度設置用于調整一行顯示所占顯示RAM的字節(jié)數,從而確定顯示屏與顯示RAM單元的對應關系。顯示開關指令主要用于設置光標閃爍、光標顯示、文本顯示及圖形顯示的開啟。正確使用上述指令可保證顯示正常進行。
2.2 圖形方式下字符、漢字顯示技術
在編寫顯示程序時,首先要編寫一些預處理程序和液晶顯示器的初始化程序。預處理程序包括:狀態(tài)字中的狀態(tài)位判斷程序、寫無參數指令程序、寫雙參數指令程序、寫數據指令程序、設置當前地址程序和設置當前顯示行列程序。液晶顯示器初始化程序包括:工作狀態(tài)初始化程序和清屏程序。工作狀態(tài)初始化程序即設置顯示器為圖形顯示方式,同時關閉文本顯示,設置圖形顯示區(qū)首地址為00H,設置圖形顯示區(qū)寬度為20 H(即32 Byte),設置光標的形狀為8點1行。顯示器清屏程序是通過程序對顯示緩沖區(qū)寫零來達到清屏目的。
上述工作完成后便可編寫字符、漢字顯示程序。字符、漢字顯示程序流程如圖3所示。為適應顯示內容長度不固定的情況,可設置和使用可變長參數。使用可變參數步驟如下:(1)為了訪問變長參數列表中的參數,必須聲明va_list類型的一個對象,首先在函數里定義一個va_li st型的變量,即arg_ptr,這一變量是指向參數的指針。(2)用va_start宏初始化這一變量arg_ptr,這個宏的第2個參數是第一個可變參數的前一個參數,是一個固定參數,使arg_ptr指向第一個可選參數,以固定參數的地址為起點確定變參的內存起始地址。va_start是訪問變長參數列表中的參數前所使用的宏,其初始化用va_list聲明的對象,初始化結果供宏va_arg和va_end使用;va_arg:展開成一個表達式的宏,該表達式具有變長參數列表中下一個參數的值和類型。每次調用va_arg均會修改用va_list聲明的對象,從而使該對象指向參數列表中的下一個參數;然后用va_arg返回可變的參數,并賦值給整數變量。va_arg的第2個參數是要返回參數的類型。(3)va_end將arg_ptr指針清為NULL,函數體內可多次遍歷這些參數,但必須以va_start開始,并以va_end結尾。va_end宏使程序能夠從變長參數列表用宏va_start引用的函數中正常返回。va在此是vairable argument(可變參數)的意思。
為確保輸出顯示的內容尤其是數字能按照格式化方式顯示,可采用函數vsprintf()將格式化字符串和數字值輸出到指定的內存緩沖區(qū)內,該函數類似于sprintf()函數,但其只接受一個指向變量表的指針而不是一個變量表。返回值為實際寫入到輸出字符串中的字符數。
字符、漢字顯示程序又分成字符部分和漢字部分,其流程圖如圖3所示。由標準的ASCII字符表可知,字符的ASCII值在0~127范圍內,而漢字內碼的ASCII值均處于128以上。因此可通過判斷要顯示內容的ASCII值是否<128來區(qū)分要顯示的內容是字符或是漢字。
若要顯示的內容是字符(ASCII值≤128),則又分為非顯示字符和顯示字符。非顯示字符包括控制字符和通訊專用字符。顯示字符包括符號、字母和數字。
由標準ASCII字符表可看出,非顯示字符的ASCII值在0~31范圍內,因此可通過判斷顯示內容的ASCII值是否<32來區(qū)分非顯示字符和顯示字符。
若是非顯示字符(ASCII值<32),則執(zhí)行相應的控制功能,若是顯示字符(ASCII值≥32)則送顯相應的字符。顯示字符按16×8點陣顯示,即一個可顯示字符占16個點陣行,每行1 Byte,每個可顯示字符的字模為16 Byte。
若要顯示的內容是漢字(ASCII值>128),則按16×16點陣顯示,即一個漢字占16個點陣行,每行2 Byte,每個漢字字模為32 Byte。字符、漢字的字體及大小是由其字模決定的,其字模由專門的字模生成軟件生成。字符和漢字的字庫分開造,無論字符或漢字,若其字體或大小不同,則字庫需分開造,顯示時分別調用。
3 結束語
文中介紹的基于T6963C控制器的液晶顯示模塊圖形方式下的字符漢字顯示技術,具有通用性和普遍性,適于所有采用T6963C控制器的液晶顯示模塊,其基本思想也適合于采用其他控制器的液晶顯示模塊。