功能:
(1)红外热释电传感器采用按键模拟输入信号,由于传感器检测人体时输出高电平,按键需要下拉电阻作为无信号时的电平状态。
(2)当热释电检测到人体时,LED灯亮以及蜂鸣器响起。
#include < reg52.h >
#include < intrins.h >
#include < math.h >
#define uchar unsigned char
#define uint unsigned int
//延时函数ms
void _delay_ms(uint t)
{
uint i,j;
for(i=0;i< t;i++)
for(j=0;j< 120;j++);
}
//延时函数us
void _delay_us(uchar t)
{
while(t >0)t--;
}
sbit RS=P3^2; //写信号
sbit RWW=P3^3; //读信号
sbit E=P3^4; //使能信号
#define e1 E=1
#define rd1 RWW=1
#define rs1 RS=1
#define e0 E=0
#define rd0 RWW=0
#define rs0 RS=0
#define PP P1
//写1602控制字
void lcd1602_writecrtl(uchar dat)
{
rd0;//读信号置0
rs0;//写信号置0
_delay_us(5);
PP=dat;
e1;//使能信号置1
_delay_us(5);
e0;//使能信号置0
}
//写1602数据
void lcd1602_writenumber(uchar dat)
{
rd0;//读信号置0
rs1;//写信号置1
_delay_us(5);
PP=dat;
e1;//使能信号置1
_delay_us(5);
e0;//使能信号置0
}
//1602初始化
void lcd1602_init()
{
lcd1602_writecrtl(0x38); //显示模式
lcd1602_writecrtl(0x06); //显示光标移动位置
lcd1602_writecrtl(0x0c); //显示开及光标设置
lcd1602_writecrtl(0x01); //显示清屏
}
//显示地址
void lcd1602_adr(uchar dat)
{
lcd1602_writecrtl(0x80 | dat);
}
//行显示-
void LCD1602_string(uchar hang,uchar lie,uchar const *p)
{
uchar a;
if(hang == 1) a = 0x00;
if(hang == 2) a = 0x40;
a = a + lie - 1;
lcd1602_adr(a);
while(1)
{
if(*p == '�') break;
lcd1602_writenumber(*p);
p++;
}
}
uchar code zifux[]="0123456789abcdef";
uchar code zifu0[]="Pyroelectric ";
uchar code zifu2[]=" Alarm ";
uchar code zifu1[]=" Normal ";
sbit key_sr= P2^1;//传感器
sbit led= P0^0; //报警
sbit beer= P2^7;//报警
uint jishu1=0;
uint jishubeer=0;
uchar bz=0;
//---------------
void ct()
{
//显示
if(bz==0) LCD1602_string(2,1,zifu1);
if(bz==1) LCD1602_string(2,1,zifu2);
//判断
if((key_sr==1)&&(bz==0)) {bz=1;jishu1=0;}
//报警
if(bz==1)
{
jishubeer=(jishubeer+1)%100;
if(jishubeer >50){beer=led=0;}
else {beer=led=1;}
//延时
jishu1=jishu1+1;if(jishu1 >500) {jishu1=0;bz=0;}
}
else {beer=led=1;}
}
//主函数
void main()
{
_delay_ms(1);
key_sr=0;
//初始化
lcd1602_init();
LCD1602_string(1,1,zifu0);
LCD1602_string(1,1,zifu0);
LCD1602_string(2,1,zifu1);
while(1)
{
ct();
}
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
传感器
+关注
关注
2550文章
51035浏览量
753053 -
仿真
+关注
关注
50文章
4070浏览量
133551 -
51单片机
+关注
关注
274文章
5702浏览量
123482 -
红外热释电
+关注
关注
0文章
11浏览量
7908
发布评论请先 登录
相关推荐
大神们有知道51单片机怎么用中断识别人体红外热释电传感器的3v信号吗?
我用51单片机控制人体红外热释电传感器,怎么中断不能产生?是不是输出的3v电压太低不能识别?有没
发表于 10-14 23:03
热电堆传感器和热释电传感器的区别是什么?
甘肽等受热时,晶体两端会产生数量相等、符号相反的电荷。1842年布鲁斯特将这种由温度变化引起的电极化现象正式命名为“pyroelectric”,即热释电效应。热释电效应示意图
发表于 03-06 14:02
评论