找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)獨(dú)立按鍵控制數(shù)碼管疑問

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:833499 發(fā)表于 2020-10-23 10:13 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
如何用獨(dú)立按鍵控制數(shù)碼管數(shù)字增加,按下k1k2數(shù)碼管數(shù)字加一,按下k3k4數(shù)碼管數(shù)字減一,k1k3控制數(shù)碼管左四位,k2k4控制數(shù)碼管右四位
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:716656 發(fā)表于 2020-10-23 15:22 | 只看該作者
if((k1==0)&&(k2==0))  {}是這個(gè)意思么
回復(fù)

使用道具 舉報(bào)

板凳
ID:451718 發(fā)表于 2020-10-23 18:16 | 只看該作者
#define k1  P10
#define k2  P11
#define k3  P12
#define k4  P13
int a,b;
void Deel_Counter()
{
  if(k1==0)
  {
    a++;
    if(a>=10000)a=0;
  }
  else if(k3==0)
  {
    a--;
    if(a<0)a=9999;
  }
  else if(k2==0)
  {
    b++;
    if(b>=10000)b=0;
  }
  else if(k4==0)
  {
     b--;
      if(b<0)b=9999;
  }
}

void Show_CounterA()
{
    //將a顯示出來,選段碼,刷位數(shù)
}
void Show_CounterB()
{
    //將b顯示出來,選段碼,刷位數(shù)
}
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2020-10-24 08:27 | 只看該作者
按下k1/k2數(shù)碼管左四位數(shù)字加/減1,按下k3/k4數(shù)碼管右四位數(shù)字加/減1

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit K1=P3^0;
  5. sbit K2=P3^1;
  6. sbit K3=P3^2;
  7. sbit K4=P3^3;
  8. uchar code table[]={//共陽LED段碼表
  9. 0xc0,0xf9,0xa4,0xb0,0x99,
  10. 0x92,0x82,0xf8,0x80,0x90};
  11. uchar data dis_buf[8];//顯示數(shù)據(jù)緩存
  12. uint a,b;//計(jì)數(shù)變量

  13. void delay(uint n)
  14. {
  15.         while(n--);      
  16. }
  17. //按鍵掃描函數(shù)
  18. void keyscan()
  19. {
  20.         static uchar count=0;
  21.         static bit sign=0;
  22.         if(!K1||!K2||!K3||!K4)
  23.         {
  24.                 if(++count>=10&&sign==0)//消抖/自鎖
  25.                 {
  26.                         sign=1;
  27.                         if(!K1){if(a<9999)a++;}
  28.                         else if(!K2){if(a>0)a--;}
  29.                         else if(!K3){if(b<9999)b++;}
  30.                         else if(!K4){if(b>0)b--;}
  31.                 }
  32.         }
  33.         else //松手
  34.         {
  35.                 count=0;
  36.                 sign=0;
  37.         }
  38. }
  39. //共陽數(shù)碼管顯示函數(shù)
  40. void display()
  41. {
  42.         static uchar i=0;
  43.         //數(shù)據(jù)分解
  44.         dis_buf[0]=table[a/1000%10];
  45.         dis_buf[1]=table[a/100%10];
  46.         dis_buf[2]=table[a/10%10];
  47.         dis_buf[3]=table[a%10];
  48.         dis_buf[4]=table[b/1000%10];
  49.         dis_buf[5]=table[b/100%10];
  50.         dis_buf[6]=table[b/10%10];
  51.         dis_buf[7]=table[b%10];

  52.         P2&=0x00;//消隱
  53.         P0=dis_buf[i];//送段碼
  54.         P2|=0x01<<i;//送位碼
  55.         i++;i%=8;//掃描計(jì)數(shù)
  56. }
  57. void main()//主函數(shù)
  58. {
  59.         while(1)
  60.         {
  61.                 keyscan();//按鍵掃描
  62.                 display();//數(shù)碼管顯示
  63.                 delay(35);//少許延時(shí),控制主循環(huán)周期約1ms
  64.         }
  65. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

5#
ID:414556 發(fā)表于 2020-10-24 20:57 | 只看該作者
既然有K1 K2 K3 K4,為什么還要組合按呢,一個(gè)管一個(gè)功能不香嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:873170 發(fā)表于 2021-1-4 15:10 | 只看該作者
wulin 發(fā)表于 2020-10-24 08:27
按下k1/k2數(shù)碼管左四位數(shù)字加/減1,按下k3/k4數(shù)碼管右四位數(shù)字加/減1

酷~~ 非常感謝老哥給萌新指點(diǎn)~~
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表