新闻中心

EEPW首页>电源与新能源>设计应用> 充电电池容量自动测试仪设计与实现

充电电池容量自动测试仪设计与实现

作者: 时间:2011-11-08 来源:网络 收藏
l软件调试过程中,通过对时间计数寄存器sec的观察计算,可以得出一次循环大致需要的时间。以此为据再通过适当改变延时子程序循环次数将常量a计时周期控制在1秒以下,剩余微小的时间差就可以通过插补空指令来校正了。计时精度只要控制在千分之一以下就可以了。在51单片机使用11.0592MHz晶体振荡器的情况下,指令周期大约1.085微秒,所以将计时精度控制在千分之一以下问题不大。误差总是会有的,只能通过精确计算来控制了,也可以通过更换更高频率的晶体振荡器提高单片机时钟频率的方法来进一步提高计时的精度。如果放电过程中,意外原因或者人为终止放电过程,P37端口变为高电平,程序循环依旧会进行下去,只是时间常量a停止自动加一,时间显示维持不变。

  编译后,写入单片机内部,做好放电电路部分与51单片机的连接,便可投入使用。

  电池接入后,按动轻触按键“启动”,就会进入一次测试过程,期间电池取出接入,都不会影响到单片机计时。电池放电完毕,单片机数码管显示锁定,给出总放电持续时间,单位为秒。可以自行人工计算放电小时数。当然也是可以自行对程序进行改进,直接以小时分钟形式进行显示。只要单片机不断电,数码管将持续显示当前放电时长。如果要进入下次测量过程,只需要按动单片机复位键,数码管清零,单片机程序转入起点,你就可以进入新一次的测试过程了。

如果较长时间闲置,它的实际将受到影响,重新启用第一次能够释放的容量远远达不到标注容量,放电电压也很不平稳。至少要经过三次以上的充电放电循环,电池完全激活,容量才能恢复到应有的水平。充分考虑这种因素的影响,所以容量测试一般采取多次平均的方式,或者循环充放电三次以后放电持续时间为准,以此衡量电池容量才算是恰当。

  #include “reg51.h”

  char

  code disp[]={40,235,50,162,225,164,36,234,32,160};

  //字形码

  void delay(unsigned int dt)

  { unsigned int j=0;

  for(;dt>0;dt--)

  { for(j=0;j125;j++)

  {;}

  }

  }

  void main()

  { int a,b,c,led1,led2,led3,led4;

  P3=255;

  a=0;

  for(;;)

  {b=a;

  led1=b%10;

  P2=239;

  P0=disp[led1];

  delay(6);

  P2=255;

  b=b/10;

  led2=b%10;

  P2=223;

  P0=disp[led2];

  delay(6);

  P2=255;

  b=b/10;

  led3=b%10;

  P2=191;

  P0=disp[led3];

  delay(6);

  P2=255;

  b=b/10;

  led4=b%10;

  P2=127;

  P0=disp[led4];

  delay(6);

  P2=255;

  for(c=44;c>0;c--)

  {

  P2=239;

  P0=disp[led1];

  delay(5);

  P2=255;

  P2=223;

  P0=disp[led2];

  delay(5);

  P2=255;

  P2=191;

  P0=disp[led3];

  delay(5);

  P2=255;

  P2=127;

  P0=disp[led4];

  delay(5);

  P2=255;

  }

  if(P3==127)

  delay(3);

  if(P3==127)

  a=a+1;

  else a=a;

  }

  }


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