数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1474|回复: 1

[STM] GD32F103C8T6直接驱动数码管测试

[复制链接]
发表于 2023-7-1 08:55:50 | 显示全部楼层 |阅读模式
本帖最后由 lmn2005 于 2023-7-1 08:59 编辑

32系列芯片的IO很多,驱动电流也足,完全可以直接驱动LED数码管。所以总想有空可以测试一下。
为了方便测试,本人把四位共阴数码管的SEG0至SEG7分别串联一个1K电阻接到PB0至PB7,位选择COM0至COM3接到PB8至PB11。线路的驳接使用了面包板和杜邦线。

数码管的显示编码如下:
  1. uint8_t const LEDCODE[]={
  2.                 0x3F,/*0*/
  3.         0x06,/*1*/
  4.         0x5B,/*2*/
  5.         0x4F,/*3*/
  6.         0x66,/*4*/
  7.         0x6D,/*5*/
  8.         0x7D,/*6*/
  9.         0x07,/*7*/
  10.         0x7F,/*8*/
  11.         0x6F,/*9*/
  12.         0x77,/*A*/
  13.         0x7C,/*b*/
  14.         0x58,/*c*/
  15.         0x5E,/*d*/
  16.         0x79,/*E*/
  17.         0x71,/*F*/
  18.         0x74,/*h*/
  19.         0x38,/*L*/
  20.         0x54,/*n*/
  21.         0x5C,/*o*/
  22.         0x73,/*P*/
  23.         0x50,/*r*/
  24.         0x78,/*t*/
  25.         0x3E,/*U*/
  26.         0x40,/*-*/

  27. };
复制代码


STM32的HAL库推出后,得到用户的广泛应用,但HAL库找不到一个函数能像51单片机一样直接给同一系列的IO进行赋值的,所以只能通过最原始的方法----操作寄存器来对PB口进行赋值。其实,也不复杂,就只需一句:
  1. #define GPIOB_OUT(x) GPIOB->ODR = x; // GPIOB端口输出 X
复制代码


然后自己再写一个显示函数:
  1. void ShowLed(uint8_t d1,uint8_t d2,uint8_t d3,uint8_t d4,uint8_t h);
复制代码


其中d1至d4为显示数据,h为小数点的位序。
另外,为了计时,还需要编写TIM2中断回调函数:
  1. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
复制代码


测试效果:
https://www.bilibili.com/video/BV1sg4y1N7FX/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 2家元 +80 收起 理由
家睦 + 60
zhkrid + 20

查看全部打赏

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-15 11:26 , Processed in 0.249600 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表