找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5333|回复: 3
打印 上一主题 下一主题
收起左侧

stm32+ADE7758的智能电表源码

[复制链接]
跳转到指定楼层
楼主
ID:273465 发表于 2018-1-8 21:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于ADE7758的智能电表,完美源程序

单片机源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "key.h"
  6. #include "timer.h"
  7. #include "lcd.h"
  8. #include "rtc.h"
  9. #include "my.h"
  10. #include "myeth.h"
  11. #include "spi.h"
  12. #include "ade7758.h"
  13. #include "remote.h"
  14. #include "text.h"

  15. u8 tRxBuf[300],tTxBuf[300],tDataBuf[900];
  16. extern u8 MyCommunicationMode;
  17. int main(void)
  18. {
  19.         u8 key,t;
  20.         u8 DataBuf[300]={0x00,0x22,0x50,0x22,0x60,0x22,0x23,0x51,0x00,0x45,0x23,0x01,0x89,0x37,0x12};
  21.         u32 ans,Overflow,rec,i;
  22.         u8 ans1[4];
  23.         u16 len;
  24.         delay_init();               //延时初始化
  25.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  26.         uart_init(115200);           //串口波特率设置
  27.         LED_Init();                          //LED初始化
  28.         KEY_Init();                          //按键初始化
  29.         LCD_Init();                         //LCD初始化
  30.         FSMC_SRAM_Init();                //初始化外部SRAM  
  31.         My_RTC_Init();                  //RTC初始化
  32.         TIM3_Int_Init(999,839); //100khz的频率,计数1000为10ms
  33.         mymem_init(SRAMIN);                //初始化内部内存池
  34.         mymem_init(SRAMEX);                //初始化外部内存池
  35.         mymem_init(SRAMCCM);        //初始化CCM内存池
  36.         W25QXX_Init(); //W25QXX Flash初始化
  37.         ADE_IDInitial();
  38.         ADE_Init();
  39.         Remote_Init();
  40.         font_init();
  41.         POINT_COLOR = RED;                 //红色字体
  42.         
  43.         
  44.         for(i=0;i<812;i++)   //向W25QXX写数据
  45.         {
  46.                 t=i%4;
  47.                 DataBuf[i]=t;
  48.         }
  49.         W25QXX_Write(DataBuf,VariableAddr,812);//写入测试数据
  50.                
  51.          
  52.         while(1)
  53.         {
  54.                 key=Remote_Scan();
  55.          
  56.                 LCD_ShowString(30,140,200,16,16,"key0:Ethernet key1:RS485");
  57.                 MyCommunicationMode=0;
  58.                 if (key==Rem0) MyCommunicationMode=EthernetMODE;
  59.                 else if (key==Rem1) MyCommunicationMode=RS485MODE; else
  60.                          if (key==Rem2) MyCommunicationMode=ZigbeeMODE;
  61.                 if (MyCommunicationMode==EthernetMODE)
  62.                 {
  63.                         IwIPInit();
  64.                         EtherNetCommunicationProtocol(tRxBuf,tTxBuf,tDataBuf);
  65.                 } else
  66.                 if (MyCommunicationMode==RS485MODE)
  67.                 {
  68.                         RS485_Init(9600);//485初始化
  69.                         NorCommunicationProtocol(tRxBuf,tTxBuf,tDataBuf);
  70.                 } else if (MyCommunicationMode==ZigbeeMODE)
  71.                 {
  72.                         NorCommunicationProtocol(tRxBuf,tTxBuf,tDataBuf);
  73.                 }

  74.         }
  75. }
复制代码

所有资料51hei提供下载:
meter加显示 路由器.rar (1.32 MB, 下载次数: 111)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:357107 发表于 2018-8-27 15:12 | 只看该作者
你好有硬件电路图吗
回复

使用道具 举报

板凳
ID:357107 发表于 2018-8-27 15:13 | 只看该作者
你好有硬件电路图吗
回复

使用道具 举报

地板
ID:308785 发表于 2021-5-6 22:00 | 只看该作者
这个有一定的参考价值
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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