宿州学院毕业论文设计 基于单片机的防火防盗报警系统
unsigned char ad0832read(bit SGL,bit ODD) {
unsigned char i=0,value=0,value1=0;
SCL=0; DO=1; CS=0; SCL=1; SCL=0; DO=SGL;
SCL=1; //第二个上升沿 SCL=0; DO=ODD;
SCL=1; //第三个上升沿 SCL=0; //第三个下降沿 DO=1;
for(i=0;i<8;i++) { }
for(i=0;i<8;i++) { } CS=1; SCL=1;
if(value==value1)
//与校验数据比较,正确就返回数据,否则
//接收校验数据
value1>>=1; if(DO)
value1+=0x80; SCL=1; SCL=0; SCL=1;
SCL=0; //开始从第四个下降沿接收数据 value<<=1; if(DO)
value++;
//开始 //第一个上升沿
返回0
35
宿州学院毕业论文设计 基于单片机的防火防盗报警系统
}
return value;
return 0;
/*************定时器0初始化程序***************/ void time_init() { }
/********************独立按键程序*****************/ uchar key_can;
void key() //独立按键程序 {
static uchar key_new;
key_can = 20; //按键值还原 P1 |= 0x0f;
if((P1 & 0x0f) != 0x0f) {
EA = 1; //开总中断
TMOD = 0X01; //定时器0、定时器1工作方式1 ET0 = 1; TR0 = 1;
//开定时器0中断 //允许定时器0定时
//按键值
//按键按下
delay_1ms(1); //按键消抖动
if(((P1 & 0x0f) != 0x0f) && (key_new == 1)) {
//确认是按键按下
key_new = 0; switch(P1 & 0x0f) {
case 0x0e: key_can = 4; break; //得到k1键值 case 0x0d: key_can = 3; break; //得到k2键值 case 0x0b: key_can = 2; break; //得到k3键值
36
宿州学院毕业论文设计 基于单片机的防火防盗报警系统
}
}
case 0x07: key_can = 1; break; //得到k4键值
}
}
else
key_new = 1;
/****************按键处理LCD1602液晶显示函数***************/ void key_with() {
if(key_can == 4) //紧急报警键 手动报警 { }
if(key_can == 1) //设置键 { }
if(menu_1 == 0) { }
if(menu_1 == 1) {
if(menu_1 == 0)
shoudong = 1;
menu_1 ++; if(menu_1 >= 3) { }
if(menu_1 == 0)
init_1602() ; //初始化显示 menu_1 = 0;
if((key_can == 2) || (key_can == 3))
shoudong = 0; //取消手动报警
//设置高温报警
if(key_can == 2) {
37
宿州学院毕业论文设计 基于单片机的防火防盗报警系统
}
s_temp ++ ;
//高温报警值加1
if(s_temp > 99)
s_temp = 99;
if(key_can == 3) { }
write_sfm2(1,8,s_temp); //显示温度 write_sfm2(2,8,s_dengji);
//显示烟物等级
write_com(0x80+7); //将光标移动到第2行第到3位 write_com(0x0f); //显示光标并且闪烁 write_eeprom(); //保存数据
s_temp -- ;
//高温报警值减1
if(s_temp <= 10)
s_temp = 10 ;
}
if(menu_1 == 2) {
//设置低温报警
if(key_can == 2) { }
if(key_can == 3) { }
write_sfm2(1,8,s_temp); //显示温度 write_sfm2(2,8,s_dengji);
//显示烟物等级
write_com(0x80+0x40+7); //将光标移动到第2行第到3位 write_com(0x0f); //显示光标并且闪烁
38
s_dengji ++ ; //烟物报警值加1 if(s_dengji >= 99)
s_dengji = 99;
s_dengji --; //烟物报警值减1 if(s_dengji <= 1)
s_dengji = 1;
宿州学院毕业论文设计 基于单片机的防火防盗报警系统
write_eeprom(); //保存数据
}
}
/****************报警函数***************/ void clock_h_l() { }
/***************主函数*****************/ void main() {
beep = 0;
static uchar value;
if((dengji >= s_dengji) || (temperature >= s_temp) || (shoudong == 1)) { { }
if((dengji < s_dengji) && (temperature < (s_temp)) && (shoudong == 0)){
value = 0; beep = 1;
fengshan = 1; //关闭风扇
//取消报警
value ++; if(value >= 2) { }
value = 10;
beep = ~beep; //蜂鸣器报警 fengshan = 0; //起动风扇 //报警
}else
}
//开机蜂鸣器叫一声
39