1. 程式人生 > >段碼液晶屏實現原理及注意事項

段碼液晶屏實現原理及注意事項

   **段碼液晶屏由於能提供簡單快捷的顯示效果,被廣泛應用於電子領域。我們生活中常見的空調遙控器、電子血壓計以及電子計算器等等,使用的都是段碼液晶屏。**

圖1:幾種常見的段碼屏

 <p>  Silicon Labs 的 EFM32TG、EFM32G、EFM32LG、EFM32GG、EFM32WG都是帶有低功耗段碼LCD驅動器的MCU,最大支援8x24段數顯示,可以很方便的對這些顯示屏進行控制。但有時由於應用特殊,並不需要驅動段數很多的段碼屏,例如電量顯示板的應用中,就只需要驅動圖中的5個黑色部分來分別指示20%、40%、60%、80%、100%的電量。若從上述的EFM32系列當中選擇,功能上,完成可以實現,但是價效比不高,做出的產品沒有價格優勢。那麼,有沒有一種方法可以不用LCD驅動器,用更簡單的EFM8系列的微控制器來驅動這類段碼屏呢?</p> 

這就要從段碼屏顯示原理說起……

圖2:電量指示段碼屏

段碼屏中的每個段,都填充了一種特殊的液態晶體。在電場的作用下,晶體的排列方向會發生扭轉,因而改變其透光性,從而可以看到顯示的內容。該過程示意圖如圖3所示。
 

圖3:液晶屏顯示原理

要使得晶體發生扭轉,必須使得電極兩端的電壓差大於一定的閾值,才可以顯示內容。通常LCD段碼屏有三個引數:工作電壓、Duty(對應COM數)和BIAS(偏壓,對應閾值),比如,3.3V、1/4 Duty、1/3 BIAS表示LCD的工作電壓為3.3V,有4個COM,閾值大約是1.1V(3.3/3=1.1)。實際使用中,為保證顯示效果良好,通常給電極兩端加的電壓差接近LCD的工作電壓;若要不顯示,通常給電極兩端加的電壓差接近0V。需要特別注意的是,液晶分子是需要用交流訊號來驅動的,萬萬不可將直流電壓長時間的加在電極兩端,否則,會影響液晶分子的電氣化學特性,引起顯示效果模糊,使用壽命減少的後果,其破壞性不可恢復。

瞭解了以上原理後,我們要點亮某個段時,只需要保證給其電極兩端加的電壓差為3.3V(如COM1=3.3V,SEG1=0V),並且間隔合適的時間,將這兩極的電壓反轉輸出(如COM1=0V,SEG1=3.3V);不點亮某個段時,只需要保證給其電極兩端加的電壓差為0V(如COM1=3.3V,SEG1=3.3V),並且間隔合適的時間,將這兩極的電壓反轉輸出(如COM1=0V,SEG1=0V)。

要實現這樣的操作,就需要主頻快、計時準、功耗低的MCU。筆者曾經用Silicon Labs的EFM8SB10F8微控制器成功實現了對電量指示段碼屏的操作。EFM8SB10F8最高可達25MHz主頻,完全能夠勝任快速翻轉IO的操作;16位的Timer可以精確的保持合適的時間間隔,使段碼屏達到良好的顯示效果;該MCU內建了24MHz高精度振盪器,精度可達±2%,為Timer提供了精確基準的同時,也可以省掉外部晶振,降低產品成本;休眠時最低可達0.6μA,極大的延長了產品的待機時間。

硬體上,電路的設計也變得十分裝簡單,詳見圖4;軟體上,驅動段碼屏的核心程式碼也不復雜,詳見圖5。使用時,只需要在Timer中斷函式裡面呼叫該驅動程式碼的API函式,即可點亮段碼屏。若顯示的影象顏色比較淺,可適當延長Timer產生中斷的時間間隔,以便達到較佳的顯示效果。

圖4:硬體電路示意圖

圖5:驅動段碼屏的核心程式碼