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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2587|回復: 7
收起左側

求助,單片機矩陣按鍵按下任意鍵都顯示的0000

[復制鏈接]
ID:718936 發表于 2020-4-26 15:25 | 顯示全部樓層 |閱讀模式
  1. 仿真按下任意鍵都是0000而不是按鍵輸入的數字。
復制代碼
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit P17=P1^7;
  5. sbit P16=P1^6;
  6. sbit P15=P1^5;
  7. sbit P14=P1^4;
  8. uint count=0,num=0,k;
  9. uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  10. //*****************延時子程序***************************
  11. void delay(uint i)
  12. {
  13.    uint j;
  14.    for(;i>0;i--)
  15.    for(j=0;j<125;j++);
  16. }
  17. //**************矩陣鍵盤掃描子程序***********************
  18. uint keyscan()
  19. {
  20.    uchar temp,keynum;
  21.    P1=0xff;
  22.    P17=0;//**************掃描第一行**********************
  23.    temp=P1;
  24.    temp&=0x0f;
  25.    if(temp!=0x0f)
  26.    {
  27.       delay(10);
  28.           temp=P1;
  29.           temp&=0x0f;
  30.           if(temp!=0x0f)
  31.           {
  32.              temp=P1;
  33.              temp&=0x0f;
  34.                  switch(temp)
  35.                  {
  36.                     case 0x0e:keynum=0;break;
  37.                         case 0x0d:keynum=1;break;
  38.                         case 0x0b:keynum=2;break;
  39.                         case 0x07:keynum=3;break;
  40.                  }
  41.                  while(temp!=0x0f)
  42.                  {
  43.                     temp=P1;
  44.                 temp&=0x0f;
  45.                  }
  46.           }
  47.    }
  48.    P1=0xff;
  49.    P16=0;//**************掃描第二行**********************
  50.    temp=P1;
  51.    temp&=0x0f;
  52.    if(temp!=0x0f)
  53.    {
  54.       delay(10);
  55.           temp=P1;
  56.           temp&=0x0f;
  57.           if(temp!=0x0f)
  58.           {
  59.              temp=P1;
  60.                  temp&=0x0f;
  61.                  switch(temp)
  62.                  {
  63.                     case 0x0e:keynum=4;break;
  64.                         case 0x0d:keynum=5;break;
  65.                         case 0x0b:keynum=6;break;
  66.                         case 0x07:keynum=7;break;
  67.                  }
  68.                  while(temp!=0x0f)
  69.                  {
  70.                     temp=P1;
  71.                 temp&=0x0f;
  72.                  }
  73.           }
  74.    }
  75.    P1=0xff;
  76.    P15=0;//**************掃描第三行**********************
  77.    temp=P1;
  78.    temp&=0x0f;
  79.    if(temp!=0x0f)
  80.    {
  81.       delay(10);
  82.           temp=P1;
  83.           temp&=0x0f;
  84.           if(temp!=0x0f)
  85.           {
  86.              temp=P1;
  87.                  temp&=0x0f;
  88.                  switch(temp)
  89.                  {
  90.                     case 0x0e:keynum=8;break;
  91.                         case 0x0d:keynum=9;break;
  92.                         case 0x0b:keynum=10;break;
  93.                         case 0x07:keynum=11;break;
  94.                  }
  95.                  while(temp!=0x0f)
  96.                  {
  97.                     temp=P1;
  98.                 temp&=0x0f;
  99.                  }
  100.           }
  101.    }
  102.    P1=0xff;
  103.    P14=0;//**************掃描第四行**********************
  104.    temp=P1;
  105.    temp&=0x0f;
  106.    if(temp!=0x0f)
  107.    {
  108.       delay(10);
  109.           temp=P1;
  110.           temp&=0x0f;
  111.           if(temp!=0x0f)
  112.           {
  113.              temp=P1;
  114.                  temp&=0x0f;
  115.                  switch(temp)
  116.                  {
  117.                     case 0x0e:keynum=12;break;
  118.                         case 0x0d:keynum=13;break;
  119.                         case 0x0b:keynum=14;break;
  120.                         case 0x07:keynum=15;break;
  121.                  }
  122.                  while(temp!=0x0f)
  123.                  {
  124.                     temp=P1;
  125.                 temp&=0x0f;
  126.                  }
  127.           }
  128.    }
  129.    return keynum;
  130. }
  131. //********************顯示子程序*************************
  132. void Display(uint num)
  133. {
  134.    uint ge,shi,bai,qian;
  135.    qian=num/1000;
  136.    P0=table[qian];
  137.    P2=0xfe;
  138.    delay(10);
  139.    P2=0xff;
  140.    bai=num%1000/100;
  141.    P0=table[bai];
  142.    P2=0xfd;
  143.    delay(10);
  144.    P2=0xff;
  145.    shi=num%100/10;
  146.    P0=table[shi];
  147.    P2=0xfb;
  148.    delay(10);
  149.    P2=0xff;
  150.    ge=num%10;
  151.    P0=table[ge];
  152.    P2=0xf7;
  153.    delay(10);
  154.    P2=0xff;
  155. }

  156. void Init(void)
  157. {
  158.    EA=1;//**************開總中斷
  159.    EX1=1;//*************開外部中斷0
  160.    IT1=0;//*************設置為電平觸發方式
  161. }
  162. //*********************主程序***************************
  163. void main(void)
  164. {  
  165.   uint i,count1;
  166.   Init();
  167.    while(1)
  168.    {   
  169.       count=keyscan();   //調用掃鍵子程序
  170.       Display(num);
  171.    }
  172. }
  173. //*********************END******************************


  174. //*********************中斷子程序************************
  175. void Init1() interrupt 2
  176. {  
  177.    count=keyscan();
  178.    num=num*10+count;
  179.    if(num>9999)
  180.      num=num%10;
  181. }//**********

