高级会员
- 积分
- 899
- 威望
- 448
- 贡献
- 281
- 兑换币
- 294
- 注册时间
- 2015-9-4
- 在线时间
- 85 小时
|
第二页,选library选FULL,
sprintf效率太低了,所以嵌入式C里面都很少用这个函数的...
用这个吧,比sprintf好一点的
void LED_PrintValueF(unsigned char x, unsigned char y, float data, unsigned char num)
{
unsigned char l,m,i,j,k; //万千百十个
unsigned char databiti = 6; //整数位数
unsigned int tempdataui = 0;
int tempdataii = (int)data; //整数部分
long int tempdatalp = (long int)((data - (int)data)*10000); //取小数位后4位
//整数部分显示
if(data < 0.0000001) LED_P6x8Char(x, y,'-');
else LED_P6x8Char(x, y,'+');
if(tempdataii < 0)tempdataii = - tempdataii; //去掉整数部分负号
tempdataui = tempdataii;
l = tempdataui/10000;
m= (tempdataui%10000)/1000;
i = (tempdataui%1000)/100;
j = (tempdataui%100)/10;
k = tempdataui%10;
if (l != 0) //五位
{
LED_P6x8Char(x+6,y,l+48);
LED_P6x8Char(x+12,y,m+48);
LED_P6x8Char(x+18,y,i+48);
LED_P6x8Char(x+24,y,j+48);
LED_P6x8Char(x+30,y,k+48);
}
else if(m != 0) //四位
{
databiti = 5;
LED_P6x8Char(x+6,y,m+48);
LED_P6x8Char(x+12,y,i+48);
LED_P6x8Char(x+18,y,j+48);
LED_P6x8Char(x+24,y,k+48);
}
else if(i != 0) //三位
{
databiti = 4;
LED_P6x8Char(x+6,y,i+48);
LED_P6x8Char(x+12,y,j+48);
LED_P6x8Char(x+18,y,k+48);
}
else if(j != 0) //两位
{
databiti = 3;
LED_P6x8Char(x+6,y,j+48);
LED_P6x8Char(x+12,y,k+48);
}
else
{
databiti = 2;
LED_P6x8Char(x+6,y,k+48);
}
if(tempdatalp < 0)tempdatalp = - tempdatalp; //去掉小数部分负号
switch(num)
{
case 0: break;
case 1: LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp / 1000),num);break;
case 2: LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp / 100),num);break;
case 3: LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp / 10),num);break;
case 4: LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp),num);break;
}
} |
|