一个比较常见而又最容易忽略的数码管显示问题

2019-07-15 18:41发布

请教各位,在做压力传感器数据处理的时候,用的电流型压力传感器,4ma~20ma对应压力0MPa~1.0MPa,数码管是3位一体共阴极,经过250欧姆电阻转换为1V~5V,显示时,百分位数字有时候会在两个数字之间来回跳动,数据处理如下:
压力传感器数据如下:
   检定压力                                 实测输出        
    0   MPa                                  4.011ma
    0.2MPa                                  7.205ma
    0.4MPa                                  10.406ma
    0.6MPa                                  13.609ma
    0.8MPa                                  16.801ma
    1.0MPa                                  20.008ma



void adc()                             //AD转换程序,用的是10位AD
{
    if(ADTRG==0)
    {
        aa=ADCRH;
        aa=(aa<<8)+ADCRL;
        ADTRG=1;                   //再次启动AD转换        
    }  
    bb=aa;        
}



void chuli()
{   
    if(bb<205)                   //这句话的含义是,当电流小于4ma时,减去4不会出现负数,从而导致单片机死机
        bb=205;
    bb=(uint)(((((float)bb/1023)*5*1000)/245)*1000);     //将bb的值转换为电流值,范围为4000~20000,其中的245为电阻值


    table[0]=bb/10000;                                                //将电流值保存到table[]数组中,通过串口发送给电脑
    table[1]=bb%10000/1000;
    table[2]=bb%1000/100;
    table[3]=bb%100/10;
    table[4]=bb%10;  

    table1[0]=(uint)(((float)(bb)-4000)/160+0.5)/100;       //将上面的电流值转变为实际压力值,其中的0.5为四舍五入处理,并送数码管显示
    table1[1]=(uint)(((float)(bb)-4000)/160+0.5)%100/10;
    table1[2]=(uint)(((float)(bb)-4000)/160+0.5)%10;

}


实测压力检测数值还是比较准确,就是压力值的百分位有时候会在连续的两个数之间快速的闪烁,试了好几种方法都不行。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
李自国
1楼-- · 2019-07-15 19:37
自己先顶了!!!!!!!!!!!!!!!!!!!
dusqq
2楼-- · 2019-07-16 00:36
算一焉,算到下面,我迷糊了
music_mc
3楼-- · 2019-07-16 00:45
本帖最后由 music_mc 于 2014-8-26 16:41 编辑

你是仿真,还是实物?什么压力测试IC,修改下,延长检测的间隔看看
李自国
4楼-- · 2019-07-16 02:30
 精彩回答 2  元偷偷看……
李自国
5楼-- · 2019-07-16 07:37
music_mc 发表于 2014-8-26 16:40
你是仿真,还是实物?什么压力测试IC,修改下,延长检测的间隔看看

是实物,就一个电流型压力传感器,输出4~20ma的电流,通过250欧姆的电阻转换为电压。没有使用电流检测芯片,因为对精度的要求没有这么高。能否详细说一下如何延长检测时间,实在AD程序里面加延时吗?
李自国
6楼-- · 2019-07-16 10:41
沉了沉了!!!!!!!!!!!!!!!!

一周热门 更多>