当前位置:首页 > 基于单片机的智能住宅防盗报警系统设计与仿真 - 图文
基于单片机的智能住宅防盗报警系统设计与仿真
本论文中,软件解决的主要问题是检测温度传感器、烟雾传感器和红外人体传感器的温度信号、烟雾信号和非法入侵信号,然后对信号进行显示和判断,在超出预设报警值时候发出报警。
5.1主程序模块
主程序主要是完成系统初始化、设置中断矢量、以及调用显示等等。主程序部分如下所示:
Main主程序:
#include
void main()
{ TMOD=0x11; //定时器T1初始化 TH1=(65535-1000)/256; TL1=(65535-1000)%6; EA=1; ET0=1; ET1=1; TR0=1; TR1=1;
Init_DS18B20(); //温度芯片初始化 P0=0xff; //初始化断口 P1=0xff; P3=0xff; while(1)
{ Scan_Key();
- 20 -
基于单片机的智能住宅防盗报警系统设计与仿真
baojin() value = ReadAdc0832(0);//读取温度传感器的温度 } }
5.2温度采集处理模块
本次设计由于采用集成数字温度传感器DS18B20,所以不需A/D转换。本次设计中为了演示方便,将温度传感器的报警限设为45℃,而在实际当中其温度报警限为60℃。
温度采集转换流程图如图5.2所示:
开始
写控制字
图5.2 温度采集流程图
初始化DS18B20 读取温度 返回 18b20程序:
#include
void Delay(int num)//延时函数 2uS/次 {
while(num--);
- 21 -
基于单片机的智能住宅防盗报警系统设计与仿真
}
void Init_DS18B20(void)//初始化ds18b20 {
unsigned char x=0; DQ = 1; //DQ复位 Delay(8); //稍做延时
DQ = 0; //单片机将DQ拉低 Delay(80); //精确延时 大于 480us DQ = 1; //拉高总线
Delay(14);//稍作延时后,若x=0则初始化成功,x=1则初始化失败
x=DQ; Delay(20); }
unsigned char ReadOneChar(void)//读一个字节 {
unsigned char i=0;
unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; Delay(4);
}
return(dat); }
void WriteOneChar(unsigned char dat)//写一个字节 {
unsigned char i=0;
- 22 -
基于单片机的智能住宅防盗报警系统设计与仿真
for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; Delay(5); DQ = 1; dat>>=1; } }
unsigned int ReadTemperature(void)//读取温度 {
unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换 Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器 a=ReadOneChar(); //读低8位 b=ReadOneChar(); //读高8位 t=b; t<<=8; t=t|a;
tt=t*0.0625;
t= tt*10+0.5; //放大10倍输出并四舍五入 return(t); }
5.3 烟雾采集处理模块
1.标度变换概念
- 23 -
共分享92篇相关文档