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

QQ登錄

只需一步,快速開始

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

請(qǐng)教一下4*4矩陣鍵盤的問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:35999 發(fā)表于 2012-4-7 10:58 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式

#include<reg52.h>
#define uint unsigned int 
#define uchar unsigned char
uchar temp,key_num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
uchar code scan[4] = {0xfe, 0xfd, 0xfb, 0xf7};
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
uchar keyscan();
void mian()
{
 P2=0x0f;
 while(1)
 {
  keyscan();
  delay(10);
  P0=table[key_num];
 
 }
}
uchar keyscan()
{
 uint i;
 for(i=0;i<4;i++)
  {
  P1=scan;//按鍵檢測(cè)
  temp=P1;
  temp=temp&0xf0;
  while(temp!=0xf0)
    {
      delay(10);
      P1=scan;
      temp=P1;
      temp=temp&0xf0;
      while(temp!=0xf0)
       {
         temp=P1;
        switch(temp&0xf0)
         {
          case 0xe0: key_num=i*4;
          break;
          case 0xd0: key_num=i*4+1;
          break;
          case 0xb0: key_num=i*4+2;
          break;
          case 0x70: key_num=i*4+3;
          break;
         }
   while(temp!=0xf0)//松手檢測(cè)
     {
      temp=P1;
      temp=temp&0xf0;
     }
       }
    } 
  }
  return key_num;
    
}

這是我自己寫的一個(gè)鍵盤掃描的程序,p1口接矩陣鍵盤,p0口接數(shù)碼管,p2的第四位控制數(shù)碼管的位選端,把程序?qū)戇M(jìn)去的時(shí)候,數(shù)碼管一直都顯示不出來(lái),不知道哪里出了問(wèn)題,請(qǐng)求高手解答

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

使用道具 舉報(bào)

板凳
ID:35999 發(fā)表于 2012-4-7 18:32 | 只看該作者
不是,我主要是要鍵盤掃描,數(shù)碼管四個(gè)顯示是一樣的
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:37273 發(fā)表于 2012-4-7 16:45 | 只看該作者
p2口低四位一直高電平,數(shù)碼管怎么顯示啊。 4位數(shù)碼管是要掃描顯示的,或者只用其中一路。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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