职场文秘网

首页 > 心得体会 > 学习材料 / 正文

基于51单片机的智能窗帘控制系统

2020-12-21 10:27:38

毕业论文(设计) 学 院:
工学院 专 业:
通信工程 年 级:
20XX级 题 目:
基于单片机的智能窗帘控制系统 姓 名:
学 号:
指导老师:
职 称:
教授 2014年X月X日 目 录 摘 要 1 关键词 1 Abstract 1 Key words 1 1 概述 2 2 总体方案设计 2 2.1 设计的基本内容和要求 2 2.2 整体功能 2 2.3 原理框图 2 2.4 系统芯片介绍 3 2.4.1 STC89C51单片机的介绍 3 2.4.2 SC2262/2272原理介绍 5 3 系统各硬件模块 7 3.1 单片机控制系统 7 3.1.1 时钟模块 7 3.1.2 复位电路 8 3.1.3 电源模块 8 3.2 电机驱动模块 9 3.3 光敏检测模块 9 3.4 手动无线遥控模块 10 4 系统软件设计 11 4.1 模块化程序流程图 11 4.2 主要模块程序设计 12 4.2.1 直流电机程序设计 12 4.2.2 无线发射和接收模块程序设计 13 5 硬件调试 13 6 软件仿真 13 7 总结与体会 14 8 致谢 14 参考文献 15 附录 15 基于单片机的智能窗帘设计 摘 要:本设计主要由STC89C51单片机控制系统、电源模块、电机驱动模块、光敏检测模块、手动控制模块、无线发送与检测模块等组成。处于光敏智能模式时,光敏电阻检测到光照强度的变化,将电阻变化转化为电压变化,并将该变化信号传输到单片机;
正反转处于遥控控制时,单片机通过检测按键指令,作出相应的动作指令。单片机通过给驱动模块下达指令来控制电机的正反转,从而实现窗帘的打开和关闭,由此实现智能控制和手动遥控功能,使本设计更加方便和人性化,构成一个多功能自动窗帘控制系统,它将成为未来智能家居必不可少的一员。

关键词:单片机;
红外遥控;
智能家居 The intelligent curtain design based on MCU Abstract:The design consists of STC89C51single-chip microcomputer control system, motor drive module, power supply module, Sensitive detection module and so on. In the photosensitive intelligent mode, photosensitive resistance measurement to the change of light intensity, the resistance changes into the voltage change, and the change of signal to the microcontroller, microcontroller through the reversion to the motor drive module instructions to control the motor, so as to realize the curtain opened and closed, and can achieve remote manual control switch and manual key, make the design more convenient and humanized, constitute a versatile automatic curtain control systems. Key words:STC89C51SCM;
Infrared remote control;
Smart home 1 概述 进入21世纪,随着信息化时代的到来和经济水平的提高,各种以电子技术,通信技术,互联网技术和控制系统等有机结合的产物——智能家居应运而生,智能家居系统较普通家居将使人们的生活更加方便,快捷,舒适,赋予家居物品以智能控制,其中智能窗帘便是智能家居[1]的重要一员。

目前,常用的窗帘轨道都是手拉式,只有一部分高端别墅和住宅是电动遥控窗帘,这些这些窗帘价格相当昂贵,因此在普通老百姓家里还没有广泛普及普通,而且民用住宅和和办公楼越来越多,窗户尺寸也越来越大,较以前的尺寸,现在的这种建筑结构虽然美观,而且采光良好,但与此同时就带来一个问题,高尺寸的窗户要是使用手动窗帘肯定不方便,而现在设计这些楼盘的设计师几乎没有考虑过这个问题,使一些高档住宅反而带来了生活上的不便。因此如何将窗帘做的更加智能,更加人性,性价比更高将成为以后窗帘制作的基本要求,而且市场前景巨大,本文就是基于单片机控制的智能窗帘的设计。

