找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4453|回复: 1
打印 上一主题 下一主题
收起左侧

单片机实验矩阵键盘状态读取实验 仿真+源码

[复制链接]
跳转到指定楼层
楼主
这是我上个星期做的实验 附件里有源代码和仿真文件
功能:反转法读取矩阵键盘的值
要求:
1、掌握反转法读取矩阵键盘值的原理
2、按键消抖的方法



单片机源程序如下:
  1. #include"config.h"
  2. #include"delay.h"
  3. INT8U keyscan()
  4. {
  5.           INT8U key_value = 0x10;
  6.           INT8U temp,temp0,temp1,temp2,temp3;
  7.           KEY = 0xf0;
  8.           temp=KEY & 0xf0;
  9.           if(temp!=0xf0)
  10.           {
  11.                    KEY = 0xf7;
  12.                  LongDelay(1250);
  13.                  temp0= KEY & 0xf0;
  14.                  KEY = 0xfb;
  15.                   LongDelay(1250);
  16.                  temp1= KEY & 0xf0;
  17.                  KEY = 0xfd;
  18.                   LongDelay(1250);
  19.                  temp2= KEY & 0xf0;
  20.                  KEY = 0xfe;
  21.                   LongDelay(1250);
  22.                  temp3= KEY & 0xf0;
  23.                  KEY = 0xf0;
  24.                  while((KEY & 0xf0)!=0xf0);
  25.                  LongDelay(1250);
  26.                  while((KEY & 0xf0)!=0xf0);
  27.           }
  28.            if(temp0!=0xf0)
  29.           {
  30.                     switch(temp0)
  31.                   {
  32.                             case 0xe0:
  33.                                                 key_value=0x00;
  34.                                                 break;
  35.                           case 0xd0:
  36.                                                 key_value=0x04;
  37.                                                 break;
  38.                           case 0xb0:
  39.                                                 key_value=0x08;
  40.                                                 break;
  41.                           case 0x70:
  42.                                                 key_value=0x0c;
  43.                                                 break;
  44.                           default:
  45.                                                 break;

  46.                   }
  47.           }
  48.           if(temp1!=0xf0)
  49.           {
  50.                     switch(temp1)
  51.                   {
  52.                             case 0xe0:
  53.                                                 key_value=0x01;
  54.                                                 break;
  55.                           case 0xd0:
  56.                                                 key_value=0x05;
  57.                                                 break;
  58.                           case 0xb0:
  59.                                                 key_value=0x09;
  60.                                                 break;
  61.                           case 0x70:
  62.                                                 key_value=0x0d;
  63.                                                 break;
  64.                           default:
  65.                                                 break;

  66.                   }
  67.           }
  68.            if(temp2!=0xf0)
  69.           {
  70.                     switch(temp2)
  71.                   {
  72.                             case 0xe0:
  73.                                                 key_value=0x02;
  74.                                                 break;
  75.                           case 0xd0:
  76.                                                 key_value=0x06;
  77.                                                 break;
  78.                           case 0xb0:
  79.                                                 key_value=0x0a;
  80.                                                 break;
  81.                           case 0x70:
  82.                                                 key_value=0x0e;
  83.                                                 break;
  84.                           default:
  85.                                                 break;

  86.                   }
  87.           }
  88.            if(temp3!=0xf0)
  89.           {
  90.                     switch(temp3)
  91.                   {
  92.                             case 0xe0:
  93.                                                 key_value=0x03;
  94.                                                 break;
  95.                           case 0xd0:
  96.                                                 key_value=0x07;
  97. ……………………

  98. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
矩阵键盘状态读取实验.rar (61.1 KB, 下载次数: 29)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:755384 发表于 2020-5-19 10:51 | 只看该作者
打不开啊
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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