找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 22277|回复: 0
收起左侧

基于单片机的自动门控系统设计论文与全套资料下载

[复制链接]
ID:307189 发表于 2018-4-13 11:02 | 显示全部楼层 |阅读模式

题目:于单片机的自动门控系统设计

The automatic door control system design based on MCU

摘  要

随着现代化的高速发展,自动门已经在我们的生活中四处可见。自动门既美观又方便了人们的出入,给了人们更好的人性化享受。同时自动门控系统逐渐向大型化、智能化的方向发展。本论文着重阐述了以单片机为控制器,传感器及步进电机为核心元件的系统。

本设计是用STC89C52单片机作为控制器,步进电机、热释电型红外传感器、led指示灯、蜂鸣器相结合的系统。热释电红外传感器给单片机传输检测信号,通过单片机控制电机驱动,从而控制电机转动,实现门的自动开关。充分发挥了单片机的性能。其优点是硬件可设计性强,软件功能强大,整体系统安全可靠,性价比高等,具有一定的实用和参考价值。


目 录


Abstract
1.绪 论
1.1本课题国内外研究现状及发展趋势
1.2本课题研究的意义与目的
1.3本课题的设计与要求
2.系统总体方案设计及论证
2.1设计的基本设计思路
2.2系统控制核心的对比及选择
2.3无刷电机和步进电机的对比以及选择
2.4传感器的选择
2.5总体方案论证
3.硬件系统设计
3.1单片机介绍
3.1.1 STC89C52主要特性
3.1.2 STC89C52管脚说明
3.1.3引脚具体方案
3.2红外热释电模块HC-SR501
3.2.1 HC-SR501特性
3.2.2红外模块调整方案
3.3步进电机
3.3.1步进电机特点
3.3.2驱动控制系统组成
3.3.3步进电机运行方案
3.4电路设计框图及原理
4.软件系统设计
4.1程序设计思路
4.2系统运行流程图
4.3主程序分析
4.3.1程序声明
4.3.2子函数声明
4.3.3单片机引脚声明
4.3.4全局变量
4.3.5主函数实现部分
4.3.6中断函数
总 结
参考文献
致 谢


1.绪 论1.1本课题国内外研究现状及发展趋势

第一台在世界范围内销售的自动门控系统是由DOORMX开发,相比国内要早很多。1802年8月德标公司成功设计并开发出世界第一台感应自动门,并且为自动门能顺畅,平静,安全运行,多样化地设计的创新理念努力设计,生产出了高品质和值得依赖的产品,并且有完整的解决方案提供,但价格十分昂贵。

目前国内自动门控系统生产规模一般不大,自主研发能力也不够高,新产品开发能力和质量稳定性方面还无法和进口产品竞争。而本身国内的标准很少,所以要明确一个标准才能体现一个产品的完整严密。近年来出现了很多生产相关零部件的厂家,使得自动门生产门槛降低、竞争日益激烈。目前国内厂家的产品基本上也都具备了较完善的功能,但生产工艺略显粗糙,质量参差不齐,整体档次较低,主要集中在中低端市场。

日后的自动门技术的发展方向将会是:

多功能,人性化:今后的自动门控系统还将加入更多新功能,比如用手机远程控制;人脸(指纹)识别,增加安全性能等等

免维护:采取多种优化措施,减少使用过程中的维护工作。

多样化:将会有各种各样不同外观和功能的产品,满足各类用户的不同需要。

安全性:随着用户安全意识的提高,安全性将是用户看重的首要指标,也将是一项基本要求。

1.2本课题研究的意义与目的

自动门适合于宾馆、酒店、银行、写字楼、医院、商场等,应用非常广泛。自动门除了方便我们出入,还可以节约空调用电、防风、防尘。随着我国现代化的快速发展,各类场所对自动门的需求也越来越大,高端场所为了提升豪华程度也对自动门功能有了更高的要求。现有的一些自动门功能比较简单,使用不够人性化,而且安全系数不高,所以设计出一套既安全效率又高的自动门控系统迫在眉睫。

