51单片机 lcd12864显示 用sprintf显示数字,只能显示小于32767的数,大于这
51单片机lcd12864显示用sprintf显示数字,只能显示小于32767的数,大于这个数的数还是显示32767,而且前面有负号...
51单片机 lcd12864显示 用sprintf显示数字,只能显示小于32767的数,大于这个数的数还是显示32767,而且前面有负号
展开
展开全部
数据溢出了,也就是说lcd12864显示数的范围只有 32767~ -32768
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你给sprintf函数传递的参数是int型啊。int型的有效范围是-32768~+32767。
追问
我把它改成了unsigned int
void show_number(uchar add, unsigned int n)
{
unsigned char s[6];
sprintf(s,"%05d",n); /
show_string(add,s);
}
追答
我说的你听不懂么?自己想想把一个unsigned int型当做signed int型传递是个什么结果。
自己去查查sprintf()函数的原型。
另外,你知道这两种类型在存储器中的格式吗?
考考你,例如0x8765,作为unsigned int型代表多少,作为signed int型代表多少?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你不用这个函数,自己做一个显示函数就可以了,或者你可以修改这个函数的源程序。
追问
我用n/1000方法是可以的
追答
当然这也是一种方法,也就是送两次显示就可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询