久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 4×4矩形鍵盤使用stm32源程序 [打印本頁]

作者: 13958988573    時間: 2019-8-3 12:13
標題: 4×4矩形鍵盤使用stm32源程序

因為沒有那么多LED燈,我用的詩stm32f103小系統的 所以就用一個燈來測試代碼。整體代碼附加在下面。
  1. #ifndef __KEY_H
  2. #define __KEY_H
  3. #include "sys.h"
  4. //#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)
  5. //#define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)
  6. //#define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)
  7. //#define KEY3 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5)


  8. #define HPin  GPIO_Pin_3|GPIO_Pin_2|GPIO_Pin_1|GPIO_Pin_0
  9. #define LPin  GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4
  10. //#define HRead();  GPIO_ReadInputData(GPIOD);
  11. //#define LRead();  GPIO_ReadInputData(GPIOD);
  12. //void KEY_Init(void);
  13. //u8 KEY_Scan(void);

  14. void HL_Init_HScan(void);
  15. void HL_Init_LScan(void);

  16. u8 HL_Scan(void);
  17. #endif
復制代碼
  1. #include "key.h"
  2. #include "delay.h"
  3. //void KEY_Init(void)
  4. //{
  5. //   GPIO_InitTypeDef GPIO_InitStructure;
  6. //   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
  7. //   GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
  8. //   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
  9. //   GPIO_Init(GPIOE,&GPIO_InitStructure);
  10. //}
  11. //u8 KEY_Scan(void)
  12. //{
  13. //    if((KEY0==0)||(KEY1==0)||(KEY2==0)||(KEY3==0))
  14. //        {
  15. //          delay_ms(20);
  16. //          if(KEY0==0){while(KEY0==0);return 1;}
  17. //          else if(KEY1==0){while(KEY1==0);return 2;}
  18. //          else if(KEY2==0){while(KEY2==0);return 3;}
  19. //          else if(KEY3==0){while(KEY3==0);return 4;}
  20. //        }
  21. //        return 0;
  22. //}
  23. //行置為輸入 默認為1 列置為輸出默認為0        掃描行
  24. void HL_Init_HScan(void)
  25. {
  26.      GPIO_InitTypeDef GPIO_InitStructure;
  27.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  28.      GPIO_InitStructure.GPIO_Pin=HPin;
  29.          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
  30.          GPIO_Init(GPIOA,&GPIO_InitStructure);

  31.          GPIO_InitStructure.GPIO_Pin=LPin;
  32.          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  33.          GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  34.          GPIO_Init(GPIOA,&GPIO_InitStructure);
  35.          GPIO_ResetBits(GPIOA,LPin);
  36. }
  37. //行置為輸出 默認為0 列置為輸入默認為1        掃描列
  38. void HL_Init_LScan(void)
  39. {
  40.      GPIO_InitTypeDef GPIO_InitStructure;
  41.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  42.      GPIO_InitStructure.GPIO_Pin=LPin;
  43.          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
  44.          GPIO_Init(GPIOA,&GPIO_InitStructure);

  45.          GPIO_InitStructure.GPIO_Pin=HPin;
  46.          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  47.          GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  48.          GPIO_Init(GPIOA,&GPIO_InitStructure);
  49.          GPIO_ResetBits(GPIOA,HPin);


  50. }
  51. u8 HL_Scan(void)
  52. {
  53.   u16 temp=0;
  54.         u8 key=0;
  55.         HL_Init_HScan();
  56.         temp=GPIO_ReadInputData(GPIOA);
  57.     temp&=0x000f; //得到低四位數據 檢測4個2進制數中0的存在
  58.         if(temp==0x0e)//第一行有按鍵被按下
  59.         {
  60.           key=1        ;
  61.         }
  62.         else if(temp==0x0d)
  63.         {
  64.           key=2;
  65.         }
  66.         else if(temp==0x0b)
  67.         {
  68.           key=3;
  69.         }
  70.         else if(temp==0x07)
  71.         {
  72.           key=4;
  73.         }else key=0;

  74.    HL_Init_LScan();
  75.    temp=GPIO_ReadInputData(GPIOA);
  76.    temp&=0x00f0;//得到高四位 即列數據
  77.    if((temp==0xe0)&&(key!=0))//第一列被按下
  78.    {
  79.       key=(key-1)*4+1;
  80.    }else
  81.    if((temp==0xd0)&&(key!=0))
  82.    {
  83.       key=(key-1)*4+2;
  84.    }else
  85.    if((temp==0xb0)&&(key!=0))
  86.    {
  87.      key=(key-1)*4+3;
  88.    }else
  89.    if((temp==0x70)&&(key!=0))
  90.    {
  91.      key=(key-1)*4+4;
  92.    }
  93.    else key=0;
  94.   
  95.    return key;
  96. }
復制代碼

鍵盤矩陣.7z

185.96 KB, 下載次數: 26, 下載積分: 黑幣 -5


作者: xiaozhong1314    時間: 2019-10-10 16:54
文件都打不開




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品s色| 玖玖视频 | 欧美一区二区三 | 国产精品国产成人国产三级 | 日韩免费网站 | 欧美一级免费看 | 国产成人av在线播放 | 欧美一区二区二区 | 日本aaa视频 | 国产精品特级片 | 国产欧美精品一区二区色综合 | 亚洲性人人天天夜夜摸 | 国内精品视频在线 | 丁香婷婷在线视频 | 国产91在线 | 中日 | 在线国产一区二区 | 亚洲一区二区三区免费视频 | 国产成人精品午夜视频免费 | 在线一级片 | 欧美日韩亚洲一区二区 | 日本三级电影在线观看视频 | 国产精久久久久久 | 成在线人视频免费视频 | 亚洲精品免费视频 | 中国大陆高清aⅴ毛片 | 97国产精品视频人人做人人爱 | 日日干日日射 | 久久里面有精品 | 日韩电影一区二区三区 | 亚洲免费av一区 | 国产乱肥老妇国产一区二 | 自拍偷拍精品 | 偷拍第一页 | 精品一区二区三区四区外站 | 精品欧美 | 亚洲视频欧美视频 | 欧州一区二区 | 亚洲www啪成人一区二区麻豆 | 久久精品97 | 狠狠操电影| 超碰免费在线观看 |