標(biāo)題:
STM32單片機(jī)多功能智能插座設(shè)計(jì)
[打印本頁]
作者:
聊聊
時(shí)間:
2020-2-9 20:04
標(biāo)題:
STM32單片機(jī)多功能智能插座設(shè)計(jì)
本次設(shè)計(jì)采用了32單片機(jī)來完成,真正的完成了電能的采集與管理
單片機(jī)源程序如下:
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "usart3.h"
#include "esp8266.h"
#include "string.h"
#include "timer.h"
#include "led.h"
#include "adc.h"
#include "lcd.h"
/*
項(xiàng)目的主要內(nèi)容:STM32配合ESP8266模塊與服務(wù)器數(shù)據(jù)交互
ESP8266的連接:USART3(PB10、PB11)
如何判斷數(shù)據(jù)接收完全?
1、出現(xiàn)了換行符;
2、如果超過10ms了都沒有下一條數(shù)據(jù)(TIM7來進(jìn)行10ms的定時(shí))。
*/
int main(void)
{ char a[15];
float k,kk;
float w;
u8 * m="zhinengchazuo";
u16 adcx;
float temp;
delay_init(); //延時(shí)函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
uart_init(115200); //串口初始化為115200
//LED_Init(); //LED端口初始化
LCD_Init();
Adc_Init(); //ADC初始化
POINT_COLOR=RED;//設(shè)置字體為紅色
LCD_ShowString(60,50,200,16,16,m);
//LCD_ShowString(60,70,200,16,16,"信通學(xué)院");
//LCD_ShowString(60,90,200,16,16,"智能插座");
LCD_ShowString(60,110,200,16,16,"2019/12/9");
//顯示提示信息
POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");
LCD_ShowString(60,150,200,16,16," V :0.000V");
LCD_ShowString(60,170,200,16,16," W :0.000W");
//delay_init(); //延時(shí)函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
//uart_init(115200); //串口初始化為115200
usart3_init(115200); //串口初始化為115200
LED_Init();
esp8266_start_trans(); //esp8266進(jìn)行初始化
while(1)
{
if(USART3_RX_STA&0xf000)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
LCD_ShowxNum(156,130,adcx,4,16,0);//顯示ADC的值
temp=(float)adcx*(3.3/4096);
adcx=temp;
w=adcx*4;
LCD_ShowxNum(156,150,w,1,16,0);//顯示電壓值
temp-=adcx;
temp*=1000;
LCD_ShowxNum(172,150,temp,3,16,0X80);
kk=(float)temp*(3.3/4000);
adcx=kk;
k=w/2;
LCD_ShowxNum(156,170,k,1,16,0);//顯示電壓值
kk-=adcx;
kk*=1000;
LCD_ShowxNum(172,170,kk,3,16,0X80);
delay_ms(250);
printf("USART3_RX_BUF=%s\r\n",USART3_RX_BUF);
sprintf(a,"%s",USART3_RX_BUF);
printf("a=%s",a);
if(strstr((const char*)a,"on")) GPIO_ResetBits(GPIOB,GPIO_Pin_5);
if(strstr((const char*)a,"off")) GPIO_SetBits(GPIOB,GPIO_Pin_5);
USART3_RX_STA=0;
}
}
}
復(fù)制代碼
所有程序51hei提供下載:
設(shè)計(jì)程序代碼.7z
(235.75 KB, 下載次數(shù): 23)
2020-2-10 01:53 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時(shí)間:
2020-2-10 01:53
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1