首先你要把IO口配置好,比如我初始化了PB8-15口
//IO初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口时钟
GPIO_InitStructure.GPIO_Pin = 0XFF00; //PB.8-15 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,0XFF00); //PB.5 输出高
}
然后再写你的数码管控制程序,比如
假设数码管码表是这个char code distab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}
void smg(u8 s)
{
u8 i,k;
k=distab[s];//得到输入的数对应的码表
for(i=0;i<8;i++) //对应8个IO口
{
if(k&0X01)GPIO_ResetBits(GPIOB,0X0100<<i);//判断最低位是否为1,是的话拉低对应IO口电平
else GPIO_SetBits(GPIOB,0X0100<<i);//否的话拉高对应IO口的电平
k>>1;//右移
}
}
程序是直接打的,没有实际测试过,所以照搬不一定能编译成功,我的思路就这样了,希望能对你有所启发