仿真图:
链接:https://pan.baidu.com/s/1LjlSrIBPfDyFDCfryePhlQ
提取码:1234
部分源程序:
#include <reg52.h>
#include "LCD.h"
#include "Delay.h"
#include "AD.h"
#include <measure_define.h>
#include <KEY_FUNCTION_DEFINE.H>
#include <Cap_define.h>
void ININT_int1(void);
extern unsigned char key_number;
extern unsigned char disp_value[5];
void main(void)
{
unsigned char num=0;
s1=0;
s2=0;
s3=0;
key_number=1; //初始化按键的值为0
LcdInit(); //LCD1602有初始化
WriteCom(0x80+0x46); //1602第二行显示 value=00000v
for(num=0;num<5;num++)
{
WriteData(disp_value[num]);
Delay(10);
}
ININT_int1(); //外部中断1的初始化
Tmie0_init(); //定时器0的初始化
while(1)
{
if(key_number==1) //按键值为1
{
DC_VOL_measure(); //直流电压的测量
}
if(key_number==2) //按键值为2
{
AC_VOL_measure(); //交流电压的测量
}
if(key_number==3) //按键值为3
{
Circuit_measure(); //电流的测量
}
if(key_number==4) //按键值为4
{
Res_measure(); //电阻的测量
}
if(key_number==5) //按键值为5
{
WriteCom(0x01); //清屏
Cap_disp_init(); //电容显示初始化
Cap_measure(); //电容的测量
} /**/
}
}
#include <reg52.h>
#include "AD.h"
sbit OE=P3^0; //AD0809输出允许控制端
sbit EOC=P3^1; //AD0809转换结束信号输出端
sbit Start=P3^4; //AD0809启动控制输入端
//AD采样
unsigned char ADSample(unsigned char AD_ADDER) //AD采样函数
{
unsigned char Data;
P2=P2&0X1F; //P2口高三位清零
P2=P2|AD_ADDER; //选择对应的通道
Start=0; //启动AD0809
Start=1;
Start=0;
while(EOC==0); //AD0809是否转换结束
OE=1; //开输出控制端
Data=P1; //读数据
OE=0;
return Data;
}
float ValueConver(unsigned char AD) //数据转换函数,将采样得到的值转换为电压值
{ float Temp;
Temp=2*AD;
Temp=Temp/255;
return(Temp);
}