久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2870|回復(fù): 5
收起左側(cè)

交流電充電樁電能計(jì)量模塊HLW8032程序 STM32單片機(jī)

  [復(fù)制鏈接]
ID:1053560 發(fā)表于 2023-7-9 19:43 | 顯示全部樓層 |閱讀模式

調(diào)試軟件

調(diào)試軟件


  1. #include "stm32f10x.h"
  2. #include <stdbool.h>
  3. #include <stdio.h>
  4. #include "usart3.h"
  5. #include "delay.h"
  6. #include "usart.h"
  7. #include "LED.h"
  8. #include "timer.h"
  9. #include "string.h"
  10. #include "oled.h"
  11. #include "myiic.h"

  12. void Data_Processing(void);

  13. u8 link=0;

  14. u8 k=0;
  15. u16 old_reg=0,len=0;
  16. double V=0,C=0,P=0,E_con=0;
  17. int main(void)
  18. {        
  19.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  20.         delay_init();        //延時(shí)初始
  21.         LED_Init();        //LED初始化
  22.         uart_init(9600);//串口1初始化
  23.         usart3_init(4800);//HLW8032模塊接線方式3.3V--3.3;G--G;T--PB11;P不接
  24.         IIC_Init();
  25.     OLED_Init();//0.96寸接線方式VCC--3.3;GND--G;SCL--PB12;SDA--PB13
  26.         OLED_P8x16Str(35,0,(unsigned char *)"Knight20");
  27.         delay_ms(20);//延時(shí)        
  28.         
  29.         printf("Init OK\r\n");
  30.         while(1)
  31.         {               

  32.                 if(USART3_RX_STA&0X8000)//接收到HLW8032一次數(shù)據(jù)了
  33.                 {        
  34.                         len=USART3_RX_STA&0x3fff;//得到此次接收到的數(shù)據(jù)長(zhǎng)度
  35.                         Data_Processing();
  36.                         USART3_RX_STA=0;                           //啟動(dòng)下一次接收        
  37.                 }
  38.                  delay_ms(50);
  39.                 LED0=!LED0;//STM32系統(tǒng)板自帶的指示燈
  40.         }
  41. }

  42. void Data_Processing(void)//電能數(shù)據(jù)解析
  43. {
  44.         u32 VP_REG=0,V_REG=0,CP_REG=0,C_REG=0,PP_REG=0,P_REG=0,PF_COUNT=0,PF=0,dat_sum=0;
  45.         u8 dat[200];
  46.         u8 i=0;
  47.         if(USART3_RX_BUF[0]!=0xaa&&len==24)//芯片誤差修正功能正常,參數(shù)正常
  48.         {
  49.                 for(i=2;i<23;i++)
  50.                 {
  51.                         dat_sum=dat_sum+USART3_RX_BUF[i];//計(jì)算校驗(yàn)和
  52.                 }
  53.                 if(dat_sum%256==USART3_RX_BUF[23])//檢查校驗(yàn)位是否正確
  54.                 {
  55.                         VP_REG=USART3_RX_BUF[2]*65536+USART3_RX_BUF[3]*256+USART3_RX_BUF[4];//計(jì)算電壓參數(shù)寄存器
  56.                         V_REG=USART3_RX_BUF[5]*65536+USART3_RX_BUF[6]*256+USART3_RX_BUF[7];//計(jì)算電壓寄存器
  57.                         V=(VP_REG/V_REG)*1.88;//計(jì)算電壓值,1.88為電壓系數(shù),根據(jù)所采用的分壓電阻大小來確定
  58.                         //printf("U:%0.2fV; ",V);
  59.                         
  60.                         CP_REG=USART3_RX_BUF[8]*65536+USART3_RX_BUF[9]*256+USART3_RX_BUF[10];//計(jì)算電流參數(shù)寄存器
  61.                         C_REG=USART3_RX_BUF[11]*65536+USART3_RX_BUF[12]*256+USART3_RX_BUF[13];//計(jì)算電流寄存器
  62.                         C=((CP_REG*100)/C_REG)/100.0;//計(jì)算電流值
  63.                         //printf("I:%2.3fA; ",C);
  64.                     sprintf((char *)dat,"U:%0.2fV  I:%2.2fA ",V,C);
  65.                         OLED_P6x8Str(0,3,dat);
  66.                         printf((char *)dat);
  67.                         if(USART3_RX_BUF[0]>0xf0)//判斷實(shí)時(shí)功率是否未溢出
  68.                         {
  69.                                 printf("NO Device!");
  70.                                 OLED_P6x8Str(30,4,"NO Device");
  71.                                 P=0;
  72.                         }
  73.                         else
  74.                         {
  75.                                 PP_REG=USART3_RX_BUF[14]*65536+USART3_RX_BUF[15]*256+USART3_RX_BUF[16];//計(jì)算功率參數(shù)寄存
  76.                                 P_REG=USART3_RX_BUF[17]*65536+USART3_RX_BUF[18]*256+USART3_RX_BUF[19];//計(jì)算功率寄存器
  77.                                 P=(PP_REG/P_REG)*1.88*1;//計(jì)算有效功率
  78.                                 sprintf((char *)dat,"P:%0.2fW   ",P);
  79.                                 OLED_P6x8Str(30,4,dat);
  80.                                 printf((char *)dat);
  81.                         }        
  82.                         if((USART3_RX_BUF[20]&0x80)!=old_reg)//判斷數(shù)據(jù)更新寄存器最高位有沒有翻轉(zhuǎn)
  83.                         {
  84.                                 k++;
  85.                                 old_reg=USART3_RX_BUF[20]&0x80;
  86.                         }
  87.                         PF=(k*65536)+(USART3_RX_BUF[21]*256)+USART3_RX_BUF[22];//計(jì)算已用電量脈沖數(shù)
  88.                         PF_COUNT=((100000*3600)/(PP_REG*1.88))*10000;//計(jì)算1度電對(duì)應(yīng)的脈沖數(shù)量
  89.                         E_con=((PF*10000)/PF_COUNT)/10000.0;//計(jì)算已用電量
  90.                         sprintf((char *)dat,"E:%0.4lf kW.h  ",E_con);
  91.                         OLED_P6x8Str(10,5,dat);
  92.                         printf((char *)dat);
  93.                         printf("\r\n");
  94.                         delay_ms(100);
  95.                         memset((void *)USART3_RX_BUF,0,sizeof(USART3_RX_BUF));
  96.                 }
  97.                
  98.         }
  99. }

