长汀无线电厂交流论坛

 找回密码
 注册
查看: 2734|回复: 5
打印 上一主题 下一主题

电表电路ADE7755+2051做功率表

[复制链接]
跳转到指定楼层
楼主
发表于 2011-7-11 15:09:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 gongyuancun 于 2011-9-8 17:53 编辑

ADE7755的电表电路板,12脚接负13脚14脚接正极可输出高频脉冲,我这个电表光耦输出毎瓦0.57Hz的脉冲,我改了电压取样电阻,使100瓦就输出100Hz频率信号,用2051频率计就可以显示功率,你也可以改频率计延时

2051功率显示电路.GIF (11.19 KB, 下载次数: 517)

2051功率显示电路.GIF

ADE7755电度表.jpg (42.96 KB, 下载次数: 460)

ADE7755电度表.jpg
回复

使用道具 举报

沙发
 楼主| 发表于 2011-7-11 15:14:01 | 只看该作者
本帖最后由 gongyuancun 于 2011-9-8 18:16 编辑

频率计程序                        
#include<reg2051.h>
#define ON 0
#define OFF 1
/****************定义显示*****************/
sbit led1=P3^5; //指示灯
sbit led2=P3^7;
sbit L1=P3^0; //扫描位
sbit L2=P3^1;
sbit L3=P3^2;
sbit L4=P3^3;
char code disp_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; //段码
char disp_buffer[4]; //显存
char disp_count;  //显示指针
/**************定义计时,计数**************/
unsigned char count;
unsigned char time;
bit timer_flag;
/***************************************************
延时1S
***************************************************/
void delay(void)
{
unsigned char ys1,ys2,ys3;
for(ys1=167;ys1;ys1--)  //设
  for(ys2=39;ys2;ys2--)
   for(ys3=76;ys3;ys3--);
}
/***************************************************
定时器1中断
功能: 计数溢出中断,用于计数扩展
***************************************************/
void count_timer0(void) interrupt 1
{
count++;
}
/***************************************************
定时器0中断
功能: 1S计时和显示
***************************************************/
void timer1(void) interrupt 3 using 0
{
TL1|=0x60;  //4MS 12M晶振
TH1=0xF0;
led2=OFF;
//1S计时
if(++time==250)
{
  TR0=0;
  TR1=0;
  time=0x00;
  timer_flag=1;
}

//显示
P3 |= 0x0F;
P1=disp_buffer[disp_count];
switch(disp_count)
{
  case 0:
   L1=0;
   break;
  case 1:
   L2=0;
   break;
  case 2:
   L3=0;
   break;
  case 3:
   L4=0;
   break;   
}
if(++disp_count==4) disp_count=0x00;
}
/********************************
1. 定时器0作为外部输入计数器
2. 定时器1作为定时器,用于1S计时和显示
******************
void main(void)
{
unsigned long x;
unsigned char i,j,temp;

delay();
led1=ON;
led2=ON;
TMOD=0x15;
EA=1;
ET0=1;
ET1=1;
PT1=1;
// TH1=0xF0;
// TL1=0x60+0x12;
TR1=1;
// TR0=1;
while(1)
{
  PCON |= 0x01;
  //1S计时时间到的处理
  if(timer_flag)
  {
   //计算计数值
   ((char*)&x)[3]=TL0;
   ((char*)&x)[2]=TH0;
   ((char*)&x)[1]=count;
   //开始第二次测量
   led2=ON;
   timer_flag=0;
   count=0x00;
   TH1=0xF0;
   TL1=0x60+0x12;
   TH0=0x00;
   TL0=0x00;
   TR1=1;
   TR0=1;

   //确定小数点位置和显示的数
   if(x<1000)
   {
    led1=OFF;  //KHZ单位小数点灭
    j=4;   //小数点不显示
   }
   else if(x<10000)
   {
    led1=ON;  //KHZ单位小数点亮
    j=3;   //小数点位置
   }
   else if(x<100000)
   {
    led1=ON;
    j=2;
    x/=10;   //只要显示高四位
   }
   else if(x<1000000)
   {
    led1=ON;
    j=1;
    x/=100;
   }

   //将要显示的内容存放到显示缓存
   for(i=0;i<4;i++)
   {
    temp=x%10;
    disp_buffer=disp_data[temp];
    if(i==j) disp_buffer &= 0xFB; //小数点
    x/=10;
   }
   for(i=3;i;i--)
     if(disp_buffer==0xc0)
     disp_buffer=0xff;
    else
     break;
  }
}
}
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2011-9-8 18:27:20 | 只看该作者
本帖最后由 gongyuancun 于 2013-4-16 11:37 编辑

一个装在总开关盒上,一个平时用,使用了一年多,效果不错

ADE7755功率表1.JPG (188.19 KB, 下载次数: 0)

ADE7755功率表1.JPG

ADE7755功率表3.JPG (250.5 KB, 下载次数: 3)

ADE7755功率表3.JPG
回复 支持 反对

使用道具 举报

地板
发表于 2013-6-29 16:56:29 | 只看该作者
老师,原来单片机也挺牛的啊。
回复 支持 反对

使用道具 举报

5#
发表于 2013-9-4 13:58:06 | 只看该作者
这个东西好,多功能表啊
回复 支持 反对

使用道具 举报

6#
发表于 2013-9-17 16:28:16 | 只看该作者
不错,我也有个ADE7755的电表电路板,不知道好坏,改天也做个试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|长汀无线电厂交流论坛  

GMT+8, 2024-5-5 13:19 , Processed in 0.767172 second(s), 20 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表