[经验] [ STM32F4-discovery开发板测评 ] 串行数码管显示模块的驱动

jinglixixi   2023-9-23 16:35 楼主

本想以I2C接口来驱动一个0.96寸的OLED显示屏,没想到其结果并不理想,其显示实物亮度非常低,见图1所示。

image.png  

图1  OLED显示

 

为此,只好放弃该显示方案,改为测试串行数码管显示模块。

该数码管模块以MAX7219为处理芯片,可将串行数据转换为并行信号输出,故可有效节省GPIO口的数量。

该数码管模块与开发板的连接关系为:

CLK---PF7

DIN--- PF8

CS --- PF9

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

#define CLK_SetHigh()      HAL_GPIO_WritePin(GPIOF, GPIO_PIN_7, GPIO_PIN_SET)

#define CLK_SetLow()      HAL_GPIO_WritePin(GPIOF, GPIO_PIN_7, GPIO_PIN_RESET)

#define DIN_SetHigh()     HAL_GPIO_WritePin(GPIOF, GPIO_PIN_8, GPIO_PIN_SET)

#define DIN_SetLow()      HAL_GPIO_WritePin(GPIOF, GPIO_PIN_8, GPIO_PIN_RESET)

#define CS_SetHigh()      HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET)

#define CS_SetLow()       HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET)

 

对所用引脚进行工作模式配置的函数为:

void DZMK_Init(void)
{
   GPIO_InitTypeDef  GPIO_InitStruct;
   __HAL_RCC_GPIOF_CLK_ENABLE();
   GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
   HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
}

实现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(0x09, 0xff);
   Write_Max7219(0x0a, 0x02);
   Write_Max7219(0x0b, 0x07);
   Write_Max7219(0x0c, 0x01);
   Write_Max7219(0x0f, 0x00);
}

实现显示测试的主程序为:

int main(void)
{
  SystemClock_Config();
  DZMK _Init();
  Init_MAX7219();
  Write_Max7219(1,1);
  Write_Max7219(2,2);
  Write_Max7219(3,3);
  Write_Max7219(4,4);
  Write_Max7219(5,5);
  Write_Max7219(6,6);
  Write_Max7219(7,7);
  Write_Max7219(8,8);
  while(1);
}

经程序的编译与下载,其显示效果如图2所示,这样再有数据显示的要求,就可通过该显示模块来完成。

image.png  

图2  显示效果

回复评论 (4)

老师的这个模块,用得太好了,多谢分享!

点赞  2023-9-23 21:41

OLED有个设对比度的命令,是不是忘记设置了?

点赞  2023-9-24 13:18
引用: dcexpert 发表于 2023-9-24 13:18 OLED有个设对比度的命令,是不是忘记设置了?

已设置最亮,可与该芯片的驱动能力有关。

点赞  2023-9-24 18:19
引用: lugl4313820 发表于 2023-9-23 21:41 老师的这个模块,用得太好了,多谢分享!

哈哈,用它做一下驱动测试还是比较有效的。

点赞  2023-9-24 18:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复