《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式Linux的LCD背光調(diào)節(jié)及驅(qū)動(dòng)的實(shí)現(xiàn)
基于嵌入式Linux的LCD背光調(diào)節(jié)及驅(qū)動(dòng)的實(shí)現(xiàn)
電子設(shè)計(jì)工程
劉景桑,,李京華,,狄輝輝,,吳亞東
摘要: 為了減少手持式設(shè)備的功耗并滿足LCD背光調(diào)節(jié)的應(yīng)用需求,,在嵌入式Linux下,,設(shè)計(jì)了一種用按鍵來調(diào)節(jié)輸出方波占空比以實(shí)現(xiàn)背光調(diào)節(jié)的解決方案,。該方案采用S3C2440的定時(shí)器產(chǎn)生PWM信號(hào),,系統(tǒng)根據(jù)LCD使用情況和外界光線強(qiáng)度的變化,,用傳入的按鍵觸發(fā)次數(shù)來控制定時(shí)器輸出PWM信號(hào)的占空比,,通過軟件實(shí)現(xiàn)背光狀態(tài)的實(shí)時(shí)調(diào)節(jié),,并完成了背光驅(qū)動(dòng)程序的設(shè)計(jì)。測(cè)試結(jié)果表明,,該方法可以降低設(shè)備的功耗并能滿足背光調(diào)節(jié)的要求,,具有良好的穩(wěn)定
Abstract:
Key words :

0 引言
在手持式設(shè)備中,,液晶顯示屏的使用越來越廣泛。由于LCD自身是不能發(fā)光的,,它需要一個(gè)強(qiáng)勁的光源來給它提供背光,,以便清晰地顯示信息。這樣的光源是非常耗電的,,通常液晶顯示屏的功耗常常占到系統(tǒng)總功耗的60%以上,。以群創(chuàng)的7寸屏為例,通常背光燈的功耗為2.5 W,,而LCD的功耗只有0.825 W,。由此可見,背光光源的功耗在整個(gè)電源中的比重是相當(dāng)高的,。如果系統(tǒng)在不用顯示屏?xí)r,,也全功率的運(yùn)行,系統(tǒng)的電池能量將很快被耗光,。所以,,調(diào)節(jié)LCD的背光源,降低系統(tǒng)在不用顯示屏?xí)r的能耗是十分必要的工作,。另外,,由于手持式設(shè)備工作環(huán)境的變化,也需要根據(jù)外界光線強(qiáng)度的變化,,對(duì)背光的亮度做出相應(yīng)的調(diào)節(jié),,以適合人眼觀看的舒適度。
基于上述2種原因,,考慮到設(shè)備功耗的降低以及使用的便利性,,本文在嵌入式Linux下,設(shè)計(jì)了一種使用S3C2440的定時(shí)器產(chǎn)生PWM(Pulse Width Modulation)信號(hào),,根據(jù)設(shè)備實(shí)際使用需要,,和外界光線強(qiáng)度的變化用按鍵調(diào)節(jié)LCD背光亮度的解決方案。

1 基于PWM的背光調(diào)節(jié)原理
在中小尺寸液晶顯示屏中,,一般采用白光LED作為顯示屏的背光光源,。PWM即脈寬調(diào)制,PWM調(diào)光就是利用人眼的視覺暫停原理,,以一定的頻率和占空比的方波來控制LED的導(dǎo)通,。LED正向電流在零電流到額定工作電流之間來回切換,通過高速開關(guān)背光,,周期循環(huán)地提供不同占空比的方波,實(shí)現(xiàn)亮度的調(diào)節(jié),。只要導(dǎo)通時(shí)LED正向電流大小是恒定的,,發(fā)出的白光就不會(huì)發(fā)生色偏,,而且只要頻率大干100Hz,人眼看到的將是連續(xù)的光源,。

a.JPG


圖1是脈寬調(diào)制信號(hào)的波形,。假設(shè)高電平代表打開背光,低電平代表關(guān)閉背光,,背光打開和關(guān)閉時(shí)間的比例不同會(huì)得到不同占空比的方波,。從輸出的波形來看,波的平均功率是不一樣的,,這樣就得到了不同的亮度,,實(shí)現(xiàn)了背光的調(diào)節(jié)。

