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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2739|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91九色在线观看 | 免费成人高清在线视频 | www国产成人免费观看视频 | av黄色片在线观看 | 人人做人人澡人人爽欧美 | 日韩国产中文字幕 | 国产精品久久久久久久久久 | 亚洲精品乱码8久久久久久日本 | 久久久久久久久久爱 | 神马久久久久久久久久 | 日本成人毛片 | 美女131mm久久爽爽免费 | 天天影视网天天综合色在线播放 | 日韩视频一区二区三区 | 一区二区视频在线观看 | 中文字幕的av| 人人干超碰 | 在线高清免费观看视频 | 久久久久久久久中文字幕 | 日韩网站在线观看 | 亚洲 欧美 日韩 精品 | 欧美电影免费观看 | 久久免费看 | 国产中文一区二区三区 | 色综网 | 亚洲精品日韩欧美 | 男人的天堂亚洲 | 精品成人在线视频 | 久久国产精品无码网站 | 大香在线伊779 | 国产乱码精品一区二区三区忘忧草 | 亚洲视频在线观看 | 午夜网| 国产在线资源 | 亚洲福利 | 亚洲天堂一区 | av网站免费 | 成人美女免费网站视频 | 在线观看国产wwwa级羞羞视频 | 欧产日产国产精品视频 | 成年人免费在线视频 |