標題:
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(); //延時函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
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); //顯示正數(shù)部分
LCD_ShowNum(30+40+32, 150, (u32)(T * 10000) % 10000, 4, 16);
if(T > 31.0000 && TFlag == 0)
{
if(TPAD_Scan(0)) //成功捕獲到了一次上升沿(此函數(shù)執(zhí)行時間至少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, 下載次數(shù): 32)
2023-7-30 13:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1