编号:62
基于51单片机的数字电容表
功能描述:
本设计由51单片机+74HC573锁存器+6段数码管+键盘+电容充放电电路+电压比较器模块组成。
1、主控制器是51单片机
2、通过RC电容充放电电路为测量电路
3、六段数码管显示测得电容值,单位:nF
4、5个按键分别为显示、和量程选择按键
仿真软件版本:proteus7.8以上版本
编程软件:Keil4 C51
编程语言:C语言
视频演示链接:
62、基于51单片机的数字电容表
仿真图:
程序源码:
void main()
{
P2=0x00;
TMOD=TMOD|0x01;//选择计数方式,定时计数器1
EA=1;
ET0=1;
TH0=0x00;
TL0=0x00;// 装入计数初值,即为0
while(1)
{
if (key1==0)
{
Delay(10);
if (key1==0)
lm1=0;
while(key()==1);
lm1=1;
TR0=1;
Delay(10);
while(CAP==0);
TR0=0;
num=TH0*256+TL0+5;
if(num>2100) //超出测量范围是显示1
{
TempData[0]=0x06;
TempData[1]=TempData[2]=TempData[3]=0x00;
TempData[4]=TempData[5]=0x00;
}
else
{
ke1();
}
while(1)
{
Display(0,6);
}
}
else if (key2==0)
{
Delay(10);
if (key2==0)
lm2=0;
while(key()==1);
lm2=1;
TR0=1;
Delay(10);
Delay(1);
while(CAP==0);
TR0=0;
num=TH0*256+TL0+4;
if(num>2100) //超出测量范围是显示1
{
TempData[0]=0x06;
TempData[1]=TempData[2]=TempData[3]=0x00;
TempData[4]=TempData[5]=0x00;
}
else
{
ke2();
}
while(1)
{
Display(0,6);
}
}
else if (key3==0)
{
lm3=0;
while(key()==1);
lm3=1;
TR0=1;
Delay(10);
while(CAP==0);
TR0=0;
num=TH0*256+TL0-6;
if(num>2100) //超出测量范围是显示1
{
TempData[0]=0x06;
TempData[1]=TempData[2]=TempData[3]=0x00;
TempData[4]=TempData[5]=0x00;
}
else
{
ke3();
}
while(1)
{
Display(0,6);
}
}
else if (key4==0)
{
Delay(10);
if (key4==0)
lm4=0;
while(key()==1);
lm4=1;
TR0=1;
Delay(10);
while(CAP==0);
TR0=0;
num=TH0*256+TL0-6;
if(num>2100) //超出测量范围是显示1
{
TempData[0]=0x06;
TempData[1]=TempData[2]=TempData[3]=0x00;
TempData[4]=TempData[5]=0x00;
}
else
{
ke4();
}
while(1)
{
Display(0,6);
};
}
}
}
软件免费下载地址:
1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包
链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w
提取码:2756
2、KEIL4 C51软件安装包
链接:https://pan.baidu.com/s/1CTZBqDsPsyIbjCIjI_birA
提取码:sy2a
文件下载:
链接: https://pan.baidu.com/s/1UZsG25AMtDuIb8vYN7nnTg?pwd=e6v1
提取码: e6v1