2 背光調(diào)節(jié)的硬件實(shí)現(xiàn)方案
S3C2440是三星公司推出的一款基于ARM920T內(nèi)核的16/32位RISC嵌入式微處理器,。其內(nèi)部有5個(gè)16位的定時(shí)器,,其中前4個(gè)定時(shí)器(TOUT0~TOUT3)具有PWM功能,第5個(gè)定時(shí)器(TOUT4)是一個(gè)沒有輸出引腳的內(nèi)部定時(shí)器,,另外定時(shí)器TOUT0有一個(gè)死區(qū)發(fā)生器,,通常用于大電流設(shè)備控制。
PWM信號(hào)可以用硬件產(chǎn)生,,也可以由軟件產(chǎn)生,。由于用軟件定時(shí)產(chǎn)生PWM信號(hào)外圍電路簡(jiǎn)單,脈沖寬度精度高,,控制靈活,,所以本方案用S3C2440的定時(shí)器TOUT1,軟件定時(shí)產(chǎn)生PWM信號(hào),,通過改變TOUT1端口GPB1輸出脈沖信號(hào)占空比,,控制背光的開關(guān)。

LCD背光調(diào)節(jié)電路如圖2所示,。

b.JPG


圖2中ZXLD1100是一個(gè)電感式的PFM(Pulse Frequency Modulation)升壓轉(zhuǎn)換器,,用于驅(qū)動(dòng)白光LED。當(dāng)LCD正常工作時(shí),,ZXLD1100的EN端被置高電平時(shí),,輸出端將得到驅(qū)動(dòng)LCD背光源所需的工作電壓。將S3C2440的端口GPB1與ZXLD1100的使能端相連,,通過PWM信號(hào)使能ZXLD1100,,可以使LCD背光工作在較低的功率下。
圖2中按鍵S1_KEY用于調(diào)高背光亮度,,S2_KEY用于調(diào)低背光亮度,。S1_KEY和S2_KEY所用到的外部中斷分別是EINT0和EINT13。當(dāng)按鍵按下時(shí),,系統(tǒng)根據(jù)傳入的按鍵編號(hào)控制GPB1輸出PWM信號(hào)占空比,,由此完成了對(duì)設(shè)備背光的軟件控制,,實(shí)現(xiàn)背光亮度的調(diào)節(jié)。

3 背光調(diào)節(jié)的軟件設(shè)計(jì)
背光調(diào)節(jié)的軟件部分主要是驅(qū)動(dòng)程序的設(shè)計(jì),,設(shè)備驅(qū)動(dòng)程序是連接硬件和操作系統(tǒng)內(nèi)核的橋梁,,它為應(yīng)用程序屏蔽了硬件的細(xì)節(jié),應(yīng)用程序?qū)⑹褂媒y(tǒng)一的系統(tǒng)調(diào)用接口來訪問設(shè)備,。Linux系統(tǒng)將設(shè)備分為3種基本類型,,即字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備,。本文涉及的背光驅(qū)動(dòng)屬于字符設(shè)備驅(qū)動(dòng)程序,。采用Linux作為嵌入式操作系統(tǒng),內(nèi)核版本為L(zhǎng)inux 2.6.32,,根文件系統(tǒng)采用Yaffs2,,應(yīng)用程序采用了Busybox。背光驅(qū)動(dòng)程序的工作流程框圖如圖3所示,。

c.JPG


