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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2797|回復: 1
打印 上一主題 下一主題
收起左側

4×4矩形鍵盤使用stm32源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:573864 發(fā)表于 2019-8-3 12:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

因為沒有那么多LED燈,我用的詩stm32f103小系統(tǒng)的 所以就用一個燈來測試代碼。整體代碼附加在下面。
  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; //得到低四位數(shù)據(jù) 檢測4個2進制數(shù)中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;//得到高四位 即列數(shù)據(jù)
  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, 下載次數(shù): 26, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:421308 發(fā)表于 2019-10-10 16:54 | 只看該作者
文件都打不開
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本超碰 | 精品日韩欧美一区二区 | 久久久久久高潮国产精品视 | 国产日韩欧美精品一区二区 | 中文字幕不卡在线观看 | 久久福利电影 | 久久大 | 日日日视频 | 久久99久久久久 | 日本一区二区三区在线观看 | 久久精品二区 | 亚洲男人的天堂网站 | 亚洲性视频 | 激情欧美一区二区三区 | 久久日韩粉嫩一区二区三区 | 国产精品一区二区无线 | 91高清免费 | 嫩草最新网址 | 亚洲国产精品日本 | 国产精品资源在线 | 中文字幕视频在线免费 | 亚洲精品色 | 日韩高清三区 | 国产午夜一级 | 中文字幕乱码一区二区三区 | 男插女下体视频 | 午夜影院网站 | 操操日| 日韩国产精品一区二区三区 | 亚洲成人一区二区在线 | 国产1页 | 久久久精品天堂 | 这里有精品 | 日韩a级片| 一区二区精品 | 成人在线免费网站 | 久久一二 | 国产精品久久久久久久久久久免费看 | 精品欧美一区二区精品久久 | 波多野结衣精品在线 | 91精品国产乱码久久久久久久久 |