801|4

1532

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

[ STM32F4-discovery开发板测评 ] 串行数码管显示模块的驱动 [复制链接]

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

 

图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所示,这样再有数据显示的要求,就可通过该显示模块来完成。

 

图2  显示效果

此帖出自stm32/stm8论坛

最新回复

OLED有个设对比度的命令,是不是忘记设置了?   详情 回复 发表于 2023-9-24 13:18
点赞 关注
 

回复
举报

7047

帖子

11

TA的资源

版主

沙发
 

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

此帖出自stm32/stm8论坛

点评

哈哈,用它做一下驱动测试还是比较有效的。  详情 回复 发表于 2023-9-24 18:21
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 

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

此帖出自stm32/stm8论坛

点评

已设置最亮,可与该芯片的驱动能力有关。  详情 回复 发表于 2023-9-24 18:19
 
 

回复

1532

帖子

1

TA的资源

五彩晶圆(初级)

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

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

此帖出自stm32/stm8论坛
 
 
 

回复

1532

帖子

1

TA的资源

五彩晶圆(初级)

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

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

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表