欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1582|回復: 1
收起左側

如何實現矩陣鍵盤按下兩個按鍵,數碼管顯示相應的數字 求幫助

[復制鏈接]
ID:630625 發表于 2019-10-26 20:05 | 顯示全部樓層 |閱讀模式
類似與計算器的輸入  按下1對應的按鍵時 數碼換顯示1 ,再按下2對應的按鍵時,數碼管顯示出12
回復

使用道具 舉報

ID:630625 發表于 2019-10-26 20:11 | 顯示全部樓層
#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit we = P2^7; sbit duan = P2^6; uint i; uint num;  unsigned char leddata[]={                    0x3F,  //"0"                 0x06,  //"1"                 0x5B,  //"2"                 0x4F,  //"3"                 0x66,  //"4"                 0x6D,  //"5"                 0x7D,  //"6"                 0x07,  //"7"                 0x7F,  //"8"                 0x6F,  //"9"                 0x77,  //"A"                 0x7C,  //"B"                 0x39,  //"C"                 0x5E,  //"D"                 0x79,  //"E"                 0x71,  //"F"                 0x76,  //"H"                 0x38,  //"L"                 0x37,  //"n"                 0x3E,  //"u"                 0x73,  //"P"                 0x5C,  //"o"                 0x40,  //"-"                 0x00,  //熄滅                 0x00  //自定義                            };//十六進制代碼  void delay(uint z)//延時函數 {         uint x,y;         for(x = z;x > 0;x--)                 for(y = 114;y > 0;y--); }  uchar KeyScan()//帶返回值的按鍵掃描子函數 {         uchar cord_h,cord_l;//聲明列線和行線的值的儲存變量         P3 = 0xf0;//1111 0000         if((P3 & 0xf0) != 0xf0)//判斷是否有按鍵被按下                 {                         delay(5);//軟件消抖                         if((P3 & 0xf0) != 0xf0)//判斷是否有按鍵被按下                         {                                 i++;//按鍵次數加一                                 cord_l = P3 & 0xf0;//把列線值保存起來                                 P3 = cord_l | 0x0f;//將低四位全部賦1,同時高四位保持不變                                 cord_h = P3 & 0x0f;//把行線值保存起來                                 while((P3 & 0x0f) != 0x0f)//松手檢測  不等于 即為1 等于 為0 跳出while循環                                 return(cord_l + cord_h);//返回鍵值碼                         }                                 } } void KeyPro() {         switch(KeyScan())         {                 case 0xee:num = leddata[1]; break;                 case 0xde:num = leddata[2]; break;                 case 0xbe:num = leddata[3]; break;//第一行鍵值碼                  case 0xed:num = leddata[4]; break;                 case 0xdd:num = leddata[5]; break;                 case 0xbd:num = leddata[6]; break;//第二行鍵值碼                  case 0xeb:num = leddata[7]; break;                 case 0xdb:num = leddata[8]; break;                 case 0xbb:num = leddata[9]; break;//第三行鍵值碼                  case 0xd7:num = leddata[0]; break;//第四行鍵值碼         } }
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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