內含報警指示燈+恢復按鍵,原本是打算用LCD顯示,但是由于硬件LCD引腳沒設計連成一片,導致CLD驅動代碼不好寫,遂改用串口調試助手顯示。
單片機源程序如下:
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "ds18b20.h"
- #include "beep.h"
- int main(void)
- {
- u8 t=0;
- float temperature;
- int x;
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
- uart_init(115200); //串口初始化為 115200
- LED_Init();
- LCD_init();
- BEEP_Init(); //初始化蜂鳴器端口
- while(DS18B20_Init()) //檢測DS18B20是否存在
- {
- // LED0=1;
- }
- // LED0=0;
- while(1)
- {
- // if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))
- // x=0;
- // else
- // x=1;
-
- /**LED3電源顯示燈**/
- GPIO_SetBits(GPIOA,GPIO_Pin_6);
- delay_ms(100);
- GPIO_ResetBits(GPIOA,GPIO_Pin_6);
- delay_ms(100);
-
- Wcmd(0x80+0x40+1);
- Wdat('H');
-
- BEEP=0; //平時使它不報警
- BAOJIN=1;//報警LED置高,使它平時不亮
- // GPIO_SetBits(GPIOA,GPIO_Pin_5);
- if(t%10==0) //每100ms讀取一次
- {
- temperature=DS18B20_Get_Temp();
- printf(" 當前溫度為 %2.4f",temperature*0.0625);
- printf(" 攝氏度");
- printf("\r\n");
-
-
-
-
-
- /**PA5當溫度大于多少時使蜂鳴器BEEP響 PA7紅光LED閃爍BAOJIN **/
- if((temperature*0.0625>=10)&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))///**********報警值設置*****////
- {
-
- BEEP=0;
- BAOJIN=1; //報警
- delay_ms(100);//延時300ms
- BEEP=1;
- BAOJIN=0;
- delay_ms(300);//延時300ms
- printf(" 超過規定溫度,開始報警,紅燈閃爍,危險!請撤離\r\n");
- printf("\r\n");
-
- }
-
- }
-
- }
- }
復制代碼
所有資料51hei提供下載:
18B20數字溫度傳感器實驗.7z
(195.67 KB, 下載次數: 107)
2020-1-5 12:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|