STM32F103C8T6最小系统板驱动两位共阴数码管0-99显示
一、用到的硬件及接线
1.STM32F103C8T6最小系统板、两位共阴数码管、杜邦线
2.硬件接线
数码管引脚 STM32 IO口
a -----------------------PB0
b -----------------------PB5
c -----------------------PB7
d -----------------------PB8
e -----------------------PB9
f -----------------------PB10
g -----------------------PB12
公共脚1 -----------------------PA6
公共脚2 -----------------------PA7
注意:其他系统板原理也是一样的,只要定义好IO口就行了,有些IO口不能用的就要换!
二、代码部分
1. seg.h
#ifndef __SEG_H
#define __SEG_H
# include "stm32f10x.h"
extern u8 Thou,Hund,Ten;
#define zero GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10)
#define zero1 GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10)
#define one GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7)
#define one1 GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7)
#define two GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12)
#define two1 GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12)
#define three GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12)
#define three1 GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12)
#define four GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_10|GPIO_Pin_12)
#define four1 GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_10|GPIO_Pin_12)
#define five GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_12)
#define five1 GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_12)
#define six GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_12)
#define six1 GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_12)
#define seven GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7)
#define seven1 GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7)
#define eight GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_12)
#define eight1 GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_12)
#define nine GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_12)
#define nine1 GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_12)
void Display(void);
void SEG_GPIO_Config(void);
#endif
2. seg.c
#include "seg.h"
#include "delay.h"
u8 Thou,Hund=0,Ten;
/**********************************************
2位共阴数码管GPIO配置
GPIOB Pin0~12为数码管的a\b\c\d\e\f\g没有小数点
GPIOA Pin 6\7为位选
***********************************************/
void SEG_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);//段选初始化
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);//位选初始化
GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_12);
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7);
}
/**********************************************
2位共阴数码管显示
***********************************************/
void Display(void)
{
switch(Thou/10)
{
case 0 :
{
zero;//显示0
GPIO_ResetBits(GPIOA,GPIO_Pin_4);
delay_ms(5);
zero1;//不显示0
GPIO_SetBits(GPIOA,GPIO_Pin_4);
break;
}
case 1 :
{
one;
GPIO_ResetBits(GPIOA,GPIO_Pin_4);//2
delay_ms(5);
one1;
GPIO_SetBits(GPIOA,GPIO_Pin_4);//
break;
}
case 2 :
{
two;
GPIO_ResetBits(GPIOA,GPIO_Pin_4);//
delay_ms(5);
two1;
GPIO_SetBits(GPIOA,GPIO_Pin_4);//
break;
}