基于单片机的人数统计系统.docx
- 文档编号:28663972
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:43
- 大小:1,009.02KB
基于单片机的人数统计系统.docx
《基于单片机的人数统计系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的人数统计系统.docx(43页珍藏版)》请在冰豆网上搜索。
基于单片机的人数统计系统
本科毕业论文(设计)
题目:
基于单片机的人数统计系统
摘要
本文设计了一个基于单片机的人数统计系统,他可以通过光电开关统计教室的人数,并把实时的人数在LCD1602液晶屏上显示,另该系统还配备了一个时间显示的功能,可显示当前的年、月、日、小时、分种、秒等时间信息,时钟芯片采用的是DS1302.DS1302能存储时间信息,并且时间可以掉电保存。
关键词单片机;LCD1602;人数统计;DS1302
Abstract
Thispaperdesignedasystembasedonsingle-chipmicrocomputer,thenumberofstatistics,hecanthroughthephotoelectricswitchstatisticthenumberoftheclassroom,andthenumberofreal-timeintheLCD1602displayontheLCDpanel,thesystemalsoequippedwithanothertimedisplayfunction,candisplaythecurrentyear,month,day,hours,minutes,secondstimeinformation,suchasclockchipUSESisDS1302.DS1302timeinformationcanbestored,andtimecanbesavedwhenpowersupplydrop.
KeywordssinglechipmicrocomputerLCD1602ThenumberofstatisticsDS1302
目录
摘要1
Abstract2
第1章绪论5
1.1目的和意义5
1.2研究概况和发展趋势5
1.3本系统主要功能5
第2章总体方案论证与设计7
2.1主控模块的选型和论证7
2.2显示模块的选型和论证7
2.3时钟芯片的选型和论证8
2.4人数统计模块的选型和论证8
2.5系统整体设计概述9
第3章系统硬件电路设计10
3.1主控模块10
3.1.1STC89C52单片机主要特性10
3.1.2STC89C52单片机的中断系统11
3.1.3单片机最小系统设计12
3.2LCD液晶显示器简介12
3.2.1液晶原理介绍12
3.2.2液晶模块简介13
3.2.3液晶显示部分与STC89C52的接口13
3.3键盘模块设计13
3.4时钟模块的设计14
3.4.1DS1302概述14
3.4.2DS1302内部RTC和RAM地址分配14
3.4.3DS1302时钟和日历15
3.4.4DS1302时钟电路设计16
3.5人数检测模块设计16
3.5.1光电开关工作原理16
3.5.2光电开关电路设计16
3.6硬件总体连接图17
第4章系统软件设计18
4.1系统软件总体设计18
4.2程序设计原理19
第5章系统调试20
5.1硬件调试20
5.2软件调试20
5.3系统检测21
结论22
参考文献23
致谢24
附录25
附录一:
系统整体原理图25
附录二:
系统仿真图25
附录三:
元件清单26
附录四:
系统源程序27
第1章绪论
1.1目的和意义
在生活中,学校、火车站、银行、商场、公交车等人员流动比较大的地方,如果可以将人数实时地统计出来,这样可以给我们的生活与学习带来很多的便捷。
例如,在学校,很大的教室里,考勤对于老师来说是一件很麻烦的事情,但如果设计一款人数统计器,实时显示教室人数的话,考勤也变得方便;在火车站等人员较多的地方,如果可以实时统计室内人数,那么可以减少不必要的排队及拥挤。
在公交车上,如果可以设计一个实时人数统计器,可以将公交车的人数固定,使我们的坐车环境得到优化。
所以设计一款实时统计人数的器件对于我们的生活是很有意义的,可以提高我们的生活质量。
1.2研究概况和发展趋势
计数器从发明以来,在不断地发展,如今,市场上已经出现了各种各样的计数器,其功能也从计数扩展到更多的功能,之前的计数器大部分用在工业方面,如:
生产线上计数器的使用,数控零件计数应用。
人数统计器及我们看到的道路上的大小车辆计数器都是在计数器的基础上扩展而来的,之前的人数统计使用的是接触式的方式,即人体必须接触器件才可以计数,例如:
脚踏板人数统计器,若有两个人同时通过的话就不能精确计数,之后出现了非接触式的,人体通过就可以计数,但也不是很精确,必须配备一定的设备才可以提高精确度。
发展到现在,人数统计的发展趋势是红外线统计,它的距离可以更远,即:
通过红外线扫描,来统计人数,这样的方法就比较精确,并且还可以增加人脸识别功能,方便警察办案。
1.3本系统主要功能
本系统设计可以实现以下几种功能:
(1)可以统计场所来往的人数并进行相应的加减,计算出室内实时人数,并显示在液晶屏幕上。
(2)单片机可以采集DS1302的数据,通过数据传输将当时的年、月、日、时、分、秒显示在液晶屏幕上,用户可以使用按键设置时间,时间可以自动更新,系统不供电时,时钟芯片依然可以由后备纽扣供电,使其掉电时保存时间,下次上电时,时间依然准确。
(3)系统带有液晶显示可以实时显示时间和当前统计的人数。
(4)系统带有清零按键,按下后清除当前统计的人数,但不会将时间清除。
第2章总体方案论证与设计
根据本设计所要实现的功能,可以将系统划分为以下几个模块:
主控模块、显示模块、时钟模块、人数统计模块,下面对以上模块的选型和论证进行讨论分析。
2.1主控模块的选型和论证
方案一:
如果本设计使用单片机MSP430,它是16位超低功耗的混合信号处理器。
功能比较强大,但其缺点是:
芯片价格比较昂贵,不太适合本设计这样比较一般的设计。
方案二
若使用51系列的单片机,该8位、32个IO口单片机具有高可靠性,超低价,无法解密,高性能等特点,而且STC系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试,比较适合本设计这样一般的设计。
由上所述,51系列单片机比较适合本设计。
2.2显示模块的选型和论证
方案一:
采用点阵式数码管显示,它是八行八列的二极管排列组成的,显示文字要适合一点,若显示数字有点浪费其资源,另一方面价格也较高,所以本系统不使用点阵式数码管作为显示模块。
方案二:
采用LED数码管显示,有以下优点:
价格一般,适用于显示数字,它的显示是采用动态扫描法,连接单片机时,占用单片机接口线也少。
其缺点是:
数码管动态扫描时要使用74LS164移位寄存器进行移位,移位寄存器的使用会给电路的调试带来很多的障碍。
方案三:
采用LCD1602液晶显示屏,其显示屏可以显示两行,对于文字,图像,数字都可以显示,对于本设计也刚好够用,价格也适中。
与单片机连接时接口线较多,有利于系统调试。
由上分析,LCD1602液晶显示屏比较适合本系统设计
2.3时钟芯片的选型和论证
方案一:
使用单片机内的定时计数器,通过编程来实现时间计数。
这样虽然可以不使用时钟芯片,节约了成本,但是,对于闰年及每月天数的不同来说就不太准确了,对于实时时间的实现误差较大,不可以较精确的计数。
方案二:
这里用DS1302时钟芯片实现时钟,DS1302的性能比较高,功耗比较低,并且内部有31*8的RAM的实时时钟电路,DS1302可以计时年、月、日、时、分、秒等,可以将每个月的31、29、28或30天进行加与减的操作,使时间显示更加准确,也可对闰年进行补偿,其工作在2.5V~5.5V。
该芯片有两个电源引脚,一个是主电源,另一个是后备电源,在关闭电源的时候可以提供充电,使时钟继续运行,当下次使用时时钟依然是准确时间。
芯片是用32.768KHZ晶振作为标准时钟来计时。
由上面的分析,DS1302的优势比较适合本系统。
2.4人数统计模块的选型和论证
方案一:
在场所的前门按一个光电开关,后门按一个,前门进后门出,分别统计显示人数,进行加减。
这种方案不好控制人员是从前门进还是从后门进。
对于人数的统计的实现比较困难。
方案二:
根据本系统功能的要求,这里选用了两个光电开关来实现人数的统计,将两个光电开关置于场所的门口,一前一后放置,当有人经过门口,会挡住光电开关,光电开关输出的电平会由高电平变为低电平,可以由电平变化的先后顺序知道人是进入场所还是出去,从而对所统计的数据进行加减,统计这时室内的总人数。
由上面的分析,方案二比较适合本系统。
2.5系统整体设计概述
本设计的核心控制芯片为89C52单片机,其功能是:
对键盘,显示模块,时钟模块,光电开关统计人数模块进行控制与运行。
不仅起到了主控作用,而且在各模块工作时起到了协调作用。
图2-1整体设计图
系统能完成以下功能。
系统设有清零按键,用户可以通过按键清除当前统计的人数,重新开始计数,但不会清除时间的显示,通过区分光电计数器1和光电计数器2的先后触发顺序就可以判断是进去还是出来从而对检测到的人数进行增减,从而统计出实时人数,将人数显示出来,本设计还具有显示实时时间的功能,并且可以使用按键来设置年、月、日、时、分、秒。
第3章系统硬件电路设计
3.1主控模块
主控模块在整个设计中起着重要的作用,是核心部分,它控制着各模块的运行,并且将各个模块之间的工作结合起来完成设计所需实现的功能。
本设计主控模块采用89C52芯片。
3.1.1STC89C52单片机主要特性
1.一个8位的微处理器(CPU),起到重要作用
2.数据存储器RAM(128B),主要存放数据,单片机最多提供1KRAM
3.程序存储器ROM(4KB),存放程序和原始数据及表格。
有一些单片机内部不带ROM/EPROM,如8031,8032,80C31等。
4.8位并行I/O接口P0-P3,与外部器件进行通信
5.两个定时器/计数器,有定时或计数功能
6.五个中断源,使用程序进行中断
7.实现串行通信的全双工串行I/O口一个。
8.振荡器和时钟产生电路,振荡频率最高为12MHz。
图3-1STC89C52单片机管脚图
部分引脚说明:
1.时钟电路引脚XTAL1(19脚)和XTAL2(18脚):
若设计用的是外部时钟,XTAL1必须接地。
有脉冲信号输出代表正常工作。
2.控制信号引脚RST,ALE,PSEN和EA:
RST/VPD(9脚):
高电平信号输入可以复位。
ALE/PROG(30脚):
地址锁存允许信号端。
PSEN(29脚):
可以作为读取程序存储器的选通端。
此引脚接EPROM的OE端。
EA/Vpp(31脚):
当此引脚为低电平时,CPU直接访问外部程序存储器,高电平时,内部不够用,才访问外部程序存储器
3.输入/输出端口P0/P1/P2/P3:
P0口(P0.0~P0.7,39~32脚
P1口(P1.0~P1.7,1~8脚)
P2口(P2.0~P2.7,21~28脚)
P3口(P3.0~P3.7,10~17脚)
P3.0:
(RXD)串行数据接收。
P3口第二功能:
P3.1:
(RXD)串行数据发送。
P3.2:
(INT0#)外部中断0输入。
P3.3:
(INT1#)外部中断1输入。
P3.4与P3.5:
代表定时/计数器T0与T1的外部计数输入。
P3.6:
外部数据存储写选通。
P3.7:
外部数据存储读选通。
3.1.2STC89C52单片机的中断系统
STC89C52中断系统有5个中断源,2个优先级,CPU响应中断请求由IE决定;各中断源的优先级由IP决定;具有相同优先级的各中断,响应前后次序由内部的查询逻辑确定。
3.1.3单片机最小系统设计
图3-2最小系统电路图
图3-2为单片机最小系统电路图,除了单片机,还有时钟、复位电路还有电源组成,在时钟电路里用12MHZ的晶振提供时间基准,复位电路中的按键按下后,电路回到刚上电的状态。
图中10K排阻为P0口的上拉电阻,由于P0口漏极开路的结构跟其他IO结构不一样,所以要加上拉电阻才能正常使用。
3.2LCD液晶显示器简介
由于本设计中要求显示界面显示一些参数,因此这里选用了LCD1602作为界面显示,可以把一些相关的参数进行显示。
3.2.1液晶原理介绍
液晶显示器主要技术是液晶控制透光度技术,运用这个技术来实现色彩。
这个技术可以解决刷新率的问题。
其通过单片机的控制来显示一些数据即数字,字符等。
本系统显示部分用的是LCD液晶模块。
点阵图形式液晶原理:
已知显示的字符,将字符对应代码送入,显示器上对应位置点亮或不点亮来将字符清晰地显示出来。
3.2.2液晶模块简介
LCD1602液晶模块与一般显示器比较,它可以将字符移动,并使其闪烁,与单片机并行通讯。
3.2.3液晶显示部分与STC89C52的接口
如图3-3所示。
用STC89C52的P0口作为数据线,用P1.2、P1.1、P1.0分别作为LCD的EN、R/W、RS。
这个电路主要设计为:
显示模块初始化:
首先要做的是清除屏幕内容,将接口数据设为8位,显示的字符行数为2行,字符的型号为5×7点阵,再设为整体显示,并将光标和字体闪烁取消,再统一显示。
其次将日期显示分为两行,将统计出来的人数置于右端,进行显示。
图3-3LCD1602与STC89C52的接口电路
3.3键盘模块设计
本系统按键使用的是独立的按键,按键的一端接IO口,另一端接地,IO口都有上拉电阻,当按键没有按下时,IO接高电平,当按键按下的时候,IO接地,单片机检测到这个IO口电平为低电平,通过检测与按键连接的IO口状态就可以判断按下的是那个按键。
4个按键分别代表以下功能,第一为功能按键,可以切换不同参数设置界面,进行设置,第二个为增加按键,增加年,月,日等,第三个为减少按键,对年,月日进行减,第四个为清零按键,清除当前统计的人数,重新来计数,但不会清除显示的时间。
3.4时钟模块的设计
实时显示时间这里用串行时钟芯片DS1302。
其优点是与单片机的连线大为减少,很大程度的节省了单片机的系统资源,单片机通过读取DS1302里面寄存器里面的的数据就能得到实时时间。
3.4.1DS1302概述
DS1302的性能比较高,功耗比较低,并且内部有31*8的RAM的实时时钟电路,DS1302可以计时年、月、日、时、分、秒等时、分、秒比较准确的计时,可以将每个月的31、29、28或30天进行加与减的操作,也可对闰年进行补偿,其工作在2.5V~5.5V。
该芯片有两个电源引脚,一个是主电源,另一个是后备电源。
由VCC1或VCC2中较大者供电。
当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。
DS1302在传送数据时,必须把RST脚置为高电平,才可以将命令字及数据送入寄存器里面,如果置RST为低电平,数据传送会终止,并且I/O引脚变为高阻态,使得无法读取,无法显示时间。
3.4.2DS1302内部RTC和RAM地址分配
DS1302地址分配如图3-4所示。
RTC寄存器地址位于00H到07h处。
RAM寄存器地址位于08h~3Fh。
图3-4DS1302地址分配图
DS1302的控制字如图3-5所示。
位7必须是逻辑1;如果它为逻辑0,则不能把数据写入到DS1302中。
位6为0,表示存取日历时钟数据;为1表示存取RAM数据。
位5~1(A4~A0)指示操作单元的地址。
位0为0,进行写操作;为1表示进行读操作。
图3-5控制字节的含义
把时钟/日历或RAM寄存器规定为多字节方式,可以提高地址的寻址能力。
数据读写程序如图3-6所示。
图3-6数据读写程序
3.4.3DS1302时钟和日历
读取正确的寄存器字节就可以得到正确的时钟和日历信息,如图3-6,其中有秒寄存器,分寄存器,小时寄存器,年寄存器,可以通过读取数据和写数据来得到准确的时间,还可以设置时间模式是12小时还是24小时。
除此之外,这个芯片还有充电寄存器,可以在断电时起作用。
图3-6DS1302寄存器
3.4.4DS1302时钟电路设计
DS1302采用串行数据传输,和单片机连接时用三条线,可以将时间信息写入其寄存器内,也可以从寄存器内读取时间,只要将CE,SCLK,I/O串行数据引脚连接到单片机上即可。
VCC2是备用电源,掉电时可以用,以便保存数据,芯片采用32.768Hz晶振。
单片机通过读取寄存器内的数据得到时间信息,并将其显示出来。
3.5人数检测模块设计
人数检测模块是整个系统所要实现的主要功能,这里用光电开关来实现功能。
3.5.1光电开关工作原理
光电开关是将光的变化转化为电平的变化来实现电路功能的。
它包括:
发送端、接收端和检测电路。
单片机通过检测电路的电平高低来统计人数。
3.5.2光电开关电路设计
本设计用两个槽型光电开关进行实时人数的统计,但有人从光电开关中间通过时,将光线挡住,检测电路会检测到低电平,当不挡住的时候光电开关输出高电平,为了防止人经过的时候跳变沿产生误触发,增加了一个一个迟滞比较器,可以尽量避免误触发,使读取的数据精确,单片机通过读取输出的电平的高与低,可以判断光电开光中间当前是否有人经过。
当人先通过光电开关1再通过光电开关2,那么人数增加1,反之则减少1,这样就可以实时地统计出场所内的人数。
3.6硬件总体连接图
如图3-6,将各个模块连接起来,组成了整体电路图,其中有单片机的外围复位电路,时钟电路,及电源电路,按键电路,显示电路,及人数统计电路,人数统计电路里面设有迟滞比较器。
图3-6硬件总体图
第4章系统软件设计
4.1系统软件总体设计
图4-1主程序流程图
程序流程图如图4-1所示,单片机通电后先复位,清除一些保留的数据,然后把当前的一些时间信息以及人数显示,每个循环单片机都会判断用户是否按下功能按键和清零按键,按下功能按键后进入时间参数设置,设置好后,时钟芯片开始运行,自动计时,按下清零按键则对当前统计的人数清零,单片机通过人经过光电开关的先后顺序进行人数的加减,先通过1再通过2则加1,反之则减1。
单片机通过读取时钟芯片内的数据,以及人数统计模块的数据,将时间与统计的人数显示到显示器上。
4.2程序设计原理
本设计采用C语言进行的程序设计,与汇编语言比较,更容易理解,这是要相对简单的。
先确定硬件电路,将各模块的作用与关系分析出来,然后进行软件设计。
软件任务分析时,首先要把这个设计需要实现的功能一一列出,并将每一功能模块进行接口定义,将数据结构与数据类型都规划好,之后用软件进行功能模块的实现。
进行软件设计时,要确定主程序与子程序,子程序有显示子程序,时钟子程序,按键程序等。
并合理安排中断程序,并将其先后顺序规划好,以更好的设计程序。
第5章系统调试
5.1硬件调试
人数统计系统的电路较大,涉及的模块比较多,其中包含人数统计模块,时钟模块,单片机最小系统模块,液晶模块,按键模块,因此在焊接方面更是不可轻视,如果电路出现短路,以及错接等情况,那损失会很大。
整个电路中,如果有一个地方出现错误的话,都会影响整个电路的功能及调试,而且电路复杂,对于比较靠近的两个引脚,应十分注意,不要将其焊接在一起,造成短路现象。
在制作硬件电路之前,我们先根据实际需要的功能划分硬件模块,并且在PROTEL里面画出其硬件原理图和PCB图,检查无误后开始在万用板上焊接。
在硬件调试中肯定会有一些问题。
不过这些问题的出现可以更好地了解作品,完善作品,问题如下:
问题1:
开始的时候光电开关在人通过的时候电平不跳变。
解决:
后经过查询资料发现光电开关发射端发光管流过的电流太小,导致接收端没有很好的导通。
问题2:
人数统计不准确,与正确的相比,老是少一个或是多一个
解决:
经过检查,是迟滞比较器电路没有接通,会出现误触发,将其接通即可。
5.2软件调试
人数统计系统功能的实现需要较复杂的程序才可以实现,难免在编写程序和调试时出现了一些比较难解决的问题。
首先为了更好的测试效果,我最开始是直接在PROTUES软件下进行仿真,在确定无误后,再把程序烧录到实物中运行。
然后再将错误的地方进行修改,再调试,经过多次这样的步骤,最后解决了问题,在这个过程中遇到以下问题:
问题1.烧入程序后,LCD显示一行,只有年月日,无时分秒
解决:
首先检查程序,看显示子程序有没有问题,之后检测出来,设置显示为两行,解决问题。
问题2.当使用按键设置时间的时候,设置的时间与显示的时间不是对应的
解决:
检查按键与单片机的接口电路连接,重新设置
5.3系统检测
经过一系列的实验,实际的操作,可以得到比较准确的数据,但是也存在一定的误差。
缺点是需要增加一个只可以一个人通过的设备才可以对人数进行准确的统计,而且对于门两边距离太大的场所,它的精确度是无法确定。
结论
经过这次设计,我将课本上的知识整理总结,再通过自己的理解,运用到了实际的电子产品上,我做的人数统计系统,可以实现所要求的功能,当然也有一些不足之处,相对来说稳定性还是不够的,也存在一定的误差,还有就是界面还不够完善。
通过自己设计硬件电路,使我对模拟电子技术有了更进一步的认识,也让我掌握了一些简单的电路设计,比如:
单片机最小系统,按键电路以及时钟电路等。
设计软件方面,我也认识到了认真仔细的重要性,其次,在写程序之前,必须规划好,一步一步地进行。
通过这些,我进一步地了解了单片机的强大功能,在各个领域内电子产品上的广泛应用,以及C语言在电子行业的广泛应用。
在这个过程中,我所学的知识运用到了电子产品上,使我真正地做到了学以致用,得到了锻炼。
参考文献
[1]彭伟.单片机C语言程序设计实训100例.电子工业出版社.2009年
[2]吴运昌.模拟电子线路基础.广州:
华南理工大学出版社,2004年
[3]阎石.数字电子技术基础.北京:
高等教育出版社,1997年
[4]张晓丽等.数据结构与算法.北京:
机械工业出版社,2002年
[5]马忠梅等.ARM&LINUX嵌入式系统教程.北京:
北京航空航天大学出版社,2004年
[6]李建忠.单片机原理及应用.西安:
西安电子科技大学,2002年
[7]韩志军等.单片机应用系统设计[M].机械工业出版社,2004
[8]周润景等.Proteus在MCS-51&ARM7系统中的应用百例[M].电子工业出版社,2006
[9]马忠梅等.单片机的C语言应用程序设计[M].北京航空航天大学出版社,2006
[10]刘树中,孙书膺,王春平.单片机和液晶显示驱动器串行接口的实现[J].微计算机信息,2007
[11]骆定辉.学术期刊《电子测试》,2013
致谢
这篇论文是在导师李军老师的指导下完成的,李老师在繁忙的教学工作中抽出时间指导我的论文撰写,在这个过程中,从选题,查阅资料,撰写工作表,撰写文献综述到写论文,我遇到了很多问题,每次我都会请教老师,老师为人朴实无华,平易近人,有着渊博的专业知识,每次都会认真讲解,让我在理论方面得到了提升,同时,老师宽以待人,诲人不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 人数 统计 系统