项目4-红外线计数器

《项目4-红外线计数器》由会员分享,可在线阅读,更多相关《项目4-红外线计数器(32页珍藏版)》请在文档大全上搜索。
1、单片机原理与应用项目课件单片机原理与应用项目课件复习回顾复习回顾前一项目主要内容前一项目主要内容n C51语法知识(switch、if 、函数及调用、数组)n 单片机项目的完整开发流程n 独立按键的驱动技术n 数码管显示驱动技术(静态显示、动态显示)n 单片机驱动蜂鸣器(有源蜂鸣器、无源蜂鸣器) 一、项目描述一、项目描述1. 需求分析,项目导入计数器?计数器的用途?啤酒生产线景区出入口n 用单片机设计并实现某景区进出人流量计数器。n 功能要求:(1)能对分别检测出“进入景区”、“离开景区”人数,并计算出“滞留在景区内”的游客人数。(2)将相应人数信息通过数码显示出来。2.项目任务一、项目描述一
2、、项目描述一、项目描述一、项目描述3. 项目目标序号序号类别类别目目 标标一知识n单片机中断系统结构、工作原理;n外部中断工作原理及控制方式;n外部中断的程序设计知识;n红外线光电开关的基本原理二技能n中断系统软件流程图的设计与绘制。n外部中断程序的编写,红外线光开关选型及应用。n进一步掌握单片机项目开发设计流程。三职业素养学生的沟通能力及团队协作精神良好的职业道德质量、成本、安全、环保意识规范性的操作和设计过程二、项目资讯二、项目资讯n 单片机中断系统 n 单片机中断控制n 单片机中断处理过程n 红外线开关应用原理二、项目资讯二、项目资讯n 1.任务:在项目2流水灯的基础上,增加暂停功能。即
3、按下一个按建,流水灯停止流水,所有灯(8个)全亮3秒钟之后恢复。(从原来位置继续流水效果)n 2.解决方案与思路分析任务可知,这是一个典型的中断情况可采用外部中断(外部中断0或者1)在外部中断引脚上接一个按键到地,按下按键产生一个“0”电平,产生中断。响应中断后,对应LED灯全亮(P口置0),并延时3秒。 二、项目资讯二、项目资讯课堂练习课堂练习3 软件设计流程图(以外部中断0为例)主程序流程图主程序流程图开始原流水灯程序二、项目资讯二、项目资讯课堂练习课堂练习初始化中断/开中断:EX0=1;EA=1;INT0中断子程序流程图中断子程序流程图中断开始P1=0 x00返回延时3S使用前面学过的延
4、时函数Delay(3000)8个LED全亮4 程序编写主程序主程序流程图主程序流程图开始原流水灯程序二、项目资讯二、项目资讯课堂练习课堂练习初始化中断/开中断:EX0=1;EA=1;void main()EX0=1;EA=1;while(1) liushuideng(); INT0中断子程序流程图中断子程序流程图中断开始P1=0 x00返回延时3S使用前面学过的延时函数Delay(3000)8个LED全亮4 程序编写中断子程序void Ex_Int0(void) interrupt 0P1=0X00; Delay(3000);二、项目资讯二、项目资讯课堂练习课堂练习n 1.建立项目EX4_1,
5、编写源程序,先全部COPY原流水灯源程序,编译项目无误。n 2.加入中断函数内容,编译无误后,下载到学生开发板中,按下按相应按键(哪一个?),观察记录效果。n 3.在主函数中加入中断初始化语句,编译、下载后。按下按相应按键,观察记录效果。5 实施步骤二、项目资讯二、项目资讯课堂练习课堂练习观察、分析思考:n 对比第2步与第3步运行结果,能得出什么结论?n 如果按下按键一直不放,会有什么样的结果,为什么?三、项目分析三、项目分析1. 系统功能分析n 分别通过两对红外线对管实现“入”与“出”计数。n 由3组2位共阳极的数码管分别显示“入”、“出”、“滞留” 人数。n 当有人出入时,通过蜂鸣器发声提
6、示。入出滞留2. 硬件电路设计 MCU6位数码管6位位选8位段码P2P0三、项目分析三、项目分析红外线计数器硬件电路框图红外对管2蜂鸣器P1.2位选驱动电路红外对管1进出剩余INT0INT1三、项目分析三、项目分析。 红外线开关典型电路红外线开关应用电路5VP3.2上拉电阻MCUINT0三、项目分析三、项目分析参数手册3 软件设计流程图三、项目分析三、项目分析数码管循环扫描显示INT0中断子程序流程图中断子程序流程图主程序流程图主程序流程图开始初始化中断(开INT01中断)显示中断开始IN人数加1返回INT1中断子程序流程图中断子程序流程图计算剩余人数蜂鸣器响中断开始OUT人数加1返回蜂鸣器响
7、三、项目分析三、项目分析主程序编写思路主程序编写思路开始初始化中断(开INT01中断)显示计算剩余人数延时1msIT0=1;EX0=1;IT1=1;EX1=1; EA=1;使用前面项目中的显示函数Display(InCount,StayCount,OutCount)剩余人数=IN人数-OUT人数使用前面学过的延时函数Delay(1)模块化为函数void ExInit(void)为什么?什么作用三、项目分析三、项目分析INT0中断子程序编写思路中断子程序编写思路中断开始IN人数加1返回蜂鸣器响延时0.5S设置变量 InCount 用来记录IN人数蜂鸣器停使用前面学过的延时函数Delay(500)