• 大小: 872KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-07-17
  • 语言: C/C++
  • 标签:

资源简介

基于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

评论

共有 条评论

相关资源