專業的LCD液晶顯示屏供應商
行業資訊
聯系我們
公司名稱:廣州漢顯電子科技有限公司
聯系手機:138 2977 7585
Q Q:487651756
公司郵箱:lcd1010#foxmail.com
電話:020-8259 5819
電話:020-8259 5766
傳真:020-8259 4149
辦公總部:廣州黃埔區黃埔東路266號五樓
工廠:江西信豐縣工業園區信誠大道
專業知識
用STC系列MCU的IO口直接驅動段碼LCD顯示屏 時間:2018-05-05 09:40:48 點擊數:1225


  
當產品需要段碼LCD顯示時,如果使用不帶LCD驅動器的MCU,則需要外接LCD驅動IC,這會增加成本和PCB面積。事實上,很多小項目,比如大量的小家電,需要顯示的段碼不多,常見的是48帶小數點或時鐘的冒號“:”,這樣如果使用IO口直接掃描顯示,則會減小PCB面積,降低成本。
但是,本方案不合適驅動太多的段( 占用IO太多),也不合適非常低功耗的場合。
段碼LCD驅動簡單原理:如圖1所示。
LCD是一種特殊的液態晶體,在電場的作用下晶體的排列方向會發生扭轉,因而改變其透光性,從而可以看到顯示內容。LCD有一個扭轉閥值,當LCD兩端電壓高于此閥值時,顯示內容,低于此閥值時,不顯示。通常LCD3個參數:工作電壓、DUTY(對應COM數)和BIAS(即偏壓,對應閥值),比如4.5V、1/4 DUTY、1/3 BIAS,表示LCD顯示電壓為4.5V,4COM,閥值大約是1.5V,當加在某段LCD兩端電壓大于1.5V時(一般加4.5V)顯示,而加1.5V時不顯示。但是LCD對于驅動電壓的反應不是很明顯的,比如加2V時,可能會微弱顯示,這就是通常說的“鬼影”。所以要保證驅動顯示時,要大于閥值電壓比較多,而不顯示時,要用比閥值小比較多的電壓。
注意:LCD的兩端不能加直流電壓,否則時間稍長就會損壞,所以要保證加在LCD兩端的驅動電壓的平均電壓為0。LCD使用時分割掃描法,任何時候一個COM掃描有效,另外的COM處于無效狀態。
驅動1/4Duty 1/2BIAS 3V的方案電路見圖1,LCD掃描原理見圖3,MCU3V工作,用雙向口做COM,PUSH-PULLSTANDARD輸出口接SEG,并且每個COM都接一個47K電阻到一個電容,RC濾波后得到一個中點電壓。在輪到某個COM掃描時,設置成PUSH-PULL輸出,如果與本COM連接的SEG不顯示,則SEG輸出與COM同相,如果顯示,則反相。掃描完后,這個COMIO就設置成高阻,這樣這個COM就通過47K電阻連接到1/2VDD電壓,而SEG繼續輸出方波,這樣加在LCD上的電壓,顯示時是+-VDD,不顯示時是+-1/2VDD,保證了LCD兩端平均直流電壓為0。
驅動1/4Duty 1/3BIAS 3V的方案電路見圖4,LCD掃描原理見圖5,,MCU5V工作,SEG線通過電阻分壓輸出1.5V、3.5V,COM線通過電阻分壓輸出0.5V、2.5V(高阻時)、4.5V。在輪到某個COM掃描時,設置成PUSH-PULL輸出,如果與本COM連接的SEG不顯示,則SEG輸出與COM同相,如果顯示,則反相。掃描完后,這個COMIO就設置成高阻,這樣這個COM就通過47K電阻連接到2.5V電壓,而SEG繼續輸出方波,這樣加在LCD上的電壓,顯示時是+-3.0V,不顯示時是+-1.0V,完全滿足LCD的掃描要求。
    當需要睡眠省電時,把所有COMSEG驅動IO全部輸出低電平,LCD驅動部分不會增加額外電流。 
 
1:驅動1/4Duty 1/2BIAS 3V LCD的電路
 
