• 大小: 1.57MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-09
  • 语言: 其他
  • 标签: 红外线  上限警报  

资源简介

基于单片机的红外线计数器,可测量人流量,分为入口和出口,入口进则加一位,出口出则减一位,可设置在场人数上限,达到上限则发出警报。

资源截图

代码片段和文件信息

#include 
#include 
#define uchar unsigned char
#define uint  unsigned int
sbit ru    = P1^5; // 红外探头
sbit chu   = P1^1;
sbit Buzzer  = P1^6; // 蜂鸣器
sbit zt     = P1^4;  //计数暂停
sbit res    =P1^2;
sbit set     =P3^3;
sbit LED     =P1^0;
sbit led     =P1^7;
sbit jian  =P3^0;
sbit jia   =P3^1;
uchar qianbaishigeset_shi=0set_bai=0set_qian=0;
uint set_ge=5;
uint code table[]={0xC00XF90XA40XB00X990X920X820XF80X800X90};
void delay(uchar xms)  //延时
{
uchar ij;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display() //数码管显示
{
delay(5);
P2=0xfe;//位选
P0=table[bai];//段选
delay(5);
P2=0xfd;
P0=table[shi];
delay(5);
P2=0xfb;
P0=table[ge];
delay(5);
P2=0xf7;
P0=table[qian];
delay(5);
}
void set_display() //上限数码管显示
{
delay(5);
P2=0xfe;//位选
P0=table[set_bai];//段选
delay(5);
P2=0xfd;
P0=table[set_shi];
delay(5);
P2=0xfb;
P0=table[set_ge];
delay(5);
P2=0xf7;
P0=table[set_qian];
delay(5);
}
void rukou() //入口检测
{
if(ru==0)
{
led=0;
P2=0XF0;
delay(10);
if(ru==0)
{
while(!ru);
ge++;
if(ge>9)
{
ge=0;
shi++;
}
if(shi>9)
{
shi=0;
bai++;
}
if(bai>9)
{
bai=0;
qian++;
}
if(qian>0)
{
ge=0;
shi=0;
bai=0;
qian=0;
  }
 }
}
else
{led=1;}
}
void chukou() //出口检测
{
if(chu==0)
{
led=0;
P2=0XF0;
delay(10);
if(chu==0)
{
while(!chu);
if(ge>0)
{
ge--;
}
else
{
if(shi>0)
{
ge=9;
shi--;
}
else 
{
  ge=0;
  }
  }
if(shi<0)
{
shi=9;
bai--;
}
if(bai<0)
{
bai=9;
qian--;
   }
  }
 }
 else
 {led=1;}
}
void counts() interrupt 2//设置报警上限
{
 
  Buzzer=1;
  while(!set)
  {
   set_display();
   LED=0;
  if(jia==0)
  {
  P2=0XF0;
  delay(10);
  if(jia==0)
  {
 set_ge++;
 if(set_ge>9)
{
set_ge=0;
set_shi++;
}
if(set_shi>9)
{
set_shi=0;
set_bai++;
}
if(set_bai>9)
{
set_bai=0;
set_qian++;
    }
   }
   while(!jia);
  }  
  if(jian==0)
  {
  P2=0XF0;
 delay(10);
  if(jian==0)
  {
if(set_ge>0)
{
set_ge--;
}
else
{
if(set_shi>0)
{
set_ge=9;
set_shi--;
}
else 
{
  set_ge=0;
  }
  }
if(set_shi<0)
{
set_shi=9;
set_bai--;
}
}
 while(!jian);
    }  
   }
   LED=1;
  }

void  jbao()   //人数过多警报
{
if(ge+shi*10+bai*100>=set_ge+set_shi*10+set_bai*100)
{
led=0;
Buzzer=0;
}
else
{
  led=1;
  }
}
  void AlarmJudge()
{
if(ru==0||chu==0) // 是否有人
{
Buzzer=0; // 是的话启动蜂鸣器
}
else
{
Buzzer=1; // 否的话关闭蜂鸣器
}
}
void main()
{
  EA=1;
  EX1=1;
  IT1=1;
while(1)
{   
     if(zt==0)
{ delay(10);
led=1;
 LED=~LED;
  if(LED==0)
   {
 P2=0XFF;
 P0=0XBF;
        Buzzer=1;
   }  
   delay(10);
while(!zt);
delay(10);
 }
if(LED==1)
{
   display();
   AlarmJudge();
   chukou();
   rukou();
   jbao();
    }
if(res==0)
{
ge=0;
shi=0;
bai=0;
qian=0;
}
 }
}



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-06-26 19:48  12-晏子昊-基于单片机的红外线计数器\仿真\
     文件       23763  2018-06-24 21:48  12-晏子昊-基于单片机的红外线计数器\仿真\红外线计数器.pdsprj
     目录           0  2018-06-26 19:52  12-晏子昊-基于单片机的红外线计数器\论文\
     文件      947125  2018-06-26 19:52  12-晏子昊-基于单片机的红外线计数器\论文\基于单片机的红外线测人流量.docx
     目录           0  2018-06-26 19:52  12-晏子昊-基于单片机的红外线计数器\任务书\
     文件       23552  2018-06-26 19:52  12-晏子昊-基于单片机的红外线计数器\任务书\任务书.doc
     目录           0  2018-06-26 19:47  12-晏子昊-基于单片机的红外线计数器\原理图pcb图\
     文件      845824  2018-06-25 09:19  12-晏子昊-基于单片机的红外线计数器\原理图pcb图\PCB2.PcbDoc
     文件       95232  2018-06-21 23:45  12-晏子昊-基于单片机的红外线计数器\原理图pcb图\Sheet1.SchDoc
     目录           0  2018-06-26 19:45  12-晏子昊-基于单片机的红外线计数器\源程序\
     文件        2944  2018-06-24 21:40  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器.c
     文件        2466  2018-06-24 21:41  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器.hex
     文件          56  2018-06-24 21:44  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器.lnp
     文件         735  2018-06-24 21:44  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器.LST
     文件       31182  2018-06-24 21:44  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器.M51
     文件       10788  2018-06-24 21:44  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器.OBJ
     文件        8569  2018-06-24 21:44  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器.plg
     文件       56101  2018-06-24 21:45  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器.uvopt
     文件       13265  2018-06-02 18:29  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器.uvproj
     文件       55254  2018-06-21 17:34  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器_uvopt.bak
     文件       13266  2018-06-02 01:59  12-晏子昊-基于单片机的红外线计数器\源程序\红外线计数器_uvproj.bak

评论

共有 条评论