基于ADE7758的智能电表,完美源程序
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "key.h"
- #include "timer.h"
- #include "lcd.h"
- #include "rtc.h"
- #include "my.h"
- #include "myeth.h"
- #include "spi.h"
- #include "ade7758.h"
- #include "remote.h"
- #include "text.h"
- u8 tRxBuf[300],tTxBuf[300],tDataBuf[900];
- extern u8 MyCommunicationMode;
- int main(void)
- {
- u8 key,t;
- u8 DataBuf[300]={0x00,0x22,0x50,0x22,0x60,0x22,0x23,0x51,0x00,0x45,0x23,0x01,0x89,0x37,0x12};
- u32 ans,Overflow,rec,i;
- u8 ans1[4];
- u16 len;
- delay_init(); //延时初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
- uart_init(115200); //串口波特率设置
- LED_Init(); //LED初始化
- KEY_Init(); //按键初始化
- LCD_Init(); //LCD初始化
- FSMC_SRAM_Init(); //初始化外部SRAM
- My_RTC_Init(); //RTC初始化
- TIM3_Int_Init(999,839); //100khz的频率,计数1000为10ms
- mymem_init(SRAMIN); //初始化内部内存池
- mymem_init(SRAMEX); //初始化外部内存池
- mymem_init(SRAMCCM); //初始化CCM内存池
- W25QXX_Init(); //W25QXX Flash初始化
- ADE_IDInitial();
- ADE_Init();
- Remote_Init();
- font_init();
- POINT_COLOR = RED; //红色字体
-
-
- for(i=0;i<812;i++) //向W25QXX写数据
- {
- t=i%4;
- DataBuf[i]=t;
- }
- W25QXX_Write(DataBuf,VariableAddr,812);//写入测试数据
-
-
- while(1)
- {
- key=Remote_Scan();
-
- LCD_ShowString(30,140,200,16,16,"key0:Ethernet key1:RS485");
- MyCommunicationMode=0;
- if (key==Rem0) MyCommunicationMode=EthernetMODE;
- else if (key==Rem1) MyCommunicationMode=RS485MODE; else
- if (key==Rem2) MyCommunicationMode=ZigbeeMODE;
- if (MyCommunicationMode==EthernetMODE)
- {
- IwIPInit();
- EtherNetCommunicationProtocol(tRxBuf,tTxBuf,tDataBuf);
- } else
- if (MyCommunicationMode==RS485MODE)
- {
- RS485_Init(9600);//485初始化
- NorCommunicationProtocol(tRxBuf,tTxBuf,tDataBuf);
- } else if (MyCommunicationMode==ZigbeeMODE)
- {
- NorCommunicationProtocol(tRxBuf,tTxBuf,tDataBuf);
- }
- }
- }
复制代码
所有资料51hei提供下载:
meter加显示 路由器.rar
(1.32 MB, 下载次数: 112)
|