復(fù)制代碼
原理圖:無
仿真:無
Keil代碼下載: STM32F103C8T6驅(qū)動(dòng)HLW8032源代碼.7z (202.14 KB, 下載次數(shù): 73)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:149799 發(fā)表于 2023-7-10 11:21 | 顯示全部樓層
謝謝分享,注釋詳細(xì)。
回復(fù)

使用道具 舉報(bào)

ID:58907 發(fā)表于 2023-7-24 08:57 | 顯示全部樓層
謝謝分享,注釋詳細(xì)。
回復(fù)

使用道具 舉報(bào)

ID:5810 發(fā)表于 2025-3-18 13:08 | 顯示全部樓層
謝謝分享;學(xué)習(xí)了;
回復(fù)

使用道具 舉報(bào)

ID:696742 發(fā)表于 2025-3-19 08:00 | 顯示全部樓層
占樓
回復(fù)

使用道具 舉報(bào)

ID:45026 發(fā)表于 2025-3-19 09:35 | 顯示全部樓層
學(xué)習(xí)了,資料程序很不錯(cuò),感謝分享  
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区在线播放 | 久久久久久九九九九九九 | www.三级| 成人h视频在线 | 久久免费精品 | 亚洲欧美日韩精品久久亚洲区 | 亚洲欧美一区二区三区国产精品 | 精品综合在线 | 欧美精品中文 | 天天天天操 | 日韩欧美国产一区二区三区 | 国产日韩欧美精品一区二区 | 一区二区三区免费 | 国产成人免费一区二区60岁 | 国产农村妇女精品一二区 | 国产成人精品一区二 | 免费高潮视频95在线观看网站 | 综合久久久 | 国产在线永久免费 | 国产片侵犯亲女视频播放 | 中文字幕 视频一区 | 毛片免费看 | 午夜私人影院在线观看 | 久久精品欧美视频 | jvid精品资源在线观看 | 亚洲精品久久 | 日韩国产欧美一区 | 久久久久久综合 | 久久美国| 成人一级视频在线观看 | 人人艹人人 | 一本一道久久a久久精品综合蜜臀 | 秋霞a级毛片在线看 | 一区二区三区影院 | 99精品欧美一区二区三区综合在线 | 人妖一区 | 久久最新| 天堂成人国产精品一区 | 久久新| 久久精品99久久 | 欧美日韩在线一区二区 |