打印
[STM32F1]

单个数码管动态显示(STM32F103C8T6)

[复制链接]
1031|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前言
        通过STM32F103C8T6控制单个数码管动态显示数字0-9及字母A、B、C、D、E、F。

二、概述
        数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极的多个阴极。

(一)数码管引脚图及功能
        数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们和各个笔划,公共电极。共阳极就是把所有LED的阳极连接到共同接点com,每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示



使用特权

评论回复
沙发
梵蒂冈是神uy|  楼主 | 2023-5-30 15:35 | 只看该作者
(二)数码管共阴共阳的区别
        按发光管的单元连接方式可分为共阳极数码管和共阴极数码管。

        共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳极数码管在应用时将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。

使用特权

评论回复
板凳
梵蒂冈是神uy|  楼主 | 2023-5-30 15:35 | 只看该作者
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴极数码管在应用时将公共极COM接到GND,当某一字段发光二极管的阳极为低电平时,相应字段就点亮,当某一字段的阳极为高电平时,相应字段就不亮。

使用特权

评论回复
地板
梵蒂冈是神uy|  楼主 | 2023-5-30 15:35 | 只看该作者

使用特权

评论回复
5
梵蒂冈是神uy|  楼主 | 2023-5-30 15:36 | 只看该作者
字型码

使用特权

评论回复
6
梵蒂冈是神uy|  楼主 | 2023-5-30 15:36 | 只看该作者

使用特权

评论回复
7
梵蒂冈是神uy|  楼主 | 2023-5-30 15:37 | 只看该作者
硬件连接

使用特权

评论回复
8
梵蒂冈是神uy|  楼主 | 2023-5-30 15:37 | 只看该作者
程序
1、初始化函数
void Digital_Tube_Pin_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

        //打开时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

        //推挽输出
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 |
                                                                                                                                GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
       
        GPIO_SetBits(GPIOB, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 |
                                                                                        GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
}       

使用特权

评论回复
9
梵蒂冈是神uy|  楼主 | 2023-5-30 15:38 | 只看该作者
2、显示函数
void Digital_Tube_Display(GPIO_TypeDef* GPIOx,u8 val)
{
        uint16_t display_val = val << 8;
       
        GPIO_Write(GPIOx,display_val);
}

使用特权

评论回复
10
梵蒂冈是神uy|  楼主 | 2023-5-30 15:38 | 只看该作者
3、主函数
int main(void)
{
        int i = 0;
        Digital_Tube_Pin_Init();
        Sys_Delay_Init();
        //Usart1_Pin_Init(115200);
        //printf("初始化成功\r\n");
       
        while(1)
        {
                for (i = 0; i < 16;i++) {
                        Digital_Tube_Display(GPIOB,smgduan[i]);
                        delay_ms(500);
                }
        }
}

使用特权

评论回复
11
梵蒂冈是神uy|  楼主 | 2023-5-30 15:38 | 只看该作者
相关代码,有需要可以自行下载
网盘链接:
链接:https://pan.baidu.com/s/1KObTspAd10P6fnBTfWk9Vg
提取码:21nj

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

693

帖子

1

粉丝