本帖最后由 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开发板还是非常便于功能扩展的,其引脚资源也大多数通过扩展接口提供给了使用者。
|