标题: 51单片机C语言怎么去掉十字前面的0 [打印本页]

作者: yanfeng082    时间: 2020-11-17 13:41
标题: 51单片机C语言怎么去掉十字前面的0
例如:四位显示0008,怎么只显示8,前面的0不显示,只显示有效数字,就是8,88,888,8888,这些有效数字 谢谢

作者: danq    时间: 2020-11-17 15:21
如果是数码管显示,可以参考如下:
uint num= 0008;
uchar a,b,c,d;

a=num/1000;
b=num%1000/100;
c=num%1000%100/10;
d=num%1000%100%10;
if(a==0)
{
//当前数码管清屏0x00;
}
if(b==0&&a==0)
{
//当前数码管清屏0x00;
}
if(c==0&&b==0&&a==0)
{
//当前数码管清屏0x00;
}
if(d==0&&c==0&&b==0&&a==0)
{
//当前数码管清屏0x00;
}
作者: 器车人    时间: 2020-11-17 15:35
楼上正解!
作者: yanfeng082    时间: 2020-11-17 16:20
danq 发表于 2020-11-17 15:21
如果是数码管显示,可以参考如下:
uint num= 0008;
uchar a,b,c,d;

感谢,我试下万分感谢
作者: xqleft    时间: 2020-11-18 20:15
不是很明白你的意思, 所以试着猜测一下.  你的数码管是四位的数码管. 你只想让显示最后一位是么?  
作者: 123456czst    时间: 2020-11-18 21:00
danq 发表于 2020-11-17 15:21
如果是数码管显示,可以参考如下:
uint num= 0008;
uchar a,b,c,d;

有个地方写错了,这个是一个字符类型的变量,如果你的清屏程序没错的话,应该这样写if(a==‘0’)
作者: 适得府君书    时间: 2020-11-19 09:34
这好像是规则问题。
你定义的时候不管前面有多少个0,存在内存的时候也只是一个有效数据。
比如定义:
int data=000000008;
实际调用 data=0;
在使用打印的时候:
printf("%d\r\n",data);打印的结果也只是:8
如果没记错的话需要
printf("%04d\r\n",data);结果才是:0008
所以你的这个解决办法就是在数码管初始化的时候默认显示全零就好。
作者: yanfeng082    时间: 2020-11-19 20:25
意思是只显示有效数字,前面的
零不现实,变成有效数字才显示
作者: wufeng391    时间: 2020-11-20 09:19
高位0不显示吧!可以在显示每一位的时候进行数值判断,比如第二位只有在大于9的时候才显示,第三位只有在大于99的时候才显示,第四位只有在大于999的时候才显示,你可以考虑一下!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1