首頁 > 評測 > 【HC32L196PCTA測評】+點(diǎn)陣板顯示驅(qū)動篇

【HC32L196PCTA測評】+點(diǎn)陣板顯示驅(qū)動篇

  
  • 作者:
  • 來源:
  • [導(dǎo)讀]
  • #申請原創(chuàng)# @21小跑堂 在通常的情況下,我們所所用的顯示器件多是數(shù)碼管、液晶屏、OLED屏及TFT屏。但在公共場合要顯示信息,就要有較大尺寸以便觀察。通常多使用半板來拼接成較大的廣告牌,這里使用的是一款P4.75的
#申請原創(chuàng)# @21小跑堂
在通常的情況下,我們所所用的顯示器件多是數(shù)碼管、液晶屏、OLED屏及TFT屏。但在公共場合要顯示信息,就要有較大尺寸以便觀察。
通常多使用半板來拼接成較大的廣告牌,這里使用的是一款P4.75的紅色點(diǎn)陣板,其顯示分辨率為16*64像素點(diǎn)。
圖1 點(diǎn)陣屏外觀

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

該點(diǎn)陣屏與開發(fā)板的連接關(guān)系為:
A ----PE3
B ----PE4
C ----PE5
D ----PE2
R1 ----PA12
CLK----PA11
EN ----PE12
STB----PE11

所用引腳輸出高低電平的語句定義為:
#define LA_high    Gpio_SetIO(GpioPortE, GpioPin3)
#define LA_low     Gpio_ClrIO(GpioPortE, GpioPin3)
#define LB_high    Gpio_SetIO(GpioPortE, GpioPin4)
#define LB_low     Gpio_ClrIO(GpioPortE, GpioPin4)
#define LC_high    Gpio_SetIO(GpioPortE, GpioPin5)
#define LC_low     Gpio_ClrIO(GpioPortE, GpioPin5)
#define LD_high    Gpio_SetIO(GpioPortE, GpioPin2)
#define LD_low     Gpio_ClrIO(GpioPortE, GpioPin2)
#define LR1_high   Gpio_SetIO(GpioPortA, GpioPin12)
#define LR1_low    Gpio_ClrIO(GpioPortA, GpioPin12)
#define CLK_high   Gpio_SetIO(GpioPortA, GpioPin11)
#define CLK_low    Gpio_ClrIO(GpioPortA, GpioPin11)
#define LEN_high   Gpio_SetIO(GpioPortE, GpioPin12)
#define LEN_low    Gpio_ClrIO(GpioPortE, GpioPin12)
#define LSTB_high  Gpio_SetIO(GpioPortE, GpioPin11)
#define LSTB_low   Gpio_ClrIO(GpioPortE, GpioPin11)

所用引腳的初始化函數(shù)為:
  1. void dzb_GPIO_Init(void)
  2. {
  3.     stc_gpio_cfg_t stcGpioCfg;
  4.     Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
  5.     stcGpioCfg.enDir = GpioDirOut;
  6.     stcGpioCfg.enPu = GpioPuDisable;
  7.     stcGpioCfg.enPd = GpioPdEnable;
  8.     Gpio_Init(GpioPortA, GpioPin11, &stcGpioCfg);
  9.         Gpio_Init(GpioPortA, GpioPin12, &stcGpioCfg);
  10.     Gpio_Init(GpioPortE, GpioPin2, &stcGpioCfg);
  11.         Gpio_Init(GpioPortE, GpioPin3, &stcGpioCfg);
  12.         Gpio_Init(GpioPortE, GpioPin4, &stcGpioCfg);
  13.         Gpio_Init(GpioPortE, GpioPin5, &stcGpioCfg);
  14.         Gpio_Init(GpioPortE, GpioPin11, &stcGpioCfg);
  15.           Gpio_Init(GpioPortE, GpioPin12, &stcGpioCfg);
  16. }
復(fù)制代碼

點(diǎn)陣板發(fā)送數(shù)據(jù)的函數(shù)為:
  1. void OutByte(uint16_t dat)
  2. {
  3.     uint8_t i=0 ;
  4.     for(i=0;i<16;i++)
  5.     {
  6.         CLK_low;
  7.         if(dat&0x0001)
  8.         {
  9.             LR1_high;
  10.         }
  11.         else
  12.         {
  13.             LR1_low;
  14.         }
  15.         dat=dat>>1;
  16.         CLK_high;
  17.     }
  18. }
復(fù)制代碼