2 总体方案设计 2.1 设计的基本内容和要求 为了能根据实际情况来实现对窗帘自动开合的控制,大致有三种方法:声控、光控、手动,最后我们采用了光控和手动相结合的设计方案,其优点有:一是可以根据室外光线明暗自动调节;
二是可以根据个人实际需求进行手动控制;
三是根据元器件的选择和后期的制作成本比较低。

设计要求:
(1)利用STC89C51单片机为核心来控制直流电机正反转实现窗帘的开关。

(2)利用上下两个限位开关实现最高点、最低点电机自动停止来防止窗帘的过卷,以达到防过卷功能。利用按键实现手动控制功能。

(3)无线遥控功能是利用SC2262编码和SC2272 解码芯片组成的315M无线发送接收模块实现。

(4)实现智能化控制,窗帘的打开和关闭是通过光敏电阻检测环境亮度自动完成的,光线暗并关闭,光线强就打开,不产生误动作。

(5)利用按键实现手动控制功能。

(6)利用各色LED灯能够指示运行状态。

2.2 整体功能 本设计是由单片机控制系统、电源模块、电机驱动模块、自动光敏检测模块、手动遥控模块等模块组成。当处于自动模式下时,利用光敏电阻检测光照强度的变化,通过光敏电阻阻值得变化转化为电压变化,并将电压变化的信号送单片机,单片机通过电机驱动模块控制着电机的正反转实现窗帘的来回移动,构成一个多功能自动窗帘控制系统;
当处于智能遥控模式时,通过遥控发射和接收模块,单片机通过遥控指令控制电机的正反转;
当处于手动按键模式时,通过按键控制电机的正反转来实现窗帘的打开与关闭。其中,光敏控制模块室由光敏电阻和三极管组成的;
电机驱动模块是利用了三极管和继电器的的通断实现电机的正转与反转;
遥控发射和接收模块经过利用SC2262/SC2272 编码解码芯片[2]组成的无线发送接收来实现无线遥控功能。单片机用C语言[3]编程,然后绘制电路板,焊接和后期调试,基本达到了我们所期望的系统功能。

2.3 原理框图 系统整体流程图如图2-1所示。

图2-1 系统整体流程图 2.4 系统芯片介绍 2.4.1 STC89C51单片机的介绍 STC系列单片机是美国STC公司最新推出的一种新型51内核的单片机。片内含有Flash程序存储器、A\D、UART、PWM、SPI、SRAM等模块。该器件的基本功能与普通的51单片机完全兼容。

主要功能和性能参数:
1.STC89C5xRC对应Flash空间:4KB\8KB\15KB;

2.工作频率范围:0~40MHZ,相当于普通8051的0~80MHZ;

3.内置标准51内核,机器周期:增强型为6时钟,普通型为12时钟;

4.内部存储器(RAM):512B;

5.中断源:8个;

6.通用异步通信口(UART)1个;

7.定时器\计数器:3个16位;

8.工作电压:3.8~5.5V;

9.通用I\O口:32\36个;

10.有ISP(在系统可编程)\IAP(在应用可编程),无需专用编程器\仿真器;

11.外形封装:40脚PDIP、44脚PLCC和PQFP等;

2.4.2 SC2262/2272原理介绍 SC2262/2272是一种CMOS工艺制造的低功耗低价位通用编解码电路,最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441种地址码,SC2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。

编码芯片SC2262一个完整的码字是由数据码、地址码、同步码组成。

SC2262的14脚TE为低电平时, 17脚的编码输出将会被启动。当17脚处于高电平时,315MHz高频发射电路将会起振,与此同时发射等幅高频信号;
当17脚处于低平期时,315MHz的高频发射电路将会停止振荡。由此可以看出,高频发射电路的信号发送与否完全取决于SC2262编码芯片17脚输出的数字信号,从而完成对高频电路幅度(ASK)调制,相当于调制度为100%的调幅。

SC2262引脚如下表2-5所示。

表2-5 SC2262引脚图 名称 管脚 说 明 A0-A11 1-8、10-13 地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空) D0-D5 7-8、10-13 数据输入端,有一个为“1”即有编码发出,内部下拉。

