基于嵌入式Linux的LCD背光調節(jié)及驅動的實現
3.1 背光驅動的初始化和退出函數
在加載驅動時,內核調用初始化函數s3c_bl_pwm_init()。首先初始化LCD背光亮度,設置按鍵中斷觸發(fā)方式,注冊中斷。然后初始化定時器,設置按鍵初始狀態(tài)為抬起(KEY_UP)。最后使用misc_register()向內核注冊混雜設備,混雜設備是字符設備的抽象。背光驅動中混雜設備的定義如下:
在卸載驅動時,內核調用退出函數s3c_bl_pwm_exit(),注銷中斷和混雜設備,完成和初始化函數相反的行為。
3.2 按鍵中斷和定時器處理程序
當按鍵被按下后,將發(fā)生快速中斷,觸發(fā)中斷處理程序buttons_interrupt()。在中斷處理程序中,當按鍵初始狀態(tài)為抬起(KEY_UP)時,把按鍵狀態(tài)設置為不確定(KEY_DOWNX),然后啟動定時器延時去抖,進入定時器處理函數。如果當前按鍵初始狀態(tài)不是抬起則退出中斷處理程序。在定時器處理程序中,讀取按鍵GPIO端口電平,查詢按鍵是否仍然被按下。如果按鍵仍被按下且按鍵狀態(tài)是不確定(KEY_DOWNX),則標識當前按鍵狀態(tài)為按下(KEY_DOWN)。同時延時一個相對去抖更長的時間,啟動一個新的定時器,每次定時器到期后,查詢按鍵是否仍然被按下且按鍵狀態(tài)為按下(KEY_DOWN),如果是,則重新啟動新的定時器;若查詢到已經沒有按下,則標識按鍵狀態(tài)為抬起,這時候應該等待新的按鍵中斷。每次標識按鍵狀態(tài)為按下(KEY_DOWN)時,應該調用背光調節(jié)函數bl_handler()依據傳入的按鍵編號調節(jié)背光亮度。按鍵中斷和定時器處理函數的流程如圖4所示。本文引用地址:http://www.biyoush.com/article/149184.htm
3.3 PWM設置函數
PWM定時器中有2個寄存器TCNTBn和TCMPBn,分別為定時器計數緩存寄存器和定時器比較緩存寄存器。TCNTBn用來設置PWM輸出脈沖頻率,TCMPBn的值用于設置PWM信號占空比。因此通過寫入不同的TCMPBn的數值,就可以調節(jié)輸出信號占空比,實現PWM功能,即:要減小PWM的脈寬,則要減小TCMPBn值,相反要增大PWM的脈寬,則要增大TCMPBn。如果使用了反相器,則增大和減小的結果相反,雙緩沖特性允許定時器在工作時改寫TCMPBn的值。
PWM設置函數pwm_set_duty()根據傳入參數改寫TCMPBn的值,可以實時地改變輸出波形。PWM設置函數設置定耐器TOUT1端口GPB1的PWM功
能操作步驟如下:
(1)使能系統PCLK時鐘源,獲取總線時鐘頻率值。設置定時器TOUT1的時鐘預分頻值和分頻值,分別寫入定時器配置寄存器TCFG0和TCF G1;
(2)寫入初始值到比較緩存寄存器TCMPB1和計數緩存寄存器TCNTB1;
(3)設置定時器控制寄存器TCON。使能定時器TOUT1的自動重載位,關閉反相器,開啟手動更新位,啟動定時器TOUT1。在定時器延時等待一定時間后定時器的下降計數器開始計數;
(4)清除定時器TOUT1的手動更新位,手動更新位必須在下次寫前被清除。
LCD顯示屏相關文章:lcd顯示屏原理
lcd相關文章:lcd原理
評論