OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2766|回复: 3

求助大家 IO口驱动数码管数码管自然状况下不亮,需要触碰才亮,位选也不成功,麻烦大伙看看

[复制链接]

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2020-3-3
在线时间
85 小时
发表于 2020-5-6 18:19:03 | 显示全部楼层 |阅读模式
本帖最后由 mynameisqgj 于 2020-5-8 14:15 编辑

//这是驱动代码 IO口驱动的四位共阳的数码管
void SMG_Init()
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);   //数码管端口位  端口A
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);   //数码管端口段  端口B
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);   //数码管端口段  端口C
         //数码管段的引脚   PC4 PC5
        GPIO_InitStructure.GPIO_Pin=GPIO_PinSource4|GPIO_PinSource5;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
        
        //数码管段的引脚    PB0 PB1 PB10 PB11 PB12 B13
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        //数码管位的引脚    PA4 PA5 PA6 PA7   PB13为数码管小数点的引脚
        GPIO_InitStructure.GPIO_Pin=GPIO_PinSource4|GPIO_PinSource5|GPIO_PinSource6|GPIO_PinSource7;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
        
}
void DisPlayNum(u32 n)
{
        u32 i;
    u32 s;
        if(n<9999)
        {
                s=n;
                i=0;
            for(i=0;i<4;i++)
                {
                GPIO_ResetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5);
            GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13);    //数码管的段
            GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);          //数码管的位
                   switch(i)
                   {
                           case 0:   GPIO_SetBits(GPIOA,GPIO_Pin_4);
                           break;
                           case 1:   GPIO_SetBits(GPIOA,GPIO_Pin_5);
                           break;
                           case 2:   GPIO_SetBits(GPIOA,GPIO_Pin_6);
                           break;
                           case 3:   GPIO_SetBits(GPIOA,GPIO_Pin_7);
                           break;
                   }
                   switch(s%10)
                   {
                           case 0:  GPIO_SetBits(GPIOB,GPIO_Pin_12);
                        GPIO_SetBits(GPIOB,GPIO_Pin_13);
               break;
               case 1:  GPIO_SetBits(GPIOC,GPIO_Pin_4);
                        GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11);
                        GPIO_SetBits(GPIOB,GPIO_Pin_13);
               break;
               case 2:  GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_11);        
                        GPIO_SetBits(GPIOB,GPIO_Pin_13);
                           break;
               case 3:  GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);
                        GPIO_SetBits(GPIOB,GPIO_Pin_13);
               break;
               case 4:  GPIO_SetBits(GPIOC,GPIO_Pin_4);
                        GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_10);
                        GPIO_SetBits(GPIOB,GPIO_Pin_13);
               break;
               case 5:  GPIO_SetBits(GPIOC,GPIO_Pin_5);
                        GPIO_SetBits(GPIOB,GPIO_Pin_10);
                                    GPIO_SetBits(GPIOB,GPIO_Pin_13);
               break;
               case 6:  
                        GPIO_SetBits(GPIOC,GPIO_Pin_5);
                        GPIO_SetBits(GPIOB,GPIO_Pin_13);
               break;
               case 7:  GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12);
                        GPIO_SetBits(GPIOB,GPIO_Pin_13);               
               break;
               case 8:  GPIO_SetBits(GPIOB,GPIO_Pin_13);
               break;
               case 9:  GPIO_SetBits(GPIOB,GPIO_Pin_10);
                        GPIO_SetBits(GPIOB,GPIO_Pin_13);
               break;                           
                   }
                   s/=10;
                   delay_ms(5);
                   if(s==0)
                         break;
                  
                }
               
        }
        
}//电路图





9.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2020-4-29
在线时间
0 小时
发表于 2020-5-6 18:46:30 | 显示全部楼层
不懂,帮顶,勇于提问总是好的!!
回复 支持 反对

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3625
金钱
3625
注册时间
2019-8-14
在线时间
1054 小时
发表于 2020-5-6 18:54:58 | 显示全部楼层
接触不良吗
回复 支持 反对

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2020-3-3
在线时间
85 小时
 楼主| 发表于 2020-5-6 20:35:02 | 显示全部楼层

不太清楚什么原因导致的,硬件检查过,没什么大问题,软件不太确定
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-28 00:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表