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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2728|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
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
復(fù)制代碼
  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. //行置為輸入 默認(rèn)為1 列置為輸出默認(rèn)為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. //行置為輸出 默認(rèn)為0 列置為輸入默認(rèn)為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進(jìn)制數(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. }
復(fù)制代碼

鍵盤矩陣.7z

185.96 KB, 下載次數(shù): 26, 下載積分: 黑幣 -5

評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频不卡 | 国产1区2区在线观看 | 欧美亚洲视频在线观看 | 在线黄| 成人av影院 | 日韩美女在线看免费观看 | 久久大陆 | 日本精品裸体写真集在线观看 | 精品国产乱码久久久久久闺蜜 | 免费观看黄色一级片 | 中文字幕日韩一区二区 | 老司机67194精品线观看 | 18gay男同69亚洲网站 | 久久久tv| 久久精品久久精品久久精品 | 狠狠草视频 | 91大神新作在线观看 | 国产精品一区二区三 | 自拍 亚洲 欧美 老师 丝袜 | 91久久综合| 狠狠操狠狠操 | 久久精品小视频 | 久婷婷 | 国产高清视频一区 | 久久精品亚洲 | 美女黄网站 | 四虎最新视频 | 亚洲精品乱码久久久久久蜜桃91 | 天天草夜夜骑 | 谁有毛片 | 欧州一区二区三区 | 日韩久久成人 | 天天综合日日夜夜 | 免费观看黄a一级视频 | 国产精品毛片无码 | 国产ts人妖一区二区三区 | 久久精品国产免费高清 | 精品国产18久久久久久二百 | 日韩欧美在线不卡 | 成人av播放 | 欧美国产精品久久久 |