首頁(yè) > 評(píng)測(cè) > 基于DP5020點(diǎn)陣屏的顯示驅(qū)動(dòng)

基于DP5020點(diǎn)陣屏的顯示驅(qū)動(dòng)

  
  • 作者:
  • 來(lái)源:
  • [導(dǎo)讀]
  • #申請(qǐng)?jiān)瓌?chuàng)# @21小跑堂 在以往的點(diǎn)陣屏中,多使用74HC595作為串并轉(zhuǎn)換的芯片,它所處理的數(shù)據(jù)寬度只有8位。而現(xiàn)在的顯示面板設(shè)計(jì)多使用16位的驅(qū)動(dòng)IC,例如DP5020就是其中的一種,這樣就可以有效地縮減芯片的使用量
#申請(qǐng)?jiān)瓌?chuàng)#   @21小跑堂
在以往的點(diǎn)陣屏中,多使用74HC595作為串并轉(zhuǎn)換的芯片,它所處理的數(shù)據(jù)寬度只有8位。而現(xiàn)在的顯示面板設(shè)計(jì)多使用16位的驅(qū)動(dòng)IC,例如DP5020就是其中的一種,這樣就可以有效地縮減芯片的使用量并可以大幅地化簡(jiǎn)電路的設(shè)計(jì)復(fù)雜度。此外,該芯片還有一大特點(diǎn)就是其輸出端口提供了2~60mA的恒定電流驅(qū)動(dòng),因而使得LED的發(fā)光亮度更均勻且能精確控制,該芯片的內(nèi)部結(jié)構(gòu)如圖1所示。
1  內(nèi)部結(jié)構(gòu)

該芯片的引腳排列如圖2所示,各引腳的功能則如圖3所示。

2  引腳排列

3  引腳功能


該芯片在顯示面板的設(shè)計(jì)中,其典型的應(yīng)用方式見(jiàn)圖4所示。
4 典型應(yīng)用


DP5020的工作時(shí)序如圖5 所示,這是后續(xù)對(duì)其進(jìn)行驅(qū)動(dòng)的主要基礎(chǔ)。
5時(shí)序關(guān)系

前面之所以對(duì)DP5020作這么詳細(xì)的介紹,就在于所驅(qū)動(dòng)紅色P4.75點(diǎn)陣屏就是基于該芯片來(lái)設(shè)計(jì)的,這塊點(diǎn)陣屏的規(guī)格為16*64,其外觀如圖6所示。

在線路構(gòu)成上,除使用芯片DP50204片)之外,還用到的芯片有SM2452片)和SM51662片)。
6 點(diǎn)陣屏外觀


該點(diǎn)陣屏所使用的接口為HUB08,各引腳的名稱如圖7所示。
7  HUB08接口


為驅(qū)動(dòng)該點(diǎn)陣屏,所使用的是N76E003最小系統(tǒng)開(kāi)發(fā)板,調(diào)試下載工具為MU_LINK,連接方式如圖8所示。
8 開(kāi)發(fā)板及下載工具

點(diǎn)陣屏與開(kāi)發(fā)板的連接關(guān)系為:
A---P0.0
B---P0.1
C---P0.2
D---P0.3
R1 ---P1.4
OE ---P0.5
LAT ---P0.6
CLK ---P0.7
所做的相應(yīng)定義為:
sbit LA=P0^0;
sbit LB=P0^1;
sbit LC=P0^2;
sbit LD=P0^3;
sbit LSCL=P0^7;  // CLK
sbit LSTB=P0^6;  // LAT
sbit LR1=P1^4;   // R1
sbit LEN=P0^5;   // OE
UINT8  ScanRow=0;


使用DP5020發(fā)送16位數(shù)據(jù)的函數(shù)為:
  1. void DP5020_OutByte(UINT16 dat)
  2. {
  3.     UINT8 i=0 ;
  4.     for(i=0;i<16;i++)
  5.     {
  6.         LSCL=0;
  7.         if(dat&0x8000)
  8.         {
  9.             LR1=1;
  10.         }
  11.         else
  12.         {
  13.             LR1=0;
  14.         }
  15.         dat=dat<<1;
  16.         LSCL=1;
  17.     }
  18. }
復(fù)制代碼

