sprintf()函数在LCD应用中遇到问题

2019-03-24 09:03发布

本帖最后由 铛铛铛挡 于 2016-8-17 17:19 编辑

先贴出我的sprintf()函数在12864液晶显示程序中的应用
void display()                                                   //液晶显示函数
{
               static unsigned char str[20];            //创建长度为20的字符形数组来存放数据
                __no_operation();                          //1.在此处设置断点
                float a=1.23;                                //创建一个浮点数,用长度20的数组存放应该足够了
                __no_operation();                          //2.在此处设置断点
                 sprintf(str,"%f",a);                        //将获取的数值转换为字符型数组
                 __no_operation();                         //3.在此处设置断点
                write_hanzi((uchar *)str);               //写入函数,将字符写入12864

}
问题来了:分别在那3个断电观察参数的值,很奇怪,
a不是1.23
str的值也不是0(我用了static,所以默认值应该是0);
经过sprintf()之后,a的值反而变成了332.0
excuse me????
程序运行到最后,液晶屏没有显示东西。
贴图:
1.png a不是1.23
2.png str的值也不是0;
3.png 经过sprintf()之后,a的值反而变成了332.0

还有一个情况:
我只是将上面那个程序改了float-int,f-d,1.23-123
液晶上居然能显示出123,然后表达式却观察不到变化!
void display()                                                   //液晶显示函数
{
               static unsigned char str[20];            //创建长度为20的字符形数组来存放数据
                __no_operation();                          //1.在此处设置断点
                int a=123;                                     //创建一个浮点数,用长度20的数组存放应该足够了
                __no_operation();                          //2.在此处设置断点
                 sprintf(str,"%d",a);                        //将获取的数值转换为字符型数组
                 __no_operation();                         //3.在此处设置断点
                write_hanzi((uchar *)str);               //写入函数,将字符写入12864

}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
迈尔风随
1楼-- · 2019-03-25 12:35
这个sprintf函数能用吗?先确定你这个函数输出正确了
铛铛铛挡
2楼-- · 2019-03-25 13:11
迈尔风随 发表于 2016-8-17 20:56
这个sprintf函数能用吗?先确定你这个函数输出正确了

#include<stdio.h>,sprintf()是这个头文件吧?
因为我试过如果用int型,是可以成功的,但是float就不行,很奇怪,通过断点调试居然不能看到str的值,但是却在液晶上显示出来了。
铛铛铛挡
3楼-- · 2019-03-25 13:40
 精彩回答 2  元偷偷看……
铛铛铛挡
4楼-- · 2019-03-25 14:31
火火山 发表于 2016-8-17 19:22
你好,我想请问一下,MSP430的库有sprintf的吗?你的sprintf函数是库自带的还是自己写的?sprintf函数打 ...

我也还没成功呢。用sprintf()可以打印int,但是float就不行了,不知道是不是碰巧的?。
你试试
#include<stdio.h>
再用sprintf()看能不能用?
我是把数字(int/float)用sprintf转换成char,然后用液晶显示这个char
火火山
5楼-- · 2019-03-25 18:22
铛铛铛挡 发表于 2016-8-17 21:43
我也还没成功呢。用sprintf()可以打印int,但是float就不行了,不知道是不是碰巧的?。
你试试
#incl ...

sprintf函数打印在哪里啊?
铛铛铛挡
6楼-- · 2019-03-25 23:18
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章