找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2596|回复: 5
收起左侧

关于51单片机的按键计数如何弄成百位计数?

[复制链接]
ID:843725 发表于 2021-4-20 19:37 | 显示全部楼层 |阅读模式
各位大佬这个程序我想能弄成百位计数,试了各种方法都不行,谢各位大佬能来指点
单片机源程序
#include<reg52.h>
sbit t1=P3^3;
sbit t2=P3^4;
sbit t3=P3^5;
int a=000;
unsigned charled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//数码管断码显示0-9
void delay(int i)//延迟函数
{
       int j,x;
       for(x=i;x>0;x--)
       for(j=11;j>0;j--);
}
void anjian() //按键程序
{
       if(t1==0)
        {
               delay(5);
               if(t1==0)
                      {
                             while(!t1);
                             a++;
                             if(a>99)
                                    a=1;
       }
   }
       if(t2==0)
        {
               delay(5);
               if(t2==0)
                      {
                             while(!t2);
                             a=a-1;
                             if(a<0)
                                    a=0;
       }
   }
       if(t3==0)
        {
               delay(5);
               if(t3==0)
                      {
                             while(!t3);        
                                    a=0;
   }
}
}
void look(int k)
{
     int l=k/10;
          P2=0xfe;  P0=0x88;   delay(50);P2=0xff;//第一位数码管显示A
          P2=0xfd;        P0=0x88;   delay(50);P2=0xff;//第二位数码管显示A
          P2=0xfb;  P0=led[l]; delay(50); P2=0xff;//第三位显示十位
          P2=0xf7;        P0=led[k%10];  delay(50); P2=0xff;//第四位显示个位
}main()
{
        while(1)   
        {
               anjian();//调用按键函数
               look(a);//调用显示函数,把a放入并显示
   }
}
回复

使用道具 举报

ID:894154 发表于 2021-4-21 14:13 | 显示全部楼层
请教下 何为百位计数?
回复

使用道具 举报

ID:905171 发表于 2021-4-21 16:21 | 显示全部楼层
试了各种办法都不行,说明你多少有些理解,既然有理解怎么会看不出来这么明显的问题,还多次尝试。
回复

使用道具 举报

ID:843725 发表于 2021-4-21 16:41 | 显示全部楼层
真皮沙发 发表于 2021-4-21 16:21
试了各种办法都不行,说明你多少有些理解,既然有理解怎么会看不出来这么明显的问题,还多次尝试。

大佬,我是真的不知道,我加了一些程序但是不知道为什么十位数以后会出现乱码,实在想不到了,发帖才问的,大佬误会了
回复

使用道具 举报

ID:213173 发表于 2021-4-21 19:31 | 显示全部楼层
  1. #include<reg52.h>
  2. sbit t1=P3^3;
  3. sbit t2=P3^4;
  4. sbit t3=P3^5;
  5. int  a;
  6. unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  7. //数码管断码显示0-9
  8. void delay(int i)//延迟函数
  9. {
  10.         int j,x;
  11.         for(x=i;x>0;x--)
  12.                 for(j=11;j>0;j--);
  13. }

  14. void anjian() //按键程序
  15. {
  16.         if(t1==0)
  17.         {
  18.                 delay(5);
  19.                 if(t1==0)
  20.                 {
  21.                         while(!t1);
  22.                         a++;
  23.                         if(a>99)
  24.                                 a=0;
  25.                 }
  26.         }
  27.         if(t2==0)
  28.         {
  29.                 delay(5);
  30.                 if(t2==0)
  31.                 {
  32.                         while(!t2);
  33.                         a--;
  34.                         if(a<0)
  35.                                 a=99;
  36.                 }
  37.         }
  38.         if(t3==0)
  39.         {
  40.                 delay(5);
  41.                 if(t3==0)
  42.                 {
  43.                         while(!t3);        
  44.                         a=0;
  45.                 }
  46.         }
  47. }
  48. void look(int k)
  49. {
  50. //        int l=k/10;
  51.         P2=0xfe;  P0=led[k/1000%10];delay(50);P2=0xff;//第一位显示千位
  52.         P2=0xfd;  P0=led[k/100%10]; delay(50);P2=0xff;//第二位显示百位
  53.         P2=0xfb;  P0=led[k/10%10];  delay(50);P2=0xff;//第三位显示十位
  54.         P2=0xf7;  P0=led[k%10];     delay(50);P2=0xff;//第四位显示个位
  55. }
  56. void main()
  57. {
  58.         while(1)   
  59.         {
  60.                 anjian();//调用按键函数
  61.                 look(a*100);//调用显示函数,把a放入并显示
  62.         }
  63. }
复制代码

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:843725 发表于 2021-4-23 18:41 | 显示全部楼层

谢谢大佬,我看了这个有点思路了,感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表