基于51单片机的人数监测系统实验案例设计
2021-06-03张谦
张 谦
(洛阳理工学院 电气工程与自动化学院,河南 洛阳 471023)
1 实验内容与任务
(1)使用单片机监测公共场所入口处和出口处的人数,并在LED数码管上显示当前人数,当人数超过设定的上限时发出报警(有源蜂鸣器和发光二极管);
(2)将任务(1)中入口和出口处的两个按键换成红外传感器和触摸键,实现同样的功能;
(3)将任务(1)中的有源蜂鸣器换成无源蜂鸣器,当人数超过上限时,发出声光报警(声音频率可以改变),并可以通过一个按键(外部中断)停止蜂鸣器的报警;
(4)在任务(3)的基础上增加双机通信的功能,当人数不超过上限时,单片机发送字符“OK!”当人数超限时,单片机发送字符“Warning!”
2 实验过程及要求
(1)了解数码管动态显示的原理及编程方法;
(2)了解独立按键的识别和编程方法;
(3)了解单片机系统常用的驱动元件,掌握数码管和蜂鸣器的驱动方法;
(4)了解有源蜂鸣器和无源蜂鸣器的区别,掌握两种蜂鸣器的编程方法;
(5)了解红外传感器及触摸键的原理和使用方法,理解它们与普通按键的区别;
(6)设计系统硬件电路,分为主控模块、入口和出口人数监测模块、显示模块、报警模块等;
(7)设计软件的流程图并编写程序,包括主程序、显示子程序、中断服务程序等;
(8)在Keil中调试编写的程序,并在仿真软件Proteus中进行仿真;
(9)将程序下载到开发板上进行调试和验证;
(10)撰写实验报告.
3 教学目的
通过一个实际项目帮助学生理解按键、数码管和蜂鸣器等单片机系统中常用的输入输出器件的原理及编程方法,有助于学生了解红外传感器、触摸键等生活中常用的监测输入器件的原理及使用方法,以及掌握单片机串行口双机通信的过程及编程方法.
4 实验教学与指导
4.1 相关知识
(1)本项目在实际生活中的应用非常广泛,既可以用于监测上限不超过100人的公共场所(如教室)的人数,也可以用于监测上限为几万人的户外公共场所(如公园)的人数.
(2)用两个74HC573芯片分别驱动8位共阴极数码管段选信号和位选信号的接线及编程.锁存器74HC573的控制信号是11号引脚LE,锁存的方法是: 将LE引脚先赋值为1,此时芯片处于直通状态;然后将它赋值为0,此时数据就锁存在锁存器中,可以把LE接在一个单片机I/O口引脚上,通过程序来控制74HC573芯片的锁存.
(3)有源蜂鸣器和无源蜂鸣器的区别和编程.有源蜂鸣器内部有振荡源,通电就能发声;无源蜂鸣器需要一定频率的脉冲信号才能发声,给无源蜂鸣器输入不同频率的脉冲信号,它就可以发出不同的声音.脉冲信号可以通过延时实现,也可以通过定时器实现,本项目中因为数码管动态显示一直在用延时,所以只有通过定时器才不会造成显示混乱,并且可以通过调整定时器输出发波的频率改变无源蜂鸣器的音调.有源蜂鸣器和无源蜂鸣器一般都用三极管驱动.
(4)红外传感器模块和触摸键模块的原理和使用.本实验使用的红外传感器TCRT5000由红外发光二极管和光敏三极管组成,红外发光二极管导通后会发出肉眼不可见的红外线,有人通过时,就会将红外线反射到同侧的光敏三极管上,使得光敏三极管导通,此时比较器LM393的输出为0;反之,无人通过时,光敏三极管截止,LM393输出为1.将LM393的输出接单片机的一个I/O口引脚,通过该引脚为0还是为1就可以判断是否有人通过.当有人用手触摸了触摸键模块指定的区域时,电容触摸芯片TTP223的1号引脚就会输出0,当无人触摸时该引脚输出1.这两个模块都是有人通过或者触摸时为0,无人通过或者触摸时为1,这与普通按键按下为0、不按下为1的逻辑是一样的,所以把独立按键换成这两种元件时程序可以不用修改。另外,由于这两种元件不存在普通按键的抖动,因此程序中可以不要延时消抖的语句.
(5)单片机串行口双机通信的过程及编程方法.单片机内部有一个全双工的串行口,单片机可以通过串行口和其他单片机或者PC机进行双机通信,双机通信一般选择串行口工作方式,其波特率是可变的.单片机发送数据一般采用查询方式编程,接收数据一般采用中断方式编程,在PC机一端可以通过串口调试助手或者STC-ISP下载软件自带的串口助手实现和单片机的通信,PC机端的串口调试助手如图1所示.
图1 PC机端的串口调试助手
(6)仿真图中总线和标号的使用和画法.本项目中用到的元件比较多,如果按照传统方法连线的话,导线难免会交叉,显得比较杂乱,可以使用总线加上标号的方法来画图,总线可以清楚看出导线的连接关系,而标号相同的导线在电气上就是相连的,使用时注意区别标号和芯片的引脚号,引脚号紧挨着芯片两侧并且是数字,而标号由字符组成.
(7)分模块设计程序的流程图,包括主程序、显示子程序、数字分离子程序、定时器中断服务程序、外部中断服务程序、串行口中断服务程序等.各个模块相互独立,流程图设计好之后,可以各个模块分别编程,之后再统一调试.
4.2 实验过程中的指导
(1)指导学生在仿真软件Proteus中完成仿真图的绘制,提示学生,在仿真图中,无源蜂鸣器用SPEAKER,有源蜂鸣器用BUZZER,并双击BUZZER将其工作电压从12V改为3V;
(2)指导学生在Keil中完成程序的编译、连接和调试,生成.HEX文件;
(3)指导学生用仿真软件Proteus将程序的功能仿真实现出来;
(4)指导学生按照仿真图完成51单片机开发板的接线,并将程序下载到开发板上进行验证;
(5)在单片机和PC机进行双机通信时,指导学生在串口助手中正确地设置串口号、波特率等内容,并检查单片机系统的晶振频率是否为11.0592MHz,程序中定时器T1的初值是否正确.
5 实验原理及方案
(1)实验原理和系统结构
本实验项目是用51单片机监测公共场所的人数并实时显示在LED数码管上,当人数超过设定的上限时发出声光报警,并通过串行口给PC机发送字符串“Warning!”当人数没有超过设定的上限时不发出声光报警,并通过串行口给PC机发送字符串“OK!”系统总体结构框图如图2所示.
图2 系统总体结构框图
(2)实现方案
(a)入口、出口人数监测模块
可以选择的有按键、红外传感器、触摸键等,本实验任务1中使用了两个独立按键分别放在入口和出口处: 当入口处有人进入时,就按下相应按键,人数加1;当出口处有人出来时,就按下相应按键,人数减1.因为在实际应用中一般采用红外传感器来监测人数,所以在实验任务2中把独立按键换成了红外传感器和触摸键.
(b)主控模块(单片机)
可供选择的单片机有51系列单片机、AVR系列单片机、STM32系列单片机等,因为本次实验功能比较简单,51单片机完全可以实现指定的功能,所以选择了51系列单片机中的STC90C516RD+,跟AT89C51单片机相比,它的片内资源如ROM和RAM容量、并行I/O端口数量、定时器个数等都有所提升,使用更加灵活方便.
(c)显示模块
单片机系统中常用的显示器件有发光二极管、LED数码管显示器、LCD液晶屏显示器、8×8点阵等,因为本实验需要显示人数值,所以选择LED数码管显示器就可以满足要求,LED数码管的段选和位选信号的驱动用两片74HC573芯片完成,两个74HC573芯片的输入接在一起,因此只需要用单片机一个并行I/O口就可以控制数码管模块,在图3中使用的是单片机的P2口.当然我们也可以使用LCD1602液晶显示器来显示当前人数.
(d)报警模块
单片机系统中常用的报警方式有由发光二极管、蜂鸣器、语音芯片等构成的声光报警,图形图像报警,无线报警等,本实验要求当人数超过上限时发出报警以提示相关人员采取相应的措施,所以我们选择了由发光二极管和蜂鸣器构成的声光报警.其中,发光二极管由单片机I/O口直接驱动,蜂鸣器采用三极管驱动,如图3中所示.
(e)电源模块
可选择的供电方式有电池盒供电、USB口供电、电源接口供电和5V集成稳压电源供电等,本实验采用USB口供电.
(3)系统电路原理图
系统电路仿真图如图3所示.
图3 系统电路仿真图
(4)程序流程图
系统程序采用模块化编程,可分为主程序、显示子程序、数字分离子程序、定时器中断服务程序、外部中断服务程序等模块,每个模块都是一个独立的函数,它们可以分别编写和调试,之后再统一调试.
6 小结
(1)该项目可用于各种公共场所的人数监测,对于避免因人员密集造成病毒传播具有一定应用价值.
(2)项目包含了数码管、按键、蜂鸣器、定时器、中断、串行口等知识点,既可以作为一个综合性的实验,也可以用于单片机项目式教学.
(3)项目设置了三个循序渐进的基本任务和一个扩展任务,适用于不同层次学生实践能力的培养和提高.