【杰发科技AC7802x测评】+点阵模块显示驱动

 这里用AC7802x开发板来驱动一个8*8点阵的显示模块,当然在级联的情况下它能显示更多的内容。

点阵模块与开发板的具体连接关系为:

CS ---PA1

CS ---PA1

CLK---PA2

图1 使用接口

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

复制

void GPIO_DZMKInit(void)

{

    GPIO_SetFunc(GPIOA, GPIO_PIN0, GPIO_FUN0);

    GPIO_SetFunc(GPIOA, GPIO_PIN1, GPIO_FUN0);

    GPIO_SetFunc(GPIOA, GPIO_PIN2, GPIO_FUN0);

    GPIO_SetDir(GPIOA, GPIO_PIN0, GPIO_OUT);

    GPIO_SetDir(GPIOA, GPIO_PIN1, GPIO_OUT);

    GPIO_SetDir(GPIOA, GPIO_PIN2, GPIO_OUT);

}

为输出高低电平,所作的定义为:

#defineDIN_SetHigh()  GPIO_SetPinLevel(GPIOA,GPIO_PIN0, GPIO_LEVEL_HIGH)

#defineDIN_SetLow()   GPIO_SetPinLevel(GPIOA,GPIO_PIN0, GPIO_LEVEL_LOW)

#defineCS_SetHigh()   GPIO_SetPinLevel(GPIOA,GPIO_PIN1, GPIO_LEVEL_HIGH)

#defineCS_SetLow()    GPIO_SetPinLevel(GPIOA,GPIO_PIN1, GPIO_LEVEL_LOW)

#defineCLK_SetHigh()  GPIO_SetPinLevel(GPIOA,GPIO_PIN2, GPIO_LEVEL_HIGH)

#define CLK_SetLow()   GPIO_SetPinLevel(GPIOA,GPIO_PIN2, GPIO_LEVEL_LOW)

以GPIO口方式串行发送字节数据的函数为:

复制

void Write_Max7219_byte(char DATA)

{

   char i;

   CS_SetLow();

   for(i=8;i>=1;i--)

   {

     CLK_SetLow();

     if(DATA&0x80)

        DIN_SetHigh();

     else

        DIN_SetLow();

     DATA=DATA<<1;

     CLK_SetHigh();

   }

}

Max7219向指定地址发送控制字的函数为:

复制

void Write_Max7219(char address,char dat)

{

     CS_SetLow();

     Write_Max7219_byte(address);

     Write_Max7219_byte(dat);

     CS_SetHigh();

}

对Max7219进行初始化的函数为:

复制

void Init_MAX7219(void)

{

     Write_Max7219(0x0b, 0x07);

     Write_Max7219(0x0c, 0x01);

     Write_Max7219(0x0f, 0x00); 

}

为了进行显示,所配置的字库结构为:

unsigned char disp[38][8]={

{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0

{0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10},//1

{0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E},//2

{0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0},//3

...

{0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22},//A

{0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0},//B

{0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0},//C

...

{0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8},     //中

{0xFE,0xBA,0x92,0xBA,0x92,0x9A,0xBA,0xFE},//国

};

实现点阵模块显示测试的主程序为:

int main(void)

{

     char i,j;

    InitDelay();

    InitDebug();

    TIMER_PrdInit();

    GPIO_DZMKInit();

    Init_MAX7219 ();

    while (1)

    {

        for(j=0;j<38;j++)

        {

           for(i=1;i<9;i++)

           {

                    Write_Max7219(i,disp[j][i-1]);

                    mdelay(40);

           }

           mdelay(200);

       }

    }

}

进行程序编译和下载,其显示效果如图2至图4所示。

图2 显示数字



 

图3 显示字符



 

图4 显示汉字:
---------------------
作者:jinglixixi
链接:https://bbs.21ic.com/icview-3315274-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值