4,删掉float变量,只有长整数转换,程序大小1110B
#include
#include
#define uchar unsigned char
float fengsu;
long guang;
uchar str[10];
void display1()
{
guang=60000;
sprintf(str,"%5ld",guang);
}
void display2()
{
//fengsu=12.34;
//sprintf(str,"%5.2f",fengsu);
}
void main()
{
while(1)
{
display1();
display2();
}
}
多了sprintf代码尺寸当然要大,这个函数本身本来就不小。浮点在没有硬件浮点的U上是通过软件来适配的,你看不见但背后由编译器帮你做了这事。
那有没有小一点的函数适合把变量数字转换成字符然后通过12864液晶屏显示呢,下面是一段显示程序english(2,4,5,str)是在第二行第四个字开始显示str的5个字符
- write(0,0x01);
- english(2,1,15,table3);//光照
- guang=6000;
- guang=guang*10;
- sprintf(str,"%5ld",guang);
- english(2,4,5,str);
如果你没有使用浮点数就不会包括浮点运算库,所以很小这个是正常的。
那有没有小一点的函数适合把变量数字转换成字符然后通过12864液晶屏显示呢,我本来是一位一位显示的,要显示的实时数据比较多,程序太大了,51占不下了,加一个字符串转化函数,再显示字符串程序会小点吧
- write(0,0x01);
- english(2,1,15,table3);//光照
- guang=1234;
- write(0,0x93);
- write(1,0x30+guang/10000);
- write(1,0x30+guang/1000%10);
- write(0,0x94);
- write(1,0x30+guang/100%10);
- write(1,0x30+guang/10%10);
- write(0,0x95);
- write(1,0x30+guang%10);
百度到有人说用sprintf函数,结果比原来有大了2k,
显示部分做成一个函数,调用就行,不用浮点也可以,规定好整数小数位数。