(1)當(dāng)加載驅(qū)動(dòng)時(shí),,調(diào)用初始化函數(shù)s3c_bl_pwm_init()。該函數(shù)會(huì)調(diào)用request_irq()函數(shù)來注冊(cè)中斷,。request_irq()會(huì)操作中斷描述符數(shù)組button_irqs,。中斷描述符數(shù)組的主要功能是記錄中斷號(hào)對(duì)應(yīng)的按鍵編號(hào)和GPIO端口。
(2)當(dāng)中斷到來時(shí),,會(huì)到中斷描述符數(shù)組button_irqs中查詢中斷號(hào)對(duì)應(yīng)的按鍵編號(hào),。然后調(diào)用中斷處理函數(shù)等操作調(diào)節(jié)設(shè)備背光。
(3)當(dāng)卸載驅(qū)動(dòng)時(shí),,調(diào)用退出函數(shù)s3c_bl_pwm_exit(),。該函數(shù)中會(huì)調(diào)用free_irq(),操作中斷描述符數(shù)組button_irqs,,釋放設(shè)備所使用的中斷號(hào)并刪除對(duì)應(yīng)中斷處理函數(shù),。

3.1 背光驅(qū)動(dòng)的初始化和退出函數(shù)
在加載驅(qū)動(dòng)時(shí),內(nèi)核調(diào)用初始化函數(shù)s3c_bl_pwm_init(),。首先初始化LCD背光亮度,,設(shè)置按鍵中斷觸發(fā)方式,注冊(cè)中斷,。然后初始化定時(shí)器,,設(shè)置按鍵初始狀態(tài)為抬起(KEY_UP)。最后使用misc_register()向內(nèi)核注冊(cè)混雜設(shè)備,,混雜設(shè)備是字符設(shè)備的抽象,。背光驅(qū)動(dòng)中混雜設(shè)備的定義如下:
d.JPG
在卸載驅(qū)動(dòng)時(shí),內(nèi)核調(diào)用退出函數(shù)s3c_bl_pwm_exit(),,注銷中斷和混雜設(shè)備,,完成和初始化函數(shù)相反的行為,。
3.2 按鍵中斷和定時(shí)器處理程序
當(dāng)按鍵被按下后,將發(fā)生快速中斷,,觸發(fā)中斷處理程序buttons_interrupt()。在中斷處理程序中,,當(dāng)按鍵初始狀態(tài)為抬起(KEY_UP)時(shí),,把按鍵狀態(tài)設(shè)置為不確定(KEY_DOWNX),然后啟動(dòng)定時(shí)器延時(shí)去抖,,進(jìn)入定時(shí)器處理函數(shù),。如果當(dāng)前按鍵初始狀態(tài)不是抬起則退出中斷處理程序。在定時(shí)器處理程序中,,讀取按鍵GPIO端口電平,,查詢按鍵是否仍然被按下。如果按鍵仍被按下且按鍵狀態(tài)是不確定(KEY_DOWNX),,則標(biāo)識(shí)當(dāng)前按鍵狀態(tài)為按下(KEY_DOWN),。同時(shí)延時(shí)一個(gè)相對(duì)去抖更長(zhǎng)的時(shí)間,啟動(dòng)一個(gè)新的定時(shí)器,,每次定時(shí)器到期后,,查詢按鍵是否仍然被按下且按鍵狀態(tài)為按下(KEY_DOWN),如果是,,則重新啟動(dòng)新的定時(shí)器,;若查詢到已經(jīng)沒有按下,則標(biāo)識(shí)按鍵狀態(tài)為抬起,,這時(shí)候應(yīng)該等待新的按鍵中斷,。每次標(biāo)識(shí)按鍵狀態(tài)為按下(KEY_DOWN)時(shí),應(yīng)該調(diào)用背光調(diào)節(jié)函數(shù)bl_handler()依據(jù)傳入的按鍵編號(hào)調(diào)節(jié)背光亮度,。按鍵中斷和定時(shí)器處理函數(shù)的流程如圖4所示,。

e.JPG


