找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2372|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32單片機多功能智能插座設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:532517 發(fā)表于 2020-2-9 20:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本次設(shè)計采用了32單片機來完成,真正的完成了電能的采集與管理

單片機源程序如下:
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"
  4. #include "usart3.h"
  5. #include "esp8266.h"
  6. #include "string.h"
  7. #include "timer.h"
  8. #include "led.h"
  9. #include "adc.h"
  10. #include "lcd.h"
  11. /*
  12. 項目的主要內(nèi)容:STM32配合ESP8266模塊與服務(wù)器數(shù)據(jù)交互

  13. ESP8266的連接:USART3(PB10、PB11)

  14. 如何判斷數(shù)據(jù)接收完全?
  15. 1、出現(xiàn)了換行符;
  16. 2、如果超過10ms了都沒有下一條數(shù)據(jù)(TIM7來進行10ms的定時)。
  17. */


  18. int main(void)
  19. {                        char a[15];
  20.   float k,kk;
  21.                   float w;
  22.         u8 * m="zhinengchazuo";
  23.   u16 adcx;
  24.         float temp;
  25.         delay_init();                     //延時函數(shù)初始化          
  26.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級

  27.         uart_init(115200);                 //串口初始化為115200
  28.         //LED_Init();                             //LED端口初始化
  29.         LCD_Init();                                
  30.         Adc_Init();                                  //ADC初始化

  31.         POINT_COLOR=RED;//設(shè)置字體為紅色
  32.         LCD_ShowString(60,50,200,16,16,m);       
  33.         //LCD_ShowString(60,70,200,16,16,"信通學(xué)院");       
  34.         //LCD_ShowString(60,90,200,16,16,"智能插座");
  35.         LCD_ShowString(60,110,200,16,16,"2019/12/9");       
  36.         //顯示提示信息
  37.         POINT_COLOR=BLUE;//設(shè)置字體為藍色
  38.         LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");             
  39.         LCD_ShowString(60,150,200,16,16,"         V :0.000V");          
  40.         LCD_ShowString(60,170,200,16,16,"         W :0.000W");         

  41.         //delay_init();                                             //延時函數(shù)初始化          
  42.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                         //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級

  43.         //uart_init(115200);                                         //串口初始化為115200
  44.         usart3_init(115200);                                         //串口初始化為115200
  45.         LED_Init();
  46.          
  47.         esp8266_start_trans();                                                        //esp8266進行初始化
  48.        
  49.         while(1)
  50.         {
  51.                 if(USART3_RX_STA&0xf000)
  52.                 {
  53.                        
  54.                 adcx=Get_Adc_Average(ADC_Channel_1,10);
  55.                 LCD_ShowxNum(156,130,adcx,4,16,0);//顯示ADC的值
  56.                 temp=(float)adcx*(3.3/4096);
  57.                 adcx=temp;
  58.                 w=adcx*4;
  59.                 LCD_ShowxNum(156,150,w,1,16,0);//顯示電壓值
  60.                 temp-=adcx;
  61.                 temp*=1000;
  62.                 LCD_ShowxNum(172,150,temp,3,16,0X80);
  63.                
  64.                 kk=(float)temp*(3.3/4000);
  65.                 adcx=kk;
  66.                 k=w/2;
  67.                 LCD_ShowxNum(156,170,k,1,16,0);//顯示電壓值
  68.                 kk-=adcx;
  69.                 kk*=1000;
  70.                 LCD_ShowxNum(172,170,kk,3,16,0X80);
  71.                
  72.                 delay_ms(250);       
  73.                   
  74.                        
  75.                         printf("USART3_RX_BUF=%s\r\n",USART3_RX_BUF);
  76.                         sprintf(a,"%s",USART3_RX_BUF);
  77.                         printf("a=%s",a);
  78.                
  79.                         if(strstr((const char*)a,"on"))   GPIO_ResetBits(GPIOB,GPIO_Pin_5);
  80.                         if(strstr((const char*)a,"off"))  GPIO_SetBits(GPIOB,GPIO_Pin_5);               
  81.                          USART3_RX_STA=0;
  82.                 }
  83.        

  84.         }
  85. }
復(fù)制代碼

所有程序51hei提供下載:
設(shè)計程序代碼.7z (235.75 KB, 下載次數(shù): 23)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2020-2-10 01:53 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表