久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2503|回復: 9
收起左側

單片機矩陣鍵盤按一個鍵數碼管顯示一個數,但第四列的鍵盤沒法檢測。不知道什么原因

[復制鏈接]
ID:595093 發表于 2019-8-6 20:56 | 顯示全部樓層 |閱讀模式
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code dula[]={
  5. 0xc0,0xf9,0xa4,0xb0,
  6. 0x99,0x92,0x82,0xf8,
  7. 0x80,0x90,0x88,0x83,
  8. 0xc6,0xa1,0x86,0x8e,0xff};
  9. uchar wei,duan,num,temp;

  10. void delay(uint z)
  11. {
  12.         uint x,y;
  13.         for(x=z;x>0;x--)
  14.                 for(y=110;y>0;y--);
  15. }

  16. void main()
  17. {
  18.         num=16;                                                          //初始數碼管不亮
  19.         wei=0x0f;
  20.         P2=wei;
  21.         duan=dula[num];;
  22.         P3=duan;
  23.         while(1)                                                  //進入判別鍵盤
  24.                 {
  25.                         P0=0xfe;                                   //一行賦值
  26.                         temp=P0;
  27.                         temp=temp&0xf0;
  28.                         while(temp!=0xf0)                                //一行一次檢測           未按或松開則退出
  29.                         {
  30.                                  delay(5);
  31.                                 temp=P0;
  32.                                 temp=temp&0xf0;
  33.                                 while(temp!=0xf0)                                //一行二次檢測                  未按或松開則退出
  34.                                         {
  35.                                                   temp=P0;
  36.                                                  switch(temp)
  37.                                                          {
  38.                                                                  case 0xee:num=0;                  //列檢測,等于哪一列則顯示對應數
  39.                                                                         break;
  40.                                                                 case 0xde:num=1;
  41.                                                                         break;
  42.                                                                 case 0xbe:num=2;
  43.                                                                         break;
  44.                                                                 case 0x7e:num=3;
  45.                                                                         break;         
  46.                                                        }
  47. while(temp!=0xf0)                                  //一行松開檢測   按著則循環,松開則退出
  48.                                                          {
  49.                                                                   temp=P0;
  50.                                                                 temp=temp&0xf0;        
  51.                                                          }         
  52.                                         }
  53.                           }

  54.                         P0=0xfd;
  55.                         temp=P0;
  56.                         temp=temp&0xf0;
  57.                         while(temp!=0xf0)
  58.                         {
  59.                                  delay(5);
  60.                                 temp=P0;
  61.                                 temp=temp&0xf0;
  62.                                 while(temp!=0xf0)
  63.                                         {
  64.                                                   temp=P0;
  65.                                                  switch(temp)
  66.                                                          {
  67.                                                                  case 0xed:num=4;
  68.                                                                         break;
  69.                                                                 case 0xdd:num=5;
  70.                                                                         break;
  71.                                                                 case 0xbd:num=6;
  72.                                                                         break;
  73.                                                                 case 0x7d:num=7;
  74.                                                                         break;         
  75.                                                        }
  76.                                                  while(temp!=0xf0)
  77.                                                          {
  78.                                                                   temp=P0;
  79.                                                                 temp=temp&0xf0;        
  80.                                                          }
  81.                                         }
  82.                         }

  83.                         P0=0xfb;
  84.                         temp=P0;
  85.                         temp=temp&0xf0;
  86.                         while(temp!=0xf0)
  87.                         {
  88.                                  delay(5);
  89.                                 temp=P0;
  90.                                 temp=temp&0xf0;
  91.                                 while(temp!=0xf0)
  92.                                         {
  93.                                                   temp=P0;
  94.                                                  switch(temp)
  95.                                                          {
  96.                                                                  case 0xeb:num=8;
  97.                                                                         break;
  98.                                                                 case 0xdb:num=9;
  99.                                                                         break;
  100.                                                                 case 0xbb:num=10;
  101.                                                                         break;
  102.                                                                 case 0x7b:num=11;
  103.                                                                         break;         
  104.                                                        }
  105.                                                  while(temp!=0xf0)
  106.                                                          {
  107.                                                                   temp=P0;
  108.                                                                 temp=temp&0xf0;        
  109.                                                          }
  110.                                         }
  111.                         }

  112.                         P0=0xf7;
  113.                         temp=P0;
  114.                         temp=temp&0xf0;
  115.                         while(temp!=0xf0)
  116.                         {
  117.                                  delay(5);
  118.                                 temp=P0;
  119.                                 temp=temp&0xf0;
  120.                                 while(temp!=0xf0)
  121.                                         {
  122.                                                   temp=P0;
  123.                                                  switch(temp)
  124.                                                          {
  125.                                                                  case 0xe7:num=12;
  126.                                                                         break;
  127.                                                                 case 0xd7:num=13;
  128.                                                                         break;
  129.                                                                 case 0xb7:num=14;
  130.                                                                         break;
  131.                                                                 case 0x77:num=15;
  132.                                                                         break;         
  133.                                                        }
  134.                                                  while(temp!=0xf0)
  135.                                                          {
  136.                                                                   temp=P0;
  137.                                                                 temp=temp&0xf0;        
  138.                                                          }
  139.                                         }
  140.                         }
  141.                     
  142.                         duan=dula[num];                  //最終顯示數
  143.                         P3=duan;
  144.                    }
  145. }
