1. 程式人生 > >段碼LCD螢幕的驅動方法

段碼LCD螢幕的驅動方法

大家平常在生活之中見到最多的可能就是段碼液晶屏了,它有著普通數碼管的特徵,又有著點陣液晶屏的特徵,已經固定的圖形,既省成本而且又好看,那麼,我們今天來一起試一試!
  首先,大家都不要以為使用微控制器來驅動,就以為是斷碼屏直流驅動的了,其實呢,段碼屏它是交流驅動的,什麼是交流驅動呢?例如矩形波、正弦波等等。大家可能會經常的使用驅動晶片來玩,例如HT1621等等,但是有一些段式屏的IO口是比較少的,或者說是IO口充足的情況之下,也懶得在再去寫控制器的驅動了。但是,IO的模擬驅動,段式液晶是有一個前提條件的,就是IO必須要是三態,
  為什麼?下面我們就一起細細的道來:
  第一步:段碼液晶屏最重要的引數:佔空比、工作電壓、偏壓比。這三個引數都是非常重要的,都必須要滿足。
  第二步:驅動的方式:我們根據 LCD 的驅動原理可以知道,LCD的畫素點上面只能夠加上 AC的電壓,LCD顯示器的對比度則是由 COM腳上的電壓值減去 SEG 腳上的電壓值來決定,當這個電壓差在大於 LCD 飽和電壓時就能夠開啟畫素點,小於 LCD 閾值電壓時就能關閉畫素點了,LCD 型的MCU 已經由內建的 LCD 驅動電路自動產生出LCD驅動訊號了,因此只需要 I/O 口能模擬輸
  出該驅動的訊號,就能夠完成 LCD 的驅動了。
  段碼液晶屏主要是有兩種引腳,COM和SEG,和數碼管比較像,但是,壓差必須要是交替變化的,例:第一時刻是正向的3V,那麼第二時刻就必須要是反向的3V,注意一點,如果你給段碼液晶屏通直流電,那麼不用多久這個螢幕就會報廢,所以千萬要注意。下面我們就來考慮如何模擬COM口的波形,我們以1/4D,1/2B為例子:
  段碼LCD屏的驅動方法
  只要模擬出以上的波形,你的液晶屏就已經成功了一大半。
  void display_sub(u8 y) //lcd display subroutine
  {
   switch(y) //4*com,VDD and -VDD LCD display,so 8 timebase interrupt one sacn period
   {
   case 1:
   {com1_output_high();break;}
   case 2:
   {com1_output_low();break;}
   case 3:
   {com2_output_high();break;}
   case 4:
   {com2_output_low();break;}
   case 5:
   {com3_output_high();break;}
   case 6:
   {com3_output_low();break;}
   case 7:
   {com4_output_high();break;}
   case 8:
   {com4_output_low();break;}
   default:
   {LCDPluseStep=0;
   get_display_code(AD_Value,KeyScanRetVal);
   break;}
   }
  }
  複製程式碼
  如上圖程式碼所示,定時到2ms,讓4個COM交替的輸出波形就可以了。
  同時我們還要注意,在COM的輸出較高的時候,如果要螢幕亮,那麼SEG就要輸出低,那麼在COM輸出低的時候,SEG就要輸出高了,保證COM和SEG的壓差大於1/2B工作電壓就可以正常顯示了
  下面我們看其中一個com口輸出時的函式
  static void seg1_output(void) //seg1 output subroutine
  {
   if(1 == (LCDPluseStep%2)) //com_pulse is odd,com output high (VDD)
   {
   if(0 == (DisplayCode1&0x10))
   {SEG1=1;}
   else
   {SEG1=0;}
   }
   else //com_pulse is even,com output low (VSS)
   {
   if(0 == (DisplayCode1&0x10))
   {SEG1=0;}
   else
   {SEG1=1;}
   }
  }
  複製程式碼
  必須時刻讓SEG電平跟COM的電平成反向,那麼驅動段式液晶就不會有多大的難度了
  12864:

http://www.hzjingxian.com
  本文原創來於http://www.hzjingxian.com/zixun/xydt/822.html,轉載請註明出處