51单片机数码管显示整数0-999

#include<reg52.h>
sbit du=P2^6;//数码管段选
sbit we=P2^7;//数码管位选
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数字0-9
void delay(unsigned char a)//自定义延迟函数,字符型a值范围0-255
{unsigned char x,y;
for(x=0;x<a;x++)
for(y=0;y<114;y++);
}
void display(unsigned int a) //显示函数a值范围0-65535
{ P0=0xff;//使所有数码管阴极处于全部关闭状态
we=1;//位选打开
P0=0xfe;//第1位数码管阴极开启
we=0;//位选关闭

P0=0; //暂时关闭所有数码管阳极
du=1; //段选打开
if(a>=100) //判断第1位数码管数字是否为0,为0则不显示
P0=table[a/100];//不为0,正常显示
else
{P0=0;	//为0则不显示
}
du=0; //段选关闭
delay(10);//每显示1位延迟是为了视觉暂留效果最佳

P0=0xff;//使所有数码管阴极处于全部关闭状态
we=1;
P0=0xfd;//第2位数码管阴极开启
we=0;
P0=0;
du=1;
if(a>=10)//判断第2位数码管数字是否为0,为0则不显示
P0=table[a%100/10];
else
{P0=0;//为0则不显示
}
du=0;
delay(10);

P0=0xff;//使所有数码管阴极处于全部关闭状态
we=1;
P0=0xfb;
we=0;
P0=0;
du=1;
P0=table[a%10];//数码管最后1位无需判断是否为0,都必须显示
du=0;
delay(10);

}

void main()
{ while(1)
{display(119);//输入要显示的999以内的任意正整数
}

}

  • 10
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值