大部分自动门都是在门的内外两侧安装探测器,有人经过则探测器响应给处理器信号,处理器控制电机运行实现开门,无人的情况下处理器控制关门。由于自动化程度较高可以实现无人管理,于是在市场上得到了大范围应用。我在这次毕业设计中所选择的就是单片机、红外模块与门结合的产物——自动门控系统。

1.3本课题的设计与要求

    任何一个控制系统的研发,首先要明确设计基本要求,即分析输入信号、输出信号及需要完成的控制。红外线感应自动门,即用热释电红外线传感器来感应门前有无人进出,并将信号发送给控制器,由控制器控制电机转动以达到自动门开闭门的目的。这是最基本的要求,还需要加入其它人性化的功能,例如自动门自动调速、防夹、指示灯信息等等

根据系统要求实现的功能,设计中要注意以下几个问题:
   一、智能化设计
   自动门选择配置智能化控制系统,可手动控制门开关,调节方便。使自动门始终保持在最佳运行状态。并具有提示警示功能,在开关门之前有信号提示。
  二、安全性设计
   电机能实现随时正转反转,意外情况可以反向开门,避免夹人现象出现。使用优良的原器件,保证安全性,延长运行寿命。
三、稳定性设计
   自动门采用步进电机驱动,相对传统交流伺服电机来说具有省电、高扭矩、低噪音、不过热等优点。
四。具体场合使用设计
    1、安全辅助装置
    如在私人场所加装指纹(人脸)识别系统,在便捷的基础上大大增强了安全性。
2、备用电源
   在大型商场等地方必须做好安全疏散工作,用备用电源可以保证在停电情况下,自动门能发挥作用。
    3、超声波距离传感器
    在需要的地方,可以通过确定目标距离来有效防止门误开误关。

本次课题的中心部分就是使用红外传感器产生信号,单片机控制步进电机的红外感应自动门控系统,关键部分分别为红外传感器、步进电机、单片机控制芯片、led灯、蜂鸣器等,完成的是一个安全可靠,并且效率兼备的自动门控系统。


2.系统总体方案设计及论证2.1设计的基本设计思路
  • 有人来时(进门或出门)开门。热释电红外传感器检测到人的信号之后,电机将启动运转通过传动系统打开门。

    2、无人时延迟关门,开门之后当热释电红外模块没有检测到人,将进入等待状态,若检测到有人则延迟进入等待状态。

3、关门中途来人,立即反向开门。准备关门时检测到有人则不关门等待。

4、开关门之前伴随提示信号,起警示作用

2.2系统控制核心的对比及选择

自动门控制系统是利用电机来带动自动门机械系统实现开关门。由于自动门系统工作环境和对象的特殊性,该系统要求实现开关门必须快速、平稳、冲击力小并且可靠运行,这样就要求系统的数字控制。所以,可以使用的控制芯片有很多种,比如说单片机、PLC、DSP等等。所以这里我对比了单片机和PLC的功能使用。

PLC刚引入国内时,人们称之为PC。后来,IBM-PC获得广泛应用,PC成了个人电脑的代名词,才改名为为PLC。

PLC是智能产品,板级的CPU肯定是不能考虑的,MPU也要好几块集成电路构成,以Z80 MPU为例,需要Z80MPU、PIO、CTC、SIO、EPROM、SRAM等,把这些电路集成在一块电路板上,这就是早期的单板计算机。这种方案体积大,不符合现代要求。由此可见,PLC的核心控制器采用单片机是最合适的。

由此可得出结论:微型、小型、中型到大型控制系统都可以由单片机构成,PLC只是单片机应用的一个特例。单片机系统有一定的互换性,有质量保障,正是单片机相对于PLC能获得广泛应用的原因。

最后,从工程的角度,谈谈PLC与单片机系统的选用:

(1)对单项工程或重复数极少的项目,PLC方案是明智、快捷的选择,成功率高,可靠性好,但成本较高。

