你好!欢迎来到深圳市品慧电子有限公司!
语言
当前位置:首页 >> 分立器件 >> 发光二极管 >> 用stm32控制4位数码管_stm32控制共阴数码管

用stm32控制4位数码管_stm32控制共阴数码管


1、stm32控制4位共阳数码管输出计数

用stm32控制4位数码管,需要用到GPIO口 PA0~PA11共12个引脚。首先我们来看看数码管的原理图。

用stm32控制4位数码管_stm32控制共阴数码管

用stm32控制4位数码管_stm32控制共阴数码管

因为是共阳所以12,9,8,6为电源输入,其他引脚均为接地,所以对于芯片来说12,9,8,6高位输出,其他设定为低位即可。

//设定下GPIO口

void GPIO_Num_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

}

这里有个要注意的,根据原理图可以看出数码管一次只能输出一位数组,所以如果是多位的必须使用扫描的方式输出,缩短切换的间隔,就可以达到不闪烁的效果。

//输出封装

void DisPlayNum(int n)

{

if (n 《 9999)

{ int i;

int s;

s = n;

i=0;

for (i=0;i《4;i++)

{

GPIO_ResetBits(GPIOA,GPIO_Pin_All);

switch (i)

{

case 0:

GPIO_SetBits(GPIOA,GPIO_Pin_5);

break;

case 1:

GPIO_SetBits(GPIOA,GPIO_Pin_7);

break;

case 2:

GPIO_SetBits(GPIOA,GPIO_Pin_8);

break;

case 3:

GPIO_SetBits(GPIOA,GPIO_Pin_11);

break;

}

switch (s % 10)

{

case 0:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_4);

break;

case 1:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_9|GPIO_Pin_10);

break;

case 2:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_9);

break;

case 3:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_9);

break;

case 4:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10);

break;

case 5:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_6);

break;

case 6:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_6);

break;

case 7:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_9);

break;

case 8:

GPIO_SetBits(GPIOA,GPIO_Pin_2);

break;

case 9:

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0);

break;}

s = s / 10;

delay_ms(1);

if (s==0)

break;}}}

用户评论

发评论送积分,参与就有奖励!

发表评论

评论内容:发表评论不能请不要超过250字;发表评论请自觉遵守互联网相关政策法规。

深圳市品慧电子有限公司