资源简介
基于51单片机的人体报警器的设计(c语言代码),AT89S51单片机的
代码片段和文件信息
#include //头文件
#define uint unsigned int //宏定义
#define uchar unsigned char
sbit LED1=P2^3; //红灯
sbit LED2=P2^1; //绿灯
sbit LED3=P2^0;
sbit K1=P3^3; //启动键
sbit K2=P3^4; //紧急报警键
sbit BEEP=P2^5; //蜂鸣器
sbit IN=P1^0; //信号输入端
uchar num=0;
uchar num1=0;
uchar flag=1flag1=0flag2=0; //标示位
/******************************************************
函数名称:延时子函数
函数功能:产生短暂延时
******************************************************/
void delayms(uint xms)
{
uint ij;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/******************************************************
函数名称:按键子函数
函数功能:控制开始/紧急报警
******************************************************/
void key()
{
if(K1==0)
{
delayms(5);
if(K1==0)
{
while(!K1); //等待按键释放
EA=1;
ET0=1; //启动定时器0
TR0=1;
flag1=0;
LED2=0; //绿灯亮,说明安防已启动
}
}
if(num1==1) //1秒钟后布防
{
flag1=1;
EA=0;
ET0=0; //关闭定时器0
TR0=0;
num1=0;
}
if(K2==0) //紧急报警键
{
delayms(5);
if(K2==0&&flag1==1)
{
while(!K2);
flag2++;
if(flag2==2)
flag2=0;
}
}
if(flag2==1)
{
BEEP=0; //蜂鸣器报警
delayms(70);
BEEP=1;
delayms(70);
LED2=1; //关闭绿色指示灯
LED1=0; //启动红色指示灯
}
if(flag2==0&&flag1==1)
{
LED1=1; //关闭红色指示灯
BEEP=1; //关闭蜂鸣器
LED2=0; //启动绿色指示灯
}
}
/*****************************************************
函数名称:报警子程序
函数功能:
*****************************************************/
void baojing()
{
if(flag1==1)
{
if((IN==0||flag==1))
{
ET0=0; //启动定时器0
TR0=0;
flag=0;
LED1=1; //关闭红色指示灯
BEEP=1; //关闭蜂鸣器
LED2=0; //启动绿色指示灯
}
if(IN==1&&flag==0)
{
ET0=1; //启动定时器0
TR0=1;
while(1)
{
LED2=1; //关闭绿色指示灯
LED1=0; //启动红色指示灯
LED3=0;
BEEP=0; //蜂鸣器报警
delayms(70);
BEEP=1;
delayms(70);
ET0=1; //启动定时器0
TR0=1;
}
// if(num1==20) //报警10s后关闭
// {
// num1=0;
// flag=1;
// }
}
}
}
/***************************************************
函数名称:主函数
函数功能:
****************************************************/
void main()
{
LED1=1; //端口初始化
LED2=1;
LED3=0;
IN=1;
BEEP=1;
TMOD=0x01; //打开定时器/计数器0中断
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=0;
ET0=0;
TR0=0;
while(1)
{
key();
baojing();
}
}
/******************************************************
函数名称:定时器/计时器0中断子函数
函数功能:
******************************************************/
void T0_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num==20)
{
num=0;
num1++; //一秒自加一次
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-04-23 15:24 人体感应报警器\
文件 5169 2014-03-16 19:31 人体感应报警器\test
文件 3039 2014-03-16 19:31 人体感应报警器\test.c
文件 1290 2014-03-16 19:31 人体感应报警器\test.hex
文件 25 2014-03-16 19:31 人体感应报警器\test.lnp
文件 8639 2014-03-16 19:31 人体感应报警器\test.LST
文件 8720 2014-03-16 19:31 人体感应报警器\test.M51
文件 5722 2014-03-16 19:31 人体感应报警器\test.OBJ
文件 158 2016-03-24 15:25 人体感应报警器\test.plg
文件 55758 2016-03-24 15:25 人体感应报警器\test.uvopt
文件 13224 2014-03-16 19:31 人体感应报警器\test.uvproj
文件 55754 2014-03-18 21:39 人体感应报警器\test_uvopt.bak
文件 0 2014-03-16 18:55 人体感应报警器\test_uvproj.bak
文件 1009690 2014-03-16 18:30 人体感应报警器\热释电人体感应红外报警器设计制作.doc
评论
共有 条评论