(2)对于批量生产,单片机系统成本低、效益高。而且单片机的外围设备扩展更容易掌握和控制,并且有高度的兼容性和稳定性。

故此,针对本次设计参考工业量产的自动门标准,并且考虑到资金的缘故,我采用单片机作为系统的核心控制器。

AT89C51单片机具备一个完整的计算器所需要的基本组成部分,并且指令系统功能强大,执行快。

本设计采用升级的STC89C52单片机作为CPU,相对于AT89C51增加的了数据存储器和程序数据存储器大小,多了一个计时器,在本设计中引脚、功能使用与51保持一致,而且与单片机开发板配套节约了成本。

2.3无刷电机和步进电机的对比以及选择

这次设计中最重要的执行单元就是电机部分,需要控制好电机来带动门的开关。而平开门只是直线运动,更要求电机完成直线运动的稳定。这样,我们选择电机的时候就必须在多个方面考虑,比如说稳定性,高效率,安全性来选择电机。这里我们分析步进电机和无刷电机的对比。

步进电机是一种可以转动固定角度的执行机构。当步进电机驱动接收到一个信号时,它就驱动步进电机按设定的方向转动一个固定的角度。控制器可以通过控制脉冲个数来控制旋转角度精确定位;同时可以通过控制信号频率来控制电机转速,达到控制速度的目的。步进电机利用其角度控制功能以及没有积累误差的特点,广泛应用于各种开源控制。

直流无刷电动机具有优秀的线形机械特性、宽的调速范围、大的启动扭矩、简单的控制电路等优点,长期以来广泛地应用在各种驱动装置和伺服系统中。但是,直流电机的电刷以及换向器却成为阻碍它发展的障碍。而现在无刷电机的转子是电磁铁做成的永磁体,这样结构上正好与普通的直流电机相反,不会出现步进电机出现磁性减弱的现象。去掉了电刷这部分换成电子换向器,也是为了让电机更加稳定有效的运行。

本次设计中,考虑到为了更方便的控制门行程,防止开关门过盈,在这方面步进电机的旋转是以固定的角度一步一步运行的,更具优势,能轻松控制门转动固定角度。而且控制电机能瞬间反转需要提供较大的力矩,步进电机更能满足要求。所以选择步进电机。

2.4传感器的选择

    目前自动门行业运用的传感器件主要有微波感应器、红外感应器等。微波传感器反应速度快,可以对物体的移动进行反馈,适用于人员通过的场所,微波感应器是基于多普勒原理的传感器,整机关键元件均为进口器件,确保了产品可靠性。

    微波感应器是以10.525GHz频率发射、接收。其探测方式具体如下优点:

    1.非接触探测。

    2.不受温度、湿度、噪音。

    红外传感器反应很灵敏,只要处于它的探测范围内,都会有反应。根据不同的功能和性能应用在各类不同场合的自动控制系统中,是自动门控系统的关键部位,其性能直接影响自动门控系统的安全稳定,如在高档酒店、写字楼,可以选择高灵敏度的感应器,在人行道边上的银行、商场等经常有人路过的地方可以选择窄区域的感应器。

热释电红外传感器是基于热释电效应工作的。由探测元件将接收到的红外辐射转变成微弱的电压信号,放大后向外部输出。一般在探测器的前方装一个菲涅尔透镜提高探测器的灵敏度以增大探测距离,它和放大电路相结合,可将信号放大70分贝以上,可以探测出10-20米范围内人的活动。当人体进入检测区时,因人体与环境辐射温度有差别,产生温度差ΔT,则有信号输出;若人体进入检测区后不动,则温度没有变化,传感器没有输出,所以这种传感器能方便检测人体或者动物的活动。

热释红外线传感器内部结构与电路如下图1所示。

图1.热释红外线传感器内部结构与电路

