这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » SWM221CBT7显示开发板驱动点阵显示板

共1条 1/1 1 跳转至

SWM221CBT7显示开发板驱动点阵显示板

菜鸟
2025-11-23 22:16:40     打赏

在公共场合,通常的显示器件将难以发挥功效,此时则需要点阵显示器件出场。的广告牌是由一种称为半板的器件拼接而成它就是典型的点阵显示板。半板也分多种类型,这里P4.75的红色显示板作为驱动目标,其显示分辨率为16*64像素点,外观1所示。

 image.png

图1 点阵板外观

该显示板所采用的接口为HUB08方式,其排列顺序及名称2所示。

image.png


2  HUB08接口 

为驱动该显示板,它与开发板的引脚连接关系为:

A---- PA2

B---- PA5

C---- PB4

D---- PB5

R1 ---- PB12  

CLK---- PB11

EN ---- PB14

STB---- PB13

对所用引脚的配置函数为:

void DZB_CONFIG()
{
GPIO_Init(GPIOA, PIN2, 1, 0, 0, 0);
GPIO_Init(GPIOA, PIN5, 1, 0, 0, 0);
GPIO_Init(GPIOB, PIN4, 1, 0, 0, 0);
GPIO_Init(GPIOB, PIN5, 1, 0, 0, 0); 
GPIO_Init(GPIOB, PIN11, 1, 0, 0, 0);
GPIO_Init(GPIOB, PIN12, 1, 0, 0, 0);
GPIO_Init(GPIOB, PIN13, 1, 0, 0, 0);
GPIO_Init(GPIOB, PIN14, 1, 0, 0, 0);
}


所用引脚输出高低电平的语句定义为:

#define LA_high    GPIO_SetBit(GPIOA, PIN2)

#define LA_low     GPIO_ClrBit(GPIOA, PIN2)

#define LB_high    GPIO_SetBit(GPIOA, PIN5)

#define LB_low     GPIO_ClrBit(GPIOA, PIN5)

#define LC_high    GPIO_SetBit(GPIOB, PIN4)

#define LC_low     GPIO_ClrBit(GPIOB, PIN4)

#define LD_high    GPIO_SetBit(GPIOB, PIN5)

#define LD_low     GPIO_ClrBit(GPIOB, PIN5)

#define LR1_high   GPIO_SetBit(GPIOB, PIN12)

#define LR1_low    GPIO_ClrBit(GPIOB, PIN12)

#define CLK_high   GPIO_SetBit(GPIOB, PIN11)

#define CLK_low    GPIO_ClrBit(GPIOB, PIN11)

#define LSTB_high  GPIO_SetBit(GPIOB, PIN13)

#define LSTB_low   GPIO_ClrBit(GPIOB, PIN13)

#define LEN_high   GPIO_SetBit(GPIOB, PIN14)

#define LEN_low    GPIO_ClrBit(GPIOB, PIN14)

向显示板发送字节数据的函数为:

void OutByte(uint16_t dat)
{
    uint8_t i=0 ;
    for(i=0;i<16;i++)
    {
        CLK_low;
        if(dat&0x0001) 
        {
            LR1_high;
        }
        else
        {
            LR1_low;
        }
        dat=dat>>1; 
        CLK_high;
    }
}


输出行地址的函数为:

void SeleRow(uint8_t Nd)
{
    uint8_t N;
    N=Nd;
    N=N%16;
    if(N&0x01)   LA_high;
    else  LA_low;
    if (N&0x02)  LB_high;
    else  LB_low;
    if (N&0x04)  LC_high;
    else  LC_low;
    if (N&0x08)  LD_high;
    else        LD_low;
}


发送传送数据的函数为:

void DisCol(uint16_t lenght)
{
    uint16_t dat;
    uint8_t m=0;
    while(lenght--)
    {
    dat=(S[sj[m+1]*16+ScanRow]<<8)+S[sj[m]*16+ScanRow];
        OutByte(dat);
        m=m+2;
    }
}


在模拟电子时钟效果时,电子时钟的显示数据被存放在数组中,并通过调用函数Display()来显示,对应的显示函数为: 

void ShowTime(void)
{
    sj[0]= 1;
    sj[1]= 2;
      sj[2]= 10;
    sj[3]= 3;
    sj[4]= 0;
      sj[5]= 10;
    sj[6]= 0;
    sj[7]= 8;
    Display();
}


支持显示输出的函数内容为:

void Display(void)
{
         DisCol(4);
     LEN_high;
     LSTB_high;
     LSTB_low;
     SeleRow(ScanRow);
     LEN_low;
     ScanRow++;
     if(ScanRow>15)  ScanRow=0;
}


供显示测试的主程序为:

int main(void)
{ 
     SystemInit();
     DZB_CONFIG();
     ScanRow=0;
   while(1)
   {
       ShowTime();
   }
}


经程序的编译与下载,其显示效果如图3所示,说明驱动有效

image.png

3 测试效果





关键词: SWM221CBT7    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]