13-基于单片机的智能育婴室环境监测系统(时间、温度、光照、定时记录数据、数据存储、声学光学报警)proteus、源代码、仿真工程
功能描述:使用AT89C51
1、时间显示
2、设置报警阈值
3、声学、光学报警
4、数据记录
5、按键控制人机交互设置系统的各项功能参数
6、数据查询
7、‘手动关闭蜂鸣器’
8、数据记录时间手动控制
有哪些资料:
1、源代码KEIL4
2、仿真工程文件
void main()
{
init_1602();//初始化LCD
address=At24c512Read(0); //读取存储地址
address<<=8;
address+=At24c512Read(1);
if((address==0)||(address>0xfff0))
{
At24c512Write(0,0);//记录地址映射
At24c512Write(1,4);
address=4;
}
dizhi=address;
wen_lim=At24c512Read(2); //初始化温度阀值
if(wen_lim==0xff)
{
wen_lim=40;
At24c512Write(2,wen_lim);
}
shi_lim=At24c512Read(3); //初始化定时时间
if(shi_lim==0xff)
{
shi_lim=1;
At24c512Write(3,shi_lim);
}
TMOD=0x01;//初始化定时器0
TH0=0x3c;//定时50ms
TL0=0xb0;
ET0=1; //开中断
EA=1;
TR0=1; //启动T0
guangzhao =Adc0832(0);
temp=Ds18b20ReadTemp();//预读,消除误差
Delay1ms(1000);
write();
xian();
while(1)
{
xianlux();
Delay1ms(500);
if(guangzhao < guangzhaoyushe)
{
guangzhaoled = 0;
}
else guangzhaoled = 1;
if(!jia)//定时时间加
{
if(shi_lim<180) //最大能定到3小时
shi_lim++;
xian();
At24c512Write(3,shi_lim);
while(!jia);
}
if(!jian)//定时时间减
{
if(shi_lim>1) //最小1min
shi_lim--;
xian();
At24c512Write(3,shi_lim);
while(!jian);
}
if(!wenjia)//温度阀值加
{
if(wen_lim<180) //最大能定到3小时
wen_lim++;
xian();
At24c512Write(2,wen_lim);
while(!wenjia);
}
if(!wenjian)//温度阀值减
{
if(wen_lim>1) //最小1min
wen_lim--;
xian();
At24c512Write(2,wen_lim);
while(!wenjian);
}
if(!up) //上一次记录
{
flag=1;
if(dizhi>34)
{
dizhi-=32;
read();//读取记录
}
while(!up);
}
if(!down) //下一次记录
{
flag=1;
if(dizhi<address)
read();//读取记录
while(!down);
}
if(!reset)//回到当前时间
{
flag=0;
dizhi=address-16;
read();
while(!reset);
}
if(!off) //关闭蜂鸣器
{
beep=1;
while(!off);
}
//xian();
}
}
void time0() interrupt 1//定时器中断
{
if(dingshi<60)//定时1min
{
dingshi++;
}
else
{
dingshi=0;
if(fen<shi_lim)//定时时间是否到了
fen++;
else
{
fen=0;
write();//记录温度
if(temp>wen_lim) //报警
beep=0;
}
}
TH0=0x3c;//定时50ms
TL0=0xb0;
}