19、基于51单片机超市流量人车流量计数器系统设计(程序+原理图+PCB图+Proteus仿真+答辩技巧+开题报告+参考论文+元器件清单等)

摘要

随着科学技术的不断发展,我们的生活也不断的朝智能化方向发展。各种智能化产品频繁出现在我们的生活中,其中单片机是最常用的智能化控制核心,为了能更好的了解单片机,我打算利用单片机设计一个公共场所人流量统计系统。本系统采用STC89C52单片机作为整个系统的控制核心,利用人体红外感应模块来检测是否有人员通过门,有人员通过则输出高电平,再根据实际情况由单片机判断人员是进入还是出去,最后将人员进出情况送液晶屏显示。同时系统还具有显示时间和时间可调的功能,这将使我们能更加直观的了解到各个时段人流量的变化情况。本次设计中的单片机控制程序采用C语言编写,具有结构清楚,便于理解以及改进功能的特点。

关键词人流量统计;人体红外感应器;51单片机

一、硬件方案

硬件构成:51单片机+最小系统+数码管显示模块+红外接近传感器模块+按键模块

二、设计功能

1. 单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。
2.采用红外壁障传感器检测信号,检测距离3~50cm,灵敏度可调(红外接近传感器的背面旋钮调节)。
3.数码管显示第一位显示数字(1代表进入人数,2代表出去人数、3代表滞留人数),第二位显示当前的人流量。
4.有一个按键切换显示滞留人数。另一个是复位按键。

三、成品实物图

四、原理图  

五、PCB图  

六、Proteus仿真  

七、程序源码 

部分代码:

				flag_KEY2=0 ;							 //变量清零
				count_chuqu++;						 //出去人数变量加
				if(count_chuqu>count_jinru)			 //出去的人数不能大于进入的人数
				count_chuqu=count_jinru;				 //所以出去的人数大于进入的人数时,让出去的人数等于进入的人数
				count_zhiliu = count_jinru-count_chuqu;//更新滞留人数(室内现有人数为进入的人数减去出去的人数)
			}
			while(KEY1==0)							 //按键一直按下(传感器一直有信号)
			display();								 //调用显示函数
		}
	}
	if(KEY2==0)								 //按键按下(进入的传感器检测到信号)
	{
		delay(5);								 //延时去抖
		if(KEY2==0)								 //再次判断
		{
			flag_KEY2=1;							 //变量置1
			if(flag_KEY2==1&&flag_KEY1==1)			 //判断变量是否都为1
			{
				status=1;								 //切换显示模式到显示进入人数
				flag_KEY1=0;
				flag_KEY2=0;							 //变量清零
				count_jinru++;						 //进入人数加
				count_zhiliu = count_jinru-count_chuqu;//更新滞留人数(室内现有人数为进入的人数减去出去的人数)
				if(count_jinru>=99)					 //进入的人数最大99人
				count_jinru=99;						 //大于99人,就显示99人
			}  
			while(KEY2==0)							 //按键一直按下(传感器一直检测到有人)
			display();								 //调用显示函数
		}
	}
	if(KEY3==0)								 //按键按下
	{
		delay(5);								 //延时去抖
		if(KEY3==0)								 //再次判断按键按下
		{
			status++;								 //切换按键按下,就切换显示模式
			if(status>3)							 //变量大于3
			status=1;		




	P0=~LEDData[10];	 //送显示码
	P2=0xDF;			 //打开位选
	delay(2);			 //延时
	P2=0xFF;			 //关闭位选
	switch (status)		 //判断是要显示什么内容
	{
	 case 1: P0=LEDData[count_jinru/10];break;//显示进入人数的十位
	 case 2: P0=LEDData[count_chuqu/10];break;//显示出去人数的十位
	 case 3: P0=LEDData[count_zhiliu/10];break;//显示滞留人数的十位
	}
	
	P2=0xBF;			 //打开位选
	delay(2);			 //下同,注释略
	P2=0xFF;

	switch (status)		 //判断是要显示什么内容
	{
	 case 1: P0=LEDData[count_jinru%10];break;//显示进入人数的个位

 资料包括:

需要完整的资料可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传点击用微信打开即可,过程有点繁琐请见谅。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ENGLISH_HHZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值