【STM32F103ZET6——库函数】9.数码管显示

目录

材料准备

电路搭建

配置数码管控制引脚

使能引脚时钟

例程

例程说明

main.h

main.c

SMG.h

SMG.c

这里只使用一个数码管,进行静态显示,自己搭电路实现显示。

材料准备

材料数量
5611BS数码管1
1k5色环电阻7
面包板1

电路搭建

说明:

  • 共阳数码管:使得芯片带负载能力更强

  • 1k5电阻:保护数码管,同时起到限流作用

配置数码管控制引脚

  1. 配置引脚号

  2. 配置引脚速度

  3. 配置引脚的模式

  4. 引脚初始化

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);//初始化引脚

GPIO_InitTypeDef GPIO_SMG;

GPIO_SMG.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_SMG.GPIO_Speed=GPIO_Speed_50MHz;

//PG0
GPIO_SMG.GPIO_Pin=GPIO_Pin_0;
GPIO_Init(GPIOG,&GPIO_SMG);
GPIO_WriteBit(GPIOG,GPIO_Pin_0,1);

//PG1
GPIO_SMG.GPIO_Pin=GPIO_Pin_1;
GPIO_Init(GPIOG,&GPIO_SMG);
GPIO_WriteBit(GPIOG,GPIO_Pin_1,1);

//PG2
GPIO_SMG.GPIO_Pin=GPIO_Pin_2;
GPIO_Init(GPIOG,&GPIO_SMG);
GPIO_WriteBit(GPIOG,GPIO_Pin_2,1);

//PG3
GPIO_SMG.GPIO_Pin=GPIO_Pin_3;
GPIO_Init(GPIOG,&GPIO_SMG);
GPIO_WriteBit(GPIOG,GPIO_Pin_3,1);

//PG4
GPIO_SMG.GPIO_Pin=GPIO_Pin_4;
GPIO_Init(GPIOG,&GPIO_SMG);
GPIO_WriteBit(GPIOG,GPIO_Pin_4,1);

//PG5
GPIO_SMG.GPIO_Pin=GPIO_Pin_5;
GPIO_Init(GPIOG,&GPIO_SMG);
GPIO_WriteBit(GPIOG,GPIO_Pin_5,1);

//PG6
GPIO_SMG.GPIO_Pin=GPIO_Pin_6;
GPIO_Init(GPIOG,&GPIO_SMG);
GPIO_WriteBit(GPIOG,GPIO_Pin_6,1);

使能引脚时钟

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE);

例程

例程说明

自主搭建电路,实现数码管静态显示。

main.h

#ifndef _MAIN_H_
#define _MAIN_H_

#include "stm32f10x.h"                  // Device header
#include <string.h>
#include <stdio.h>

#include "delay.h"
#include "SMG.h"

#endif

main.c

#include "main.h"

int main() {
	delay_init();
	SMG_Init();
    while(1){
		SMG_Show1();
		delay_ms(1000);
		SMG_Show2();
		delay_ms(1000);
		SMG_Show3();
		delay_ms(1000);
	}
}

SMG.h

#ifndef __SMG_H_
#define __SMG_H_

#include "sys.h"
#include "stdio.h"

void SMG_Init();
void SMG_ALL_OFF();
void SMG_Show1();
void SMG_Show2();
void SMG_Show3();

#endif

SMG.c

#include "SMG.h"

void SMG_Init(){
	GPIO_InitTypeDef GPIO_SMG;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE);
	
	GPIO_SMG.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_SMG.GPIO_Speed=GPIO_Speed_50MHz;
	
	//PG0
	GPIO_SMG.GPIO_Pin=GPIO_Pin_0;
	GPIO_Init(GPIOG,&GPIO_SMG);
	GPIO_WriteBit(GPIOG,GPIO_Pin_0,1);
	
	//PG1
	GPIO_SMG.GPIO_Pin=GPIO_Pin_1;
	GPIO_Init(GPIOG,&GPIO_SMG);
	GPIO_WriteBit(GPIOG,GPIO_Pin_1,1);
	
	//PG2
	GPIO_SMG.GPIO_Pin=GPIO_Pin_2;
	GPIO_Init(GPIOG,&GPIO_SMG);
	GPIO_WriteBit(GPIOG,GPIO_Pin_2,1);
	
	//PG3
	GPIO_SMG.GPIO_Pin=GPIO_Pin_3;
	GPIO_Init(GPIOG,&GPIO_SMG);
	GPIO_WriteBit(GPIOG,GPIO_Pin_3,1);
	
	//PG4
	GPIO_SMG.GPIO_Pin=GPIO_Pin_4;
	GPIO_Init(GPIOG,&GPIO_SMG);
	GPIO_WriteBit(GPIOG,GPIO_Pin_4,1);
	
	//PG5
	GPIO_SMG.GPIO_Pin=GPIO_Pin_5;
	GPIO_Init(GPIOG,&GPIO_SMG);
	GPIO_WriteBit(GPIOG,GPIO_Pin_5,1);
	
	//PG6
	GPIO_SMG.GPIO_Pin=GPIO_Pin_6;
	GPIO_Init(GPIOG,&GPIO_SMG);
	GPIO_WriteBit(GPIOG,GPIO_Pin_6,1);
}

void SMG_ALL_OFF(){
	GPIO_WriteBit(GPIOG,GPIO_Pin_0,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_1,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_2,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_3,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_4,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_5,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_6,1);
}

//PG0 -> a
//PG1 -> b
//PG2 -> c
//PG3 -> d
//PG4 -> e
//PG5 -> f
//PG6 -> g

void SMG_Show1(){//数码管显示数字1
	GPIO_WriteBit(GPIOG,GPIO_Pin_0,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_1,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_2,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_3,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_4,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_5,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_6,1);
}

void SMG_Show2(){//数码管显示数字2
	GPIO_WriteBit(GPIOG,GPIO_Pin_0,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_1,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_2,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_3,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_4,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_5,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_6,0);
}

void SMG_Show3(){//数码管显示数字3
	GPIO_WriteBit(GPIOG,GPIO_Pin_0,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_1,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_2,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_3,0);
	GPIO_WriteBit(GPIOG,GPIO_Pin_4,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_5,1);
	GPIO_WriteBit(GPIOG,GPIO_Pin_6,0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因心,三人水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值