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

[复制链接]
 楼主| jinglixixi 发表于 2023-9-26 16:39 | 显示全部楼层 |阅读模式
本帖最后由 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)
所用引脚的工作模式配置函数为
  1. void MAX7219_gpio(void)
  2. {
  3. GPIO_InitTypeDef GPIO_InitStruct = {0};
  4.     GPIO_InitStruct.IT = GPIO_IT_NONE;
  5.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  6.     GPIO_InitStruct.Pins = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5;
  7.     GPIO_Init(CW_GPIOA, &GPIO_InitStruct);
  8. }

MAX7219串行发送字节数据的函数为
  1. void Write_Max7219_byte(char DATA)
  2. {
  3.    char i;
  4.    CS_SetLow();
  5.    for(i=8;i>=1;i--)
  6.    {
  7.      CLK_SetLow();
  8.      if(DATA&0x80)
  9.      DIN_SetHigh();
  10.      else
  11.      DIN_SetLow();
  12.      DATA=DATA<<1;
  13.      CLK_SetHigh();
  14.    }
  15. }

MAX7219指定地址发送数据的函数为
  1. void Write_Max7219(char address,char dat)
  2. {
  3.      CS_SetLow();
  4.      Write_Max7219_byte(address);
  5.      Write_Max7219_byte(dat);
  6.      CS_SetHigh();
  7. }

MAX7219进行初始化的函数为
  1. void Init_MAX7219 (void)
  2. {
  3.    Write_Max7219(0x0b, 0x07);
  4.    Write_Max7219(0x0c, 0x01);
  5.    Write_Max7219(0x0f, 0x00);
  6. }

为进行显示输出所使用的字模被放置在数组中其存储结构为
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
}
实现点阵模块显示测试的主程序为
  1. int32_t main(void)
  2. {
  3.     char i,j;
  4.     unsigned int k;
  5.     GPIO_InitTypeDef GPIO_InitStruct = {0};
  6.     RCC_HSI_Enable(RCC_HSIOSC_DIV6);
  7.     __RCC_GPIOC_CLK_ENABLE();
  8.     MAX7219_gpio();
  9.     Init_MAX7219 ();
  10.     while(1)
  11.     {
  12.        for(j=0;j<38;j++)
  13.        {
  14.           for(i=1;i<9;i++)
  15.           {
  16.              Write_Max7219(i,disp[j][i-1]);
  17.           }
  18.           Delay(0xFFFF);
  19.           Delay(0xFFFF);
  20.            Delay(0xFFFF);
  21.           Delay(0xFFFF);
  22.        }
  23.   }
  24. }

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

2.jpg
2 显示字符

3.jpg
3 显示汉字

由此可见,CW32L031开发板还是非常便于功能扩展的,其引脚资源也大多数通过扩展接口提供给了使用者。
forgot 发表于 2023-9-27 09:20 | 显示全部楼层
我的板子也收到了,赞一下
 楼主| jinglixixi 发表于 2023-9-27 09:54 | 显示全部楼层
forgot 发表于 2023-9-27 09:20
我的板子也收到了,赞一下

大家可以共享自己的体验和感受
您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部