目录
一、使用说明
1、数据格式:浮点数可以为整数部分不超过3位的所有浮点数,数组格式只能设置为下面这一种。
unsigned char fnums[5]="0";
/*
a[0]用于存放正负(1表示正,0表示负),
a[1],a[2]用于存放温度的整数部分,
a[3]用于存放'.',a[4]用于存放小数位,
a[5]作结束位
*/
2.功能:将浮点数转化为字符串并存进数组。
3.目的:方便在数码管、LCD、OLED等屏幕上显示一些比较小的浮点数(例如显示一般的温度:+21.7摄氏度)。
二、模块代码
//函数名:fnum_tran
//参数: *fnums:用于存放数组,fnum:要转化的浮点数(-100,+100)
//功能: 将浮点数fnum转化为字符串并存进数组*fnums
//返回:无
//作者:常工第一深情呀
void fnum_tran(unsigned char *fnums,double fnum)
{
//intnum表示整数部分,smallnum表示小数点后一位
char intnum,smallnum,x;
x='0'-0;//x表示字符型数字和数字在ASCII码表上相差的数字
//规定合法范围
if(fnum>=100||fnum<=-100) return;
//正负号存入数组
if(fnum<=0)
{
fnum = 0-fnum;
fnums[0] = '-';
}
else fnums[0] = '+';
//整数部分各个位存入数组
intnum = (int)fnum;
//+x是为了转化为字符
fnums[1] = intnum/10+x;
fnums[2] = intnum%10+x;
//小数点
fnums[3] = '.';
//小数点后一位存入数组
smallnum = (int)((fnum-(double)intnum)*10);
fnums[4] = smallnum+x;
}
三、代码讲解
此函数将正负号、整数的十位和个位和小数点的后一位单独取出存入数组,以字符的小数点作分割,比较简单。
四、作者的话
此代码有较大局限性,请仔细阅读使用,写这个模块的原因是,很多的屏幕都会有显示字符和数字的函数,但没有显示浮点数的函数模块,为了以后方便显示一些小的浮点数,设计了这个函数。下面是我用OLED显示温度的图片。