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