标题: 单片机C语言sprintf()函数驱动LCD1602显示屏显示问题 [打印本页]

作者: wdgao    时间: 2023-3-13 14:47
标题: 单片机C语言sprintf()函数驱动LCD1602显示屏显示问题
char   table[16];
int   a=1;
int   b=2;
int   c=3;
int   d=4;
int   e=5;
int   f=6;

void main()
{
        LCD_Init();
        sprintf(table,"%d%d%d%d%d%d",a,b,c,d,e,f);
        LCD_ShowString(1,1,table);
        while(1)
        {
                ;
        }
}
本来应该显示123456,实际只有前四个是对的,只能使用四个变量。请大家看看问题出在什么地方?

屏幕截图.png (6.67 KB, 下载次数: 48)

本来应该显示123456

本来应该显示123456

作者: Hephaestus    时间: 2023-3-14 00:28
单片机那点儿内存根本实现不了完整的sprintf函数,都是删减版本的,能自己写就不要用标准库函数。
作者: zhuls    时间: 2023-3-14 09:33
如同豪华超跑的sprintf,是一般人驾驽不了的,太烧油。功能强大,但小身板的单片机最好别用它。
你看一下把它注释掉,前后编译对比一下花费的空间,就能发现问题了。

作者: Y_G_G    时间: 2023-3-17 20:02
参考代码
char   k[10];                                                         //这里不能加code限定符,否则计算不正确,数组长度随意,不出错就可以
        char a;
        sprintf(k,"%.1f",Data_Send);                        //把浮点数据分割成字符串,并存放在k数组中,"%.1f"的2f表示小数点后再显示1位数,不显示小数就是0f        for(a=0;(k[a]!='\0');a++)
                {
                        Send_Out_COM(k[a]);                                //这个是我自己写的串口发送函数
                }






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