OpenEdv-开源电子网

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

麻烦各位大佬帮忙看一个矩阵按键的程序,万分感谢

[复制链接]

7

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2018-3-18
在线时间
29 小时
发表于 2018-8-15 09:55:02 | 显示全部楼层 |阅读模式
1金钱
程序是移植论坛一个大佬的。不知道为什么放在我的开发板子上没有反应。不知道是不是哪里写错了。。
我实在是找不出来了。。。所以恳请大佬们麻烦看下 万分感谢!!!我用的是战舰V3开发板

以下是main
int main(void)
{
uart_init(115200);
delay_init();   
LED_Init();   
JZAJ_Init();
POINT_COLOR=RED;
while(1)
{
//  LED1=0;
//  LED0=0;
  keychuli();
  delay_ms(300);
}
}


以下是按键配置函数
#include "jzaj.h"
#include "lcd.h"
#include "led.h"
#include "sys.h"
#include "delay.h"
u16 keyz=0;
u8 value=0;
void JZAJ_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5 | GPIO_Pin_4 |GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_InitStructure);
GPIO_SetBits(GPIOF,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);

}
u8 KeyScan()
{
u8 lie,hang,k,i=0;
delay_init();
GPIO_Write(GPIOF,0XF0);        
if((GPIO_ReadInputData(GPIOF)&0xF0)!=0xF0)     
{
  delay_ms(40);      
  if((GPIO_ReadInputData(GPIOF)&0xF0)!=0xF0)   
  {
   lie=GPIO_ReadInputData(GPIOF);   
   hang=lie;        
   lie=~lie;         
   lie=lie&0xf0;        
   for(i=0;i<4&&((hang&0xf0)!=0xf0);i++)   
   {           
    GPIO_Write(GPIOF,(hang&0xf0)|(0x01<<i));
    hang=GPIO_ReadInputData(GPIOF);   
   }
   hang&=0x0f;        
   k=lie|hang;
   GPIO_Write(GPIOF,0XF0);      
   while((GPIO_ReadInputData(GPIOF)&0xF0)!=0xF0)
   {
    delay_ms(40);      
   }
   return k;         
  }
}
return 0;                                         
}
void keychuli()
{
keyz=KeyScan();
if(keyz!=0)
{
  switch(keyz)
  {
   case 0x11: value=0;LED1=1;break;
   case 0x21: value=1;LED1=0;break;
   case 0x41: value=2;LED1=1;break;
   case 0x81: value=3;LED1=0;break;
   case 0x12: value=4;LED1=1;break;
   case 0x22: value=5;LED1=0;break;
   case 0x42: value=6;LED1=1;break;
   case 0x82: value=7;LED1=0;break;
   case 0x14: LED1=1;break;
   case 0x24: LED1=0;break;
   case 0x44: LED1=1;break;
   case 0x84: LED1=0;break;   
   case 0x18: value=8;LED1=1;break;
   case 0x28: value=9;LED1=0;break;
   case 0x48: LED1=1;break;
   case 0x88: LED1=0;break;  
   default:break;
  }
}  
}





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

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-15 16:22:02 | 显示全部楼层
矩阵键盘程序.rar (3.81 KB, 下载次数: 128)
猪猪熊呢?
回复

使用道具 举报

7

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2018-3-18
在线时间
29 小时
 楼主| 发表于 2018-8-15 20:02:39 | 显示全部楼层

已经换了学长的程序弄好了。但是就是不知道自己哪里错了。。。唉 谢谢您分享
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-8-15 20:36:43 | 显示全部楼层
u8 KeyScan()
{
u8 lie,hang,k,i=0;
delay_init();
GPIO_Write(GPIOF,0XF0);        
  delay_ms(1);    //  <---------------------------
if((GPIO_ReadInputData(GPIOF)&0xF0)!=0xF0)     
{
  delay_ms(40);  
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-8-15 20:39:18 | 显示全部楼层
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5 | GPIO_Pin_4 |GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_InitStructure);
GPIO_SetBits(GPIOF,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);

输入要加上拉
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2018-8-16 14:43:24 | 显示全部楼层
回复

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2019-7-24
在线时间
34 小时
发表于 2019-7-31 14:02:52 | 显示全部楼层
求楼主分享下学长程序,我也想学习下,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-30 21:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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