|
发表于 2017-7-13 23:31:38
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 249018563 于 2017-7-14 16:37 编辑
电池电压检实时监测 (每半秒将测得的实时电压刷新显示一次)
航模2s 电池 大概8v左右 测量电压用oled显示
程序分享https://pan.baidu.com/s/1i4NQMGH(需要keil5 打开,keil5 下载地址在帖子《 圆梦那年3》 中)
说个小技巧
-----------------------------------------------------
这个函数返回的值是电池电压,由于移植的程序显示函数只能接受整型,所以返回的是整数
-------------------------------------------------------
int getVBAT(void)
{
int vBAT0;
int vBAT;
vBAT0 = getAdc(ADC_CH3)*3.3*57*/10/4096;
vBAT = vBAT0 *100;
return vBAT;
}
----------------------------------
这个是oled显示函数,但只能传入整数进行显示
--------------------------------------
//显示2个数字
//x,y :起点坐标
//len :数字的位数
//size:字体大小
//mode:模式 0,填充模式;1,叠加模式
//num:数值(0~4294967295);
void OLED_ShowNumber(u8 x,u8 y,u32 num,u8 len,u8 size)
{
u8 t,temp;
u8 enshow=0;
for(t=0;t<len;t++)
{
temp=(num/oled_pow(10,len-t-1))%10;
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
OLED_ShowChar(x+(size/2)*t,y,' ',size,1);
continue;
}else enshow=1;
}
OLED_ShowChar(x+(size/2)*t,y,temp+'0',size,1);
}
}
----------------------------------------------------------------------------------------------------------------
但是我想显示电池电压小数后后两位,更加精确
于是我就将上面函数【int getVBAT(void)】 的值乘以100------->vBAT = vBAT0 *100;
再在下面函数在中除以100【getVBAT()/100】得出整数位,
后两位取余【getVBAT()%100】作为小数位
在加个小数点''.''分开整数位与小数位显示在oled上,就可以看到是小数了
----------------------------------------------------------------------------------------------------------------
OLED_ShowString(00,20,"FISHC.COM");
OLED_ShowString(00,40,"Volta");
OLED_ShowString(58,40,".");
OLED_ShowString(84,40,"V");
OLED_ShowNumber(45,40,getVBAT()/100,2,12.5);
OLED_ShowNumber(68,40,getVBAT()%100,2,12.5); |
-
-
|