资源描述
基于单片机的自动门控制系统完整(完整资料)
(可以直接使用,可编辑 优秀版资料,欢迎下载)
毕业设计报告
题目:
院系:信息与控制学院
专业:
班级学号:
学生姓名:
指导教师:
成绩:
2014 年月日
目录
1 方案设计1
1.1 设计任务要求1
1。2 硬件方案设计1
1.3 软件方案的设计1
1.4 主要设计的实现原理1
2 硬件设计1
2.1 单片机的简介1
2.2 硬件器件选择1
2.2.1 单片机选型1
2.2。2 按键部分1
2.2。3 人体检测传感器1
2.2。4 光电检测传感器1
2。3 单片机最小系统1
2。4 按键部分电路图1
2.5 光电检测部分1
2.6 人体热释电传感器1
2.7 电机驱动电路1
3 软件部分设计1
3.1 总程序设计1
3.2 按键程序流程图1
3.3 定时器0中断1
3.4 门控判断程序1
参考文献1
附录A 系统原理图1
附录B 程序代码1
附录C 实物图片1
1 方案设计
1.1 设计任务要求
对于自动门控制系统,需要实现的功能如下所示:
(1)自动检测功能:能够自动检测门的附近是否有人,如果有人则开启该门,在没有人体信号时,延时数秒后自动关闭。
(2)安全保护功能:关门时,检测门导轨上是否有人,如果有则停止关门,并迅速打开门,防止人被挤住。
(3)电机调速功能:能够通过单片机控制电机的速度,开门关门时需要有个加速与减速的过程.
(4)按键输入功能:能够通过按键来控制门自动还是手动运行,在特殊情况下需要手动来操作该门。
(5)门开关限位功能:在开门与关门的时候能够检测到门的限位开关,来检测是否到门的关门与开门的限位。
1。2 硬件方案设计
本设计选用STC89C52单片机作为本设计的微控制芯片。按键部分采用独立式按键,人体检测部分,使用红外热释电传感器对外部人体信号进行检测。光电检测传感器使用TCRT5000光电传感器进行检测。
硬件部分框图如图1。1所示。
单
片
机
按键输入
电机驱动
晶振电路
安全检测
人体检测
复位电路
限位开关检测
图1。1 硬件部分框图
自动门控制系统的硬件组成如图1.1所示,本系统主要由STC89C52RC单片机及其外围电路、红外检测电路,门行程检测电路、直流电机控制电路、安全检测电路等部分组成,单片机与晶振复位电路构成最小系统电路,作为主控电路,来协调外部其他各部分硬件电路,各个电路的功能如下:
(1)晶振电路
给单片机提供时钟系统,让单片机能够有运行的节拍与动力,晶振与单片机内部的电路一同构成了一个波形发生电路,输出与晶振频率相同的时钟,该时钟用作单片机的运行.
(2)复位电路
复位电路为单片机提供一个足够的开机运行的复位脉冲,能够让单片机在上电时有足够的时间复位。
(3)按键输入部分
按键输入部分用来作为人机交互界面部分,能够控制门的手动开关,切换自动模式与手动模式。
(4)电机驱动部分
电机驱动部分,用来驱动直流电机,单片机输出控制信号,来进行对电机的调速
(5)安全检测
安全检测部分用来检测是否有人被夹,能够提供使用者的安全。
(6)人体检测
人体检测用来检测是否有人接进门附近,检测到信号后单片机开始驱动外部电路开门。
(7)限位开关
限位开关主要用来检测开关门的行程位置.
1.3 软件方案的设计
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准, 使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标C语言是世界上最流行、使用最广泛的高级程序设计语言之一。
在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,以前有许多大型应用软件都是用C语言编写的(由于面向对象编程技术的出现,大型软件转由C++、JAVA、C#再配合C语言开发;C语言在面对大型的软件开发时,会显得有些吃力)
C语言绘图能力强,具有可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。
对于编译软件则使用Keil C51软件.Keil C51软件为目前相当流行的51系列单片机开发软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程。Keil是目前最好的51单片机开发应用软件。它是一款通俗易懂易于上手的单片机程序开发软件,与其他的单片机软件有很好的兼容性.我们在日常的学习中都是使用这个软件,所以在本次设计中我使用Keil C51软件进行程序的编译。
1.4 主要设计的实现原理
本次设计是红外线自动门控制系统,使用红外线传感器作为感应器,检测到人体辐射的红外线能量变化,将其转化为电信号,传给单片机,单片机通过驱动H桥电路来驱动直流电机,来使门开关,在关门的时候使用光电传感器进行检测,是否有人在门轨道上,如果有则停止关门,防止有人被夹,通过单片机控制交流电机,使门自动打开,当人进门后又可以使门自动关闭.本课题主要实现红外线检测和基于STC89C51的单片机控制系统。
2 硬件设计
2.1 单片机的简介
单片机是把一个计算机系统集成到一块芯片上,它是采用大规模集成电路技术把中央处理器CPU、随机存储器RAM、只读存储器ROM、各种I/O口和中断系统、定时器等功能集成到一个芯片上构成的一个简小而完善的微型计算计系统.单片机已成为电子设计中使用最多最广泛的元件,它的体积小、低电压、低功耗、可靠性高、处理功能强、控制功能强、环境适应能力强、使用方便等优点,主要在仪器仪表、家用电器和玩具、医用设备、计算机通信技术、智能测量设备、航空航天等领域被广泛应用.大概可分如下几个方面:
⑴在智能仪器仪表中,单片机的优点使它广泛应用于各种仪器仪表中,单片机通过不同类型的传感器,可以测量温度、频率、速度、长度、音量、光亮、电压、功率等物理量。利用单片机控制使得仪器仪表准确率更高,灵敏度更高,测量速度更快。
⑵在家用电器和玩具中,随着国内国外的快速发展,现在的家用电器各式各样,其中少不了单片机控制,例如电视、空调、洗衣机、微波炉、电饭锅等。现在孩子手中的玩具更少不了单片机控制,例如音乐盒、遥控车等等其它智能玩具。这使我们的生活不仅方便而且更加有趣。
⑶在计算机通信中,单片机能够在计算机网络和通信设备之间提供方便的条件。现如今的通信设备也在一步一步实现单片机智能控制,例如手机、对讲机、楼宇门呼叫对讲系统、列车和飞机无线通信。
⑷在汽车电子产品中,单片机也实现了它的价值,例如汽车的集中显示系统、动力、速度、压力监测控制系统、自动驾驶系统、导航系统、安全保护系统等。
单片机在办公自动化设备,商业营销设备等其他领域中中也有着广泛的应用,它使我们的生活变得更加方便快捷,更加丰富多彩,生活工具也越来越智能化,如今我们的生活离不开单片机,它是我们生活中不可缺少的一部分.
2。2 硬件器件选择
2.2.1单片机选型
方案一:传统51单片机AT89C51
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS8位微处理器,该处理器单指令周期为1us(在12M晶振下),工作频率0—24MHz,并且该芯片支持仿真,是经典51单片机课程中的芯片,抗干扰能力强,但是随着科技速度的发展,该芯片慢慢被后继的芯片所替代,因为该芯片价格比较高,而且仿真器的成本较高,所以本设计不适于使用该芯片。
方案二:使用430单片机
TI生产的430系列单片机为超低功耗单片机,被广泛应用于各类低功耗的产品中,该系列单片机的优点为,功耗非常低,而且具有丰富的外设,能够直接进行ADC采集,高端芯片还可以进行DAC输出,并且外围电路简单,I/O口具有可控的输入与输出的方式,由于本设计不考虑功耗,所以此单片机不做考虑使用。
方案三:使用STC系列单片机
STC系列单片机由宏晶公司生产,其以低廉的价格与丰富的内部资源,深受广大使用者的喜爱,他内核与AT89S51的功能完全相同,我们采用STC89C52单片机为主控芯片,这样更能体现我们此次设计的性价比。
综上所述,本设计使用方案三选用STC89C52单片机作为本设计的微控制芯片。
2.2。2按键部分
方案一:行列扫描按键
行列式按键适用于按键应用数目比较多的设计,例如手机、电子称等需要输入数据较多的设备,行列式按键的优点是节省I/O口资源,使用8个I/O口就可以实现16个按键,分为行扫描口与列扫描口,该方案编程比较复杂,而且必须对I/O口进行实时的扫描.
方案二:使用独立按键
由于本设计使用的按键功能较少,只需要清零,计数压力值设置,需要4个按键,所以本设计使用独立按键,作为按键的输入部分,独立按键硬件电路设计简单,并且编程方便简单,而且速度快,不需要对I/O口做频繁的操作。
综上所述,本设计使用按键较少,使用方案二作为本设计的按键部分。
2.2。3人体检测传感器
人体检测部分,使用红外热释电传感器对外部人体信号进行检测,本设计使用人体热释电传感器模块HC—SR501,对人体信号进行检测,当检测到人体信号时,模块返回一个高电平信号,当人体信号消失时,模块返回一个低电平信号,模块输入5V直流电压信号,单片机的I/O口与模块返回的信号直连。
2。2.4光电检测传感器
光电检测传感器,用来检测关门时是否有东西在门轨道上,如果有检测到该信号则打开门,延时一定时间没有人体信号时在关闭,本设计使用TCRT5000光电传感器进行检测。
2.3 单片机最小系统
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统,对本次设计使用单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路[3].
复位电路:由电容串联电阻构成,由图并结合“电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。一般教科书推荐C 取10u,R取8.2K当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平至于如何具体定量计算,可以参考电路分析相关书籍。
晶振电路:典型的晶振值取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz.
(1)复位电路的用途
单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行.单片机复位电路如图2。1所示。
图2.1 89C51最小系统图
(2)复位电路的工作原理
在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位,所以可以通过按键的断开和闭合在运行的系统中控制其复位。
在电路图中,电容的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0。7倍即为3。5V),需要的时间是10K*10UF=0.1S.
也就是说在电脑启动的0。1S内,电容两端的电压时在0~3。5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0。1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。
在单片机启动0.1S后,电容C两端的电压持续充电为5V,这时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量.随着时间的推移,电容的电压在0。1S内,从 5V释放到变为了1.5V甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3。5V,甚至更大,所以RST引脚又接收到高电平,单片机系统自动复位。
2.4 按键部分电路图
按键电路主要分为两种,一种为扫描式按键,所谓扫描式按键就是对按键进行定期的逐个或者逐行的扫描,然后通过判断扫描处的高低电平,判断按键是否按下,这种按键被广泛应用在移动设备与电气设备中;另外一种按键的检测方式为AD检测,每个按键串一个电阻,组成一个电阻串联的网络,每个按键按下,对AD检测口所分的的电压就不相同,通过检测AD值的变化来达到按键检测的目的,该方式的优点是,使用的I/O口少,在单片机外围I/O资源不充足时比较适宜使用,但是该方法容易受到干扰,并且按键的个数受到ADC检测的精度约束,对于本设计由于使用的按键较少,并且单片机的I/O口资源比较丰富,所以使用独立式按键作为本设计按键的输入部分,其按键电路图如图2。2所示。
如图2。2所示,本设计使用四个独立按键,每个独立按键占用单片机的一个I/O口,单片机在检测时,先将K1~K4的I/O口的状态全都置为高电平,然后不断的检测这四个I/O口的状态,通过if语句判断是否有I/O口为低电平,如果为低电平证明有按键按下,然后单片机需要做消除抖动的程序,因为有些时候从单片机的线上会进入一些干扰,这些干扰会使单片机误认为是按键动作,所以根据机械弹性的反弹接触曲线,做20ms的延时是最理想的,延时后再次检测按键,如果按键还是为低电平,则证明有按键按下,如果不是低电平则此按键信号为干扰信号,跳出程序,如果有按下则while(1)等待按键释放,这样就完成了整个独立按键功能的判断。
图2。2 按键电路图
2.5 光电检测部分
光电检测部分电路图如图2。3所示,光电检测模块,接口如图所示,输入电压为5V直流信号输入,3、4引脚为地,2引脚为输出,模块中输出使用的是LM358运放做的比较器输出,输出具有一定的驱动能力,所以不需要加上拉电阻,使用简单方便,当有信号挡道传感器前面时,INT1引脚返回高电平信号,否则返回低电平信号,INT1引脚接到单片机的P3.5上。
图2。3 光电检测电路图
2.6 人体热释电传感器
人体热释电传感器模块使用HC-SR501,该模块的参数如下:
1、全自动感应:人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。
2、光敏控制(可选择,出厂时未设)可设置光敏控制,白天或光线强时不感应。
3、温度补偿(可选择,出厂时未设):在夏天当环境温度升高至30~32℃,探测距离稍变短,温度补偿可作一定的性能补偿.
4、两种触发方式:(可跳线选择)
a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;
b、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
5、具有感应封锁时间(默认设置:2.5S 封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间"两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒—几十秒钟)。
6、工作电压范围宽:默认工作电压DC4.5V-20V。
7、微功耗:静态电流〈50 微安,特别适合干电池供电的自动控制产品。
8、输出高电平信号:可方便与各类电路实现对接。
其电路图如图2.4所示,接口电压为5V,INT0接入到单片机的P3.2引脚,高电平为有人体热释电信号,低电平为无人体信号。
图2.4 红外热释电接口电路图
2.7 电机驱动电路
电动机驱动部分使用驱动模块,该驱动模块使用的驱动芯片为L9110,该芯片一个可以驱动一个电动机,输入部分为两个引脚,其电路图如图2.5所示,其中控制信号Control_A与Control_B来控制电机运行,当Control_A为0,Control_B为1时电机正传,此时通过PWM信号控制Control_A可以调整速度,当Control_A为1,Control_B为0时电动机反转,此时通过PWM控制Control_B来调整速度。
图2.5驱动接口电路图
3 软件部分设计
程序设计的基本概念有程序、数据、子程序、子例程、协同例程、模块以及顺序性、并发性、并行性、和分布性等。程序是程序设计中最为基本的概念,子程序和协同例程都是为了便于进行程序设计而建立的程序设计基本单位,顺序性、并发性、并行性和分布性反映程序的内在特性。
在硬件系统设计好以后,就要设计相应的程序实现系统功能。把整个过程分成若干个部分,每一部分叫做一个模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。
模块程序设计法的主要优点是:
(1)单个模块比起一个完整的程序易编写、调试及修改。
(2)程序的易读性好.
(3)程序的修改可局部化。
(4)模块可以共存,一个模块可以被多个任务在不同条件下调用.
(5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便.
3.1 总程序设计
本设计为基于单片机的自动门控制,程序控制部分较为复杂的是PWM驱动输出功能,因为电机在运行时,启动时需要有个加速的过程,停止时要有一个减速的过程,所以电机运行时需要PWM控制电机运行的加速与减速,这样需要使用到单片机的定时器作为PWM定时的功能定时器,然后是按键功能与门控的判断控制部分。
主函数程序设计流程图如图3。1所示,单片机上电后,对定时器进行初始化设置,配置定时器0,工作模式1,16位定时器,手动装入初始计时值,将定时时间定位1ms,这样PWM的调整度为20,则PWM调整的频率为50Hz,然后打开定时器0中断,由于定时运行的PWM需要有个时间周期来维护运行,所以需要将定时器1配置为定时器,定时时间配置为50ms,开启中断,然后开启总中断,进入while循环函数,该函数里完成所有功能函数的动作,主要包括,按键查询与执行函数,自动手动模式指示灯函数,门控指示灯控制函数,自动门控函数.
开 始
初始化定时器0
初始化定时器1
停止电机输出
按键处理函数
模式指示灯
门控指示灯
自动门控判断
图3。1 总体设计流程图
3。2按键程序流程图
按键扫描程序为独立按键的扫描程序,主要完成按键的判断,延时去抖动,判断是否有按键确实按下,然后对对应的按键的功能做详细的介绍,其按键扫描程序的流程图如图3.2所示,首先使用if语句判断是否按键1按下,如果按下则为低电平,然后进入20mS延时函数,防止抖动,然后再次判断该按键是否按下,如果确实按下则进入对应的按键的执行函数。
开 始
延时20mS
按键1按下
按键1按下
延时20mS
按键2按下
按键2按下
延时20mS
按键3按下
按键3按下
延时20mS
按键4按下
按键4按下
结 束
限位信号
工作模式切换
手动开门
手动关门
Y
N
Y
N
Y
N
Y
N
Y
N
Y
N
Y
N
Y
N
图3.2 按键扫描程序流程图
3.3 定时器0中断
定时器0中断主要用来负责对PWM信号的产生,每次进入中断首先装入定时器的初始值,然后将定时累加值Timer0_Com加1,因为PWM的频率定为50Hz,所以当累加值大于19时,定时时间为20Ms,为一个判断周期,需要将Timer0_Com清0,然后判断累计值与PWM调节值的带下,如果小于PWM则输出电机驱动信号低电平,否则为高电平,这样就将PWM信号输出到单片机驱动模块端了,其定时器0中断流程图如图3.3所示。
中断入口
装入定时初始值
定时累计值加1
累计值>19
定时累计清0
累计值<pwm值
如果是开门
A=0;B=1
A=1;B=0
A=1;B=1
返 回
Y
N
Y
N
Y
N
图3。3 定时器0中断函数流程图
3。4 门控判断程序
进入该程序先判断是否为自动模式,如果不是则跳出函数,否则检测是否有红外信号,如果有则检测当前状态,如果为静止或者关门状态则开门,如果没有红外信号,检测门是否有光电信号,如果有则将门打开,其门控判断程序流程图如图3.4所示。
开 始
如果为自动模式
Y
N
如果有红外信号
Y
N
如果静止状态
Y
N
开门
如果关门状态
Y
N
开门
如果关门状态
Y
N
如果有光电信号
Y
N
开门
返 回
图3.4 门控函数流程图
参考文献
[1]《传感器及其应用》.张金铎金欢阳名编著.西安电子科技大学出版社,2002.
[2]《传感器及其应用实例》.何希才编著.机械工业出版社。2003。
[3]《传感器的理论与设计基础及其应用》,单成祥编著。国际工业出版社 。2002.
[4]《传感器技术与应用》。金庆发编著.机械工业出版社.1994。
[5]《单片微行计算机原理、应用及接口技术》.张迎新编著.国防工业出版社.2000.
[6]《电子技术基础》康华光。陈大钦编著.高等教育出版社,1998.
[7]《单片机原理及其接口技术》.胡汉才编著。北京:清华大学出版社.2004。
[8]《红外线探测与控制电路》. 陈永甫编著.北京:人民邮电出版社.2004.
[9]《传感器工作原理及应用实例》.黄继昌.徐巧鱼等编著。人民邮电出版社。2002。
[10]《基于单片机的智能系统设计与实现》.沈红卫编著.北京.电子工业出版社.2005.
[11]《现场总线技术及其应用》。阳宪惠编著.清华大学出版社.1999。
[12]《单片机原理应用与实验》。张友德,等编著。复旦大学出版社.2000。
[13]《单片机原理及接口技术》.李朝青编著.北京航空航天大学出版社.1996。
[14]《数字电子技术基础》。阎石编著。高等教育出版社。1998.
[15]《向凤红.自动控制原理》.陈玉宏编著.重庆:重庆大学出版社。2003.
附录A 系统原理图
附录B 程序代码
#include ”delay。h”
uchar Timer0_Com = 0;
uchar Pwm_Val = 0;
uint Timer1_Com = 0;
void Deal_AutoJudge( void );
//DistancValue ﻩ SpeedValue
void KeyBoard_Deal( void );
ﻩsbit KEY_1 = P0^3;
sbit KEY_2 = P0^2;
ﻩsbit KEY_3 = P0^1;
sbit KEY_4 = P0^0;
sbit KEY_5 = P3^7;
ﻩsbit KEY_6 = P3^6;
sbit JC_DOOR = P2^0;
ﻩsbit JC_INFR = P3^2;
ﻩsbit MOTOR_A = P2^6;
sbit MOTOR_B = P2^7;
ﻩsbit LED1 = P0^6;
sbit LED2 = P0^5;
ﻩsbit LED3 = P0^4;
bit WORK_FLAGE = 0; //--工作模式默认为手动模式
bit SINGEL_FLAGE = 0; //--开关门限位信号
ﻩuchar DOOR_STAT = 0;
ﻩuchar Work_Mode = 0;
void Init_Timer( void )
{
TMOD = 0x11;
ﻩTH0 = 0XFC;
TL0 = 0X17;
ET0 = 1;
TH1 = 0X3C;
ﻩTL1 = 0Xb0;
ET1 = 1;
ﻩEA = 1;
ﻩTR0 = 0;
TR1 = 0;
}
void main( void )
{
ﻩ//---——-—-—-----定时器初始化
ﻩInit_Timer( );
ﻩMOTOR_A = 1;
MOTOR_B = 1;
while(1)
ﻩ{
ﻩ//—----———-————-按键扫描
KeyBoard_Deal( );
ﻩ//--—-——------—-自动与手动模式判断
ﻩif( WORK_FLAGE )LED1 = 0;
else LED1 = 1;
//—-----—--—----是否开启门控判断
ﻩif( DOOR_STAT == 0 )LED2 = 1, LED3 = 1, Work_Mode = 0, TR1 = 0, TR0 = 0;
else
{
LED2 = 1;
LED3 = 1;
ﻩif( DOOR_STAT == 1 )LED2 = 0;
ﻩelse if( DOOR_STAT == 2 )LED3 = 0;
ﻩ}
//-————-——-----—自动检测判断
Deal_AutoJudge( );
}
}
void Deal_AutoJudge( void )
{ //-—处理自动检测
ﻩif( WORK_FLAGE == 0 )return;
if( JC_INFR == 1 )
{
if( DOOR_STAT == 0 )
{
DOOR_STAT = 1; //-—开门
Work_Mode = 0;
ﻩPwm_Val = 0;
ﻩTR1 = 1;
ﻩ}
else if( DOOR_STAT == 2 )
{
DOOR_STAT = 0; //--停止关门
ﻩdelay_ms(500);
DOOR_STAT = 1; //--开门
ﻩWork_Mode = 0;
Pwm_Val = 0;
TR1 = 1;
}
ﻩ}
ﻩelse //--如果没有感应信号
ﻩ{
//——如果在开门状态,则关门
ﻩif( DOOR_STAT == 1 )
{
ﻩif( JC_DOOR == 0 )
{
DOOR_STAT = 0; //--停止关门
delay_ms(500);
ﻩDOOR_STAT = 2; //-—关门
ﻩWork_Mode = 0;
ﻩPwm_Val = 0;
ﻩTR1 = 1;
ﻩ}
ﻩ}
else if( DOOR_STAT == 2 )
{
if( JC_DOOR == 1 )
ﻩ{
DOOR_STAT = 0; //--停止关门
delay_ms(500);
DOOR_STAT = 1; //--开门
Work_Mode = 0;
Pwm_Val = 0;
TR1 = 1;
}
ﻩ}
}
}
/********************************************
**函数名称:void Int_Timer1( void ) interrupt 3
**函数功能:定时器1中断函数 100HZ PWM 输出
**入口函数:
**出口函数:
********************************************/
void Int_Timer1( void ) interrupt 3
{
ﻩTH1 = 0X3c;
ﻩTL1 = 0Xb0;
Timer1_Com ++;
if( Timer1_Com 〉 3 )
ﻩ{
Timer1_Com = 0;
ﻩswitch( Work_Mode )
{
case 0:
ﻩTR0 = 1;
Work_Mode = 1; //-—开始加速
ﻩbreak;
ﻩcase 1:
Pwm_Val++;
if( Pwm_Val > 19 )Work_Mode = 2;
ﻩbreak;
ﻩcase 2:ﻩ //--匀速运行直到检测到门限位信号
if( SINGEL_FLAGE )SINGEL_FLAGE=0,Work_Mode = 3;
ﻩbreak;
ﻩcase 3:ﻩ //--减速关门
if( Pwm_Val > 0 )Pwm_Val-—;
ﻩelse Work_Mode = 4;
ﻩbreak;
ﻩcase 4:
Work_Mode = 0;
if( DOOR_STAT == 2 )
ﻩ{
DOOR_STAT = 0;
}
TR1 = 0;
break;
ﻩdefault:
break;
}
ﻩ}
}
/********************************************
**函数名称:void Int_Timer0( void ) interrupt 1
**函数功能:定时器1中断函数ﻩ 100HZ PWM 输出
**入口函数:
**出口函数:
********************************************/
void Int_Timer0( void ) interrupt 1
{
TH0 = 0Xfc;
ﻩTL0 = 0X17;
ﻩTimer0_Com ++;
ﻩif( Timer0_Com 〉 19 )Timer0_Com = 0;
if( Timer0_Com 〈 Pwm_Val )
ﻩ{
ﻩif( DOOR_STAT == 1 )
{
MOTOR_A = 0;
ﻩMOTOR_B = 1;
}
ﻩelse if( DOOR_STAT == 2 )
{
MOTOR_A = 1;
MOTOR_B = 0;
ﻩ}
ﻩelse
{
ﻩMOTOR_A = 1;
MOTOR_B = 1;
}
}
ﻩelse
{
MOTOR_A = 1;
MOTOR_B = 1;
}
}
/********************************************
**函数名称:KeyBoard_Deal
**函数功能:按键处理函数
**入口函数:wu
**出口函数:none
********************************************/
void KeyBoard_Deal( void )
{
ﻩif( KEY_3 == 0 )
ﻩ{
ﻩdelay_ms(20);
ﻩif( KEY_3 == 0 )
{
ﻩSINGEL_FLAGE = 1;
beep(100);
while( KEY_3 == 0 );
}
ﻩ}
ﻩif( KEY_4 == 0 )
ﻩ{
delay_ms(20);
if( KEY_4 == 0 )
ﻩ{
ﻩif( WORK_FLAGE )WORK_FLAGE = 0;
ﻩelse WORK_FLAGE = 1;
ﻩbeep(100);
while( KEY_4 == 0 );
ﻩ}
ﻩ}
ﻩif( KEY_5 == 0 )
{
ﻩdelay_ms(20);
ﻩif( KEY_5 == 0 )
ﻩ{
if( WORK_FLAGE == 0 )
{ //--开门
ﻩDOOR_STAT = 0; //——停止关门
ﻩdelay_ms(50);
ﻩDOOR_STAT = 1;
Work_Mode = 0;
ﻩPwm_Val = 0;
TR1 = 1;
ﻩ}
ﻩbeep(100);
ﻩwhile( KEY_5 == 0 );
ﻩ}
}
if( KEY_6 == 0 )
{
delay_ms(20);
if( KEY_6 == 0 )
{
if( WORK_FLAGE == 0 )
ﻩ{ //--关门
ﻩDOOR_STAT = 0; //--停止关门
ﻩdelay_ms(50);
DOOR_STAT = 2;
ﻩWork_Mode = 0;
ﻩPwm_Val = 0;
ﻩTR1 = 1;
ﻩ}
beep(100);
ﻩwhile( KEY_6 == 0 );
}
}
}
附录C 实物图片
基于单片机的自动门控制系统
班 级:120406
学 号:20124310
姓 名:李强
指导教师:郭昕刚
设计时间:2014年12月15-2014年12月19日
基于单片机的自动门控制系统
摘 要
随着社会的发展、科技的进步以及人们生活水平的逐步提高,自动门开始进入人们的日常生活,成为宾馆、超市、银行等现代建筑所必备之物,是建筑智能化水平的重要指标之一。它具有美观大方、防风、防尘、降低噪音等优点,同时方便了人们出入,也方便了管理,增强了安全。它实用性强,功能齐全,技术先进,使人们相信这是科技进步的成果.它更让人类懂得,数字时代的发展将改变人类的生活,将加快科学技术的发展。控制系统是自动门的心脏,也是衡量其设计制造水平的重要指标,同时自动门控制系统逐渐向大型化、复杂化和智能化的方向发展。
本设计主要应用单片机8051作为控制核心,直流电机、热释电型红外传感器等相结合的系统。它充分发挥了单片机的性能,其优点硬件电路简单,软件功能完善,控制系统可靠,性价比较高等特点,具有一定的使用和参考价值.
关键词:自动门;单片机;控制;热释电红外传感器
The Automatic Door Control SystemBased On SCM
Abstract
Along with society’s development,thetechnical progress as well as the people living standard’s gradual enhancement,automatic valve starts to enter peo
展开阅读全文