传感器的组成部分有外壳、滤光片、PZT、FET等。其中,滤光片对太阳光和荧光灯光的短波长(约5mm以下)可以滤除。热释电元件PZT将波长在8mm-12mm之间的红外信号的微弱变化转变为电信号,在它的辐射照面通常覆盖有特殊的菲涅耳滤光片,只对人体的红外辐射敏感,明显减少环境的干扰

热释电红外探头具有以下优点:

    价格低廉(选择的首要原因),自身不发生辐射、功耗小(单片机电路可以轻松驱动)、隐蔽性好。

本次设计在功能允许的情况下考虑了成本问题故采用热释电红外传感器。

2.5总体方案论证
本采用单片机为主控制器,使用热释电型红外线传感器来检测人体辐射,其特点是只对人体辐射有感应,这样会明显减少误报操作。并且可以通过D/A转换来控制步进电机正转/反转,转动固定角度,更高效率的完成每一次开关门,而且设计中更体现了防夹系统,即遇阻检测系统,更加安全,最后的外围设备电子时钟、蜂鸣器、led灯也是由单片机来控制,更加人性化。这种方案的优点是有目共睹的。

3.硬件系统设计3.1单片机介绍   
3.1.1 STC89C52主要特性
3.2红外热释电模块HC-SR501    3.2.1 HC-SR501特性

    技术参数:

1.工作电压:DC5V至20V

    2.静态功耗:65微安

    3.电平输出:高3.3V,低0V

    4.延时时间:可调(0.3秒~18秒)

5.封锁时间:默认0.2秒

6.触发方式:L不可重复,H可重复,默认值为H

7.感应范围:小于120度锥角,7米以内

8.工作温度:-15~+70度

功能特点:

  • 全自动感应:当有人进入其探测范围则输入高电平,人离开后延时输出低电平。
  • 光敏控制(可选):光敏控制为可选功能,出厂时未安装光敏电阻。
  • 两种触发方式:L不可重复,H可重复。可跳线选择,默认为H。 A.不可重复触发方式:即感应到红外信号输出高电平后,延时然后输出低电平,期间不探测红外信号 B.可重复触发方式: 即感应到红外信号输出高电平后,在延时时间段内,继续探测红外信号,如果有人体在其探测范围内活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平
  • 具有感应封锁时间(默认设置:0.2秒):在封锁时间段内感应器不接收任何红外信号。可应用于间隔探测产品。也可以有效抑制外界频繁的干扰。
  • 工作电压范围宽:默认工作电压DC5V至20V

    6.微功耗:静态电流65微安,特别适合干电池供电的电器产品。

7.输出高电平信号:可方便与各类电路实现对接。

应用范围:作为传感器它能配合单片机、继电器实现对各类家用、商用电器的开关控制,是一种高技术产品。在 安防产品、人体感应玩具、人体感应灯具、工业自动化控制等方面都有应用。

    3.2.2红外模块调整方案

    1.购买的是基于红外线技术的自动控制模块HC-SR501,经测试灵敏度太高,故调整感应距离至最低3m,

  • 买来的元件采用不可触发方式,更改为效果更优的可重复触发方式:即探测到人信号后输出高电平后,在延时时间段内,如果有人体在其探测范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平。

    3.将延迟时间设为2s,确保单片机每次间歇接收红外模块信号都正确,使系统更加安全可靠。

3.3步进电机    3.3.1步进电机特点

步进电机是纯粹的数字控制电动机,它将脉冲信号转变成角位移.即一个脉冲信号,步进电动机就转动一个角度.因此作常适合单片机控制。近30年来.步进电动机的发展得益于数字技术、计算机技术和水磁材料的迅速发展,步进电动机的应用现阶段具有广阔的前景。

步进电动机有如下特点:

  • 步进电机的角位移与输入信号数严格成正比具有良好的跟随型。由步进电动机与驱动电路组成的开系统,非常简单、廉价,又非常可靠。
  • 步进电动机的动态响应快。易于停、正反转及变速。
  • 速度可在宽的范围内平滑调节。低速下仍能保证获很大矩,因此,一般可以不用减速器可以直接驱动负载。
  • 步进电动机只能通过脉冲电源供电才能行。它不能直接使用交流电源和直流电源
  • 步进电动机存在振荡和失步现象必须对控制系统和负载采取相应的防干扰措施。

