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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2001|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)矩陣鍵盤(pán)與數(shù)碼管 按下數(shù)字沒(méi)有變化 求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:665068 發(fā)表于 2019-12-16 13:19 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
按下16個(gè)矩陣鍵盤(pán)依次在數(shù)碼管上顯示1 16的平方。我按下鍵盤(pán)數(shù)字沒(méi)有變化 求幫助

#include<reg52.h>

#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P3^4;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
uchar code tablewe[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};
uint num,num1;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uint keyscan();
void init();
void display(uchar,uchar,uchar);
void main()
{
init();
while(1)
  {
   num1=keyscan();
   display(num1/100,num1%100/10,num1%10);
  }
}
void init()
{
dula=1;
P0=0x00;
dula=0;
wela=1;
P0=0xc0;
wela=0;
}
void display(uchar a,uchar b,uchar c)
{
dula=1;
P0=table[a];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);

dula=1;
P0=table;
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);

dula=1;
P0=table[c];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
}
uint keyscan()
{
   P3=0xfe;
   P3=P3&0xf0;
   while(P3!=0xf0)
    {
     delay(5);
     P3=P3&0xf0;
     while(P3!=0xf0)
     {
     switch(P3)
      {
       case 0xee:num=1;
        break;
       case 0xde:num=4;
        break;
       case 0xbe:num=9;
        break;
       case 0x7e:num=16;
        break;
      }
     while(P3!=0xf0)
      {
       P3=P3&0xf0;
      }
     }
    }
   P3=0xfd;
   P3=P3&0xf0;
   while(P3!=0xf0)
    {
     delay(5);
     P3=P3&0xf0;
     while(P3!=0xf0)
     {
     switch(P3)
      {
       case 0xed:num=25;
        break;
       case 0xdd:num=36;
        break;
       case 0xbd:num=49;
        break;
       case 0x7d:num=64;
        break;
      }
     while(P3!=0xf0)
      {
       P3=P3&0xf0;
      }
     }
    }
   
   P3=0xfb;
   P3=P3&0xf0;
   while(P3!=0xf0)
    {
     delay(5);
     P3=P3&0xf0;
     while(P3!=0xf0)
     {
     switch(P3)
      {
       case 0xeb:num=81;
        break;
       case 0xdb:num=100;
        break;
       case 0xbb:num=121;
        break;
       case 0x7b:num=144;
        break;
      }
     while(P3!=0xf0)
      {
       P3=P3&0xf0;
      }
     }
    }
   
   P3=0xf7;
   P3=P3&0xf0;
   while(P3!=0xf0)
    {
     delay(5);
     P3=P3&0xf0;
     while(P3!=0xf0)
     {
     switch(P3)
      {
       case 0xe7:num=169;
        break;
       case 0xd7:num=196;
        break;
       case 0xb7:num=225;
        break;
       case 0x77:num=256;
        break;
      }
     while(P3!=0xf0)
      {
       P3=P3&0xf0;
      }
     }
    }
return num;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:332444 發(fā)表于 2019-12-17 16:09 | 只看該作者
調(diào)整一下數(shù)碼顯示中的延時(shí)量,學(xué)習(xí)蛋騙雞最要緊的是先做好人機(jī)交互部分,然后調(diào)試其他的,先送一個(gè)值如4去調(diào)試顯示數(shù)碼管是否成功顯示數(shù)字。
回復(fù)

使用道具 舉報(bào)

板凳
ID:650297 發(fā)表于 2019-12-17 20:24 | 只看該作者
打開(kāi)程序調(diào)試,一步步執(zhí)行,看哪步錯(cuò)了
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2019-12-17 21:11 | 只看該作者

  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;

  6. uchar code table[]={
  7. 0x3f,0x06,0x5b,0x4f,
  8. 0x66,0x6d,0x7d,0x07,
  9. 0x7f,0x6f,0x77,0x7c,
  10. 0x39,0x5e,0x79,0x71,0};
  11. uchar code tablewe[]={
  12. 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff};
  13. uchar data dis_buf[6];//顯示緩存
  14. uint key;

  15. void delay(uint z)
  16. {
  17.         uint x,y;
  18.         for(x=z;x>0;x--)
  19.                 for(y=110;y>0;y--);
  20. }
  21. void keyscan();
  22. void display();

  23. void main()
  24. {
  25.         while(1)
  26.         {
  27.                 keyscan();
  28.                 dis_buf[0]=table[key/100];//分解數(shù)據(jù)
  29.                 dis_buf[1]=table[key/10%10];
  30.                 dis_buf[2]=table[key%10];
  31.                 display();
  32.                 delay(1);
  33.         }
  34. }

  35. void display()
  36. {
  37.         static uchar i=0;       
  38.         P0=0x00;//消隱
  39.         dula=1;
  40.         dula=0;
  41.         P0=tablewe[i];//送位碼
  42.         wela=1;
  43.         wela=0;
  44.         P0=dis_buf[i];//送段碼
  45.         dula=1;
  46.         dula=0;
  47.         i++;
  48.         i%=3;
  49. }

  50. void keyscan()                                        //按鍵掃描程序
  51. {
  52.         static bit sign=0;                        //按鍵自鎖標(biāo)志
  53.         static uint count=0;                //消抖計(jì)數(shù)變量                       
  54.         uchar num=0;                                //臨時(shí)變量
  55.         P3=0xf0;                                        //賦值P3 1111 0000
  56.         if(P3!=0xf0)                                //檢測(cè)有按鍵按下
  57.         {
  58.                 count++;                                //消抖計(jì)數(shù)
  59.                 if((count>=10)&&(sign==0))
  60.                 {                       
  61.                         sign=1;                                //按鍵自鎖標(biāo)志置1
  62.                         num=P3;                                //保存P3值xxxx 0000,x為0或1
  63.                         num|=0x0f;                        //保存num按位或0x0f值xxxx 1111
  64.                         P3=num;                                //賦值P3 xxxx 1111
  65.                         num=P3;                                //讀取并保存P3值xxxx xxxx
  66.                         switch(num)
  67.                         {
  68.                                 case 0xee: key=  1; break;
  69.                                 case 0xde: key=  4; break;
  70.                                 case 0xbe: key=  9; break;
  71.                                 case 0x7e: key= 16; break;
  72.                                 case 0xed: key= 25; break;
  73.                                 case 0xdd: key= 36; break;
  74.                                 case 0xbd: key= 49; break;
  75.                                 case 0x7d: key= 64; break;
  76.                                 case 0xeb: key= 81; break;
  77.                                 case 0xdb: key=100; break;
  78.                                 case 0xbb: key=121; break;
  79.                                 case 0x7b: key=144; break;
  80.                                 case 0xe7: key=169; break;
  81.                                 case 0xd7: key=196; break;
  82.                                 case 0xb7: key=225; break;
  83.                                 case 0x77: key=256; break;
  84.                         }
  85.                 }
  86.         }
  87.         else                                                //鍵抬起
  88.         {
  89.                 sign=0;                                        //按鍵自鎖標(biāo)志清0
  90.                 count=0;                                //消抖計(jì)數(shù)清0
  91.         }
  92. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品国产99 | 欧美精品一区二区在线观看 | 国产999精品久久久久久绿帽 | 国产9999精品 | 91精品国产高清久久久久久久久 | 91 久久| 日韩一区二区三区四区五区 | 久久99精品久久久水蜜桃 | 青久草视频 | 久久专区 | 国产婷婷色一区二区三区 | 欧美一区二区久久 | 国产精品极品美女在线观看免费 | 亚洲高清一区二区三区 | 免费在线观看av网址 | 久久综合久久久 | 自拍偷拍亚洲一区 | 不卡一二三区 | av网站在线播放 | 久久久久se| 天天想天天干 | 欧美中文在线 | 激情五月婷婷 | 91在线视频精品 | 综合网伊人 | 精品一区二区三区免费毛片 | 午夜影院 | 日韩欧美天堂 | av一区二区三区四区 | 天天干天天爽 | 黄色亚洲网站 | 熟女毛片 | 日韩精品一区二区三区中文在线 | 中国黄色在线视频 | www..99re| 在线男人天堂 | 欧美一区二区 | 久久精品国产99国产 | 成人一级黄色毛片 | 日韩在线一区二区 | 欧美区在线观看 |