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

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

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

a.JPG


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

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

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

b.JPG


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

3 背光調節(jié)的軟件設計
背光調節(jié)的軟件部分主要是驅動程序的設計,設備驅動程序是連接硬件和操作系統(tǒng)內核的橋梁,,它為應用程序屏蔽了硬件的細節(jié),,應用程序將使用統(tǒng)一的系統(tǒng)調用接口來訪問設備,。Linux系統(tǒng)將設備分為3種基本類型,,即字符設備、塊設備和網(wǎng)絡設備,。本文涉及的背光驅動屬于字符設備驅動程序,。采用Linux作為嵌入式操作系統(tǒng),內核版本為Linux 2.6.32,,根文件系統(tǒng)采用Yaffs2,,應用程序采用了Busybox。背光驅動程序的工作流程框圖如圖3所示,。

c.JPG


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

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

e.JPG


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

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

g.JPG


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

f.JPG


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

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

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