249018563 发表于 2017-7-13 23:31:38

圆梦那年7(c 语言 实时监测电池电压)

本帖最后由 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);

249018563 发表于 2017-7-14 00:19:50

休息了{:9_226:}

cuml 发表于 2017-7-14 09:09:42

相当的牛x!~~~~~~~~~~~~~~~

2123226207 发表于 2018-1-10 18:50:56

这是c 还是51c
页: [1]
查看完整版本: 圆梦那年7(c 语言 实时监测电池电压)