目录
这里只使用一个数码管,进行静态显示,自己搭电路实现显示。
材料准备
材料 | 数量 |
---|---|
5611BS数码管 | 1 |
1k5色环电阻 | 7 |
面包板 | 1 |
电路搭建
说明:
共阳数码管:使得芯片带负载能力更强
1k5电阻:保护数码管,同时起到限流作用
配置数码管控制引脚
配置引脚号
配置引脚速度
配置引脚的模式
引脚初始化
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);
}