找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机矩阵键盘无法识别 不知道是连接问题还是程序代码问题

[复制链接]
跳转到指定楼层
楼主
10黑币
附件里面是我矩阵键盘的连接方法,不知道对否  还是我代码有问题 仿真里面识别第一行不出来  我检查不出什么问题  
下面是我的代码
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code duan[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e };
  5. sbit wei=P2^4;
  6. uchar temp,k;
  7. void delay(uint i)
  8. {
  9.   uint a,b;
  10. for(a=0;a<=i;a++)
  11. {
  12.   for(b=0;b<110;b++);
  13.   }
  14. }
  15. uchar key()
  16. {
  17.   
  18. P3=0xef;
  19. temp=P3;
  20. temp=temp&0x0f;
  21. while(temp!=0x0f)
  22.   {
  23.        delay(4);
  24.     temp=P3;
  25.     temp=temp&0x0f;
  26.     while(temp!=0x0f)
  27.     {
  28.           temp=P3;
  29.       switch(temp)
  30.      {
  31.       case 0xee:k=1;break;
  32.       case 0xed:k=2;break;
  33.       case 0xeb:k=3;break;
  34.       case 0xe7:k=4;break;
  35.          }
  36.       while(temp!=0x0f)
  37.           {
  38.                temp=P3;
  39.                temp=temp&0x0f;
  40.            }
  41.    
  42.    
  43.      }

  44.   }
  45.   return k;
  46. }
  47. void display(uchar aa)
  48. {
  49. uchar b;
  50. b=aa;
  51. P2=0x00;
  52. P0=duan[b];
  53. P2=0X0f;
  54. }
  55. void main()
  56. {
  57. while(1)
  58. {
  59.   display(key());
  60.   
  61. }
  62. }
复制代码


Q$]QM2$FV}R~I`6)$VC(AAV.png (55.76 KB, 下载次数: 72)

Q$]QM2$FV}R~I`6)$VC(AAV.png

AQ$BKUDJ)${TRB{TXS@F79H.png (23.37 KB, 下载次数: 55)

AQ$BKUDJ)${TRB{TXS@F79H.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:236686 发表于 2018-4-2 17:24 | 只看该作者
只要不接电源就可以识别了,求大神告诉是什么原理   会为什么会这样   万分感谢  
回复

使用道具 举报

板凳
ID:234549 发表于 2018-4-2 18:56 | 只看该作者
爱吃饺子 发表于 2018-4-2 17:24
只要不接电源就可以识别了,求大神告诉是什么原理   会为什么会这样   万分感谢

不接电源 是键盘的电源吗
回复

使用道具 举报

地板
ID:301051 发表于 2018-4-2 19:18 | 只看该作者
矩阵键盘本来就不用加电源呀,大哥!
回复

使用道具 举报

5#
ID:234549 发表于 2018-4-2 21:32 | 只看该作者
爱吃饺子 发表于 2018-4-2 17:24
只要不接电源就可以识别了,求大神告诉是什么原理   会为什么会这样   万分感谢

楼主可以看下 键盘扫描法——反转法 是不接电源,接地的哦。
使用单片机8个端口(四行四列)
①前四个端口输出高电平(行),后四个端口(列)等待输入。若有键按下,短接地,改变(列)输入寄存器的值,哪一个端口值变为0,则能知道哪一列被按下
②嵌套 后四个端口输出高电平(列),前四个端口(行)等待输入。若有键按下,短接地,改变(行)输入寄存器的值,哪一个端口值变为0,则能知道哪一行被按下
③行列则能确定哪一键被按下

评分

参与人数 1黑币 +3 收起 理由
爱吃饺子 + 3

查看全部评分

回复

使用道具 举报

6#
ID:301369 发表于 2018-4-3 11:09 | 只看该作者
矩阵键盘的扫描不用外加电源,直接先扫描行地址再扫描列地址,扫描完成返回行列组成的合地址,再换成你所需要的键码即可

评分

参与人数 1黑币 +1 收起 理由
爱吃饺子 + 1

查看全部评分

回复

使用道具 举报

7#
ID:291815 发表于 2018-4-3 17:11 | 只看该作者
不用接电源吧
回复

使用道具 举报

8#
ID:111634 发表于 2018-4-3 21:06 | 只看该作者
本帖最后由 zl2168 于 2018-4-3 21:07 编辑

矩阵式键盘
Proteus仿真一下,确认有效。
实例75 4×4矩阵式键盘.rar (44.8 KB, 下载次数: 3)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1.书中电路和程序设计有详细说明,程序语句条条有注解。

评分

参与人数 1黑币 +4 收起 理由
爱吃饺子 + 4

查看全部评分

回复

使用道具 举报

9#
ID:302296 发表于 2018-4-5 10:40 | 只看该作者
矩阵不需要外加电源
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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