先分享單片機程序:
火災報警.7z
(211.58 KB, 下載次數: 27)
2021-3-24 15:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "ds18b20.h"
- #include "exti.h"
- #include "beep.h"
- #include "adc.h"
- int main(void)
- {
- u8 t=0;
- u16 adcx1 = 0;
- u16 adcx2 = 0;
- short temperature;
- unsigned char buf[9]= {0};
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
- uart_init(115200); //串口初始化為 115200
- LED_Init(); //初始化與LED連接的硬件接口
- EXTIX_Init();
- BEEP_Init();
- Adc_Init();
- while(DS18B20_Init()) //DS18B20初始化
- {
- }
-
- while(1)
- {
-
- if(t%10==0) //每100ms讀取一次
- {
- buf[0]=0xFF;
- buf[8]=0xEE;
- temperature=DS18B20_Get_Temp();
- adcx1=Get_Adc_Average(ADC_Channel_1,30);
- adcx2=Get_Adc_Average(ADC_Channel_2,30);
- adcx2 = 4096 - adcx2;
- buf[2] = adcx1>>8;
- buf[3] = adcx1;
- buf[4] = temperature>>8;
- buf[5] = temperature;
- buf[6] = adcx2>>8;
- buf[7] = adcx2;
- // buf[6] = temperature>>8;
- // buf[7] = temperature;
- // printf("temperature:%d ℃\r\n",(temperature/10));
- // printf("Fire Value:%d \r\n",adcx2);
- // printf("Smoking Value:%d \r\n",adcx1);
-
- if(adcx2 > 2000 || adcx1>3000||bool_warn ||temperature>700)
- {
- buf[1] = 1;
- // printf("STATE: Fire warning \r\n\r\n\r\n");
- bool_warn =1;
- BEEP=1;
- }
- else
- {
- // printf("STATE: SAFE \r\n\r\n\r\n");
- buf[1] = 0;
- }
- for(t=0;t<9;t++)
- {
- // USART1->DR = buf[t];
- USART_SendData(USART1, (u8)buf[t]);//向串口1發送數據
- while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發送結束
- }
- }
-
- // printf("\r\n您發送的消息為:\r\n\r\n");
- delay_ms(50);
- t++;
- if(t==20)
- {
- t=0;
- LED0=!LED0;
- }
- }
- }
復制代碼
|