找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于STM32的智能溫度控制系統(tǒng)源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:165873 發(fā)表于 2018-4-30 20:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


將采集的溫度通過藍(lán)牙模塊實時傳給手機。我重新回來了 以后經(jīng)常分享

單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "lcd.h"
  6. #include "key.h"
  7. #include "adc.h"
  8. #include "math.h"
  9. #include "exti.h"
  10. #include "timer.h"
  11. #include "hc05.h"
  12. #include "usart2.h"                                 
  13. #include "string.h"        


  14. u8 yuzhi=25;
  15. u8 shangxian=0;
  16. u8 xiaxian=0;
  17. u8 wendu_4=0;
  18. float wendu_1=0,wendu_2=0,wendu_3;




  19. //顯示ATK-HC05模塊的主從狀態(tài)
  20. void HC05_Role_Show(void)
  21. {
  22.         if(HC05_Get_Role()==1)LCD_ShowString(0,240,200,16,16,"ROLE:Master");        //主機
  23.         else LCD_ShowString(0,240,200,16,16,"ROLE:Slave ");                                         //從機
  24. }
  25. //顯示ATK-HC05模塊的連接狀態(tài)
  26. void HC05_Sta_Show(void)
  27. {                                                                                                
  28.         if(HC05_LED)LCD_ShowString(90,240,120,16,16,"STA:Connected ");                        //連接成功
  29.         else LCD_ShowString(90,240,120,16,16,"STA:Disconnect");                                 //未連接                                 
  30. }


  31. int main(void)
  32. {
  33.          u16 adcx;
  34.          u8 sendcnt_1=0;
  35.          u8 sendcnt_2=0;
  36.          u8 sendbuf[40];         
  37.          u8 reclen=0;  
  38.          float temp;
  39.          delay_init();                     //延時函數(shù)初始化         
  40.          uart_init(9600);                 //串口初始化為9600
  41.          LED_Init();                                  //初始化與LED連接的硬件接口
  42.           LCD_Init();
  43.           Adc_Init();                                  //ADC初始化        
  44.           EXTIX_Init();                //外部中斷初始化         
  45.          KEY_Init();                  //初始化與按鍵連接的硬件接口
  46.          LED0=0;                                        //點亮LED         
  47.          POINT_COLOR=RED;//設(shè)置字體為紅色
  48.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級分組
  49.          LCD_ShowString(50,0,200,16,16,"The Eighth Group");
  50.          LCD_ShowString(0,20,200,16,16,"Temperature Control intel");        
  51.          LCD_ShowString(60,40,200,16,16,"-ligent System");
  52.          LCD_ShowString(0,60,200,16,16,"Set the threshold:");
  53.          LCD_ShowString(160,60,200,16,16,"'C");        
  54.      LCD_ShowString(0,80,200,16,16,"Data:2018/4/28");        
  55.          LCD_ShowString(0,100,200,16,16,"Temperature:00.0'C");        
  56.          LCD_ShowString(0,120,200,16,16,"ADC_CH1_VAL:");         
  57.          LCD_ShowString(0,140,200,16,16,"ADC_CH1_VOL:0.000V");
  58.          LCD_ShowString(0,160,200,16,16,"Current Process:");  
  59.          LCD_ShowString(128,160,200,16,16,"KEEP");
  60.          LCD_ShowString(0,180,200,16,16,"ShangXian:00'C");
  61.          LCD_ShowString(0,200,200,16,16,"XiaXian:00'C");
  62.          
  63.          
  64.          POINT_COLOR=MAGENTA;
  65.          //顯示提示信息
  66.          LCD_ShowString(0,260,200,16,16,"Send:");        
  67.          LCD_ShowString(0,280,200,16,16,"Receive:");
  68.          while(HC05_Init())                 //初始化ATK-HC05模塊  
  69.          {
  70.                  LCD_ShowString(0,220,200,16,16,"ATK-HC05 Error!");
  71.                  delay_ms(500);
  72.                  LCD_ShowString(0,220,200,16,16,"Please Check!!!");
  73.                  delay_ms(100);
  74.          }                 
  75.          LCD_ShowString(0,220,200,16,16,"ATK-HC05 Standby!");
  76.          HC05_Sta_Show();
  77.          HC05_Role_Show();
  78.          POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
  79.          LCD_ShowxNum(144,60,yuzhi,2,16,0X80);
  80.          while(1)
  81.         {
  82.                 TIM3_Int_Init(9999,7199);//10Khz的計數(shù)頻率,計數(shù)到5000為500ms  
  83.                 LED0=!LED0;
  84.                 adcx=Get_Adc_Average(ADC_Channel_1,10);
  85.                 POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
  86.                 LCD_ShowxNum(96,120,adcx,4,16,0);//顯示ADC的值
  87.                 temp=(float)adcx*(3.3/4096);
  88.                 wendu_1=temp*10;
  89.                 adcx=temp;
  90.                 LCD_ShowxNum(96,140,adcx,1,16,0);//顯示電壓值
  91.                 temp-=adcx;
  92.                 temp*=1000;
  93.                 LCD_ShowxNum(112,140,temp,3,16,0X80);
  94.                 LED0=!LED0;
  95.                 delay_ms(250);        
  96.                 wendu_3=(float)(10000*wendu_1+25692)/2107;
  97.                 wendu_4=wendu_3;
  98.                 sendcnt_1=wendu_3;
  99.                
  100.                 LCD_ShowxNum(96,100,wendu_3,2,16,0);//
  101.                 wendu_3-=wendu_4;
  102.                 wendu_2=wendu_3*10;
  103.                 sendcnt_2=wendu_2;
  104.                 LCD_ShowxNum(120,100,wendu_2,1,16,0);//
  105.                 delay_ms(200);
  106.                 POINT_COLOR=MAGENTA;
  107.                 sprintf((char*)sendbuf,"Temperature:%d.%d'C\r\n",sendcnt_1,sendcnt_2);
  108.                   LCD_ShowString(48,260,200,16,16,sendbuf);        //顯示發(fā)送數(shù)據(jù)        
  109.                 u2_printf("Temperature: %d.%d\r\n",sendcnt_1,sendcnt_2);                //發(fā)送到藍(lán)牙模塊
  110.                
  111.                 POINT_COLOR=BLUE;
  112.                 if(wendu_4>=shangxian)
  113.                 {
  114.                         LCD_ShowString(128,160,200,16,16,"SNOW");
  115.                         GPIO_ResetBits(GPIOC,GPIO_Pin_0);        
  116.                         GPIO_SetBits(GPIOC,GPIO_Pin_1);        
  117.                 }
  118.                 if(wendu_4<=xiaxian)
  119.                 {
  120.                         LCD_ShowString(128,160,200,16,16,"HOT ");
  121.                         GPIO_ResetBits(GPIOC,GPIO_Pin_1);        
  122.                         GPIO_SetBits(GPIOC,GPIO_Pin_0);                                       
  123.                 }
  124.                 if(wendu_4<shangxian&&wendu_4>xiaxian)
  125.                 {
  126.                         LCD_ShowString(128,160,200,16,16,"KEEP");
  127.                         GPIO_ResetBits(GPIOC,GPIO_Pin_0);        
  128.                         GPIO_ResetBits(GPIOC,GPIO_Pin_1);        
  129.                 }
  130.                 if(USART2_RX_STA&0X8000)                        //接收到一次數(shù)據(jù)了
  131.                 {
  132.                         LCD_Fill(64,280,264,300,WHITE);        //清除顯示
  133.                          reclen=USART2_RX_STA&0X7FFF;        //得到數(shù)據(jù)長度
  134.                           USART2_RX_BUF[reclen]=0;                 //加入結(jié)束符
  135.                         if(reclen==9||reclen==8)                 //控制DS1檢測
  136.                         {
  137.                                 if(strcmp((const char*)USART2_RX_BUF,"+LED1 ON")==0)LED1=0;        //打開LED1
  138.                                 if(strcmp((const char*)USART2_RX_BUF,"+LED1 OFF")==0)LED1=1;//關(guān)閉LED1
  139.                         }
  140.                         POINT_COLOR=MAGENTA;
  141.                          LCD_ShowString(64,280,200,119,16,USART2_RX_BUF);//顯示接收到的數(shù)據(jù)
  142.                          USART2_RX_STA=0;         
  143.                 }                                         
  144.         }                                                                                    
  145. }
