zzz 发表于 2013-2-10 10:06:46

【LCD12864】发个很多朋友都能用的上的东西,int转char,用于12864显示数值~

很多人在玩12864的时候,都会发现不能直接显示字符,因为大多数12864类库没有显示数值的函数,那么我们就需要把int型变量转换成字符串,方法很简单,只要在代码末尾加上一个功能函数即可~

char* itostr(char *str, int i)
{
    sprintf(str, "%d", i);
    return str;
}

把上述代码放入程序末尾,在程序头定义一个char(ep.char a),在读取完数值之后就可以轻松的用一行itostr(a,b);来转换,其中a是之前定义的char,b是数值变量,是不是很方便呢?

上个演示图,图为mini12864以及iRemote




沧海笑1122 发表于 2014-4-21 00:12:13

这几天玩电子秤,用到double转string,可以直接调用。转自网上李鑫的blog,有链接,我在1.05测试通过。串口打印“131.24”/*
http://www.lixin.me/blog/2013/04/21/29713
如果尝试使用sprintf()函数在arduino上进行对float指转换为一个字符串的话,你会发现,it doesn’t work。弄了很久,还以为是没学c++的原因。其实在arduino上,这个函数就是不对float起作用。
替代的方法是使用dtostrf()函数。

char* dtostrf(double _val,signed char _width, unsigned char prec, char* _s)
_val:要转换的float或者double值。
_width:转换后整数部分长度。
_prec:转换后小数部分长度。
_s:保存到该char数组中。
*/

void setup() {
    Serial.begin(9600);
}

void loop() {
double test = 131.23789;
char test2 ;

dtostrf(test,4,2,test2);
Serial.println(test2);
delay(1000);
}

anzedick 发表于 2013-2-10 13:20:00

好帖顶一个

恺之 发表于 2013-2-11 10:05:13

不错啊~这个12864和5110显示上的区别大吗?

fly58888 发表于 2013-3-23 14:09:26

很好很强大!!!

瘦网虫 发表于 2013-4-18 10:33:08

本帖最后由 瘦网虫 于 2013-4-18 12:51 编辑

int转string可以用
string(123456789)直接转。


======================================
附一个double转string的,感谢群里的@厦门-学长

测试未通过奇怪了。


void setup() {
// put your setup code here, to run once:
double test = 1.23;
char test2 ;
dtostr(test2,test);
}

void loop() {
// put your main code here, to run repeatedly:

}



char* dtostr(char *str, double d)
{
    sprintf(str, "%f", d);
    return str;
}

$money = 123.1
$formatted = sprintf ("%06.2f", $money); // 此时变数 $ formatted 值为 "123.10"
$formatted = sprintf ("%08.2f", $money); // 此时变数 $ formatted 值为 "00123.10"
$formatted = sprintf ("%-08.2f", $money); // 此时变数 $ formatted 值为 "123.1000"
$formatted = sprintf ("%.2f%%", 0.95 * 100); // 格式化为百分比
%08.2f 解释:
%开始符
0是 "填空字元" 表示,如果长度不足时就用0来填满。
8格式化后总长度
2f小数位长度,即2位
第3行值为"00123.10" 解释:
因为2f是(2位)+小数点符号(1位)+前面123(3位)=6位,总长度为8位,故前面用[填空字元]0表示,即00123.10
第4行值为"123.1000" 解释:
-号为反向操作,然后填空字元0添加在最后面了

伟创电子工作室 发表于 2013-5-9 18:52:40

简直就是神器啊

jszsj 发表于 2013-9-2 14:20:14

不错哈,学习了哦

飞翔的红猪 发表于 2013-10-9 10:55:31

C本来就有内置函数 itoa()可以用啊~

稻草 发表于 2014-4-21 15:05:13

:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol

hlzero 发表于 2014-5-10 11:16:27

沧海笑1122 发表于 2014-4-21 00:12 static/image/common/back.gif
这几天玩电子秤,用到double转string,可以直接调用。转自网上李鑫的blog,有链接,我在1.05测试通过。串口打 ...

这个非常好啊,但有一个疑问,比如就说这个131.23789,小数位是5位,如果转换位小于5位显示都正常,但如果转换5位时(也就是小数位全部转换时),转换出来的最后一位比原来的小1,如131.23789小数位全部转换出来就是131.23788,如果是131.2378,小数位全部转换出来就是131.2377,这是个什么原理?

沧海笑1122 发表于 2014-5-10 21:49:13

本帖最后由 沧海笑1122 于 2014-5-10 21:53 编辑

hlzero 发表于 2014-5-10 11:16 static/image/common/back.gif
这个非常好啊,但有一个疑问,比如就说这个131.23789,小数位是5位,如果转换位小于5位显示都正常,但如果 ...

我只是使用,电子秤也没有用到五位。不影响用吧。如果深究那要研究库了,如有收获跟贴分享一下吧。

49741933o 发表于 2014-7-27 20:20:12

沧海笑1122 发表于 2014-4-21 00:12 static/image/common/back.gif
这几天玩电子秤,用到double转string,可以直接调用。转自网上李鑫的blog,有链接,我在1.05测试通过。串口打 ...

可不可以看一下你的电子秤?

zwltanf 发表于 2014-8-3 17:23:56

沧海笑1122 发表于 2014-4-21 00:12 static/image/common/back.gif
这几天玩电子秤,用到double转string,可以直接调用。转自网上李鑫的blog,有链接,我在1.05测试通过。串口打 ...

学习了   

vision2000 发表于 2014-10-29 10:43:00

好帖顶一个
页: [1] 2
查看完整版本: 【LCD12864】发个很多朋友都能用的上的东西,int转char,用于12864显示数值~