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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機16位鍵盤響應 在4位數碼管上相應顯示123456789ABCDEF16位符號

[復制鏈接]
ID:421049 發表于 2019-3-9 13:01 | 顯示全部樓層 |閱讀模式
16位鍵盤,按下那個鍵,在4位數碼管上相應顯示123456789ABCDEF16位符號。

單片機源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code table[]={0x44,0x5F,0x34,0x15,0x0F,0x85,0x84,0x57,0x04,0x05,0x06,0x8C,0xE4,0x1C,0xA4,0xA6};
  5. void delayms(uint xms)
  6. {
  7.   uint i,j;
  8.         for(i=xms;i>0;i--)
  9.           for(j=110;j>0;j--);
  10. }
  11. void display(uchar num)
  12. {
  13.         P3=0X00;
  14.   P1=table[num];
  15. }
  16. void matrixkeyscan()
  17. {
  18.   uchar temp,key;
  19.         P2=0Xfe;
  20.         temp=P2;
  21.         temp=temp&0xf0;
  22.         if(temp != 0xf0)
  23.         {
  24.           delayms(10);
  25.                 temp=P2;
  26.                 temp=temp & 0xf0;
  27.                 if(temp != 0xf0)
  28.                 {
  29.                   temp=P2;
  30.                         switch(temp)
  31.                         {
  32.                           case 0x7e:    key=0;
  33.                                               break;
  34.                                 case 0xbe:    key=1;
  35.                                               break;
  36.                                 case 0xde:    key=2;
  37.                                               break;
  38.                                 case 0xee:    key=3;
  39.                                               break;
  40.                         }
  41.                         while(temp != 0Xf0)
  42.                         {
  43.                           temp=P2;
  44.                                 temp=temp&0xf0;
  45.                         }
  46.                         display(key);
  47.                 }
  48.         }
  49.         P2=0Xfd;
  50.         temp=P2;
  51.         temp=temp&0xf0;
  52.         if(temp != 0xf0)
  53.         {
  54.           delayms(10);
  55.                 temp=P2;
  56.                 temp=temp & 0xf0;
  57.                 if(temp != 0xf0)
  58.                 {
  59.                   temp=P2;
  60.                         switch(temp)
  61.                         {
  62.                           case 0x7d:    key=4;
  63.                                               break;
  64.                                 case 0xbd:    key=5;
  65.                                               break;
  66.                                 case 0xdd:    key=6;
  67.                                               break;
  68.                                 case 0xed:    key=7;
  69.                                               break;
  70.                         }
  71.                         while(temp != 0Xf0)
  72.                         {
  73.                           temp=P2;
  74.                                 temp=temp&0xf0;
  75.                         }
  76.                         display(key);
  77.                 }
  78.         }
  79.                 P2=0Xfb;
  80.         temp=P2;
  81.         temp=temp&0xf0;
  82.         if(temp != 0xf0)
  83.         {
  84.           delayms(10);
  85.                 temp=P2;
  86.                 temp=temp & 0xf0;
  87.                 if(temp != 0xf0)
  88.                 {
  89.                   temp=P2;
  90.                         switch(temp)
  91.                         {
  92.                           case 0x7b:    key=8;
  93.                                               break;
  94.                                 case 0xbb:    key=9;
  95.                                               break;
  96.                                 case 0xdb:    key=10;
  97.                                               break;
  98.                                 case 0xeb:    key=11;
  99.                                               break;
  100.                         }
  101.                         while(temp != 0Xf0)
  102.                         {
  103.                           temp=P2;
  104.                                 temp=temp&0xf0;
  105.                         }
  106.                         display(key);
  107.                 }
  108.         }
  109.         P2=0Xf7;
  110.         temp=P2;
  111.         temp=temp&0xf0;
  112.         if(temp != 0xf0)
  113.         {
  114.           delayms(10);
  115.                 temp=P2;
  116.                 temp=temp & 0xf0;
  117.                 if(temp != 0xf0)
  118.                 {
  119.                   temp=P2;
  120.                         switch(temp)
  121.                         {
  122.                           case 0x77:    key=12;
  123.                                               break;
  124.                                 case 0xb7:    key=13;
  125.                                               break;
  126.                                 case 0xd7:    key=14;
  127.                                               break;
  128.                                 case 0xe7:    key=15;
  129.                                               break;
  130.                         }
  131.                         while(temp != 0Xf0)
  132.                         {
  133.                           temp=P2;
  134.                                 temp=temp&0xf0;
  135.                         }
  136.                         display(key);
  137.                 }
  138.         }       
  139. }
  140. void main()
  141. {
  142.   P3=0x00;
  143.         while(1)
  144.         {
  145.           matrixkeyscan();
  146.         }       
  147. }
復制代碼

所有資料51hei提供下載:
keyscan.zip (21.25 KB, 下載次數: 13)



回復

使用道具 舉報

ID:1 發表于 2019-3-11 00:17 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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