進(jìn)行輸出行選擇的函數(shù)為:
  1. void  SeleRow(UINT8 Nd)
  2. {
  3.     UINT8 N=Nd;
  4.         N=N%16;
  5.     if(N&0x01)  LA=1;
  6.     else  LA=0;
  7.     if (N&0x02)  LB=1;
  8.     else  LB=0;
  9.     if (N&0x04)  LC=1;
  10.     else  LC=0;
  11.     if (N&0x08)  LD=1;
  12.     else  LD=0;
  13. }
復(fù)制代碼

實(shí)現(xiàn)指定寬度的數(shù)據(jù)發(fā)送函數(shù)為:
  1. void DisCol(UINT16 *dat,UINT16 len)
  2. {
  3.     while(len--)
  4.     {
  5.              DP5020_OutByte(dat);
  6.     }
  7. }
復(fù)制代碼

進(jìn)行顯示驅(qū)動(dòng)的函數(shù)為:
  1. void  Display(void)
  2. {
  3.           DisCol(0x5555,4);
  4.           LEN=1;
  5.           LSTB=1;
  6.           LSTB=0;
  7.       SeleRow (ScanRow)
  8.       LEN=0;
  9.       ScanRow++;
  10.           if(ScanRow>15)  ScanRow=0;
  11. }
復(fù)制代碼

實(shí)現(xiàn)驅(qū)動(dòng)測(cè)試的主程序?yàn)椋?/font>
  1. void main (void)
  2. {
  3.          Set_All_GPIO_Quasi_Mode;       
  4.          set_CLOEN;
  5.          ScanRow=0;
  6.      while(1)
  7.      {
  8.                    Display();
  9.      }
  10. }
復(fù)制代碼

經(jīng)測(cè)試,其顯示效果如圖9所示,說(shuō)明驅(qū)動(dòng)正常。
9  驅(qū)動(dòng)測(cè)試

在以上驅(qū)動(dòng)程序的基礎(chǔ)上,將測(cè)試的固定數(shù)值改為讀取字庫(kù)中的字模即可實(shí)現(xiàn)字符或漢字的顯示。

以工具軟件PCtoLCD2002來(lái)提取字模的方式如圖10所示,是垂直鏡像字。
10 字模提取方式
將字模存放到數(shù)組的格式為:
UINT8  code tab[]={
0x00,0x00,0xF8,0x23,0x00,0x10,0x00,0x10,0x00,0x00,0xFC,0x07,0x20,0xF1,0x20,0x11,
0x20,0x11,0x20,0x11,0x24,0x11,0x24,0x12,0x24,0x12,0x1C,0x14,0x00,0x28,0xFE,0x47,/*"遠(yuǎn)",0*/
...
};


實(shí)現(xiàn)滿屏顯示的函數(shù)為:
  1. void DisCol(UINT16 lenght)
  2. {
  3.           UINT16 dat,n;
  4.           UINT8 m=8;
  5.       n= lenght-2
  6.       while(lenght--)
  7.       {
  8.                    dat=( tab [m*32+ScanRow*2+1]<<8)+ tab [m*32+ScanRow*2];
  9.                    DP5020_OutByte(dat);
  10.                    m=m+1;
  11.      }
  12. }
復(fù)制代碼

其顯示的效果如圖11所示,說(shuō)明顯示效果正確。
11  漢字顯示效果


若在屏上想實(shí)現(xiàn)單字顯示,則其顯示函數(shù)應(yīng)修改為:
  1. void DisCol(UINT16 lenght)
  2. {
  3.           UINT16 dat,n;
  4.           UINT8 m=8;
  5.       n= lenght-2;
  6.       while(lenght--)
  7.       {
  8.                    if(lenght>n) dat=( tab [m*32+ScanRow*2+1]<<8)+ tab [m*32+ScanRow*2];
  9.                    else dat=0x0;
  10.                    DP5020_OutByte(dat);
  11.                    m=m+1;
  12.      }
  13. }
復(fù)制代碼

其顯示的效果如圖12所示,當(dāng)然通過(guò)修改變量n的表達(dá)式也能指定其它數(shù)量的顯示字?jǐn)?shù)。
12  單字顯示效果

這樣就解決了基于DP5020點(diǎn)陣屏的顯示驅(qū)動(dòng)問(wèn)題,并得到了良好的顯示效果。感興趣的話,還可參考前面介紹74HC595的驅(qū)動(dòng)方法來(lái)實(shí)現(xiàn)數(shù)值的顯示及電子時(shí)鐘功能。


  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評(píng)論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開(kāi)放投稿

熱門標(biāo)簽
項(xiàng)目外包 more+