Vcc 18 电源正端(+) Vss 9 电源负端(-) TE 14 编码启动端,用于多数据的编码发射,低电平有效。

OSC1 16 振荡电阻输入端,与OSC2所接电阻决定振荡频率;

OSC2 15 振荡电阻振荡器输出端;

Dout 17 编码输出端(正常时为低电平) 在实际应用环境中,外接振荡电路电阻可根据实际情况需要进行相应的调整,阻值越大相应的振荡频率越慢,编码的宽度也会越大,发码一帧的时间越长。

推荐值:2262/4.7M/2272/820K ,2262/3.3M/2272/680K ,2262/1.2M/2272/200K。

SC2272的引脚如下表2-6所示。

表2-6 SC2272引脚图 名称 管脚 说 明 A0-A11 D0-D5 1-8,10-13 地址或数据管脚,当做为数据管脚时,只有在地址码与2262一致,数据管脚才能输出与2262数据端对应的高电平,否则输出为低电平,锁存型只有在接收到下一数据才能转换。

Vcc 18 电源正端(+) Vss 9 电源负端(-) VT 14 解码有效确认输出端(常低),解码有效变成高电平(瞬态)。

OSC1 16 振荡电阻输入端,与OSC2所接电阻决定振荡频率。

OSC2 15 振荡电阻振荡器输出端。

DIN 17 数据信号输入端,来自接收模块输出端。

SC2272解码芯片不同的型号有不同的后缀,代表不同的功能,有L4/M4/L6/M6之分,其中L表示锁存输出,与此同时数据一旦接收成功就能一直保持相应的电平状态,直到下次遥控状态发生变化时改变;
M表示非锁存输出,数据脚输出的是瞬时电平,与发射端是否发射相对应,可以用于类似点动的控制。后缀中的4和6表示有几路并行控制通道。当采用4路(SC2272-M4)并行数据时,对应的地址编码应该是8位;
如果采用6路(SC2272-M6)并行数据时,对应的地址编码应该是6位。

3系统各硬件模块 3.1单片机控制系统 3.1.1 时钟模块 在STC89C51单片机内有一个高增益的反相放大器反相器输入端为XTAL1,其输出端为XTAL2,由该反相放大器和时钟电路一起构成单片机的时钟方式。具体根据要求和外围电路的不同,可以分为外部时钟方式和内部时钟方式两种,综合各方面因素,我们采用内部时钟方式。

在内部时钟方式电路中,需在其输入端和输出端加上两个30pf 的电容构成振荡电路,一般的晶振频率在1.2MHZ到12MHZ之间,因为本设计对时钟并无特殊要求,所以选择12MHz晶振即可驱动电路。时钟模块图如图3-1所示。

图3-1 时钟模块电路图 3.1.2 复位电路 简单的说复位电路的作用就是起到一个保护的作用,因为复位电路是否合理直接关系到整个系统的工作的稳定性和稳定性,避免出现CPU误读程序或是死机等现象。一般而言复位方式有两种:手动按键复位和上电复位。手动按键复位是在单片机输入端RST上加上一个高电平,即可在电源正VCC与RST之间加一个复位按键,启动单片机时手动按下复位键即可完成复位功能。考虑到调试过程中可能碰到许多问题,需要随时复位,所以选择手动按键复位方式比较方便,电路图如3-2所示。

图3-2 复位电路电路图 3.1.3 电源模块 由于本设计只是智能窗帘初期原理的研究,所以只需要满足单片机工作的电压即可,而且选取的是只需要+3.3V的直流电机,为了节省成本和操作简单,还有调试安全的角度,供电方式直接选用三节1.5V的干电池或者是直接用USB转接线即可满足条件。电源模块如图3-3所示。

