内含报警指示灯+恢复按键,原本是打算用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)
|