基于嵌入式Linux的LCD背光調(diào)節(jié)及驅(qū)動(dòng)的實(shí)現(xiàn)
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è)備的定義如下:
在卸載驅(qū)動(dòng)時(shí),內(nèi)核調(diào)用退出函數(shù)s3c_bl_pwm_exit(),注銷(xiāo)中斷和混雜設(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端口電平,查詢(xún)按鍵是否仍然被按下。如果按鍵仍被按下且按鍵狀態(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í)器到期后,查詢(xún)按鍵是否仍然被按下且按鍵狀態(tài)為按下(KEY_DOWN),如果是,則重新啟動(dòng)新的定時(shí)器;若查詢(xún)到已經(jīng)沒(méi)有按下,則標(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所示。本文引用地址:http://m.butianyuan.cn/article/149184.htm
3.3 PWM設(shè)置函數(shù)
PWM定時(shí)器中有2個(gè)寄存器TCNTBn和TCMPBn,分別為定時(shí)器計(jì)數(shù)緩存寄存器和定時(shí)器比較緩存寄存器。TCNTBn用來(lái)設(shè)置PWM輸出脈沖頻率,TCMPBn的值用于設(shè)置PWM信號(hào)占空比。因此通過(guò)寫(xiě)入不同的TCMPBn的數(shù)值,就可以調(diào)節(jié)輸出信號(hào)占空比,實(shí)現(xiàn)PWM功能,即:要減小PWM的脈寬,則要減小TCMPBn值,相反要增大PWM的脈寬,則要增大TCMPBn。如果使用了反相器,則增大和減小的結(jié)果相反,雙緩沖特性允許定時(shí)器在工作時(shí)改寫(xiě)TCMPBn的值。
PWM設(shè)置函數(shù)pwm_set_duty()根據(jù)傳入?yún)?shù)改寫(xiě)TCMPBn的值,可以實(shí)時(shí)地改變輸出波形。PWM設(shè)置函數(shù)設(shè)置定耐器TOUT1端口GPB1的PWM功
能操作步驟如下:
(1)使能系統(tǒng)PCLK時(shí)鐘源,獲取總線時(shí)鐘頻率值。設(shè)置定時(shí)器TOUT1的時(shí)鐘預(yù)分頻值和分頻值,分別寫(xiě)入定時(shí)器配置寄存器TCFG0和TCF G1;
(2)寫(xiě)入初始值到比較緩存寄存器TCMPB1和計(jì)數(shù)緩存寄存器TCNTB1;
(3)設(shè)置定時(shí)器控制寄存器TCON。使能定時(shí)器TOUT1的自動(dòng)重載位,關(guān)閉反相器,開(kāi)啟手動(dòng)更新位,啟動(dòng)定時(shí)器TOUT1。在定時(shí)器延時(shí)等待一定時(shí)間后定時(shí)器的下降計(jì)數(shù)器開(kāi)始計(jì)數(shù);
(4)清除定時(shí)器TOUT1的手動(dòng)更新位,手動(dòng)更新位必須在下次寫(xiě)前被清除。
LCD顯示屏相關(guān)文章:lcd顯示屏原理
lcd相關(guān)文章:lcd原理
評(píng)論