6、步进电动机自身的噪音和振动较大,带惯性负载的能力较差。

    3.3.2驱动控制系统组成

    步进电机必须由环形脉冲、功率放大器等组成的系统进行控制,其方框图如图3所示:

图3.电机驱动系统流程图

步进电动机的驱动电路根据控制信号工作,在步进电动机的单片机控制中,控制信号由单片机产生。其基本控制作用如下:

(1) 反应式步进电动机控制换相顺序

步进电动机的通电换相顺序严格安照步进电动机的工作方式进行。通常我们把通电换相这—过程称为脉冲分配。三相六拍步进电机工作方式通电换相的正序是A-AB-B-BC-C-CA;反序为A-CA-C-BC-B-AB;共有八个通电状态P1口输出控制信号,0表示绕子通电,表示绕子断电,则可以用六个字来表示六个通电状态。这六个字表示如表1所示:

A

1

1

0

06H

AB

1

0

0

08H

B

1

0

1

09H

BC

0

0

1

01H

C

0

1

1

03H

CA

0

1

0

02H

表1.通电状态

(2)通电状态 P1.2(C) P1.1(B) P1.0(A) 控制

(3) 控制电路如图4所示:

图4.步进电机驱动电路图

    3.3.3步进电机运行方案

步进电机开关门过程分为8步,每步正向或者反向转360度,每步完成之后都由单片机检测红外模块信号,然后继续控制电机正转或者反转一步,达到安全开关门的目的。

3.4电路设计框图及原理

    平移式自动门机组由以下部件组成:

1.STC89C52:它是自动门的中心处理器,检测红外模块信号发出相应指令,指挥步进电机、led指示灯,蜂鸣器等工作。

2.热释电红外模块:负责探测外部红外辐射,当人进入他的辐射范围时,它就输出高电平,由单片机接收。 

3.步进电机:提供开门与关门的主动力,控制门转动固定角度。 

4.led指示灯:多种闪烁方式提示自动门的工作状态。 

    5.蜂鸣器:开关门之前伴随响声,起警示作用

6.两个外部按钮:控制门手动开和和关。

一次自动化工作流程如下:

感应探测器探测到有人进入时,热释电红外模块输出高电平给单片机,单片机判断后控制步进电机运行开门,开完门之后单片机检测红外模块信号,高电平则延时进入等待状态,低电平则进入3s的等待状态,等待状态之后是即将关门的警告状态,然后再检测红外模块,高电平则继续等待不关门,低电平则进入关门状态伴蜂鸣器响一声,关门中途检测红外模块若为高电平则立即反向开门,进入开门之后的步骤循环运行。

硬件电路如图5所示:






4.软件系统设计4.1程序设计思路
    本设计按以下思路展开研究:
  一、智能化设计
   设置两个中断按钮实现手动开关门;设置led指示灯,空闲状态、延时进入等待状态、等待状态 、警示状态 、门开关行程均有不同led灯显示;开关门前的瞬间均有蜂鸣器提示音。
   二、安全性设计
   当关门中途有人出现则反向开门,有人在则保持一直不关门;步进电机转动分为8步,很好的控制了门行程,防止过盈间隙问题。

三、稳定性设计
     自动门采用步进电机驱动,相对传统交流伺服电机来说具有省电、高扭矩、低噪音、不过热等优点。

4.2系统运行流程图



4.3主程序分析  
4.3.1.程序声明

总 结