復(fù)制代碼

所有資料51hei提供下載:
傳感器課設(shè)程序32版終.rar (366.14 KB, 下載次數(shù): 232)




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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-5-2 02:44 | 只看該作者
能分享下原理圖和APP嗎?
回復(fù)

使用道具 舉報

板凳
ID:318517 發(fā)表于 2018-5-2 15:26 | 只看該作者
贊,正需要!
回復(fù)

使用道具 舉報

地板
ID:228186 發(fā)表于 2018-5-2 16:50 | 只看該作者
學(xué)習(xí)一下,看的我一臉悶逼。不過還要謝謝大神!
回復(fù)

使用道具 舉報

5#
ID:165873 發(fā)表于 2018-5-3 09:13 | 只看該作者
admin 發(fā)表于 2018-5-2 02:44
能分享下原理圖和APP嗎?

我是用的開發(fā)板了,原理圖就是正點原子的Mini版的原理圖,然后APP網(wǎng)上也有對應(yīng)的了 如果需要的話 可以留下QQ我發(fā)你
回復(fù)

使用道具 舉報

6#
ID:304456 發(fā)表于 2018-5-3 13:46 | 只看該作者
贊,正需要!
回復(fù)

使用道具 舉報

7#
ID:330264 發(fā)表于 2018-5-17 11:09 | 只看該作者
老哥1    那個溫度傳感器線是怎么連的   help  給個具體流程
回復(fù)

