|
內(nèi)含報(bào)警指示燈+恢復(fù)按鍵,原本是打算用LCD顯示,但是由于硬件LCD引腳沒(méi)設(shè)計(jì)連成一片,導(dǎo)致CLD驅(qū)動(dòng)代碼不好寫(xiě),遂改用串口調(diào)試助手顯示。
單片機(jī)源程序如下:
- #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(); //延時(shí)函數(shù)初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
- uart_init(115200); //串口初始化為 115200
- LED_Init();
- LCD_init();
- BEEP_Init(); //初始化蜂鳴器端口
- while(DS18B20_Init()) //檢測(cè)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; //平時(shí)使它不報(bào)警
- BAOJIN=1;//報(bào)警LED置高,使它平時(shí)不亮
- // GPIO_SetBits(GPIOA,GPIO_Pin_5);
- if(t%10==0) //每100ms讀取一次
- {
- temperature=DS18B20_Get_Temp();
- printf(" 當(dāng)前溫度為 %2.4f",temperature*0.0625);
- printf(" 攝氏度");
- printf("\r\n");
-
-
-
-
-
- /**PA5當(dāng)溫度大于多少時(shí)使蜂鳴器BEEP響 PA7紅光LED閃爍BAOJIN **/
- if((temperature*0.0625>=10)&&GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))///**********報(bào)警值設(shè)置*****////
- {
-
- BEEP=0;
- BAOJIN=1; //報(bào)警
- delay_ms(100);//延時(shí)300ms
- BEEP=1;
- BAOJIN=0;
- delay_ms(300);//延時(shí)300ms
- printf(" 超過(guò)規(guī)定溫度,開(kāi)始報(bào)警,紅燈閃爍,危險(xiǎn)!請(qǐng)撤離\r\n");
- printf("\r\n");
-
- }
-
- }
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
18B20數(shù)字溫度傳感器實(shí)驗(yàn).7z
(195.67 KB, 下載次數(shù): 107)
2020-1-5 12:57 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|