51交流电流检测系统设计-数码管-电流互感器
本设计由51单片机电路+数码管显示电路+交流电压检测电路+交流电流检测电路+电源电路组成。
1、数码管实时显示交流电流值和交流电压值。
资料下载地址
https://pan.baidu.com/s/1HrBQD4JYRpudImX-bjlYfA?pwd=8888
部分代码
void InitADC();
unsigned char adVtab[5];
unsigned char adAtab[5];
unsigned char count = 0;
unsigned char GetADCResult(unsigned char ch);
void main (void)
{
unsigned int result_voltage = 0;
unsigned int result_current = 0;
unsigned int acV= 0;
unsigned int acA= 0; //扩大100倍
Init_Timer0();
//初始化端口
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P6M0 = 0x00;
P6M1 = 0x00;
P7M0 = 0x00;
P7M1 = 0x00;
InitADC(); //初始化ADC
while (1) { /* endless loop */
result_voltage = GetADCResult(7);//采集电压值
result_current = GetADCResult(6);//采集电流值
//显示电压值
adVtab[count] = result_voltage;
adAtab[count] = result_current;
count++;
if(count >= 5)
{
acV = ((adVtab[0] +adVtab[1] +adVtab[2] +adVtab[3] +adVtab[4] )/5 )*220/125; // ad值为127实时 1.57v ad电压220
acA = ((adAtab[0] +adAtab[1] +adAtab[2] +adAtab[3] +adAtab[4] )/5 )*72/100; // ad为 时 电流为0.72A 1.24V 扩大100倍电流
count = 0;
}
// acV = result_voltage * 220 / 125 ;
// if(acV < 20 ) acV = 0;
displayDat[0] = SEG_DATA[acV/100];
displayDat[1] = SEG_DATA[(acV%100)/10];
displayDat[2] = SEG_DATA[acV%10];
//高位为0时的消除处理
if(displayDat[0]==SEG_DATA[0]){
displayDat[0] = 0xff;
if(displayDat[1]==SEG_DATA[0]){
displayDat[1]=0xff;
}
}
// }
DelayMs(100);
}
}