数码管显示实验
共阳极数码管,8个LED的阳极全部并联到一起引出连接+5V。点亮对应的数码管段给低电平,反之熄灭给高电平。
新建数码管SMG文件,用于装相关的驱动文件(smg.c)和头文件(smg.h)。
smg.c
#include "smg.h"
void SMG_Init() //初始化数码管
{
GPIO_InitTypeDef GPIO_InitStructure; //声明结构体变量用于初始化GPIO
RCC_APB2PeriphClockCmd(SMG_PORT_RCC,ENABLE);//开启GPIO时钟 SMG_PORT_RCC=RCC_APB2Periph_GPIOC
/*配置GPIO模式和IO口 */
GPIO_InitStructure.GPIO_Pin=SMG_PIN; //选择IO口引脚
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(SMG_PORT,&GPIO_InitStructure);//初始化GPIO SMG_PORT =GPIOC
}
smg.h
#ifndef _smg_H
#define _smg_H
#include "system.h"
#define SMG_PORT GPIOC
#define SMG_PIN (GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7)
#define SMG_PORT_RCC RCC_APB2Periph_GPIOC
void SMG_Init(void);//
#endif
主函数:
#include "system.h" //位带操作宏定义
#include "SysTick.h" //定时器宏定义
#include "led.h" //LED端口、引脚宏定义
#include "smg.h" //数码管驱动文件内宏定义
u8 smgduan[16]={
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D