图3-3 电源模块电路图 3.2 电机驱动模块 电机驱动是由STC89C51单片机的控制来实现,单片机[7]的P1.1口控制正反转切换,P1.1和P1.2口分别控制电机的正反转,且当P3.0和P3.5口在单片机复位状态下时输出高电平,三极管Q1和Q2截止,两个继电器 RL1和 RL2都处于释放状态,电动机因没有足够的电压驱动无法转动。当P3.0和P3.5口中的一路被拉低后,例如P3.0口拉低,则Q1导通,继电器RL1吸合,电机转动,当P3.5口为低时,则继电器RL2吸合,电机反转。需要注意的是P3.0和P3.5口只有一个处于高电平,即在同一时间,两个继电器只有一个保持闭合状态,这样避免的了单片机的指令紊乱。电路如图3-4所示。

图3-4 电机驱动模块电路图 3.3 光敏检测模块 光敏检测模块主要是利用光敏电阻[5]或者称为光导管来感受光线的强弱来控制的,光敏电阻大部分都是由半导体材料制作而成[9],因此具有一般半导体材料的特性,当光敏电阻受到光线的照射时期阻止迅速下降,且光线越强,阻止越小,由电路3.1.4可知,当光线照射到光敏电阻R21上时,其电阻值迅速减小,R21和R19分压之后,集电极和基极压降大于等于0.7V,三极管Q6处于放大状态,P1.0口置高,此时表示“白天”,当进入夜晚时,光敏电阻值无限大,此时三极管Q6处于截止状态,P1.0口置低,此时表示“黑夜”。然后单片机通过P1.0口的状态控制电机的正反装。检测模块如图3-5所示。

图3-5 光敏检测模块电路图 3.4 手动无线遥控模块 如图3-6和3-7所示,遥控模块由无线发射和接收电路[4]组成,其中发射模块主要是由SC2262 编码芯片,接收模块主要是由解码芯片SC2272 配对使用构成的315M无线遥控电路,这两种芯片采用CMOS工艺制造,电路具有省电模式,可用于无线电或红外线遥控应用。无线遥控发射模块如图3-6所示。

图3-6 无线遥控发送模块电路图 无线遥控[8]主要用到315M无线遥控器,下面介绍315M遥控器。

之所以称为315M无线遥控器,是因为信号发射模块的工作频率在315MHZ,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~+85度之间变化时,频率漂移仅为3ppm/度。一般的LC振荡器频率稳定度及一致性较差,即使采用高精度电阻和微调电容,温差变化及振动也很难保证已调好的频点不会发生偏移,因此315M发射模块比较稳定。

解码芯片SC2272在接收到信号后,其地址码经过两次比较,核对,在VT脚上输出高电平,与此相对应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,SC2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,SC2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于SC2262的17脚输出的数字信号,从而对高频电路完成幅度键控[6](ASK调制)相当于调制度为100%的调幅。

利用315M遥控器发出正转、反转和停止信号,与窗帘相连接的控制电路接收到控制信号后,根据遥控命令来控制电机的运行状态,从而达到远距离对控制窗帘的打开、闭合和停止。

同时手动遥控模块的设计使窗帘更加人性化,注重保护个人隐私。

接收模块如图3-7所示。

图3-7 无线遥控接收模块电路图 4 系统软件设计 4.1 模块化程序流程图 主程序完成整个系统的初始化,给出了整个系统的逻辑控制原理,并对实现各个模块的功能给出控制指令,发送控制命令。要求各个模块之间的优先级互不冲突,系统运行稳定,具体流程如图4-1所示。

图4-1 主程序流程图 4.2 主要模块程序设计 4.2.1 直流电机程序设计 直流电机根据需要实现的功能,主要实现在单片机的控制指令下能够准备无误的实现正转和反转,以及在防过卷功能上能够在上限位和下限位开关的动作下准确判断指令并停止。基本流程图如图4-2所示。

图4-2 电机驱动模块流程图 4.2.2 无线发射和接收模块程序设计 无线发射和接收模块是整个智能窗帘里面最能体现智能家居理念的模块,在以后的家居系统中一定会被广泛应用。其基本流程图如图4-3所示。