2:段碼名稱圖
 
 
 
 
 
 
31/4Duty 1/2BIAS掃描原理圖
  
 
 
4:驅動1/4Duty 1/3BIAS 3V LCD的電路
 
 
51/4Duty 1/3BIAS掃描原理圖
 
 
為了使用方便,顯示內容放在一個顯存中,其中的各個位與LCD的段一一對應,見圖6。
6LCD真值表和顯存影射表
 
 
7:驅動效果照片
 
 
 
LCD掃描程序僅需要兩個函數:
1、 LCD段碼掃描函數  void LCD_scan(void)
程序隔一定的時間調用這個函數,就會將LCD顯示緩沖的內容顯示到LCD上,全部掃描一次需要8個調用周期,調用間隔一般是1~2ms,假如使用1ms,則掃描周期就是8ms,刷新率就是125HZ。
2、 LCD段碼顯示緩沖裝載函數  void   LCD_load(u8 n,u8 dat)
本函數用來將顯示的數字或字符放在LCD顯示緩沖中,比如LCD_load(1,6),就是要在第一個數字位置顯示數字6,支持顯示0~9,A~F,其它字符用戶可以自己添加。
另外,用宏來顯示、熄滅或閃爍冒號或小數點。
 
/****************** LCD段碼掃描函數 ***************************
u8 code T_COM[4]={0x08,0x04,0x02,0x01};
void LCD_scan(void) //5us @22.1184MHZ
{   u8 j;
j = scan_index >> 1;        //COMx
P2n_pure_input(0x0f);       //全部COM輸出高阻, COM為中點電壓
if(scan_index & 1)          //反相掃描
{   P1 = ~LCD_buff[j]; //SEG驅動碼
P2 = ~(LCD_buff[j|4] & 0xf0);   //送SEG驅動碼和COM驅動碼
}
else  //正相掃描
{   P1 = LCD_buff[j];          //送SEG驅動碼
P2 = LCD_buff[j|4] & 0xf0;  //送SEG驅動碼和COM驅動碼
}
P2n_push_pull(T_COM[j]); //某個COM設置為推挽輸出
if(++scan_index >= 8) scan_index = 0;   //掃描完成,重復掃描
}
 
/****************** LCD段碼顯示緩沖裝載函數 ***************************/
/****************** 對第1~6數字裝載顯示函數 ***************************/
u8 code T_LCD_mask[4]  = {~0xc0,~0x30,~0x0c,~0x03};
u8 code T_LCD_mask4[4] = {~0x40,~0x10,~0x04,~0x01};
void LCD_load(u8 n,u8 dat) //n為第幾個數字,為1~6,

dat為要顯示的數字 [email protected]

{   u8 i,k;

u8 *p;

if((n == 0) || (n > 6)) return;

i = t_display[dat];

 

if(n <= 4) //1~4

{   n--;

p = LCD_buff;

}

else

{   n = n - 5;

p = &LCD_buff[4];

}

 

k = 0;

if(i & 0x08) k |= 0x40; //D

*p = (*p & T_LCD_mask4[n]) | (k>>2*n);

p++;

 

k = 0;

if(i & 0x04) k |= 0x40; //C

if(i & 0x10) k |= 0x80; //E

*p = (*p & T_LCD_mask[n]) | (k>>2*n);

p++;

 

k = 0;

if(i & 0x02) k |= 0x40; //B

if(i & 0x40) k |= 0x80; //G

*p = (*p & T_LCD_mask[n]) | (k>>2*n);

p++;

 

k = 0;

if(i & 0x01) k |= 0x40; //A

if(i & 0x20) k |= 0x80; //F

*p = (*p & T_LCD_mask[n]) | (k>>2*n);

}

 

文檔完畢。

Copyright ? 2013-2015 All Rights Reserved. 粵ICP備15058523號-1
廣州漢顯電子科技有限公司 總部辦公地址:廣州黃埔區黃埔東路怡港大廈五樓 辦公電話:020-82595819、82595766 傳真:020-82594149
廠址:江西贛州信豐縣工業園誠信大道
爱乐彩湖南快乐十分基本走势图