1电路实现
2实现原理
如上图所示的电路中,使用S1~S4来选择需要点亮的数码管模块,而将需要显示的数字送到总线上,选中的数码管模块被点亮,未选中的不会点亮,依次我们将数字从各位开始依次送入总线,而显示时从S1到S4依次选中,即可实现从个位到千位的依次显示。当同时显示8765这个数字时,就会一个位一个位显示,并没有同时显示,要让这个数字同时显示且无任何闪烁时,我们就需要加快整个数显时的切换频率,到切换频率足够快时,我们看起来就像是同时显示一样。主要实现函数实现如下:
/*******************************************************************************
* Function Name : uTask_display
* Description : 数字显示,共2组,每组数字使用4个数码管组成,最大9999
* Input : *para
* Output : void
* Return : NONE
*******************************************************************************/
void uTask_display(void *para)
{
while(1)
{
if(isDisplay==1)//显示数字
{
DIS1_off_Display();//先关闭所有
DIS2_off_Display();
vTaskDelay(1);
DIS1_Display_float(i,DIS1_VALUE);//显示第一个
DIS2_Display_float(i,DIS2_VALUE);//显示第二组数字
i++;
if(i>3)i=0;
}
else
{
DIS1_off_Display();
DIS2_off_Display();
}
vTaskDelay(3);
}
}
3详细代码
详细实现的子函数代码参考链接:STM32实现8段数码管动态刷新显示