OpenEdv-开源电子网

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

新人发帖,求助一个用矩阵键盘控制数码管显示的问题,急用!!谢谢大家!

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2017-7-21
在线时间
8 小时
发表于 2017-7-22 11:20:34 | 显示全部楼层 |阅读模式
3金钱
下面是具体程序:
key,h
#ifndef __KEY_H
#define __KEY_H
#include<sys.h>

#define KE1  GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define KE2  GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)
#define KE3  GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)
#define KE4  GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_12)



#define KEY1 1
#define KEY2 2
#define KEY3 3
#define KEY4 4
int KEY_Scan(void);
void KEY_Init(void);
#endif

key.c
#include<key.h>
#include<delay.h>

void KEY_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);//ê1&#196;üPORTCê±&#214;ó
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0|GPIO_Pin_4|GPIO_Pin_11|GPIO_Pin_12;//PA  ′ó×óμ&#189;óòòà′&#206;&#206;a1 2 3 4áD
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //éè&#214;&#195;é&#207;à-
        GPIO_Init(GPIOA, &GPIO_InitStructure);//3&#245;ê&#188;&#187;ˉGPIOC
        
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_9;//PC0-3
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //éè&#214;&#195;3éí&#198;íì
        GPIO_Init(GPIOC, &GPIO_InitStructure);//3&#245;ê&#188;&#187;ˉGPIOC
        
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//PC0-3
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //éè&#214;&#195;3éí&#198;íì
        GPIO_Init(GPIOA, &GPIO_InitStructure);//3&#245;ê&#188;&#187;ˉGPIOA
}

void P1_Init(void)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_13);//μú1DD
GPIO_SetBits(GPIOA,GPIO_Pin_14);
GPIO_SetBits(GPIOA,GPIO_Pin_15);
GPIO_SetBits(GPIOC,GPIO_Pin_9);

}
void P2_Init(void)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_14);//μú2DD
GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_SetBits(GPIOA,GPIO_Pin_15);
GPIO_SetBits(GPIOC,GPIO_Pin_9);

}
void P3_Init(void)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_15);//μú3DD
GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_SetBits(GPIOA,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_9);
}
void P4_Init(void)
{

GPIO_ResetBits(GPIOC,GPIO_Pin_9);//μú4DD
GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_SetBits(GPIOA,GPIO_Pin_14);
GPIO_SetBits(GPIOC,GPIO_Pin_15);
}

int KEY_Scan(void)//é¨&#195;è
{
P1_Init();//μú1DD
if(KE1==0) return 1;
        else if(KE2==0) return 2;
        else if(KE3==0)  return 3;
        else if(KE4==0) return 4;

P2_Init();//μú1DD
if(KE1==0) return 5;
        else if(KE2==0) return 6;
        else if(KE3==0)  return 7;
        else if(KE4==0) return 8;

P3_Init();//μú1DD
if(KE1==0) return 9;
        else if(KE2==0) return 10;
        else if(KE3==0)  return 11;
        else if(KE4==0) return 12;

P4_Init();//μú1DD
if(KE1==0) return 13;
        else if(KE2==0) return 14;
        else if(KE3==0)  return 15;
        else if(KE4==0) return 16;


return 0;
}

LED.h

#ifndef __LED_H
#define __LED_H
#include<sys.h>
#define LED1A  PBout(5)
#define LED2A  PBout(6)
#define LED3A  PBout(7)
#define LED4A  PBout(8)
#define LED5A  PBout(9)
#define LED6A  PBout(10)
#define LED7A  PBout(11)
#define LED8A  PBout(12)
#define LED9A  PBout(13)
#define LED10A  PBout(14)
#define LED11A  PBout(15)
#define LED12A  PBout(1)

#define LED1B  PCout(0)
#define LED2B  PCout(1)
#define LED3B  PCout(2)
#define LED4B  PCout(3)
#define LED5B  PCout(4)
#define LED6B  PCout(5)
#define LED7B  PCout(6)
#define LED8B  PCout(7)
#define LED9B  PCout(8)
#define LED10B  PCout(13)
#define LED11B  PCout(10)
#define LED12B  PBout(0)

void LED_Init(void);        



#endif

LED.c
#include<led.h>