本次设计的题目是“基于单片机的自控门控系统设计”,我很认真而且有着从未有过的静下心来学习的态度,学习了很多不是本专业的知识,受益匪浅,自己动手做出了自动门控系统,在反复的调试修改中将一个设计做好真是很有成就感。至此,我觉得,要做好一件事情必须要先在态度上认真,不放弃,然后才是发挥自己的能力去认真思考、学习一些东西,最后完成任务。
通过本次自动门控系统的设计,我才发现我所学的东西太少了,知识面的不牢固,在选择方案的时候,不确定性太高。设计的时候查阅过的课本知识、硬件特性很多,深深的感觉到自己知识方面的缺陷,经过很长时间努力在毕业设计中我学到了很多,有很大的收获。
做任何事情都要有好的态度耐心,首先我明白了做学问要一丝不苟,千万不能有“差不多”的想法,遇到问题要想办法通过正确的途径去解决,在做事情的过程中要有耐心和毅力,只要坚持下去就可以找到思路去解决问题的。在工作中也一样要有这种不放弃的态度,认真听取别人的意见,在自己身上找问题这样做起事情来就可以事倍功半。


致谢
大学生活四年已近尾声,很怀念同学们坐在一个教室上课的时候,氛围很好,可以安心的学习知识,也很遗憾自己所学的东西远远不够。其实不管是上学和工作都是一个不断学习的过程,比如这次毕业设计我就学到了不少知识。
本次毕业设计在王正家老师的悉心指导和鼓励下已经完成,王老师指导很细心,我发过去的初稿都是一字一句仔细给我找问题,让我少走弯路。每一个细节无不凝聚着王老师的心血和汗水,在我的毕业设计期间,王老师为我提供了很多关于硬件设计方面的知识,关于硬件的选用,软件运行方式等等。王老师一丝不苟的作风,严谨求实的态度使我深受感动,让我这么顺利的完成毕业设计。在此向王正家老师表示深深的感谢!
在毕业之际,我还要借此机会向在这四年中给予我诸多帮助指导的各位老师表示由衷的谢意,感谢他们四年来的辛勤指导。不积跬步何以至千里,各位任课老师认真负责,在他们的悉心帮助和支持下,我掌握了很多有用的专业知识,并在设计中得以体现,顺利完成毕业论文。
同时,在毕业设计写作过程中,我还参考了有关的书籍和论文,在这里一并向有关的作者表示谢意。
我还要感谢我周围同学对我的帮助,在硬件选用调试方面帮了我很大的忙,他门积极的帮我查找硬件资料,给了我很多的启发,提出了很多宝贵的意见,对于你们帮助和支持,我表示深深地感谢!马上毕业了,祝你们前程似锦!

