標(biāo)題: 基于STM32的智能溫度控制系統(tǒng)源碼 [打印本頁(yè)]

作者: 用戶21111413    時(shí)間: 2018-4-30 20:13
標(biāo)題: 基于STM32的智能溫度控制系統(tǒng)源碼


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

單片機(jī)源程序如下:
  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");        //主機(jī)
  23.         else LCD_ShowString(0,240,200,16,16,"ROLE:Slave ");                                         //從機(jī)
  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í)函數(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;                                        //點(diǎn)亮LED         
  47.          POINT_COLOR=RED;//設(shè)置字體為紅色
  48.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級(jí)分組
  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的計(jì)數(shù)頻率,計(jì)數(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ù)長(zhǎng)度
  134.                           USART2_RX_BUF[reclen]=0;                 //加入結(jié)束符
  135.                         if(reclen==9||reclen==8)                 //控制DS1檢測(cè)
  136.                         {
  137.                                 if(strcmp((const char*)USART2_RX_BUF,"+LED1 ON")==0)LED1=0;        //打開(kāi)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)





作者: admin    時(shí)間: 2018-5-2 02:44
能分享下原理圖和APP嗎?
作者: aestest    時(shí)間: 2018-5-2 15:26
贊,正需要!
作者: wyj841224    時(shí)間: 2018-5-2 16:50
學(xué)習(xí)一下,看的我一臉悶逼。不過(guò)還要謝謝大神!
作者: 用戶21111413    時(shí)間: 2018-5-3 09:13
admin 發(fā)表于 2018-5-2 02:44
能分享下原理圖和APP嗎?

我是用的開(kāi)發(fā)板了,原理圖就是正點(diǎn)原子的Mini版的原理圖,然后APP網(wǎng)上也有對(duì)應(yīng)的了 如果需要的話 可以留下QQ我發(fā)你
作者: DOTHAT202    時(shí)間: 2018-5-3 13:46
贊,正需要!
作者: 1747641898    時(shí)間: 2018-5-17 11:09
老哥1    那個(gè)溫度傳感器線是怎么連的   help  給個(gè)具體流程
作者: 用戶21111413    時(shí)間: 2018-6-14 10:57
1747641898 發(fā)表于 2018-5-17 11:09
老哥1    那個(gè)溫度傳感器線是怎么連的   help  給個(gè)具體流程

溫度傳感器是用的lm35d,只有三個(gè)端子,兩個(gè)供電,一個(gè)給ADC采集的io即可
作者: 用戶21111413    時(shí)間: 2018-6-14 10:58
wyj841224 發(fā)表于 2018-5-2 16:50
學(xué)習(xí)一下,看的我一臉悶逼。不過(guò)還要謝謝大神!

哈哈 謝謝你
作者: 舒舒舒舒    時(shí)間: 2018-6-22 21:28
請(qǐng)問(wèn)有仿真圖嗎。。
作者: vicky000    時(shí)間: 2018-6-23 21:47
串口的作用是什么啊 沒(méi)有看懂這部分的程序
作者: tzpp    時(shí)間: 2019-5-2 15:00
感謝分享
作者: NikDomi1560    時(shí)間: 2019-5-31 10:47
謝謝樓主
作者: ZJTOP168    時(shí)間: 2019-6-4 21:27
461668926QQ,發(fā)下app,謝謝!

作者: aaaaaa。    時(shí)間: 2019-6-13 20:08
感謝分享
作者: 1436    時(shí)間: 2019-7-22 18:48
這個(gè)TIM3定時(shí)器進(jìn)入中斷什么都沒(méi)做啊 求解  新手
作者: hhkjvip    時(shí)間: 2019-12-30 10:58
感謝樓主的分享
作者: huaxiao164413    時(shí)間: 2020-6-15 12:32
老哥可以提供一下源文件嗎  我想自己仿真一下,不知道怎么連線




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1