void LED_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct;
  RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE);

  GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_6|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//3&#245;ê&#188;&#187;ˉGPIOB&#184;÷IO&#191;ú
  GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB,&GPIO_InitStruct);

        GPIO_InitStruct.GPIO_Pin        =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_13;//3&#245;ê&#188;&#187;ˉGPIOC2μ&#196;IO&#191;ú
  GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;        
  GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOC,&GPIO_InitStruct);
        

}
main.c

#include<key.h>
#include<led.h>
#include<delay.h>
#include<sys.h>

int main(void)
{
                u8 t;
KEY_Init();
LED_Init();
delay_init();

        while(1)

{
                t=KEY_Scan();                                 
switch(t)
        {
  case 1ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=0,LED6A=1,LED7A=1,LED8A=0,LED9A=0,LED10A=0,LED11A=0,LED12A=0;break;//1
  case 2ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=0,LED8A=1,LED9A=1,LED10A=0,LED11A=1,LED12A=0;break;//2        
        case 3ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=0,LED10A=0,LED11A=1,LED12A=0;break;        //3
  case 4ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=0,LED6A=1,LED7A=1,LED8A=1,LED9A=0,LED10A=1,LED11A=1,LED12A=0;break;//4
  case 5ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=0,LED7A=1,LED8A=1,LED9A=0,LED10A=1,LED11A=1,LED12A=0;break;//5
        case 6ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=0,LED7A=1,LED8A=1,LED9A=1,LED10A=1,LED11A=1,LED12A=0;break;//6
  case 7ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=0,LED9A=0,LED10A=0,LED11A=0,LED12A=0;break;//7
  case 8ED1A=1;LED2A=1;LED3A=1;LED4A=0;LED5A=1;LED6A=1;LED7A=1;LED8A=1;LED9A=1;LED10A=1;LED11A=1,LED12A=0;break;        //8
  case 9ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=0,LED10A=1,LED11A=1,LED12A=0;break;//9
  case 10ED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=1,LED10A=1,LED11A=0,LED12A=0;break;//0
  case 11:LED1A=0,LED2A=1,LED3A=1,LED4A=1,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=1,LED10A=1,LED11A=0,LED12A=0;delay_ms(10);//0
                      LED1A=1,LED2A=0,LED3A=1,LED4A=1,LED5A=0,LED6A=1,LED7A=1,LED8A=0,LED9A=0,LED10A=0,LED11A=0,LED12A=0;delay_ms(10);//1
                      LED1A=1,LED2A=1,LED3A=0,LED4A=0,LED5A=1,LED6A=1,LED7A=0,LED8A=1,LED9A=1,LED10A=0,LED11A=1,LED12A=0;delay_ms(10);//2
                      LED1A=1,LED2A=1,LED3A=1,LED4A=0,LED5A=1,LED6A=1,LED7A=1,LED8A=1,LED9A=0,LED10A=0,LED11A=1,LED12A=0;delay_ms(10);//3
                LED1B=0,LED2B=1,LED3B=1,LED4B=1,LED5B=0,LED6B=1,LED7B=1,LED8B=1,LED9B=0,LED10B=1,LED11B=1,LED12B=0;delay_ms(10);//4
                LED1B=1,LED2B=0,LED3B=1,LED4B=1,LED5B=1,LED6B=0,LED7B=1,LED8B=1,LED9B=0,LED10B=1,LED11B=1,LED12B=0;delay_ms(10);//5
                            LED1B=1,LED2B=1,LED3B=0,LED4B=1,LED5B=1,LED6B=0,LED7B=1,LED8B=1,LED9B=1,LED10B=1,LED11B=1,LED12B=0;delay_ms(10);//6
                      LED1B=1,LED2B=1,LED3B=1,LED4B=0,LED5B=1,LED6B=1,LED7B=1,LED8B=0,LED9B=0,LED10B=0,LED11B=0,LED12B=0;delay_ms(10);break;//7


        }
}
}

程序运行之后数码管完全没反应。。。。开发板STM32F103RC,,,,求大佬解决急用!!!!万分感谢!!!

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

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2017-7-21
在线时间
8 小时
 楼主| 发表于 2017-7-22 12:10:08 | 显示全部楼层
急用,求各位大佬帮帮忙
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2017-7-21
在线时间
8 小时
 楼主| 发表于 2017-7-22 12:11:40 | 显示全部楼层
求助。自顶
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-12-23 03:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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