找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2758|回复: 8
收起左侧

51单片机C语言怎么去掉十字前面的0

[复制链接]
ID:33455 发表于 2020-11-17 13:41 | 显示全部楼层 |阅读模式
例如:四位显示0008,怎么只显示8,前面的0不显示,只显示有效数字,就是8,88,888,8888,这些有效数字 谢谢
回复

使用道具 举报

ID:740383 发表于 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;
}
回复

使用道具 举报

ID:278840 发表于 2020-11-17 15:35 | 显示全部楼层
楼上正解!
回复

使用道具 举报

ID:33455 发表于 2020-11-17 16:20 | 显示全部楼层
danq 发表于 2020-11-17 15:21
如果是数码管显示,可以参考如下:
uint num= 0008;
uchar a,b,c,d;

感谢,我试下万分感谢
回复

使用道具 举报

ID:548551 发表于 2020-11-18 20:15 | 显示全部楼层
不是很明白你的意思, 所以试着猜测一下.  你的数码管是四位的数码管. 你只想让显示最后一位是么?  
回复

使用道具 举报

ID:836364 发表于 2020-11-18 21:00 | 显示全部楼层
danq 发表于 2020-11-17 15:21
如果是数码管显示,可以参考如下:
uint num= 0008;
uchar a,b,c,d;

有个地方写错了,这个是一个字符类型的变量,如果你的清屏程序没错的话,应该这样写if(a==‘0’)
回复

使用道具 举报

ID:367934 发表于 2020-11-19 09:34 | 显示全部楼层
这好像是规则问题。
你定义的时候不管前面有多少个0,存在内存的时候也只是一个有效数据。
比如定义:
int data=000000008;
实际调用 data=0;
在使用打印的时候:
printf("%d\r\n",data);打印的结果也只是:8
如果没记错的话需要
printf("%04d\r\n",data);结果才是:0008
所以你的这个解决办法就是在数码管初始化的时候默认显示全零就好。
回复

使用道具 举报

ID:33455 发表于 2020-11-19 20:25 | 显示全部楼层
意思是只显示有效数字,前面的
零不现实,变成有效数字才显示
回复

使用道具 举报

ID:782419 发表于 2020-11-20 09:19 | 显示全部楼层
高位0不显示吧!可以在显示每一位的时候进行数值判断,比如第二位只有在大于9的时候才显示,第三位只有在大于99的时候才显示,第四位只有在大于999的时候才显示,你可以考虑一下!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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