找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2677|回复: 3
收起左侧

STM32+DS18B20恒温控制程序 蜂鸣器报警

[复制链接]
ID:488831 发表于 2020-1-5 09:21 | 显示全部楼层 |阅读模式
内含报警指示灯+恢复按键,原本是打算用LCD显示,但是由于硬件LCD引脚没设计连成一片,导致CLD驱动代码不好写,遂改用串口调试助手显示。

单片机源程序如下:
  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();                     //延时函数初始化
  14.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  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;        //平时使它不报警
  41.         BAOJIN=1;//报警LED置高,使它平时不亮
  42. //                 GPIO_SetBits(GPIOA,GPIO_Pin_5);

  43.                 if(t%10==0)                        //每100ms读取一次
  44.                 {                                                                          
  45.                         temperature=DS18B20_Get_Temp();
  46.             printf("   当前温度为  %2.4f",temperature*0.0625);       
  47.                          printf("  摄氏度");       
  48.             printf("\r\n");       
  49.                        
  50.                        
  51.                        
  52.                        
  53.                        
  54.                         /**PA5当温度大于多少时使蜂鸣器BEEP响     PA7红光LED闪烁BAOJIN **/
  55.            if((temperature*0.0625>=10)&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))///**********报警值设置*****////
  56.                    {
  57.                   
  58.                 BEEP=0;       
  59.                    BAOJIN=1;         //报警
  60.                 delay_ms(100);//延时300ms
  61.                 BEEP=1;  
  62.                 BAOJIN=0;          
  63.                 delay_ms(300);//延时300ms
  64.             printf("   超过规定温度,开始报警,红灯闪烁,危险!请撤离\r\n");
  65.             printf("\r\n");       
  66.                   
  67.                    }       
  68.                        
  69.                 }                       

  70.                

  71.         }
  72. }
复制代码

所有资料51hei提供下载:
18B20数字温度传感器实验.7z (195.67 KB, 下载次数: 102)
回复

使用道具 举报

ID:91165 发表于 2020-2-25 15:23 | 显示全部楼层
下来了,谢谢楼主
回复

使用道具 举报

ID:743099 发表于 2020-5-9 01:23 | 显示全部楼层
有原理图就好了
回复

使用道具 举报

ID:748161 发表于 2020-5-16 09:29 | 显示全部楼层
感谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表