本帖最后由 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倍。
|