找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5634|回復(fù): 8
收起左側(cè)

單片機(jī)矩陣鍵盤(pán)無(wú)法識(shí)別 不知道是連接問(wèn)題還是程序代碼問(wèn)題

[復(fù)制鏈接]
ID:236686 發(fā)表于 2018-4-2 13:15 | 顯示全部樓層 |閱讀模式
10黑幣
附件里面是我矩陣鍵盤(pán)的連接方法,不知道對(duì)否  還是我代碼有問(wèn)題 仿真里面識(shí)別第一行不出來(lái)  我檢查不出什么問(wèn)題  
下面是我的代碼
  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. }
復(fù)制代碼


Q$]QM2$FV}R~I`6)$VC(AAV.png
AQ$BKUDJ)${TRB{TXS@F79H.png
回復(fù)

使用道具 舉報(bào)

ID:236686 發(fā)表于 2018-4-2 17:24 | 顯示全部樓層
只要不接電源就可以識(shí)別了,求大神告訴是什么原理   會(huì)為什么會(huì)這樣   萬(wàn)分感謝  
回復(fù)

使用道具 舉報(bào)

ID:234549 發(fā)表于 2018-4-2 18:56 | 顯示全部樓層
愛(ài)吃餃子 發(fā)表于 2018-4-2 17:24
只要不接電源就可以識(shí)別了,求大神告訴是什么原理   會(huì)為什么會(huì)這樣   萬(wàn)分感謝

不接電源 是鍵盤(pán)的電源嗎
回復(fù)

使用道具 舉報(bào)

ID:301051 發(fā)表于 2018-4-2 19:18 | 顯示全部樓層
矩陣鍵盤(pán)本來(lái)就不用加電源呀,大哥!
回復(fù)

使用道具 舉報(bào)

ID:234549 發(fā)表于 2018-4-2 21:32 | 顯示全部樓層
愛(ài)吃餃子 發(fā)表于 2018-4-2 17:24
只要不接電源就可以識(shí)別了,求大神告訴是什么原理   會(huì)為什么會(huì)這樣   萬(wàn)分感謝

樓主可以看下 鍵盤(pán)掃描法——反轉(zhuǎn)法 是不接電源,接地的哦。
使用單片機(jī)8個(gè)端口(四行四列)
①前四個(gè)端口輸出高電平(行),后四個(gè)端口(列)等待輸入。若有鍵按下,短接地,改變(列)輸入寄存器的值,哪一個(gè)端口值變?yōu)?,則能知道哪一列被按下
②嵌套 后四個(gè)端口輸出高電平(列),前四個(gè)端口(行)等待輸入。若有鍵按下,短接地,改變(行)輸入寄存器的值,哪一個(gè)端口值變?yōu)?,則能知道哪一行被按下
③行列則能確定哪一鍵被按下

評(píng)分

參與人數(shù) 1黑幣 +3 收起 理由
愛(ài)吃餃子 + 3

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:301369 發(fā)表于 2018-4-3 11:09 | 顯示全部樓層
矩陣鍵盤(pán)的掃描不用外加電源,直接先掃描行地址再掃描列地址,掃描完成返回行列組成的合地址,再換成你所需要的鍵碼即可

評(píng)分

參與人數(shù) 1黑幣 +1 收起 理由
愛(ài)吃餃子 + 1

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:291815 發(fā)表于 2018-4-3 17:11 | 顯示全部樓層
不用接電源吧
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2018-4-3 21:06 | 顯示全部樓層
本帖最后由 zl2168 于 2018-4-3 21:07 編輯

矩陣式鍵盤(pán)
Proteus仿真一下,確認(rèn)有效。
實(shí)例75 4×4矩陣式鍵盤(pán).rar (44.8 KB, 下載次數(shù): 3)
4×4矩陣式鍵盤(pán).jpg
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.。書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。

評(píng)分

參與人數(shù) 1黑幣 +4 收起 理由
愛(ài)吃餃子 + 4

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:302296 發(fā)表于 2018-4-5 10:40 | 顯示全部樓層
矩陣不需要外加電源
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表