3.3 PWM設(shè)置函數(shù)
PWM定時(shí)器中有2個(gè)寄存器TCNTBn和TCMPBn,分別為定時(shí)器計(jì)數(shù)緩存寄存器和定時(shí)器比較緩存寄存器,。TCNTBn用來設(shè)置PWM輸出脈沖頻率,,TCMPBn的值用于設(shè)置PWM信號(hào)占空比。因此通過寫入不同的TCMPBn的數(shù)值,,就可以調(diào)節(jié)輸出信號(hào)占空比,,實(shí)現(xiàn)PWM功能,即:要減小PWM的脈寬,,則要減小TCMPBn值,,相反要增大PWM的脈寬,則要增大TCMPBn,。如果使用了反相器,,則增大和減小的結(jié)果相反,,雙緩沖特性允許定時(shí)器在工作時(shí)改寫TCMPBn的值。
PWM設(shè)置函數(shù)pwm_set_duty()根據(jù)傳入?yún)?shù)改寫TCMPBn的值,,可以實(shí)時(shí)地改變輸出波形,。PWM設(shè)置函數(shù)設(shè)置定耐器TOUT1端口GPB1的PWM功
能操作步驟如下:
(1)使能系統(tǒng)PCLK時(shí)鐘源,獲取總線時(shí)鐘頻率值,。設(shè)置定時(shí)器TOUT1的時(shí)鐘預(yù)分頻值和分頻值,,分別寫入定時(shí)器配置寄存器TCFG0和TCF G1;
(2)寫入初始值到比較緩存寄存器TCMPB1和計(jì)數(shù)緩存寄存器TCNTB1,;
(3)設(shè)置定時(shí)器控制寄存器TCON,。使能定時(shí)器TOUT1的自動(dòng)重載位,關(guān)閉反相器,,開啟手動(dòng)更新位,,啟動(dòng)定時(shí)器TOUT1。在定時(shí)器延時(shí)等待一定時(shí)間后定時(shí)器的下降計(jì)數(shù)器開始計(jì)數(shù),;
(4)清除定時(shí)器TOUT1的手動(dòng)更新位,,手動(dòng)更新位必須在下次寫前被清除。

4 測(cè)試結(jié)果與分析
將驅(qū)動(dòng)程序編譯后加載到內(nèi)核測(cè)試,,設(shè)定PWM輸出頻率為200 Hz,,高電平比例為1/3的波形,通過示波器看到GPB1端口所輸出波形如圖5所示,。

g.JPG


通過測(cè)試,,可以得到如表1所示的該手持式設(shè)備功耗與背光亮度相關(guān)的數(shù)據(jù)。

f.JPG


從表1中可以看出背光亮度等級(jí)越低,,系統(tǒng)的功耗越小,。所以,在該設(shè)備使用時(shí),,在環(huán)境允許的條件下,,可以降低背光亮度等級(jí),以減少功耗,。本文的背光驅(qū)動(dòng)程序?yàn)楸彻庹{(diào)節(jié)提供了7級(jí)的亮度控制,。在實(shí)際使用的過程中,設(shè)置1/3的亮度即可,,只有在特殊的場(chǎng)合才需要設(shè)置為高亮,。在LCD不工作的時(shí)候,可以調(diào)低或者關(guān)閉背光,,這樣可以大大節(jié)省能耗,。在應(yīng)用時(shí),為了確保人眼看不到LED周期亮滅的情況,以獲得視覺上的滿意效果,,PWM輸出的頻率一般在設(shè)置在100~300 Hz之間比較合適,,否則會(huì)給人閃爍的感覺。

5 結(jié)語(yǔ)
本文在嵌入式Linux下,,設(shè)計(jì)了一種基于PWM調(diào)節(jié)LCD背光的軟硬件實(shí)現(xiàn)方案,。本方案與普通的線性調(diào)光相比,更符合人們對(duì)LED調(diào)光精度,、效率以及效果的要求,,同時(shí)可以降低系統(tǒng)功耗并能滿足手持式設(shè)備調(diào)節(jié)背光的要求,該方案已經(jīng)在一款手持設(shè)備產(chǎn)品上得到了應(yīng)用,。在實(shí)際應(yīng)用中,為了防止當(dāng)PWM頻率落在200~20 kHz之間時(shí),,LED驅(qū)動(dòng)電路的電感和電容產(chǎn)生人耳聽得見的噪聲,,可以根據(jù)需求,增加成本,,用高耐壓的鉭電容代替陶瓷電容,;還可以犧牲調(diào)光精度,把開關(guān)頻率提高到20 kHz以上,,跳出人耳聽覺的范圍,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。