找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3513|回復: 1
收起左側(cè)

用89C51控制的矩陣鍵盤源代碼

[復制鏈接]
ID:216375 發(fā)表于 2017-10-18 22:00 | 顯示全部樓層 |閱讀模式
剛開始接觸89C51時寫的矩陣鍵盤的源代碼,適合新手參考

單片機源程序如下:
  1. #include<reg52.h>

  2. sbit we = P2^7;
  3. sbit du = P2^6;


  4. unsigned char code leddata[]={

  5.                 0x3F,  //"0"
  6.                 0x06,  //"1"
  7.                 0x5B,  //"2"
  8.                 0x4F,  //"3"
  9.                 0x66,  //"4"
  10.                 0x6D,  //"5"
  11.                 0x7D,  //"6"
  12.                 0x07,  //"7"
  13.                 0x7F,  //"8"
  14.                 0x6F,  //"9"
  15.                 0x77,  //"A"
  16.                 0x7C,  //"B"
  17.                 0x39,  //"C"
  18.                 0x5E,  //"D"
  19.                 0x79,  //"E"
  20.                 0x71,  //"F"
  21.                 0x76,  //"H"
  22.                 0x38,  //"L"
  23.                 0x37,  //"n"
  24.                 0x3E,  //"u"
  25.                 0x73,  //"P"
  26.                 0x5C,  //"o"
  27.                 0x40,  //"-"
  28.                 0x00,  //熄滅
  29.                 0x00  //自定義

  30.                          };

  31. void delay(unsigned int c)
  32. {
  33.         unsigned int a,b;
  34.         for(a=c;a>0;a--)
  35.         for(b=114;b>0;b--);
  36. }

  37. unsigned int keyscan()
  38. {
  39.         unsigned int core_l,core_h;
  40.         P3 = 0xf0;
  41.        
  42.         if((P3&0xf0)!=0xf0)
  43.         {        delay(5);
  44.                 if((P3&0xf0)!=0xf0)
  45.                 core_l = P3;
  46.                 P3 = core_l|0x0f;
  47.                 core_h = P3&0x0f;
  48.                 while((P3&0x0f)!=0x0f);
  49.         }
  50.        

  51.         return core_h+core_l;
  52. }

  53. void keypro()
  54. {
  55.         switch( keyscan() )
  56.         {
  57.                  //第一行鍵值碼
  58.                 case 0xee: P0 = leddata[0];                break;
  59.                 case 0xde: P0 = leddata[1];                break;
  60.                 case 0xbe: P0 = leddata[2];                break;
  61.                 case 0x7e: P0 = leddata[3];                break;

  62.                 //第二行鍵值碼
  63.                 case 0xed: P0 = leddata[4];                break;
  64.                 case 0xdd: P0 = leddata[5];                break;
  65.                 case 0xbd: P0 = leddata[6];                break;
  66.                 case 0x7d: P0 = leddata[7];                break;

  67.                 //第三行鍵值碼
  68.                 case 0xeb: P0 = leddata[8];                break;
  69.                 case 0xdb: P0 = leddata[9];                break;
  70.                 case 0xbb: P0 = leddata[10];        break;
  71.                 case 0x7b: P0 = leddata[11];        break;

  72.                 //第四行鍵值碼
  73.                 case 0xe7: P0 = leddata[12];        break;
  74.                 case 0xd7: P0 = leddata[13];        break;
  75.                 case 0xb7: P0 = leddata[14];        break;
  76.                 case 0x77: P0 = leddata[15];        break;
  77.         }

  78. }
  79. void main()
  80. ……………………

  81. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
矩陣鍵盤.zip (10.75 KB, 下載次數(shù): 16)


評分

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

查看全部評分

回復

使用道具 舉報

ID:338666 發(fā)表于 2018-5-28 18:00 | 顯示全部樓層
這個程序 實現(xiàn)一個什么功能啊
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表