本帖最后由 铛铛铛挡 于 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????
程序运行到最后,
液晶屏没有显示东西。
贴图:
a不是1.23;
str的值也不是0;
经过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
}
此帖出自
小平头技术问答
静态变量和全局变量默认初始化为0
一周热门 更多>