復制代碼


回復

使用道具 舉報

ID:595093 發表于 2019-8-6 20:58 | 顯示全部樓層
無差別檢測某一行時,第四列是可以的。但單獨檢測第四列的按鍵就沒法。希望大神們指導指導
回復

使用道具 舉報

ID:213173 發表于 2019-8-7 06:53 | 顯示全部樓層
樓主寫得太啰嗦,查錯也困難,按你的原意給你改了。
矩陣鍵盤數碼管顯示+仿真.zip (103.36 KB, 下載次數: 22)

無標題.jpg

回復

使用道具 舉報

ID:596443 發表于 2019-8-7 08:15 | 顯示全部樓層
查看下第四排的電路是否有問題,或者第四排所接的單片機串口是否有別的應用導致沖突。
回復

使用道具 舉報

ID:123289 發表于 2019-8-7 08:22 | 顯示全部樓層
自己走單步調試,并用萬用表配合量測。
回復

使用道具 舉報

ID:595093 發表于 2019-8-7 08:36 | 顯示全部樓層
無差別檢測某一行是可以的,但單獨檢測第四列就不行
回復

使用道具 舉報

ID:595093 發表于 2019-8-7 15:22 | 顯示全部樓層
無趣的賬號 發表于 2019-8-7 08:15
查看下第四排的電路是否有問題,或者第四排所接的單片機串口是否有別的應用導致沖突。

無差別檢測某一行時第四列可以的,但單獨檢測第四列就不行
回復

使用道具 舉報

ID:595093 發表于 2019-8-7 15:29 | 顯示全部樓層
wulin 發表于 2019-8-7 06:53
樓主寫得太啰嗦,查錯也困難,按你的原意給你改了。

我試試
回復

使用道具 舉報

ID:595093 發表于 2019-8-7 15:38 | 顯示全部樓層
無趣的賬號 發表于 2019-8-7 08:15
查看下第四排的電路是否有問題,或者第四排所接的單片機串口是否有別的應用導致沖突。

原本矩陣鍵盤接的P0口,剛換成P1口,可以了
回復

使用道具 舉報

ID:596998 發表于 2019-8-7 16:15 | 顯示全部樓層
進行每步調試,找到錯處 。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色在线免费看 | 女同久久另类99精品国产 | 在线观看日韩精品视频 | 久久久久久久久久性 | 日韩高清国产一区在线 | 久久精品二区 | 99国产精品久久久 | 成人免费观看男女羞羞视频 | 国产一区二区精品在线 | 嫩草影院网址 | 欧美成人综合 | 亚洲成人播放器 | 美女操网站 | 成人久久久| 日本黄色免费片 | 精品视频免费 | 国产高清精品一区二区三区 | 自拍视频国产 | 一区二区在线不卡 | 91精品国产91久久综合桃花 | 日韩精品999 | 日韩一区二区三区视频 | 一区二视频 | 天天人人精品 | 精品日韩| 最近免费日本视频在线 | 亚洲成人激情在线观看 | 久久一区| 爱草视频 | 国产四虎| 一区二区手机在线 | 国产精品不卡视频 | 中文字幕韩在线第一页 | 一级黄色毛片a | 欧美一级欧美一级在线播放 | 在线成人av| 日韩欧美三级在线 | 四虎在线观看 | 99亚洲 | 久久国产精品一区 | 欧美午夜精品久久久久免费视 |