图4-3 无线模块流程图 5 硬件调试 按照电路图,在焊接完成后,按照之前编写的程序烧入到单片机中对电路板进行调试,大部分模块焊接的还是没有问题的,主要是虚焊的问题,但是在无线遥控发射和接收模块电路部分始终没有调试出信号,因此在选择无线[10]发射与接收芯片的时候修改了几种方案,一种是使用集成红外接收器,型号是HS0038,但是在红外接收时因为HS0038对室外光线照射的时间和光强比较敏感,因此单片机接收到的红外干扰信号比较强,于是选择了利用SC2262和SC2272 编码解码芯片组成的无线发送接收模块实现无线遥控,同时在整个电路的设计上也是经过多次调整。

在窗帘防过卷功能的实现上,考虑过采用霍尔传感器,但是因为考虑到经济成本和电路复杂程度,所以选择了两个限位开关来代替霍尔传感器,当限位开关闭合时说明电机已经将窗帘拉到最高位或者是最低位,此时单片机根据限位开关的状态给电动机发出停止指令。

最后单片机的代码是采用的c语言编写的,其中也出现过问题,但是在老师和同学的帮助下,最终解决了一系列问题,达到了最初我们设计时想要达到的功能。

6 软件仿真 由于无线模块中有些元器件protues无法仿真,所以只仿真了电机驱动模块,手动控制模块,光敏检测三个模块的电路,同时也将部分电路简化了,这样将更加直观的看到整个系统实现的功能以及各个模块的现象。系统仿真图如图6-1所示。

图6-1 仿真图 7 总结与体会 通过这次毕业设计,让自己对所学知识和相关课程都有了一定巩固和新的认识。此次毕业设计不再是像以往课程设计一样是一组人完成一个课题,大家可以分工完成,每个人只需要了解和掌握自己的那部分知识,相对比较轻松,但这次毕业设计是一个既花脑力又花时间的过程,设计从初期的选题到中期的资料查阅在设计的过程中要不断查询相关的资料和书籍,从图书馆到互联网,任何成果的得来都要付出艰辛的努力,再到后期的芯片选型,论文格式和内容的修订,软件编程和硬件焊接加上调试都是自己一点一点完成的,虽然这个过程相当漫长,同时也碰到了许多困难,但是很庆幸一路有老师和同学的帮助,最后基本完成了本设计最初所想要实现的功能。

同时也是借此机会让自己明白了许多道理:纸上得来终觉浅,绝知此事要躬行。感觉到自己所学知识的不足的同时,让我通过这此设计过程进一步复习掌握了模拟电子技术,数字电子技术等相关的课程实践方面的学习,并且复习了C语言,单片机原理,单片机开发软件keil,Protel,protus等专业软件,对单片机应用系统的整个设计过程有了大致了解。

当然本设计也存在许多问题和不足,着也反映了自己能力不足,更加鞭策自己在以后的学习和生活中需要更加努力,需要多动手,多实践,将理论和实践相结合,已达到事半功倍的效果. 8 致谢 在毕业答辩即将到来之际,借此机会感谢大学四年所有教过我的老师,特别是我的指导老师XX老师,在整个论文的选题,理论研究,后期的资料整理;
以及论文的大致进度和格式等问题上都作出了悉心指导;
在对部分电路的原理,后期电路板焊接,电路信号的调试提供了很多帮助;
软件中部分代码的逻辑关系与其对应实现的功能等等都作出了专业的解答。

由于答辩前一直是在公司实习,所以时间也比较紧,学校许多动态和信息都不能很及时的了解到,但是在同学汪辉和文思杰的帮助下,许多问题都相应的解决了,所以在此衷心的谢谢所有在毕业设计过程中帮助和指导过我的老师和同学,正是有他们的帮助,才能顺利的完成毕业设计。

