标题:
STM32单片机DS18B20温度报警器代码
[打印本页]
作者:
liusanqian
时间:
2023-7-30 09:50
标题:
STM32单片机DS18B20温度报警器代码
https://www.bilibili.com/video/B ... 78b8bd0daeff4af627f
#include "DS18B20.h"
#include "Buzzer.h"
#include "delay.h"
#include "usart.h"
#include "TPAD.h"
#include "lcd.h"
#include "led.h"
#include "sys.h"
float T;
u8 TFlag, TH;
int main(void)
{
Buzzer_Init();
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
TPAD_Init(6);
uart_init(115200); //串口初始化为 115200
LED_Init(); //初始化与LED连接的硬件接口
LCD_Init(); //初始化LCD
POINT_COLOR = RED; //设置字体为红色
LCD_ShowString(30, 50, 200, 16, 16, "ELITE STM32");
LCD_ShowString(30, 70, 200, 16, 16, "DS18B20 TEST");
LCD_ShowString(30, 90, 200, 16, 16, "ATOM@ALIENTEK");
LCD_ShowString(30, 110, 200, 16, 16, "2023/6/10");
while(DS18B20_Init())
{
LCD_ShowString(30, 130, 200, 16, 16, "DS18B20 Error");
delay_ms(200);
LCD_Fill(30, 130, 239, 130+16, WHITE);
delay_ms(200);
}
LCD_ShowString(30, 130, 200, 16, 16, "DS18B20 OK");
POINT_COLOR = BLUE; //设置字体为蓝色
LCD_ShowString(30, 150, 200, 16, 16, "Temp: . C");
while(1)
{
DS18B20_ConvertT();
T = DS18B20_ReadT();
if(T < 0)
{
LCD_ShowChar(30+40, 150, '-', 16, 0); //显示负号
T = -T;
}
else
{
LCD_ShowChar(30+40, 150, '+', 16, 0); //显示正号
}
LCD_ShowNum(30+40+8, 150, T, 2, 16); //显示正数部分
LCD_ShowNum(30+40+32, 150, (u32)(T * 10000) % 10000, 4, 16);
if(T > 31.0000 && TFlag == 0)
{
if(TPAD_Scan(0)) //成功捕获到了一次上升沿(此函数执行时间至少15ms)
{
LED1 =! LED1;
TH = 2;
}
else if((TH == 0 || TH == 1 || TH == 2) && TPAD_Scan(0) == 0)
{
TH = 1;
}
}
else if(T <= 31.0000)
{
LED0 =! LED0;
delay_ms(100);
TH = 0;
TFlag = 0;
}
switch(TH)
{
case 1:Buzzer_ON();delay_ms(50);Buzzer_OFF();delay_ms(100);break;
case 2:Buzzer_OFF();TFlag = 1;break;
}
}
}
复制代码
原理图:无
仿真:无
Keil代码:
程序.7z
(213.77 KB, 下载次数: 32)
2023-7-30 13:42 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1