本帖最后由 datouyuan 于 2018-4-8 13:50 编辑
u8 DisPlayBuff[3];//
void DisPlayDrv(void)//3位数码驱动,间隔1~5mS执行一次
{
static u8 k=0;
GPIO_SetBits(GPIOF,GPIO_Pin_13|GPIO_Pin_12|GPIO_Pin_11);//关闭段选
GPIO_SetBits(GPIOE,GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_12|GPIO_Pin_11|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7);//关闭位选
switch (k)
{
case 0:
GPIO_ResetBits(GPIOF,GPIO_Pin_13); //GPIO_Write(GPIOE,table[n % 10]); n=n/10; //显示个位
break;
case 1:
GPIO_ResetBits(GPIOF,GPIO_Pin_12); //GPIO_Write(GPIOE,table[n % 10]); n=n/10; //显示十位
break;
case 2:
GPIO_ResetBits(GPIOF,GPIO_Pin_11); //GPIO_Write(GPIOE,table[n % 10]); n=n/10; //显示百位
break;
}
switch (DisPlayBuff[k]) //分别取余写入段选
{
case 0:
GPIO_Write(GPIOE,table[0]);
break;
case 1:
GPIO_Write(GPIOE,table[1]);
break;
case 2:
GPIO_Write(GPIOE,table[2]);
break;
case 3:
GPIO_Write(GPIOE,table[3]);
break;
case 4:
GPIO_Write(GPIOE,table[4]);
break;
case 5:
GPIO_Write(GPIOE,table[5]);
break;
case 6:
GPIO_Write(GPIOE,table[6]);
break;
case 7:
GPIO_Write(GPIOE,table[7]);
break;
case 8:
GPIO_Write(GPIOE,table[8]);
break;
case 9:
GPIO_Write(GPIOE,table[9]);
break;
default:
//空显示的IO口操作
break;
}
k++;
if(3==k) k=0;
}
帮你改成了每次显示一段。
假如某一段不显示,这个时间不能省略,否则会造成显示亮度变化。如显示“1”比显示“100”亮3倍。
|