参考文献 [1]余发山,王福忠. 单片机原理及应用技术[M]中国矿业大学出版社.2008年6月第1 版 [2]康华光. 电子技术基础(数字部分)[M]高等教育出版社.第五版 [3]谭浩强.C程序设计(第三版)[M]北京:清华大学出版社,2005 [4]解月珍.通信电子线路[M]北京:高等教育出版社,2003 [5]童诗白.模拟电子技术基础[M]高等教育出版社第2版 [6]曾兴文.陈健,刘乃安.高频电子线路辅导[M]西安:西安电子科技大出版社,2000 [7]李光飞,楼然苗,胡佳文等.单片机课程设计实例指导[M]北京航空航天大学出版社.2004 [8]邹书文,黄光桂.无线电遥控单片机.电脑与信息技术[M]1995 [9]啥占有.中外传感器实用手册[M]北京:电子工业出本社,2005 [10]吕俊芳.传感器接口与检测仪器电路[M].北京:北京航空航天大学出本社,2000 附录:
1 原理图 2 源程序 #include<reg52.h> #include<intrins.h> #include<absacc.h> //头文件 #define uc unsigned char #define ui unsigned int sbit in_go = P1^3; sbit in_back = P1^2;//手动前进后退按键 sbit out_go = P3^0; sbit out_back = P3^5;//电机控制输出 sbit limit_go = P3^4; sbit limit_back = P3^6;//前进后退限位开关 sbit led_go = P1^4; sbit led_back = P1^5;//前进后退限位指示灯 sbit light = P1^0;//光线传感器 sbit change = P1^1;//手动自动切换按键(默认自动) sbit led_zhishi = P1^7; sbit buzz = P1^6; bit bdata flag1,flag2,change_flag,flag_shan,flag_shan1,flag_shan2; uc m,n,shan; void delay(ui x)//延时函数 { ui i,j; for(i=0;i<x;i++) for(j=0;j<110;j++); } void work()//工作函数 { if(change==0)//判断切换是否按下 { buzz=1; delay(50); if(change==0) change_flag=~change_flag;//手动,自动切换 buzz=0; while(!change);//释放 } led_zhishi=change_flag; if(change_flag==0)//自动模式 { if(light==0)//夜间(无光)时关闭窗帘 { delay(50); if(light==0) { if((limit_go==0)&&(flag_shan==0)) { out_go=1; out_back=1; led_go=1; for(shan=0;shan<6;shan++) { led_go=~led_go; buzz=~led_go; delay(500); } flag_shan=1; } else if(limit_go==1) { out_go=1; out_back=0; led_back=1; led_go=0; flag_shan=0; } } } else if(light==1)//白天(有光)时打开窗帘 { delay(50); if(light==1) { if((limit_back==0)&&(flag_shan==0)) { out_go=1; out_back=1; led_back=1; for(shan=0;shan<6;shan++) { led_back=~led_back; buzz=~led_back; delay(500); } flag_shan=1; } else if(limit_back==1) { out_go=0; out_back=1; led_back=0; led_go=1; flag_shan=0; } } } } else if(change_flag==1)//手动模式 { if((in_go==0)&&(limit_go==1))//关闭是否按下 { buzz=1; delay(50); if((in_go==0)&&(limit_go==1)) { out_go=1; out_back=~out_back;//按一下打开,再按一下,停止 buzz=0; led_back=1; led_go=out_back; flag_shan1=0; } while(!in_go);//释放 } else if((in_back==0)&&(limit_back==1))//打开是否按下 { buzz=1; delay(50); if((in_back==0)&&(limit_back==1)) { out_back=1; out_go=~out_go;//按一下关闭,再按一下,停止 buzz=0; led_go=1; led_back=out_go; flag_shan2=0; } while(!in_back);//按键释放 } if((limit_go==0)&&(flag_shan1==0)) { delay(5); if((limit_go==0)&&(flag_shan1==0)) { out_back=1; led_go=1; for(shan=0;shan<6;shan++) { led_go=~led_go; buzz=~led_go; delay(500); } flag_shan1=1; } } if((limit_back==0)&&(flag_shan2==0)) { delay(5); if((limit_back==0)&&(flag_shan2==0)) { out_go=1; led_back=1; for(shan=0;shan<6;shan++) { led_back=~led_back; buzz=~led_back; delay(500); } flag_shan2=1; } } } } void main()//主函数 { light=0; buzz=0; while(1)//进入死循环 { work();//调用工作函数 } }

Tags: 单片机   控制系统   窗帘  

搜索
网站分类
标签列表