1895基于单片机人流量统计仿真系统设计【毕设课设】

 

摘要

本文介绍了一种基于STC89C52单片机的人流量统计仿真系统设计。该系统通过两个红外对管检测人员的进出,利用LCD1602显示屏实时显示当前人数流量,并实现了人数缺少报警提醒和人数正确绿灯提醒的功能。该系统结构简单、操作方便,可广泛应用于商场、超市、车站等需要统计人流量的场所。

一、引言

随着城市化进程的加快,人流量统计在商场、超市、车站等公共场所变得越来越重要。传统的人流量统计方法往往依赖于人工计数,不仅效率低下,而且容易出错。因此,开发一种基于单片机的人流量统计仿真系统具有重要的现实意义和应用价值。

二、系统设计

本系统以STC89C52单片机为核心控制器,通过两个红外对管检测人员的进出,利用LCD1602显示屏实时显示当前人数流量。同时,系统还设计了人数缺少报警提醒和人数正确绿灯提醒的功能,以满足不同场合的需求。

三、硬件设计

  1. STC89C52单片机:作为系统的核心控制器,负责接收红外对管的信号,处理数据,并控制LCD1602显示屏、继电器、蜂鸣器等外设的工作。

  2. LCD1602显示屏:用于实时显示当前人数流量,方便用户查看。

  3. 红外对管:安装在进出口处,当有人经过时,会遮挡红外光线的传播,从而产生信号变化,单片机通过检测这种信号变化来判断人员的进出。

  4. 继电器:用于控制绿灯的亮灭,当人数达到预设值时,继电器动作,绿灯亮起。

  5. 独立按键:用于设置预设人数等参数。

  6. 蜂鸣器:当人数少于预设值时,蜂鸣器会发出报警声,提醒用户。

四、软件设计

系统软件设计主要包括初始化、数据处理、显示控制、报警控制和绿灯控制等模块。初始化模块负责初始化单片机和各外设;数据处理模块负责接收红外对管的信号,并计算进出人数;显示控制模块负责将当前人数流量显示在LCD1602显示屏上;报警控制模块在人数少于预设值时启动蜂鸣器报警;绿灯控制模块在人数达到预设值时控制继电器动作,使绿灯亮起。

五、系统测试与结果分析

在系统设计完成后,我们进行了实际测试。测试结果表明,该系统能够准确检测人员的进出,实时显示当前人数流量,并在人数缺少时发出报警提醒,人数正确时亮起绿灯。系统响应速度快,操作简便,具有一定的实用价值。

六、结论

本文介绍了一种基于STC89C52单片机的人流量统计仿真系统设计。该系统通过两个红外对管检测人员的进出,利用LCD1602显示屏实时显示当前人数流量,并实现了人数缺少报警提醒和人数正确绿灯提醒的功能。测试结果表明,该系统具有较高的准确性和稳定性,可广泛应用于各种需要统计人流量的场所。

#define m9    (65536-9000) 	      //约9mS
#define m4_5  (65536-4500) 	      //约4.5mS
#define m1_6  (65536-1630) 	      //约1.65mS
#define m_65  (65536-580) 	      //约0.65mS
#define m_56  (65536-560) 	      //约0.56mS
#define m40   (65536-40000)       //约40mS
#define m56   (65536-56000)       //56mS
#define m2_25 (65536-2250)        //约2.25mS

sbit IR_1 = P3^6;				  //定义发射引脚(接PNP三极管基极)
sbit IR_2 = P3^7;				  //发射指示灯

sbit K1 = P1^4;				 
sbit K2 = P1^5;
sbit K3 = P1^3;
sbit BUZ = P1^6;
sbit LED = P1^7;

uchar buf_1[]="T_count:80";
uchar buf_2[]="C_count:";
uchar buf_3[]="00";

uchar count;

void  ZZ(uchar x);
void  Z0(uchar temp);
void  TT0(bit BT,uint x);
void  ZZ_1(uchar x);
void  Z1(uchar temp);
void  TT1(bit BT,uint x);


void delayms(uint xms)
{
	uint x,y;
	for(x=xms;x>0;x--)
		for(y=122;y>0;y--);	
}


void keyscan()
{
	 
	if(K1==0)		//检测按键K1(正转)是否按下
	{
		delayms(10);	//消除抖动
		if(K1==0)
		{
			ZZ(0x01);
			count++;
			buf_3[0]=count/10+'0';
			buf_3[1]=count%10+'0';
			lcd_write_str(0x80+0x40+8,buf_3);
		}
		while(!K1);	 //检测按键是否松开

	}
	if(K2==0)		//检测按键K2(反转)是否按下
	{
		delayms(10);	//消除抖动

部分代码

 

资料下载地址:

https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值