候车大厅人数检测系统设计.docx
《候车大厅人数检测系统设计.docx》由会员分享,可在线阅读,更多相关《候车大厅人数检测系统设计.docx(13页珍藏版)》请在冰豆网上搜索。
候车大厅人数检测系统设计
《单片机原理及应用》
课程设计报告
题目:
专业:
班级:
姓名:
学号:
指导教师:
完成日期:
摘要:
本设计是设计一款基于单片机的候车大厅人数检测系统设计,其中的单片机是候车大厅人数检测系统设计的核心,用于接收处理人数检测信号,通过两对红外对管扫瞄,模拟实现对人数的多少进行计算、在传递到单片机内部的控制,再有单片机输出有七段数码管显示。
此系统具有无线控制与手动控制两种方式,以保证一种控制方式出现问题,可以及时使用另一种控制方式对单片机进行控制。
本报告简要介绍了基于单片机技术的候车大厅人数检测系统设计原理,并根据系统的基本原理制作出了实物模型。
本控制系统主要由以下几个模块组成:
红外扫描模块、信号接收模块、单片机控制模块。
红外扫描控制信息转变为单片机可以识别的二进制代码,通过与单片机内部的程序配合实现对候车大厅人数的检测;单片机控制模块的核心组成元件是AT89c51芯片,配以单片机的最小系统电路,作为人数检测系统的总的控制模块。
红外对射识别系统基本原理系统由安装在间隔为L的两套红外收发电路和可逆计数器及判断执行电路等组成,对射光线选择在人员出入必须经过的地方。
如果没有人员出入,对射光线没有被遮挡时,接收电路输出高电平;而当有人员等物体通过时,光线被遮挡,接收电路就输出低电平。
从两路检测脉冲的先后顺序,可以判断出人员运动方向;再由检测脉冲的个数,可以计算进出的人数。
进入时计数器加1,外出时计数器减1,通过累计就可以计算出室内人员的数量。
这就是红外对射式人数识别系统的基本原则。
系统组成红外对射式人数识别系统的组成不管采用的是纯硬件电路还是单片机电路,其基本组成方式是完全相同的,只不过可逆计数器和判断执行电路部分,是由硬件完成还是由软件来完成的而已。
此外系统可以实现候车大厅人数上限显示。
关键词:
单片机技术;红外对管扫描;七段数码管;单片机最小系统。
1、前言4
1.2背景与意义4
1.3课题设计要求4
3.核心器件简介5、6
3.274HC573锁存器简介6
4硬件设计6、7
4.2红外扫描电路7
4.4蜂鸣器报警电路8
4.5原理图及元件清单9
1前言
产作业,而怎样对其线上的产品进行实时的、有效率的、精确的自动计数成为广大生产厂家十分关注的问题。
传统的机械式或电子式计数器(主要是用数字电路集成组件组成)电路比较复杂,元器件数量较多,故障率较高,维修比较困难,而且设置预定数值不太方便,功能不易更改且功能过于单一,适用范围较窄。
而基于单片机为核心控制的计数器有着能够实时,精确,可靠,稳定等计数优点已成为广大厂家的首选自动计数的装置。
1.2背景与意义
候车大厅人数检测系统到目前为止已有很多年的发展史。
目前候车大厅人数检测系统基本技术日臻完善,成熟.应用现代技术可以轻松地将这功能实现的很好。
当今,单片微型计算机技术迅速发展,基于单片机技术开发的计数设备和产品广泛应用到各个领域,单片机技术产品和设备促进了生产技术水平的提高.企业迫切需要大量熟练掌握单片机技术并能开发、应用和维护管理这些智能化产品的高级工程技术人才.单片机以体积小、功能强、可靠性高、性能价格比高等特点,已成为实现工业生产技术进步和开发机电一体化和智能化测控产品的重要手段。
已经实现或者部分实现,但要真正完美的实现这些目标,对于设计者来说,还有许多工作要做,而不是表面看来似乎发展到头了.候车大厅人数检测系统是一种多功能的人数检测仪器。
它利用电子学的方法测出一定范围内总体数目,并将结果以数字形式显示出来。
1.3课题设计要求
本设计主要任务是以单片机为主控芯片来进行软件控制,能正常人数统计。
主要技术要求:
设计要求:
1、能够统计进入候车厅的人数(除去从出站口走出的),并显示出来;
2、能够用键盘设定候车大厅能容纳人数的上限;
3、人数超过上限报警。
2系统总体设计方案:
图1、接收电路输出波形图从接收电路输出波形可以看出,当有人员进入时,先挡住光线a,再挡住光线b。
因此,A路先输出低电平检测脉冲,B路后输出检测脉冲,两者之间的时间差T与两束光线之间的距离成正比,与人员运动的速度成反比,还与整个检测系统的时延差有关。
即:
T=L/V+△t----------------------
(1)式中:
T为两路之间的时间差L为两路光线之间的距离V为人员运动速度△t
图
3、核心器件简介
3.1AT89C51简介
AT89C51是一种带4K字节FLASH储存器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读储存器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
3.274HC573锁存器简介
1.高阻态就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;但是,这些芯片中只能有一个处于非高阻态状态,否则会将芯片烧毁;高阻态的概念在RS232和RS422通讯中还可以用到。
2.数据锁存当输入的数据消失时,在芯片的输出端,数据仍然保持;这个概念在并行数据扩展中经常使用到。
3数据缓冲加强驱动能力。
74LS244/74LS245/74LS373/74LS573都具备数据缓冲的能力。
OE:
output_enable,输出使能;LE:
latch_enable,数据锁存使能,latch是锁存的意思;DN:
第n路输入数据;On:
第n路输出数据;再看这个真值表,意思如下:
第四行:
当OE=1是,无论DN、LE为何,输出端为高阻态;第三行:
当OE=0、LE=0时,输出端保持不变;第二行第一行:
当OE=0、LE=1时,输出端数据等于输入端数据;结合下面的波形图,在实际应用的时候是这样做的:
a.OE=0;b.先将数据从单片机的口线上输出到DN;c.再将LE从0->1->0d.这时,你所需要输出的数据就锁存在On上了,输入的数据在变化也影响不到输出的数据了;实际上,单片机现在在忙着干别的事情,串行通信、扫描键盘……单片机的资源有限啊。
在单片机按照RAM方式进行并行数据的扩展时,使用MOVX@DPTR,A这条指令时,这些时序是由单片机来实现的。
后面的表格中还有需要时间的参数,你不需要去管它,因为这些参数都是几十ns级别的,对于单片机在12M下的每个指令周期最小是1us的情况下,完全可以实现;如果是你自己来实现这个逻辑,类似的指令如下:
MOVP0,A;将数据输出到并行数据端口CLRLESETBLECLRLE;上面三条指令完成LE的波形从0->1->0的变化74ls573跟74LS373逻辑上完全一样,只不过是管脚定义不一样,数据输入和输出端
4、硬件设计
4.1单片机最小系统:
51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。
2.51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。
3.51单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好
4.P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。
其他接口内部有上拉电阻,作为输出口时不需外加上拉电阻。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N乘以机器周期Tcy就是定时时间t。
设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。
在每个机器周期的S5P2期间采样T0、T1引脚电平。
当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。
由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持器周期。
当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2ms。
图3-2单片机最小系统图
51单片机的最小系统由单片机、晶振电路、复位电路和P0的上拉电阻组成。
其介绍如下:
(1)晶振电路为单片机提供时序使单片机能够正常工作,在图3-1中采用单片机内部振荡方式。
此时,只要接上两个电容和一个晶振即可。
电容的大小影响着振荡的稳定性和起振的快速性,通常选择10~30pF的相等的两个瓷片电容。
(2)C1和R2构成了复位电路。
刚开始上电时时,C1瞬间相当于短路,C1两端保持0V电压,VCC的电源电压就都加在了R2上,因此在单片机9脚RST上变成了高电平,此后C1上逐渐充电,即在C1上出现电压,R2上的电压开始下降,最后单片机9脚RST上变成了低电平。
在此过程中只要满足单片机9脚RST上的高电平持续24个振荡周期即可使单片机复位。
4.2、红外线扫描器电路
红外对管是红外线发射管与光敏接收管,或者红外线接收管,或者红外线接收头配合在一起使用时候的总称。
红外线在光谱中波长自0.76至400微米的一段称为红外线,红外线是不可见光线。
红外线接收管是在LED行业中命名的,是专门用来接收和感应红外线发射管发出的红外线光线的。
一般情况下都是与红外线发射管成套运用在产品设备当中。
光敏接收管是一个具有光敏特征的PN结,属于光敏三极管,具有单向导电性,因此工作时需加上反向电压。
红外线扫描器的作用:
由一个100欧姆,20K欧姆,红外对管组成,分别安装在大厅的出入口的两侧,当扫描到有人进是数码管显示加一,检测到有人出大厅时减一。
4.3计数、显示部分
计数显示部分由单片机AT89C51控制完成。
基本原理为当红外对管两端检测部分检测到有人经过时,红外接收电路LM567芯片的8脚输出口将产生一个低电平信号,这个信号将供给单片机进行计数控制;显示部分是通七段数码显示管显示。
4位共阴七段显示数码管。
LED引脚
4.4蜂鸣器报警电路
蜂鸣器电路连接图
蜂鸣器电路由一个电阻,三极管和蜂鸣器组成,起报警作用。
5、元器件清单
器件名称
规格
数量
单片机
STC89C51
1
晶振
12MHz
1
瓷片电容
30pF
2
电阻
10K
1
按键
3
电容
10uF
1
电阻
若干
数码管
4位共阴
1
三极管
8550
1
排针
若干
导线
若干
蜂鸣器
1
红外对管
1
5、原理图
6源程序设计:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
uintcount=0;
uintsudu=0;
uchartime;
uintnum;
sbitbeep=P3^7;
sbitkey1=P3^5;
sbitkey2=P3^6;
uchardat[4]={0,1,2,3};
uchartable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voiddelayms(unsignedintx)
{
unsignedcharj;
while(x--)
{
for(j=0;j<123;j++){;}
}
}
voiddisplay()
{
uchari,dis=0x7f;
for(i=0;i<4;i++)
{
P1=~table[dat[i]];
P0=dis;
dis=(dis>>1)|0x80;
delayms
(1);
}
}
voidprocess(uinti)
{
dat[0]=num/10;
dat[1]=num%10;
dat[2]=i/10;
dat[3]=i%10;
}
voidkeyClear()
{
if(key1==0)
{
delayms(10);
if(key1==0)
{
count=0;
}
while(!
key1)
{
process(count);
display();
};
}
}
voidkeySet()
{
if(key2==0)
{
delayms(10);
if(key2==0)
{
num++;
}
while(!
key2)
{
process(count);
display();
};
}
}
voidBJ()
{
if(count>=num)
beep=0;
else
beep=1;
}
voidmain()
{
ET0=1;
IT0=1;
EX0=1;
EA=1;
beep=1;
num=10;
while
(1)
{
keyClear();
keySet();
BJ();
process(count);
display();
}
}
voidex0(void)interrupt0using0
{
count++;
}
6Proteus软件仿真
在焊接完硬件电路并搭建好系统仿真模型后,就可以对系统进行部分和整体调试了,系统进行整体调试的目的就是查找系统结构以及软件设计中的漏洞,及时弥补过失,以使系统能够正常高效运行。
在Proteus中的软件仿真主要分为以下几个步骤:
1)系统模型的搭建
在Proteus的元件库中寻找所需要的核心芯片和外围设备元件,根据电路需要搭建模型电路。
如果在Proteus元件库中没有某一特定型号的元件则可以使用其他具有相似功能的元件进行替代,例如在Proteus元件库中没有AT89c51单片机,在程序设计以及元件参数设定时需要将这方面因素考虑进去。
2)程序的调试
任何与单片机有关的仿真都要求有其特定的系统程序,所以在仿真之前还要编写系统程序,编写完成后,首先应该对程序进行调试,可以使用Proteus自身带的调试功能,也可以使用其他软件,比如Keil、Wave等,排除程序中的逻辑错误就可以在Proteus仿真图中进行软硬联调了。
3)系统仿真
在系统模型搭建成功且程序调试成功后,就可以使用Proteus软件对单片机系统进行仿真测试了。
首先将调试软件所生成的.HEX文件下载的仿真单片机中;然后根据预先的约定进行单片机系统功能的验证和调试,记录参数;最后就是调整阶段了,找出单片机仿真时与预先设想的功能的差异处,寻找产生差异的原因,最终消除差异。
这可能需要很长时间,这种情况下就要和同学合作共同查错,这样才能避免一个人思维定势的干扰。
7课程设计体会
“调试成功,硬件测试成功!
”
经过两周的努力,基于单片机的候车大厅人数检测系统设计完成了,过去一段时间的辛酸以及遇到难题时的郁闷一挥而散了,现在回味起来真有点小小的成就感。
经过这次课程设计得到的收获还是特别多的,它不仅让我了解了做一个单片机系统的各项工作流程,让我在这个过程中学到了很多过去不知道的东西以及课本上所不能讲述给你的东西,同时也让我深刻地认识到我对知识的理解程度以及掌握程度还是极其有限的。
生命是有限的,我们就应该抓住每一个机会来锻炼自己、提高自己,只有在工作中你才能发现你自身的不足,才能让你端正学习、工作、生活态度,并且只有在工作中你才能真正细致地去学习一个东西、去研究一个东西。
可见生产实践是何其重要啊,它是你提升你自己的有效平台。
通过本次课程设计让我认识到了以下几点:
自己的科研能力有待提高。
做一个单片机系统,大部分电路原理图都是在网上借鉴别人的,有很少是自己的,可见科研能力有待提高,要能够根据电路要求自行设计电路。
自己的态度不太端正。
做一个项目就要坚持不懈、持之以恒,不做完美决不罢休,我在这点做的不是太好,也有最近课程比较多的原因,但最主要的还是自身定力不够的原因造成的,这是需要改正的。
知识欠缺,创新能力不够。
这就要求我在课下尽可能多地进行知识积累整体意识不足。