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 上傳
點擊文件名下載附件
|