標(biāo)題: STM32+DS18B20恒溫控制程序 蜂鳴器報(bào)警 [打印本頁]

作者: sakuralap    時(shí)間: 2020-1-5 09:21
標(biāo)題: STM32+DS18B20恒溫控制程序 蜂鳴器報(bào)警
內(nèi)含報(bào)警指示燈+恢復(fù)按鍵,原本是打算用LCD顯示,但是由于硬件LCD引腳沒設(shè)計(jì)連成一片,導(dǎo)致CLD驅(qū)動(dòng)代碼不好寫,遂改用串口調(diào)試助手顯示。

單片機(jī)源程序如下:
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"       
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "ds18b20.h"
  7. #include "beep.h"


  8. int main(void)
  9. {         
  10.         u8 t=0;                            
  11.         float temperature;
  12.     int x;
  13.         delay_init();                     //延時(shí)函數(shù)初始化
  14.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
  15.         uart_init(115200);                 //串口初始化為 115200
  16.         LED_Init();
  17.         LCD_init();
  18.     BEEP_Init();                 //初始化蜂鳴器端口
  19.         while(DS18B20_Init())        //檢測DS18B20是否存在
  20.         {
  21. //                 LED0=1;       
  22.         }
  23. //     LED0=0;       

  24.         while(1)
  25.         {       
  26. //                if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))
  27. //                                x=0;
  28. //                        else
  29. //                                x=1;
  30.                
  31.                 /**LED3電源顯示燈**/
  32.          GPIO_SetBits(GPIOA,GPIO_Pin_6);
  33.          delay_ms(100);
  34.          GPIO_ResetBits(GPIOA,GPIO_Pin_6);
  35.          delay_ms(100);
  36.                
  37.        Wcmd(0x80+0x40+1);
  38.            Wdat('H');
  39.         
  40.                 BEEP=0;        //平時(shí)使它不報(bào)警
  41.         BAOJIN=1;//報(bào)警LED置高,使它平時(shí)不亮
  42. //                 GPIO_SetBits(GPIOA,GPIO_Pin_5);

  43.                 if(t%10==0)                        //每100ms讀取一次
  44.                 {                                                                          
  45.                         temperature=DS18B20_Get_Temp();
  46.             printf("   當(dāng)前溫度為  %2.4f",temperature*0.0625);       
  47.                          printf("  攝氏度");       
  48.             printf("\r\n");       
  49.                        
  50.                        
  51.                        
  52.                        
  53.                        
  54.                         /**PA5當(dāng)溫度大于多少時(shí)使蜂鳴器BEEP響     PA7紅光LED閃爍BAOJIN **/
  55.            if((temperature*0.0625>=10)&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))///**********報(bào)警值設(shè)置*****////
  56.                    {
  57.                   
  58.                 BEEP=0;       
  59.                    BAOJIN=1;         //報(bào)警
  60.                 delay_ms(100);//延時(shí)300ms
  61.                 BEEP=1;  
  62.                 BAOJIN=0;          
  63.                 delay_ms(300);//延時(shí)300ms
  64.             printf("   超過規(guī)定溫度,開始報(bào)警,紅燈閃爍,危險(xiǎn)!請撤離\r\n");
  65.             printf("\r\n");       
  66.                   
  67.                    }       
  68.                        
  69.                 }                       

  70.                

  71.         }
  72. }
復(fù)制代碼

所有資料51hei提供下載:
18B20數(shù)字溫度傳感器實(shí)驗(yàn).7z (195.67 KB, 下載次數(shù): 107)



作者: HWL0541    時(shí)間: 2020-2-25 15:23
下來了,謝謝樓主
作者: sugar235050    時(shí)間: 2020-5-9 01:23
有原理圖就好了
作者: 太空人吃喜之郎    時(shí)間: 2020-5-16 09:29
感謝樓主




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