单片机源程序如下:
  1.     4.3.1.程序声明
  2. #include <reg52.h>
  3. #define uchar unsigned char  //无符号字符型 宏定义              变量范围0~255
  4. #define uint  unsigned int              //无符号整型 宏定义              变量范围0~65535
  5.     4.3.2子函数声明
  6. void key() ;
  7. void bujindj();              //步进电机函数
  8. 4.3.3单片机引脚声明
  9. sbit led1 = P2^0;   //指示灯
  10. sbit led2 = P2^1;
  11. sbit led3 = P2^2;
  12. sbit led4 = P2^3;

  13. sbit hw1 = P2^4;              //红外感应
  14. sbit hw2 = P2^5;              //红外感应    4.3.4全局变量
  15. unsigned char code zheng[4]={0x08,0x04,0x02,0x01};//正转表格
  16. unsigned char code fan[4]  ={0x01,0x02,0x04,0x08};//反转表格
  17.     4.3.5主函数实现部分




  18. void Delay(unsigned int i)//延时
  19. {
  20.               while(--i);
  21. }

  22. /***********************1ms延时函数*****************************/
  23. void delay_1ms(uint q)
  24. {
  25.               uint i,j;
  26.               for(i=0;i<q;i++)
  27.                             for(j=0;j<120;j++);
  28. }


  29. uchar key_can;
  30. /********************独立按键程序*****************/
  31. void key()
  32. {
  33.               static uchar key_new;
  34.               if((P3 & 0xf0) != 0xf0)                            //按键按下
  35.               {
  36.                             Delay(1000);                                                        //按键消抖动
  37.                             if(((P3 & 0xf0) != 0xf0) && (key_new == 1))
  38.                             {                                                                                    //确认是按键按下
  39.                                           key_new = 0;
  40.                                           switch(P3 & 0xf0)
  41.                                           {
  42.                                                         case 0xe0:  key_can = 1;  break;              //得到按键值
  43.                                                         case 0xd0:  key_can = 2;  break;              //得到按键值
  44.                                                         case 0xb0:  key_can = 3;  break;              //得到按键值
  45.                                                         case 0x70:  key_can = 4;  break;              //得到按键值
  46.                                           }                                                      
  47.                             }            
  48.               }
  49.               else                 //按键松开
  50.                             key_new = 1;            
  51. }


  52. void bujindj()              //步进电机函数
  53. {
  54.               static uchar i;
  55.               if(flag_z_f != 0)            
  56.               {            
  57.                             if(flag_z_f == 1)                 //开
  58.                             {
  59.                                           if(bjdj_value >= 512)
  60.                                           {
  61.                                                         flag_z_f = 0;
  62.                                                         flag_zdg = 1;
  63.                                           }else
  64.                                                         bjdj_value ++;            
  65.                             }
  66.                             if(flag_z_f == 2)                 //关
  67.                             {                                                      
  68.                                           if(bjdj_value <= 1)
  69.                                           {
  70.                                                         flag_z_f = 0;
  71.                                                         bjdj_value = 1;
  72.                                           }else
  73.                                           {
  74.                                                         bjdj_value --;
  75.                                           }
  76.                             }
  77.                             for(i=0;i<4;i++)          //4相
  78.                             {
  79.                                           if(flag_z_f == 1)                //开
  80.                                                         P1=zheng[i];// & (P1 | 0xf0);                     //
  81.                                           else if(flag_z_f == 2)//关
  82.                                                         P1=fan[i];// & (P1 | 0xf0);                      //
  83.                             }
  84.               }
  85. }



  86. /******************主程序**********************/
  87. void main()
  88. {
  89.               static unsigned char value;            
  90.               while(1)
  91.               {
  92.                             key();
  93.                             if(key_can < 10)
  94.                             {                                                                                   
  95.                                           if(key_can == 1)              //自动模式
  96.                                           {
  97.                                                         flag_moshi = 0;
  98.                                                         flag_z_f = 0;
  99.                                                         led4 = 0; led3 = 1;              //指示灯
  100.                                           }
  101.                                           if(key_can == 2)              //手动模式
  102.                                           {
  103.                                                         flag_moshi = 1;
  104.                                                         flag_z_f = 0;
  105.                                                         led4 = 1; led3 = 0;              //指示灯
  106.                                           }
  107.                                           if(key_can == 3)               //手动关
  108.                                           {
  109.                                                         flag_z_f = 2;
  110.                                                         led2 = 0; led1 = 1;              //指示灯
  111.                                           }
  112.                                           if(key_can == 4)              //手动开
  113.                                           {
  114.                                                         flag_z_f = 1;
  115.                                                         led2 = 1; led1 = 0;              //指示灯
  116.                                           }
  117.                             }
  118.                             if(flag_moshi == 0)                //自动模式
  119.                             {
  120.                                           if((hw1 == 1) || (hw2 == 1))
  121.                                           {
  122.                                                         flag_z_f = 1;   //打开            
  123.                                                         led2 = 1; led1 = 0;              //指示灯
  124.                                                         flag_zdg = 0;
  125.                                                         flag_sj = 0;
  126.                                           }
  127.                                           if(flag_zdg == 1)              //延时自动关
  128.                                           {
  129. ……………………

  130. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:

pcb+源码+电路原理图:http://www.51hei.com/bbs/dpj-112829-1.html
论文:
基于单片机的自动门控系统设计.doc (442.96 KB, 下载次数: 197)



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表