【智能车】OLED小数显示

基于中景园OLED库调参界面——OLED小数点显示

在调车时,如果老是每改一个参数,就要下一次代码,这样的效率太低了,因此基于这种现状,我决定写一个调参界面。由于直立车参数需要细调,往往需要小数点后多位,而中景园OLED的库却只能显示整数,因此基于现状,写下了OLED小数的程序。

该小数显示函数基于中景园OLED字符串输出函数,由于只有显示整数没有显示小数的函数,因此我们如果要将小数点还有负号显示出来就必须输出字符才能做到。

void OLED_Show_Float_Num(unsigned int x,unsigned int y,double num)
{
	uint16 A;
        uint32 B;

	unsigned char Num[] = {'\0','\0','\0','\0' ,'\0', '\0','\0','\0','\0'};
	                    //符号位  0    0    0     .    0    0    0     0   
	uint8 point = 4;//小数点的位置

	if(num < 0)//负数时
	{
		num = -num;//将数值转化为正数进行处理
		Num[0] = '-';//将符号位变为 '-',表示该数为负数
	} 
	else
	{
		Num[0] = ' ';//否则为正数,符号位以空格作为正数
	}

	if(num > 1000)//数值限幅,设置上限
	{
		num = 999.9999;
	}

 	B = (uint32)(num * 10000);//将小数为转化为整数

 	for(uint8 i=8;i>0;i--)
 	{
 		if(i!=point)//如果i不是小数位时,这开始拆分
 		{
 			A = B % 10;//将最小位输出
 			Num[i] = A + '0';//由于Num数组是char类型,因此加'0',使其变为例如'1'、'23'之类的字符
 			B = B/10;//去掉最低位
 		}
 		else//当遍历到小数位时,则填充小数点
 		{
 			Num[point] = '.';
 		}

 	}
 	OLED_ShowString(x,y,Num);//该函数为中景园OLED的库
}
发布了49 篇原创文章 · 获赞 14 · 访问量 2639

猜你喜欢

转载自blog.csdn.net/qq_42108414/article/details/84975390
今日推荐