标题:
HLW8032芯片单相电能计量模块单片机程序-UART接口
[打印本页]
作者:
美岩电子制作
时间:
2019-8-16 10:49
标题:
HLW8032芯片单相电能计量模块单片机程序-UART接口
L91-01
是基于
HLW8032的单相交流电能计量模块
(以下简称模块),该模块
包含一路交流电压和一路交流电流的采集,通过串口的形式送到单片机,模块可以测量电压,电流,功率,电量以及功率因数,例程中仅给出了
测量电压,电流,功率,通过四位数码管显示。
适用:
Ø
单片机学习、
DIY
等。
2.jpg
(88.5 KB, 下载次数: 146)
下载附件
2019-8-16 10:48 上传
1.jpg
(76.01 KB, 下载次数: 157)
下载附件
2019-8-16 10:48 上传
附件包含原理图,51单片机的驱动例程,和芯片的Datasheet。
单片机源程序如下:
#include "Config.H"
//数码管0-9显示代码 0 1 2 3 4 5 6 7 8 9
u8 DISPLAY_CODE[10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
//数码管带点的0-9显示代码 0 1 2 3 4 5 6 7 8 9
u8 DISPLAY_Point_CODE[10] = { 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef };
//数码管位数 1 2 3 4
u8 DIG_BIT_CODE[4] = { 0x68,0x6a,0x6c,0x6e };
//8段显示亮度等级 1 2 3 4 5 6 7 8
u8 Light_Level_CODE[8] = { 0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x01 };
void I2CStart(void)//开始信号
{
CLK_H;
DIO_H;
Delay_us(5);
DIO_L;
}
void I2Cask(void) //ACK信号
{
u8 timeout = 1;
CLK_H;
Delay_us(5);
CLK_L;
while((DIO)&&(timeout<=100))
{
timeout++;
}
Delay_us(5);
CLK_L;
}
void I2CStop(void) //停止信号
{
CLK_H;
DIO_L;
Delay_us(5);
DIO_H;
}
void I2CWrByte(u8 oneByte) //写一个字节高位在前,低位在后
{
u8 i;
CLK_L;
Delay_us(1);
for(i=0;i<8;i++)
{
oneByte = oneByte<<1;
DIO = CY;
CLK_L;
Delay_us(5);
CLK_H;
Delay_us(5);
CLK_L;
}
}
void AiP650_Set(u8 add,u8 dat) //数码管显示
{
//写显存必须从高地址开始写
I2CStart();
I2CWrByte(add); //第一个显存地址
I2Cask();
I2CWrByte(dat);
I2Cask();
I2CStop();
}
void AiP650_DisPlay(u8 DIG_Bit, u8 Display_num) //显示一位数字
{
AiP650_Set(DIG_BIT_CODE[DIG_Bit-1],DISPLAY_CODE[Display_num]);
}
void AiP650_CLR() //清屏
{
u8 i;
for(i=0;i<4;i++)
{
AiP650_Set(DIG_BIT_CODE[i],0x00);
}
}
void AiP650_DisPlayFourNum(u16 Display_num) //显示一个四位数 (0-9999)
{
u8 One,Two,Three,Four;
One = Display_num/1000;
Two = Display_num%1000/100;
Three = Display_num%100/10;
Four = Display_num%10;
if(One == 0)
{
AiP650_Set(DIG_BIT_CODE[0],0x00);
if(Two == 0)
{
AiP650_Set(DIG_BIT_CODE[1],0x00);
if(Three == 0)
{
AiP650_Set(DIG_BIT_CODE[2],0x00);
}
else
{
AiP650_DisPlay(3,Three);
}
AiP650_DisPlay(4,Four);
}
else
{
AiP650_DisPlay(2,Two);
AiP650_DisPlay(3,Three);
AiP650_DisPlay(4,Four);
}
}
else
{
AiP650_DisPlay(1,One);
AiP650_DisPlay(2,Two);
AiP650_DisPlay(3,Three);
AiP650_DisPlay(4,Four);
}
}
void AiP650_DisPlayOnePointNum(u16 Display_num) //显示带一位小数
{
u8 One,Two,Three,Four;
One = Display_num/1000;
Two = Display_num%1000/100;
Three = Display_num%100/10;
Four = Display_num%10;
if(One == 0)
{
AiP650_Set(DIG_BIT_CODE[0],0x00);
if(Two == 0)
{
AiP650_Set(DIG_BIT_CODE[1],0x00);
AiP650_Set(DIG_BIT_CODE[2],DISPLAY_Point_CODE[Three]);
AiP650_DisPlay(4,Four);
}
else
{
AiP650_DisPlay(2,Two);
AiP650_Set(DIG_BIT_CODE[2],DISPLAY_Point_CODE[Three]);
AiP650_DisPlay(4,Four);
}
}
else
{
AiP650_DisPlay(1,One);
AiP650_DisPlay(2,Two);
AiP650_Set(DIG_BIT_CODE[2],DISPLAY_Point_CODE[Three]);
AiP650_DisPlay(4,Four);
}
}
void AiP650_DisPlayTwoPointNum(u16 Display_num) //显示带两位小数
{
u8 One,Two,Three,Four;
One = Display_num/1000;
Two = Display_num%1000/100;
Three = Display_num%100/10;
Four = Display_num%10;
if(One == 0)
{
AiP650_Set(DIG_BIT_CODE[0],0x00);
AiP650_Set(DIG_BIT_CODE[1],DISPLAY_Point_CODE[Two]);
AiP650_DisPlay(3,Three);
AiP650_DisPlay(4,Four);
}
else
{
AiP650_DisPlay(1,One);
AiP650_Set(DIG_BIT_CODE[1],DISPLAY_Point_CODE[Two]);
AiP650_DisPlay(3,Three);
AiP650_DisPlay(4,Four);
}
}
void Light_Level_Set(u8 Level) //设置亮度等级 1-8级
{
AiP650_Set(0x48,Light_Level_CODE[Level-1]);
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
【实用电子小模块】单相电能计量模块-UART接口-HLW8032芯片.rar
(1.91 MB, 下载次数: 537)
2019-8-16 10:43 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
美岩电子制作
时间:
2019-8-19 14:14
第一次做,程序会持续优化,欢迎大家交流。
作者:
hpy656
时间:
2019-10-12 09:31
谢谢楼主,辛苦了。
作者:
zhangjianhu
时间:
2019-10-12 13:50
计量芯片都是使用SPI接口居多。
作者:
pengyongnet
时间:
2019-11-4 15:10
楼主能否提供下PCB设计源文件
作者:
aking991
时间:
2019-11-5 09:53
这个我以前也作过,但效果不是很好,可能跟当时需求部门要求有一定的难度造成的,所以后来没有继续,现在下载你的下来参考一下
作者:
yuguoyu123456
时间:
2019-12-27 21:43
你的 CUR_Flag==0 注释了是为什么
作者:
comeeeg
时间:
2020-7-28 13:25
不能知道和HLW8110通用不?下载来看看吧!
作者:
刀刀杀猪
时间:
2020-9-25 21:02
在帮别人写个测交流电压电流程序,用的HLW8110,没想到这个片子只有SOP8封装而且只支持串口9600bps通讯,网上想找个程序好难啊
作者:
573426413
时间:
2020-9-27 21:17
这个模块要校准吗
作者:
jun4052
时间:
2021-10-28 10:17
下来学习下,谢谢楼主分享!
作者:
施建中
时间:
2022-3-28 13:52
电量图不全啊。单片机电路在哪里?
作者:
chengfgc
时间:
2022-8-12 11:35
学习下,希望有用,有用我再来回帖
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1