發(fā)送多列數(shù)據(jù)的函數(shù)為:
  1. void DisCol(uint16_t lenght)
  2. {
  3.     uint16_t dat;
  4.     uint8_t m=0;
  5.     while(lenght--)
  6.     {
  7.          dat=(S[sj[m+1]*16+ScanRow]<<8)+S[sj[m]*16+ScanRow];
  8.          OutByte(dat);
  9.          m=m+2;
  10.     }
  11. }
復(fù)制代碼

輸出行地址的函數(shù)為:
  1. void  SeleRow(uint8_t Nd)
  2. {
  3.     uint8_t N;
  4.     N=Nd;
  5.     N=N%16;
  6.     if(N&0x01)   LA_high;
  7.     else  LA_low;
  8.     if (N&0x02)  LB_high;
  9.     else  LB_low;
  10.     if (N&0x04)  LC_high;
  11.     else  LC_low;
  12.     if (N&0x08)  LD_high;
  13.     else  LD_low;
  14. }
復(fù)制代碼

實(shí)現(xiàn)顯示輸出的函數(shù)為:
  1. void  Display(void)
  2. {
  3.       DisCol(4);
  4.       LEN_high;
  5.       LSTB_high;
  6.       LSTB_low;
  7.       SeleRow(ScanRow);
  8.       LEN_low;
  9.       ScanRow++;
  10.       if(ScanRow>15)  ScanRow=0;
  11. }
復(fù)制代碼

為實(shí)現(xiàn)數(shù)字符號的顯示,以字模提取軟件所構(gòu)建的字庫存儲結(jié)構(gòu)為:
u8 S[]={
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*"0",0*/
0x00,0x00,0x00,0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,/*"1",1*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x20,0x20,0x10,0x08,0x04,0x42,0x7E,0x00,0x00,/*"2",2*/
...
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x64,0x58,0x40,0x40,0x24,0x1C,0x00,0x00,/*"9",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,/*":",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"-",11*/
};

實(shí)現(xiàn)顯示輸出效果的函數(shù)為:
  1. int32_t main(void)
  2. {
  3.     dzb_GPIO_Init();
  4.     ScanRow=0;
  5.     while (1)
  6.     {
  7.          Display();
  8.                  delay1ms(1);
  9.     }
  10. }
復(fù)制代碼

經(jīng)程序的編譯與下載,其顯示效果如圖3所示。
3顯示效果

在以上驅(qū)動程序的基礎(chǔ)上,將測試的固定數(shù)值改為讀取字庫中的字模即可實(shí)現(xiàn)字符或漢字的顯示。
可通過工具軟件PCtoLCD2002來提取字模,并將字模存放到數(shù)組中,其格式為:
uint8_t 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*/
0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0xF8,0x03,0x00,0x02,
0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0xFE,0xFF,0x00,0x00,/*"",1*/
0x00,0x02,0x00,0x01,0xFE,0x7F,0x42,0x44,0xF4,0x9F,0x40,0x04,0xF8,0x3F,0x40,0x04,
0xFE,0xFF,0x20,0x08,0x10,0x13,0x88,0x20,0x46,0xC0,0x00,0x06,0x80,0x01,0x40,0x00,/*"",2*/
0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,
0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0xF8,0x3F,0x08,0x00,0x00,0x00,/*"",3*/
...
};
實(shí)現(xiàn)滿屏靜態(tài)顯示的函數(shù)為:
  1. void DisCol(int16_t lenght)
  2. {
  3.           int16_t dat,n;
  4.           int8_t m=0;
  5.       while(lenght--)
  6.       {
  7.                    dat=( tab [m*32+ScanRow*2+1]<<8)+ tab [m*32+ScanRow*2];
  8.                    OutBytep(dat);
  9.                    m=m+1;
  10.      }
  11. }
復(fù)制代碼

其顯示的效果如圖4所示,說明顯示效果正確。
4  靜態(tài)顯示效果
若要實(shí)現(xiàn)向上滾屏顯示,則其顯示函數(shù)為:
  1. void DisColp(uint16_t lenght)
  2. {
  3.             uint16_t dat,n;
  4.             uint8_t m=0;
  5.             while(lenght--)
  6.         {
  7.                          n=(ScanRow+hang)%16;
  8.                          dat=( tab [m*32+n*2+1]<<8)+ tab [m*32+n*2];
  9.                      OutBytep(dat);
  10.                      m=m+1;
  11.       }
  12. }
復(fù)制代碼

5  滾動顯示效果

視頻演示:

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

網(wǎng)友評論

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

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