024【毕设课设】基于单片机宿舍防火防盗系统的设计,主要实现防火和红外防盗系统。
说明:选择键选择第几路温度或者烟雾传感显示,设置键选择设置温度上限还是烟雾上限,默认温度上限。加
减键分别对上限值进行加减。
注意:按键需要按下半秒才生效,1/2表示烟雾浓度路数,3/4表示温度路数,本设计并提供实时检测寝室温度,
以确保准确性。声音报警有稍微延迟,仿真中正常现象。
【资源下载】下载地址如下:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
#include <REGX51.H>
#include "1602.H"
#include "DS18B20.h"
extern unsigned char ReadAdc0832( unsigned char channel );
extern void DelayMs( unsigned char t );
unsigned int Temp[5]; /* 5路温度值温度放大10倍 */
int DS18B20DATA[3]; /* DS18B20读到的16位数据 */
code unsigned char DecimalNum[16] = { 0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9 }; /* DS18B20小数部分对应的数 */
unsigned char code DuanMa[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };
sbit LED = P3 ^ 1; /* LED报警 */
sbit BEEP = P3 ^ 5; /* 蜂蜜其报警 */
sbit LE = P3 ^ 0;
sbit Key = P1 ^ 0;
sbit SET = P1 ^ 7; /* 设置键 */
sbit ADD = P3 ^ 3; /* 加++1 */
sbit DEC = P3 ^ 4; /* 减--1 */
unsigned char flag = 1;
unsigned char CurID; /* 路数ID */
unsigned int s = 450; /* 烟雾上限 放大十倍 */
unsigned int t = 360; /* 温度上限 放大十倍 */
/* 显示段码值01234567 */
unsigned char LCDbuf[16];
/* AD模拟量读取 */
void LM35Read( void )
{
Temp[0] = ReadAdc0832( 0 ) * 10;
DelayMs( 10 );
Temp[1] = ReadAdc0832( 1 ) * 10;
DelayMs( 10 );
}
/* DS18B20温度读取 */
void DS18B20Read()
{
gettemp( DS18B20DATA );
Temp[2] = (DS18B20DATA[0] >> 4) * 10 + DecimalNum[DS18B20DATA[0] & 0x0f];
Temp[3] = (DS18B20DATA[1] >> 4) * 10 + DecimalNum[DS18B20DATA[1] & 0x0f];
Temp[4] = (DS18B20DATA[2] >> 4) * 10 + DecimalNum[DS18B20DATA[2] & 0x0f]; /* 环境温度 */