澎湃微基于超低功耗MCU—PT32x033系列,推出血糖儀專題技術(shù)文章連載,內(nèi)容包括:LCD驅(qū)動(dòng)器應(yīng)用,OPA ADC DAC聯(lián)合應(yīng)用,NTC、RTC應(yīng)用,超低功耗應(yīng)用等場(chǎng)景,以幫助客戶快速上手,縮短學(xué)習(xí)開發(fā)周期。
01、 概 述
在MCU的應(yīng)用中,人機(jī)界面占據(jù)相當(dāng)重要的地位。人機(jī)界面主要包括事件輸入(鍵盤輸入、通訊接口等)和結(jié)果顯示(LED/LCD 、通訊接口等),LCD技術(shù)由于其具有界面友好,成本較低等特點(diǎn)在很多應(yīng)用場(chǎng)合得以廣泛應(yīng)用。
澎湃微的PT32x033系列單片機(jī)以低功耗和豐富的外設(shè)模塊著稱。針對(duì)液晶顯示這一應(yīng)用,MSP430 系列單片機(jī)可分為兩類,一類內(nèi)置LCD 控制器,另一類不帶LCD 控制器。內(nèi)置LCD 控制器的單片機(jī)價(jià)格較高,使用成本增加。不帶LCD 控制器的單片機(jī)可配合液晶驅(qū)動(dòng)芯片使用,但需增加額外的芯片,也增加了成本。本文介紹的方案,適用于不帶LCD 控制器的MSP430 系列單片機(jī),通過(guò)使用通用I/O 口直接驅(qū)動(dòng)LCD 顯示,其顯示效果以及占用的資源和內(nèi)置液晶控制器的單片機(jī)相同。
02、 LCD顯示原理
在講解驅(qū)動(dòng)之前,我們先就 LCD 的顯示原理作簡(jiǎn)單的介紹。
LCD(Liquid Crystal Display)是利用液晶分子的物理結(jié)構(gòu)和光學(xué)特性進(jìn)行顯示的一種技術(shù),液晶分子的特性:
液晶分子是介于固體和液體之間的一種棒狀結(jié)構(gòu)的大分子物質(zhì)
在自然形態(tài),具有光學(xué)各向異性的特點(diǎn),在電(磁) 場(chǎng)作用下,呈各向同性特點(diǎn)
下面以TN/STN類型的顯示面板基本結(jié)構(gòu)來(lái)介紹 LCD 的基本顯示原理,如下圖
圖1 LCD顯示原理示意圖
整個(gè)顯示面板由上下玻璃基板和偏振片(上下偏振片的偏振角度互相垂直)組成。在上下玻璃基板之間,按照螺旋結(jié)構(gòu)將液晶分子有規(guī)律地進(jìn)行涂層,由于液晶分子的排列為螺旋結(jié)構(gòu),因此對(duì)光線具有旋光性。液晶面板的電極是通過(guò)一種 IT0 的金屬化合物蝕刻在上下玻璃基板上。
當(dāng)上下基板間的電壓為 0 時(shí),自然光通過(guò)偏振片后,只有與偏振片方向相同的光線得以進(jìn)入液晶分子的螺旋結(jié)構(gòu)的涂層中,由于螺旋結(jié)構(gòu)的的旋光性,將入射光線的方向旋轉(zhuǎn) 90 度后照射到另一端的偏振片上,同時(shí)由于上下偏振片的偏振角度相互垂直,這樣入射光線通過(guò)另一端的偏振片完全的射出,光線完全進(jìn)入觀察者的眼中,看到的效果就為白色。
當(dāng)上下基板間的電壓為 一交流電壓 時(shí),液晶分子的螺旋結(jié)構(gòu)在電(磁) 場(chǎng)的作用下,變成了同向排列結(jié)構(gòu),對(duì)光線的方向沒(méi)有做任何旋轉(zhuǎn),而上下偏振片的偏振角度相互垂直,這樣入射光線就無(wú)法通過(guò)另一端的偏振片射出,光線無(wú)法進(jìn)入觀察者的眼中,看到的效果就為黑色。
通過(guò)在上下玻璃基板電極間施加不同的交流電壓,即可實(shí)現(xiàn)液晶顯示的兩種基本狀態(tài)亮On) 和暗 (Off) 。
2.1 驅(qū)動(dòng)關(guān)鍵參數(shù)
在LCD 驅(qū)動(dòng)中,驅(qū)動(dòng)電壓和掃描頻率非常關(guān)鍵。液晶分子是用交流電壓驅(qū)動(dòng)的,長(zhǎng)時(shí)間的直流電壓加在液晶分子兩端,會(huì)影響液晶分子的電氣化學(xué)特性,引起顯示模糊,壽命減少,其破壞性為不可恢復(fù)。在單片機(jī)系統(tǒng)中,一般LCD 的驅(qū)動(dòng)電壓選擇為MCU 的供電電壓,LCD 電壓高于MCU 電壓易造成亮度不夠,LCD 電壓低于MCU 電壓易造成“鬼影”(不該點(diǎn)亮的點(diǎn)亮)。驅(qū)動(dòng)液晶分子的交流電壓的頻率依據(jù)LCD 面板的面積和設(shè)計(jì)而定,一般在 60~100Hz 之間。頻率過(guò)高,增加驅(qū)動(dòng)功耗;頻率過(guò)低,會(huì)導(dǎo)致顯示閃爍,同時(shí)如果掃描頻率同光源的頻率之間有倍數(shù)關(guān)系,顯示也會(huì)有閃爍現(xiàn)象出現(xiàn)。
液晶分子是一種電壓積分型材料,它的扭曲程度(透光性)僅和極板間電壓的有效值有關(guān),和充電波形無(wú)關(guān)。電壓的有效值用COM/SEG 之間的電壓差值的均方根VRMS 表示
LCD 顯示“亮”和“滅(透光和不透光)的電壓有效值的分界電壓稱為開啟電壓Vth,當(dāng)電壓有效值超過(guò)Vth,液晶分子的排列方向發(fā)生變化,旋光角度加大,透光率急劇變化,從而引起液晶顯示狀態(tài)的變化。光線的透射率與交流電壓的有效值的關(guān)系如圖2所示:
圖2 光線的透射率與交流電壓有效值的關(guān)系
LCD 段上是否存在RMS電壓將決定此段為導(dǎo)通還是截止。圖3中的示例波形給出了一個(gè)導(dǎo)通段和一個(gè)截止段的波形(COMx 和SPx 引腳信號(hào)的組合)。導(dǎo)通段比截止段上施加了更大的RMS 電壓。注意,這兩個(gè)段都具有凈零直流電壓的波形,但導(dǎo)通段上的RMS 電壓較高,這使得該段導(dǎo)通并且看起來(lái)是暗的。
圖3 LCD交流波形
033內(nèi)嵌的LCD驅(qū)動(dòng)器,正是通過(guò)系統(tǒng)的控制,按照用戶定義的顯示圖案,在I/O 口產(chǎn)生點(diǎn)亮LCD所需的模擬驅(qū)動(dòng)波形,接到LCD 面板上點(diǎn)亮對(duì)應(yīng)的像素而達(dá)到想要的顯示效果。LCD 面板有兩個(gè)重要的參數(shù):
占空比 (Duty)
該參數(shù)一般也稱為Duty 數(shù)或COM 數(shù)。LCD 通常采用時(shí)分動(dòng)態(tài)掃描的驅(qū)動(dòng)模式,在此模式下,每個(gè)COM的有效選通時(shí)間與整個(gè)掃描周期的比值即占空比 (Duty)是固定的,等于1/COM 數(shù)。
偏置 (Bias)
LCD 的SEG/COM 的驅(qū)動(dòng)波形為模擬信號(hào),各檔模擬電壓相對(duì)于LCD 輸出的最高電壓的比例稱為偏置,偏壓級(jí)數(shù)越多LCD 的對(duì)比度級(jí)別就越多,能顯示的圖案就越復(fù)雜。一般來(lái)講,Bias是以輸出最低檔電壓(0 除外)與輸出最高檔電壓的比值來(lái)表示。圖3 所示 為1/4 Duty,1/3 Bias液晶屏的COM端時(shí)序 。
圖3 對(duì)應(yīng)的是1/4 duty,1/3 bias 的液晶COM口驅(qū)動(dòng)波形,COM 數(shù)為4,每個(gè)COM的有效選通時(shí)間與整個(gè)掃描周期的比值(Duty)為1/4,驅(qū)動(dòng)波形的模擬電壓共分3 檔,V3 為輸出最高電壓,V2,V1 為輸出中間電壓,并且V1/V3=1/3。
為了達(dá)到理想的顯示效果,一般而言,Bias 和COM 之間有一定關(guān)系,COM 數(shù)越多,每根COM 對(duì)應(yīng)的選通時(shí)間變短,而要達(dá)到同樣的顯示亮度,VON 的電壓就要提高,要達(dá)到同樣的顯示對(duì)比度,選電平和非選電平的差異需要加大,即Bias 需要加大,COM 和Bias 間有一經(jīng)驗(yàn)公式,即:
圖4 LCD驅(qū)動(dòng)波形圖
2.2 LCD管腳多路復(fù)用
033總共有32個(gè)可用于LCD的管腳,使用復(fù)用技術(shù)來(lái)限制控制引腳的數(shù)量,可支持2路復(fù)用、4路復(fù)用,6路復(fù)用,甚至最高支持8路復(fù)用。N路復(fù)用符號(hào)表示每個(gè)段引腳Sx可以驅(qū)動(dòng)顯示屏上的N個(gè)段,這同樣意味著有N個(gè)公共(COMx) 引腳。顯示屏上的每個(gè)LCD 段都由一個(gè)COMx引腳和一個(gè)Sx引腳組合為該段的液晶提供電勢(shì)差進(jìn)行驅(qū)動(dòng)。利用多路復(fù)用技術(shù)可實(shí)現(xiàn)用有限的引腳控制更大量的段,例如一個(gè)8路復(fù)用LCD顯示屏,有8個(gè)COM引腳并且每個(gè)段(Sx)引腳可以驅(qū)動(dòng)8個(gè)段。因此,使用支持8路復(fù)用并有24個(gè)Sx引腳(S0-S23) 的033時(shí),這8個(gè)(COMx) + 24個(gè)(Sx) =32個(gè)引腳可控制192個(gè)段。
圖5 4路復(fù)用的連接和波形
圖6 給出了基本的2路復(fù)用示例。在這種情況下,每個(gè)段由2個(gè)引腳(一個(gè)COMx引腳和一個(gè)Sx段引腳)的信號(hào)進(jìn)行控制。如下顯示的信號(hào)是施加到相應(yīng)段的電極上的波形,Sx和COMx信號(hào)之間的電勢(shì)差即是施加到此區(qū)域液晶上的電壓。該電勢(shì)差是圖6(COM0-S0和COM1-S1)中所示的合成波形的電壓。在本示例中,COM0-S0的波形具有高RMS 電壓,盡管該波形具有凈零直流電壓,該段仍然導(dǎo)通。COM1-S1 波形的RMS 電壓較低,因此該段截止。雖然這些波形看起來(lái)有些復(fù)雜,但請(qǐng)記住,它們將由033的LCD驅(qū)動(dòng)器自動(dòng)生成,用戶只需要指定LCD 的基本設(shè)置,然后指定哪些段應(yīng)該導(dǎo)通或者截止。
圖6 2路復(fù)用示例
2.3 驅(qū)動(dòng)器的電源
液晶驅(qū)動(dòng)波形為由若干檔直流電平組合而成的模擬波形, 各檔直流電平的比例關(guān)系
反映驅(qū)動(dòng)波形的Bias比例關(guān)系,各檔電平的具體幅值取決于 LCD Panel 的液晶特性和Duty 數(shù)的多少。圖7為L(zhǎng)CD 驅(qū)動(dòng)電源部分的示意圖:
圖7 LCD驅(qū)動(dòng)電源部分的示意圖
電源調(diào)整器部分(Power Regulator),產(chǎn)生LCD驅(qū)動(dòng)所需的最高直流電平,一般分為三種:
LCD驅(qū)動(dòng)所需的最高直流電平等于外部輸入電源VDD的,此部分就直接將VDD輸入至后續(xù)電路;
LCD驅(qū)動(dòng)所需的最高直流電平大于外部輸入電源VDD,且不需要穩(wěn)壓輸出的,如固定等于VDD或1.5VDD,此部分通常做法是將外部輸入電源VDD通過(guò)升壓電路(pump)升至所需的電壓,輸入至后續(xù)電路;
LCD驅(qū)動(dòng)所需的最高直流電平大于外部輸入電源VDD,且需要穩(wěn)壓輸出的,即驅(qū)動(dòng)所需的最高直流電平不隨VDD的變化而變化的,如要求VDD =2.4~5.5V全電壓范圍里,VLCD的輸出電壓都保持不變,此部分通常做法是首先產(chǎn)生一個(gè)誤差范圍符合要求的電壓基準(zhǔn)源,然后將此電壓基準(zhǔn)源比例放大至所需的電壓,同時(shí)外部輸入電源VDD通過(guò)升壓電路(pump)升至一定的電壓,如2VDD,作為比例放大部分的電源。
注:033的LCD驅(qū)動(dòng)電源調(diào)整器部分產(chǎn)生LCD驅(qū)動(dòng)所需的最高直流電平,只支持前面兩種,也就是VLCD會(huì)跟隨著VDD的變化而變化,為了保障在低電壓下仍然有比較高的對(duì)比度和顯示效果,可以通過(guò)升壓電路升壓至VLCD=1.5VDD。
偏置電壓產(chǎn)生部分(Bias Voltage Generator),LCD 驅(qū)動(dòng)器輸出的最高電壓通過(guò)偏置電壓產(chǎn)生電路,根據(jù)選擇的偏置設(shè)置產(chǎn)生LCD交流驅(qū)動(dòng)波形所需要的其它幾檔偏置電壓(VLCD,Vn,Vn-1,?V1,V0),提供給后續(xù)的COM/SEG波形產(chǎn)生電路,此部分的實(shí)現(xiàn)方式一般分為兩種:
電阻分壓結(jié)構(gòu)
即依據(jù)Bias的設(shè)置,選擇合適的分壓電阻,產(chǎn)生需要的直流分壓電平,如圖8;
圖8 電阻分壓結(jié)構(gòu)的偏壓電路示意圖
電容結(jié)構(gòu)
這是一種較為特殊的LCD 驅(qū)動(dòng)的電源結(jié)構(gòu),在這種結(jié)構(gòu)下,電壓調(diào)整部分和電壓偏置部分是整合在一起的,電源升壓部分是直接按照Bias的設(shè)置產(chǎn)生LCD驅(qū)動(dòng)需要的直流分壓電平,如圖中,VLCD可以是1倍的VDD也可以是1.5倍的VDD。
圖9 電容分壓結(jié)構(gòu)的偏壓電路示意圖
在此結(jié)構(gòu)下,如圖9所示的外接電容一般情況是必須要的,否則僅僅依靠芯片內(nèi)的電容,其驅(qū)動(dòng)能力較差。
COM/SEG驅(qū)動(dòng)波形產(chǎn)生部分(COM/SEG driver),COM/SEG driver可以看作一組多路選擇開關(guān),COM driver依據(jù)掃描計(jì)數(shù)器的值,SEG driver依據(jù)顯示數(shù)據(jù)RAM對(duì)應(yīng)的值,從輸入的直流分壓電平中進(jìn)行選擇并從相應(yīng)的COM/SEG引腳加以輸出。這樣從整個(gè)LCD掃描周期來(lái)講,從COM/SEG引腳上就輸出了驅(qū)動(dòng)LCD Panel所需要的模擬電壓波形。
圖10 COM/SEG驅(qū)動(dòng)波形產(chǎn)生原理示意圖
表1 直流分壓電平的選擇關(guān)系表
圖11 COM/SEG 1/4和1/5 Bias下選通有效電平示意圖
圖12 1/4Bias下SEG/COM的波形圖
2.4 LCD顯示RAM
用戶對(duì)033的LCD 驅(qū)動(dòng)器的操作一方面是通過(guò)操作LCD 驅(qū)動(dòng)器的控制寄存器來(lái)設(shè)置LCD 驅(qū)動(dòng)的工作模式(包括Duty/對(duì)比度/掃描頻率/LCD開關(guān)等的設(shè)置),另一方面LCD 面板上顯示所需的內(nèi)容是通過(guò)讀寫LCD顯示RAM來(lái)實(shí)現(xiàn)。LCD RAM的結(jié)構(gòu)不同于其它Data RAM,它是一個(gè)雙口RAM(Dual Port)的結(jié)構(gòu),一邊為CPU的讀寫接口,另外一邊是與LCD driver的讀接口。LCD RAM的字節(jié)排列順序是與LCD 輸出的COM/SEG陣列相對(duì)應(yīng)的,具體對(duì)應(yīng)關(guān)系如圖13所示。比如要將COM2與SEG3交叉點(diǎn)處的點(diǎn)點(diǎn)亮,只需將0x40015404地址的Bit26置1即可,其余的工作由LCD驅(qū)動(dòng)器的硬件自動(dòng)完成。
注意:
(1)由于所有的LCD管腳都可以復(fù)用成COM或者SEG,為了更方便驅(qū)動(dòng)軟件的編程,建議COM從LCD0管腳依次往后配;
(2)圖13是按1/4Duty來(lái)分配,033還可以支持1/8Duty,那么只需要往高位延伸即可(圖中無(wú)定義的位)
圖13 1/4Duty下SEG/COM的波形圖
033的LCD驅(qū)動(dòng)器最多可提供16頁(yè)獨(dú)立的顯示RAM,支持有四種顯示模式,分別為固定頁(yè)面顯示,單次輪顯,單次輪顯關(guān)閉模式和連續(xù)輪顯模式,16頁(yè)獨(dú)立顯示RAM的地址分配如表2所示。具體顯示的頁(yè)號(hào)由頁(yè)數(shù)寄存器LCD_PGCNT和輪顯最大頁(yè)數(shù)寄存器LCD_PGMAX共同控制,詳見(jiàn)033用戶手冊(cè)。
表2 16頁(yè)顯示RAM地址對(duì)應(yīng)的地址范圍
固定頁(yè)面顯示:軟件寫LCD_PGCNT寄存器后,LCD模塊會(huì)在當(dāng)前幀結(jié)束后去顯示新的第LCD_PGCNT頁(yè)的內(nèi)容
單次輪顯顯示:從第LCD_PGCNT頁(yè)起輪顯至第LCD_PGMAX頁(yè)后自動(dòng)變?yōu)楣潭@示第LCD_PGMAX頁(yè)
單次輪顯關(guān)閉:從第LCD_PGCNT頁(yè)起輪顯至第LCD_PGMAX頁(yè)后自動(dòng)關(guān)閉LCD模塊
連續(xù)輪顯顯示:從第LCD_PGCNT頁(yè)起輪顯至第LCD_PGMAX頁(yè)后,在第0頁(yè)至第LCD_PGMAX頁(yè)循環(huán)顯示
LCD模塊提供最多16頁(yè)顯示內(nèi)容緩存,軟件通過(guò)配置顯示數(shù)據(jù)寄存器來(lái)配置每頁(yè)的顯示內(nèi)容。
LCD顯示RAM決定每頁(yè)顯示的內(nèi)容,但是如果軟件是對(duì)當(dāng)前顯示頁(yè)的數(shù)據(jù)內(nèi)容進(jìn)行更新,在配置完相應(yīng)的顯示RAM后,還需向LCD_CTRL寄存器的更新位DU寫1,LCD驅(qū)動(dòng)器會(huì)在當(dāng)前幀結(jié)束后更新當(dāng)前顯示頁(yè)的顯示內(nèi)容,同時(shí)硬件會(huì)清零LCD_CTRL寄存器的DU位。
2.5 LCD閃爍顯示
033的LCD驅(qū)動(dòng)器支持全屏閃爍方式,軟件配置LCD_CTRL寄存器的顯示模式使能BLINK位置1即可實(shí)現(xiàn)以特定頻率自動(dòng)閃爍,閃爍頻率可通過(guò)LCD_BTIME和LCD_BON兩個(gè)寄存器共同配置。
03、LCD驅(qū)動(dòng)器應(yīng)用實(shí)例
3.1 建立映射表發(fā)
編寫LCD驅(qū)動(dòng)程序常令人大傷腦筋,因?yàn)檐浖枰紤]許多的硬件因素。LCD屏幕引腳與MCU的引腳連接方式,MCU將引腳映射到LCD顯示RAM的方式,LCD引腳的復(fù)用選擇方式等因素交織在一起會(huì)使代碼更加晦澀難懂。本節(jié)將給出一些提示技巧,以幫助用戶做到使LCD 驅(qū)動(dòng)軟件更加易用和易懂,以及編寫高效的LCD代碼。
本章節(jié)實(shí)例以如下LCD屏幕詳解驅(qū)動(dòng)軟件的編程思路,采用的LCD屏幕的管腳規(guī)格為4(COM)x 19(SEG),該顯示屏涵蓋了數(shù)碼值和單位顯示要素。
圖14 LCD屏幕的COM和SEG貫穿關(guān)系
從上文LCD顯示原理可知,LCD屏幕COMx和SEGx交叉的液晶段對(duì)應(yīng)的驅(qū)動(dòng)波形(COMx-SEGx)如果是選通電平,那么點(diǎn)亮,如果是非選通電平,那么點(diǎn)滅。該LCD屏幕共有11個(gè)數(shù)碼管(8個(gè)完整的數(shù)碼管和3個(gè)非完整數(shù)碼管),每個(gè)數(shù)碼管由A、B、C、D、E、F、G七段選擇性組成。除了數(shù)碼管之外,還有符號(hào)段,比如電池、單位、時(shí)間分格符等。LCD的屏幕每個(gè)顯示點(diǎn)均有穿插對(duì)應(yīng)的COM口和SEG口,其對(duì)應(yīng)關(guān)系如圖中的表格映射。表中的映射編碼數(shù)字部分表示位置,字母部分表示對(duì)應(yīng)的段,比如9F表示第九個(gè)數(shù)碼管位置的F段。
舉個(gè)例子,需要再LCD屏幕的第二個(gè)數(shù)碼管顯示數(shù)值“3”那么對(duì)應(yīng)MAP表中的2A、2B、2C、2G必須選通點(diǎn)亮。
圖15 LCD屏幕COM和SEG的映射關(guān)系表
基于上文的LCD屏幕,使用033與LCD屏幕的互連關(guān)系如圖所示,MCU的LCD管腳復(fù)用關(guān)系為:LCD0~LCD3復(fù)用為COM口,LCD9~LCD27復(fù)用為SEG口。
圖16 LCD屏幕和MCU的硬件互連關(guān)系
結(jié)合上文中關(guān)于LCD顯示RAM以及LCD屏幕的段映射表,在屏幕和MCU的硬件互連關(guān)系確認(rèn)的情況下即可得出下圖中的LCD屏幕和RAM的映射陣列表,由該映射表就能夠很清晰的知道要點(diǎn)亮屏幕上的點(diǎn)需要對(duì)應(yīng)到RAM的地址和位域。
依舊以上文中需要點(diǎn)亮屏幕第二個(gè)數(shù)碼管使其顯示“3”為例,需要將地址0x40015408的第26位置1,同時(shí)將地址0x4001540C的第0位,第1位和第2位置1。
圖16 LCD屏幕和RAM地址的映射關(guān)系
3.2 數(shù)碼管取模編碼
為了更好地對(duì)數(shù)碼管進(jìn)行取模編碼,我們把圖16的映射關(guān)系做一個(gè)轉(zhuǎn)換,把每個(gè)數(shù)碼管的所有字段,比如1D,1C,1B,1A,1E,1G,1F組合成一個(gè)字節(jié)(圖中的8位編碼),這里的1代表數(shù)碼管的位置,字母代表數(shù)碼管的組成段,數(shù)值編碼轉(zhuǎn)換后的映射關(guān)系如圖17所示。
從圖17可知,由于LCD屏幕自身的特性,5#、6#、7#數(shù)碼管編碼后高4位和低4位必須做一次轉(zhuǎn)置,才可與其他數(shù)碼管的編碼結(jié)果一致,有利于驅(qū)動(dòng)軟件編程的一致性。
圖17 數(shù)碼管數(shù)值編碼與RAM地址映射關(guān)系
經(jīng)過(guò)編碼后,我們可以采用如下宏定義來(lái)設(shè)定數(shù)碼管每一段的編碼數(shù)值:
數(shù)碼管每一段的編碼值確定后,就可以對(duì)0-F以及其他字符形狀取模
為了更好的管理上述的取模結(jié)果,定義了如下的數(shù)組,基于數(shù)組的索引,軟件可以更方便針對(duì)需要顯示的字符信息進(jìn)行編程。比如顯示“2”對(duì)應(yīng)的數(shù)組索引為0x02,顯示“A的數(shù)組索引為0x0A,顯示“U”對(duì)應(yīng)的數(shù)組索引為0x17。
從圖16可以看到基本上每?jī)啥蜸EG能完全配置一個(gè)數(shù)碼管,那么可以通過(guò)一個(gè)共用體(union)來(lái)管理所有的數(shù)碼管,使得代碼可以更加簡(jiǎn)潔。
將一些特殊的字段單獨(dú)賦值,比如“電池電量低”、“單位”、“AM”等,因?yàn)檫@些不是數(shù)碼,需要根據(jù)特殊情況來(lái)置位,依然使用宏定義來(lái)定義并且跟上面定義的共用體對(duì)應(yīng)的位域關(guān)聯(lián)起來(lái)方便軟件在對(duì)數(shù)碼管賦值的時(shí)候能夠聯(lián)動(dòng)操作這些特殊字符。
使用宏定義點(diǎn)亮對(duì)應(yīng)的特殊字符
使用宏定義關(guān)閉對(duì)應(yīng)的特殊字符的顯示
基于上述這些編碼,液晶屏的取模已經(jīng)全部完成,不管是需要顯示數(shù)碼還是顯示特殊字符,只要對(duì)取模數(shù)組GAuB_char_tbl直接對(duì)LCD_LgcBuf(軟件已經(jīng)提前開辟共用體空間)賦值即可。比如第6個(gè)數(shù)碼管需要顯示“E”,那么軟件是需要將GAuB_char_tbl[0xE]賦值給LCD_LgcBuf[7]。如果要顯示特定字符“PM”,那么軟件只需要執(zhí)行Dis_Timer_PM_on。
分析到這邊,對(duì)LCD顯示字符的軟件操作其實(shí)最終轉(zhuǎn)換成了對(duì)共用體LCD_LgcBuf的操作。
首先軟件先開辟一片顯示共用體空間
根據(jù)圖17的映射關(guān)系以及數(shù)碼管取模結(jié)果,針對(duì)需要顯示的數(shù)碼管編號(hào)以及需要顯示的數(shù)值的驅(qū)動(dòng)如下:
這里面有個(gè)特別需要注意的地方,從圖16也可以看出來(lái),5#、6#和7#數(shù)碼管相對(duì)于其他數(shù)碼管編碼的高4位和低4位是轉(zhuǎn)置的,因此這三個(gè)比較特殊的數(shù)碼管在對(duì)顯示共用體賦值之前必須先做一個(gè)轉(zhuǎn)置處理(上述軟件中的第17、21、25行),轉(zhuǎn)置軟件實(shí)現(xiàn)方式如下:
3.3 LCD顯示RAM賦值
上文2.4章節(jié)關(guān)于LCD顯示RAM的闡述可知,LCD驅(qū)動(dòng)器驅(qū)動(dòng)波形最終是根據(jù)RAM的賦值情況輸出的。3.2章節(jié)我們知道了LCD顯示字符和共用體的關(guān)系,通過(guò)一系列的軟件定義,已經(jīng)把LCD比較復(fù)雜的字符顯示關(guān)系已經(jīng)通過(guò)軟件解耦,直接通過(guò)一個(gè)共用體結(jié)構(gòu)LCD_LgcBuf就可以實(shí)現(xiàn)。那么這里面還差最后一個(gè)步驟,就是LCD_LgcBuf和RAM地址的映射和轉(zhuǎn)換。
圖18 LCD共用體結(jié)構(gòu)與RAM地址映射關(guān)系
這里面一個(gè)關(guān)鍵的注意點(diǎn)是每個(gè)RAM的地址是32位并且分配給四個(gè)SEG(參考圖13),同時(shí)LCD是1/duty(4個(gè)COM口)結(jié)構(gòu),因此把顯示結(jié)構(gòu)體每個(gè)字節(jié)的每組位元組分為高低4位,賦值給每個(gè)SEG對(duì)應(yīng)的RAM地址的低4位。圖18非常清晰的把COM/SEG、RAM位段、LCD顯示共用體三者的關(guān)系都體現(xiàn)映射出來(lái),軟件基于這個(gè)圖表進(jìn)行編程。
首先定義LCD顯示RAM的地址,033的LCD驅(qū)動(dòng)器總共支持16頁(yè),每一頁(yè)的地址請(qǐng)參考表2
對(duì)LCD顯示共用體的每一個(gè)字節(jié)(每個(gè)字節(jié)對(duì)應(yīng)一個(gè)數(shù)碼或者字符)的低4位和高4位進(jìn)行截取,并且按圖18(圖中只是以第0頁(yè)來(lái)舉例)對(duì)應(yīng)的關(guān)系賦值到LCD顯示RAM對(duì)應(yīng)地址,由于LCD的顯示RAM總共有16頁(yè),對(duì)應(yīng)的軟件賦值方式如下:
上述針對(duì)LCD的RAM地址進(jìn)行賦值全部都是針對(duì)COM和SEG交叉除的RAM位域操作,但是想讓LCD驅(qū)動(dòng)器能正常起來(lái),還需要對(duì)所有COM口對(duì)應(yīng)的LCD的RAM地址對(duì)應(yīng)的位置1,如下圖19紅色方框部分所示
圖19 COM口對(duì)應(yīng)的RAM地址位賦值1
本文針對(duì)4個(gè)COM口規(guī)格的LCD為例,用如下軟件實(shí)現(xiàn)對(duì)COM口對(duì)應(yīng)的RAM地址位置1的操作
把32個(gè)LCD管腳分成8組,每一組LCD管腳對(duì)應(yīng)一個(gè)RAM地址,從圖13的映射表格也能清楚看出分組的依據(jù),每相鄰組之間對(duì)應(yīng)的RAM地址偏移4,軟件定義如下掩碼:
每一組的4個(gè)LCD管腳供占用一個(gè)32位的RAM地址,對(duì)應(yīng)的每個(gè)LCD管腳依次占據(jù)8位,針對(duì)分組的每個(gè)LCD管腳起始位軟件定義如下掩碼:
033最高規(guī)格可支持1/8Duty,也就是LCD管腳最多可復(fù)用成8個(gè)COM口,軟件枚舉出所有的COM
基于如上的掩碼和枚舉定義,軟件通過(guò)如下方法將需要配置的COM口的RAM地址對(duì)應(yīng)位置1.
舉個(gè)例子,比如要設(shè)置LCD13為COM5,那么只需執(zhí)行如下語(yǔ)句:
1.LCD_SET_DataBuff_COM(LCD_GroupMask_12_15,LCD_COMMASK1,LCD_COM5);
因此要實(shí)現(xiàn)對(duì)圖19所示的4個(gè)COM口所在RAM區(qū)域進(jìn)行配置需要執(zhí)行如下四條語(yǔ)句:
3.4 LCD管腳配置編程技巧
033總共有32個(gè)LCD管腳LCD[31:0],每個(gè)LCD管腳均可復(fù)用成COM管腳或者SEG管腳,可由SEG/COM選擇寄存器LCD_SCSEL來(lái)配置,寄存器定義如圖20
圖20 COM/SEG選擇寄存器定義
上文中使用的硬件實(shí)例配置的復(fù)用方法為L(zhǎng)CD[3:0]作為COM[3:0],LCD[27:9]作為SEG[19:1],基于該復(fù)用配置建立硬件互連關(guān)系以及圖16的映射表,軟件實(shí)現(xiàn)如下:
LCD的管腳能正常使用,除了配置上述的COM/SEG復(fù)用功能之外,LCD管腳還需要把模擬功能打開(對(duì)應(yīng)于GPIO模擬功能使能)以及配置LCD管腳功能使能寄存器如圖21把相應(yīng)的LCD管腳使能。
圖20 LCD管腳功能使能寄存器
本文實(shí)例只用到了LCD[3:0]以及LCD[27:9],因此軟件只需要置位對(duì)應(yīng)的管腳位
注意:為了更好的降低功耗,其他沒(méi)有用到的LCD管腳對(duì)應(yīng)的位必須置0
LCD管腳開啟模擬功能的軟件配置如下,LCD管腳和GPIO的對(duì)應(yīng)關(guān)系請(qǐng)參考圖16
3.5 LCD驅(qū)動(dòng)器參數(shù)配置
在了解了LCD顯示RAM和管腳復(fù)用的配置以及編程技巧后,還有一個(gè)管腳的配置就是關(guān)于LCD驅(qū)動(dòng)器一些關(guān)鍵參數(shù)的配置,包括如下內(nèi)容:
驅(qū)動(dòng)器時(shí)鐘源
幀頻率
占空比
閃爍模式
輪顯模式
驅(qū)動(dòng)器電源類型
驅(qū)動(dòng)波形類型
上述這些關(guān)鍵參數(shù)除了幀頻率之外,全部都在LCD控制寄存器中配置,控制寄存器如圖所示,具體也可參考用戶手冊(cè)。
基于本文選擇的液晶顯示屏,對(duì)LCD控制器的配置(包括使能LCD)如下:
LCD的幀刷新頻率可通過(guò)LCD_FSET寄存器的FS位來(lái)控制。通過(guò)設(shè)置FS值,使得幀刷新頻率在25-120Hz之間
幀刷新頻率=LCD時(shí)鐘頻率/(COM數(shù)*2*(FS*8+1))--------COM=2; COM=4
幀刷新頻率=LCD時(shí)鐘頻率/(COM數(shù)*2*(FS*4+1))--------COM=6; COM=8
配置FS值為4,那么幀刷新頻率=32KHz/(4*2*(4*8+1))≈120Hz
3.6 顯示示例
經(jīng)過(guò)前面章節(jié)的闡述,我們已經(jīng)知道了LCD的驅(qū)動(dòng)原理、使用033內(nèi)置LCD驅(qū)動(dòng)器的軟件編程技巧等,基于上面的配置,這邊以如下圖顯示綠色部分字符進(jìn)一步說(shuō)明最終要實(shí)現(xiàn)LCD顯示更新的軟件配置流程。
實(shí)際顯示效果如下圖所示
來(lái)源:澎湃微電子
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理
審核編輯 黃宇
-
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349914 -
lcd
+關(guān)注
關(guān)注
34文章
4405瀏覽量
166930 -
血糖儀
+關(guān)注
關(guān)注
3文章
70瀏覽量
27172
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論