下雨关窗报警器 一、实验目的 1. 了解霍尔传感器工作原理 2. 了解雨滴传感器工作原理 3. 学会使用霍尔传感器检测门窗是否关好 4. 学会使用雨滴传感器检测是否下雨 5. 学会使用蜂鸣器发出报警声 二、实验设备 1. 51单片机实验板,以及电源线、下载线、杜邦线等 2. 霍尔传感器、雨滴传感器、蜂鸣器 三、实验项目要求 请设计一款下雨关窗报警器,当检测到下雨时,若用户窗户没有关,则发出报警声提醒用户关窗户。 请按要求设计一个可行方案,包括设备选型、系统连接图等,并编写程序实现上述功能。 四、实验步骤 1. 设计方案 ①方案:采用雨滴传感器来判断是否下雨没,霍尔传感器来模拟是否关窗没,通过这两个传感器采集的信息交给单片机做处理,如果下雨没关窗,蜂鸣器响,其他情况蜂鸣器都不响 ②设备选型: 1、雨滴传感器(DO)
功能介绍: DO TTL数字输出也可以连接单片机检测是否有雨。 接上5V电源,电源指示灯亮,感应板上没有水滴时, DO输出为高电平,开关指示灯灭;滴上一滴水,DO输出为低电平,开关指示灯亮; 刷掉上 面的水滴,又输出高电平状态 AO模拟输出,可以连接单片机的AD口检测滴在上面的雨量大小。 接线方式:
1、VCC:接电源正极(3-5V)
2、GND:接电源负极
3、DO:TTL开关信号输出
4、AO:模拟信号输出 2、霍尔传感器 电路设计如图: 传感器附近无磁场时,P0.4 输出高电平。当传感器附件有磁场时,P0.4 输出低电平。 3、TX51单片机实验板(带LCD1602、LED灯、蜂鸣器) ③系统连接图: 2. 编写源程序,编译,生成hex文件 源程序: Main.c
//本工程基于普中单片机开发板,晶振12MHz
#include <config.h>
#include <uart.h>
sbit beep=P1^5;//蜂鸣器
sbit rain=P1^1;//雨滴传感器开关输出引脚:无雨滴输出1,否则输出0
sbit hall=P1^2;//霍尔传感器开关输出引脚:有磁场输出1,否则输出0
u8 flag=0; //0:叮,1:咚
u16 n0=0,n1=0; //n0:叮周期计数,n1:咚周期计数
void delay_us(u16 n)//微秒延时
{
while(--n);
}
void delay_ms(u16 x)//毫秒延时函数
{u16 i,j;
for(i=0;i<x;i++)
for(j=0;j<115;j++);
}
void Alarm(u8 t) //蜂鸣器报警,持续t秒,软件延时
{
u8 k;
u16 i,j;
for(k=0;k<t;k++)
{ for(i=0;i<200;i++)//叮
{beep=0;delay_us(50);beep=1;delay_us(50);}
for(j=0;j<100;j++)//咚
{beep=0;delay_us(110);beep=1;delay_us(110);}
}
}
void Alarm_Init() //蜂鸣器报警,定时器T0
{
TMOD&=0xf0;//定时器T0设为方式2,8位自动装载模式
TMOD|=0x02;
TH0=0X00;
TL0=0X00; //定时250us
EA=1;
ET0=1;
}
void Alarm_Power(u8 t) //打开/关闭蜂鸣器报警,定时器T0,1:打开,0:关闭
{
TR0=t;
}
void main()
{
uart_init(4800);
while(1)
{
if(rain==0) //下雨
{
delay_ms(10); //消抖动
if(rain==0) //确认触发
{
if(hall==1) //确认没有磁场,表示窗户没关
{
uart_send_str("rain");
uart_send_str("close the door");
Alarm(1);//启动报警响5秒
}
else
{
uart_send_str("rain");
beep =0;
}
}
}
}
}
//叮(一个周期高250us低250us,共500个周期,0.25秒),咚(一个周期高500us低500us,共250个周期,0.25秒)
void time0() interrupt 1
{
if(flag==0)
{
n0++;
if(n0==1000)
{
n0=0;
flag=1;
}
else
{
beep=~beep;
}
}
else
{ //通过改变定时计数时间可以改变门铃的声音
n1++; //叮
if(n1==1000)
{
n1=0;
TR0=0;
flag=0;
}
else
{
if(n1%2==0) beep=~beep;
}
}
}
3. 将hex文件下载到实验板运行,描述实验现象
实验现象:
当雨滴传感器的out脚输出低电平时,或霍尔传感器out脚输出低电平时,蜂鸣器响,提示下雨了没关窗,其他情况蜂鸣器不响。
实验总结
通过本次实验了解了霍尔传感器工作原理了解雨滴传感器工作原理,学会了使用霍尔传感器以及雨滴传感器的基本编程思维。 |