使用道具 舉報

8#
ID:165873 發(fā)表于 2018-6-14 10:57 | 只看該作者
1747641898 發(fā)表于 2018-5-17 11:09
老哥1    那個溫度傳感器線是怎么連的   help  給個具體流程

溫度傳感器是用的lm35d,只有三個端子,兩個供電,一個給ADC采集的io即可
回復(fù)

使用道具 舉報

9#
ID:165873 發(fā)表于 2018-6-14 10:58 | 只看該作者
wyj841224 發(fā)表于 2018-5-2 16:50
學(xué)習(xí)一下,看的我一臉悶逼。不過還要謝謝大神!

哈哈 謝謝你
回復(fù)

使用道具 舉報

10#
ID:346024 發(fā)表于 2018-6-22 21:28 | 只看該作者
請問有仿真圖嗎。。
回復(fù)

使用道具 舉報

11#
ID:357360 發(fā)表于 2018-6-23 21:47 | 只看該作者
串口的作用是什么啊 沒有看懂這部分的程序
回復(fù)

使用道具 舉報

12#
ID:525968 發(fā)表于 2019-5-2 15:00 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報

13#
ID:481039 發(fā)表于 2019-5-31 10:47 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報

14#
ID:473205 發(fā)表于 2019-6-4 21:27 | 只看該作者
461668926QQ,發(fā)下app,謝謝。
回復(fù)

使用道具 舉報

15#
ID:511461 發(fā)表于 2019-6-13 20:08 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報

16#
ID:491301 發(fā)表于 2019-7-22 18:48 | 只看該作者
這個TIM3定時器進入中斷什么都沒做啊 求解  新手
回復(fù)

使用道具 舉報

17#
ID:677258 發(fā)表于 2019-12-30 10:58 | 只看該作者
感謝樓主的分享
回復(fù)

使用道具 舉報

18#
ID:779823 發(fā)表于 2020-6-15 12:32 | 只看該作者
老哥可以提供一下源文件嗎  我想自己仿真一下,不知道怎么連線
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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