打印
[开发板]

【CW32L031CxTx StartKit评估板测评】+点阵模块显示驱动

[复制链接]
136|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2023-9-26 17:04 编辑

对于CW32L031这款开发板,由于自身没有配置相应的显示器件,为此在占用引脚资源不多的情况下,为其配置了一个供测试用的点阵显示模块。
该点阵模块的核心是采用MAX7219来实现串并转换,并具有数据锁存和显示刷新功能。
点阵模块与开发板的连接关系为:
DIN---PA3
CLK--- PA4
CS --- PA5
使用GPIO口输出高低电平的引脚定义为:
#define DIN_SetHigh()   GPIO_WritePin(CW_GPIOA, GPIO_PIN_3, GPIO_Pin_SET)      //CLK
#define DIN_SetLow()    GPIO_WritePin(CW_GPIOA, GPIO_PIN_3, GPIO_Pin_RESET)
#define CLK_SetHigh()   GPIO_WritePin(CW_GPIOA, GPIO_PIN_4, GPIO_Pin_SET)      //DIN
#define CLK_SetLow()    GPIO_WritePin(CW_GPIOA, GPIO_PIN_4, GPIO_Pin_RESET)
#define CS_SetHigh()    GPIO_WritePin(CW_GPIOA, GPIO_PIN_5, GPIO_Pin_SET)      //CS
#define CS_SetLow()     GPIO_WritePin(CW_GPIOA, GPIO_PIN_5, GPIO_Pin_RESET)
所用引脚的工作模式配置函数为
void MAX7219_gpio(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.IT = GPIO_IT_NONE;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pins = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5;
    GPIO_Init(CW_GPIOA, &GPIO_InitStruct);
}

MAX7219串行发送字节数据的函数为
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
}
实现点阵模块显示测试的主程序为
int32_t main(void)
{
    char i,j;
    unsigned int k;
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    RCC_HSI_Enable(RCC_HSIOSC_DIV6);
    __RCC_GPIOC_CLK_ENABLE();
    MAX7219_gpio();
    Init_MAX7219 ();
    while(1)
    {
       for(j=0;j<38;j++)
       {
          for(i=1;i<9;i++)
          {
             Write_Max7219(i,disp[j][i-1]);
          }
          Delay(0xFFFF);
          Delay(0xFFFF);
           Delay(0xFFFF);
          Delay(0xFFFF);
       }
  }
}

经程序的编译与下载,其测试效果如图1至图3所示。

1 显示数字


2 显示字符


3 显示汉字

由此可见,CW32L031开发板还是非常便于功能扩展的,其引脚资源也大多数通过扩展接口提供给了使用者。

使用特权

评论回复
沙发
forgot| | 2023-9-27 09:20 | 只看该作者
我的板子也收到了,赞一下

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2023-9-27 09:54 | 只看该作者
forgot 发表于 2023-9-27 09:20
我的板子也收到了,赞一下

大家可以共享自己的体验和感受

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

2675

帖子

37

粉丝