復制代碼


51hei瀏覽器截圖20200426152123.png
回復

使用道具 舉報

ID:489443 發表于 2020-4-26 16:18 | 顯示全部樓層
硬件連線有沒有錯誤
回復

使用道具 舉報

ID:332444 發表于 2020-4-26 16:29 | 顯示全部樓層
回復

使用道具 舉報

ID:718936 發表于 2020-4-26 16:48 | 顯示全部樓層
harry1 發表于 2020-4-26 16:18
硬件連線有沒有錯誤

連線沒啥問題
回復

使用道具 舉報

ID:213173 發表于 2020-4-26 17:58 | 顯示全部樓層
//*********************主程序***************************
void main(void)
{  
//        uint i,count1;
        Init();
        while(1)
        {   
                count=keyscan();   //調用掃鍵子程序
//                Display(num);
                Display(count); //顯示鍵值
        }
}
回復

使用道具 舉報

ID:718936 發表于 2020-4-26 19:32 | 顯示全部樓層
wulin 發表于 2020-4-26 17:58
//*********************主程序***************************
void main(void)
{  

改了之后,能顯示出,但只能顯示0--15 無法顯示四位數
回復

使用道具 舉報

ID:70069 發表于 2020-4-26 22:24 | 顯示全部樓層
void main(void)
{  
  uint i=0,count1=0;
  Init();
   while(1)
   {   
      count1=keyscan();   //調用掃鍵子程序

      Display(i);       
        if(count1!=0)
        {i=i*10+count1;}
      if(i>9999)
        i=i%10;       
   }
}
回復

使用道具 舉報

ID:739736 發表于 2020-4-28 00:10 | 顯示全部樓層
圖中連線沒有是問題的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久久久久久久久久 | 天天综合永久入口 | 久久在线| 欧美日韩a | 国产精品亚洲第一区在线暖暖韩国 | 久久狠狠| 黄a在线观看| 亚洲一区二区视频在线观看 | 中文字幕一区二区三区在线观看 | 天天看逼 | 91视频在线观看 | 一区二区三区av夏目彩春 | 鲁大师一区影视 | 欧美国产免费 | 91精品国产91久久久久久丝袜 | 黄网站在线观看 | 国产精品日韩欧美一区二区三区 | 亚洲国产aⅴ精品 | h视频网站在线观看 | 夫妻午夜影院 | 亚洲精品乱码久久久久久按摩 | 一级黄色片一级黄色片 | 亚洲高清在线观看 | 日韩欧美国产一区二区三区 | 国产视频精品视频 | 久久精品色欧美aⅴ一区二区 | 真人一级毛片 | 国产精品毛片一区二区三区 | 北条麻妃99精品青青久久主播 | 91精品国产欧美一区二区成人 | 久久久久久网站 | 一区二区高清不卡 | 国产乱码精品一区二区三区忘忧草 | 欧美性生活一区二区三区 | 国产日韩在线观看一区 | 亚洲视频第一页 | 免费a国产| 特级做a爰片毛片免费看108 | 午夜视频一区二区 | 最新国产福利在线 | 国产精品视频网 |