您的当前位置:首页正文

基于51单片机的智能窗帘设计

2024-05-31 来源:星星旅游
目 录

摘 要 ................................................................................................................................................ 1 关键词 ................................................................................................................................................ 1 Abstract ............................................................................................................................................... 1 Key words ........................................................................................................................................... 1 1 绪论 ................................................................................................................................................ 2 2 总体方案设计 ................................................................................................................................ 3 2.1 系统的基本功能..................................................................................................................... 4 2.2 系统的基本组成..................................................................................................................... 4 2.3 芯片介绍 ................................................................................................................................ 5

2.3.1 STC89C51芯片介绍 .................................................................................................... 5 2.3.2 SC2262/2272芯片介绍 .............................................................................................. 6 3 系统硬件模块组成......................................................................................................................... 7 3.1 基本控制系统......................................................................................................................... 7

3.1.1 时钟模块..................................................................................................................... 7 3.1.2 复位电路..................................................................................................................... 7 3.1.3 电源模块..................................................................................................................... 8 3.2 电机驱动模块......................................................................................................................... 8 3.3 光敏检测模块......................................................................................................................... 8 3.4 手动无线遥控模块 ............................................................................................................... 10 4 软件设计 ...................................................................................................................................... 12 4.1 模块化程序逻辑原理图 ....................................................................................................... 12 4.2 模块程序设计....................................................................................................................... 12

4.2.1 直流步进电机程序设计 ........................................................................................... 12 4.2.2 无线发射和接收模块程序设计 ............................................................................... 13 5 软件仿真 ...................................................................................................................................... 14 6 硬件调试 ...................................................................................................................................... 14 7 总结 .............................................................................................................................................. 15 8 致谢 .............................................................................................................................................. 16 参考文献 .......................................................................................................................................... 16 附录 .................................................................................................................................................. 17

基于51单片机的智能窗帘设计

摘 要:本论文设计的是智能控制窗帘的系统,由基于单片机结构和STC89C51单片机系统、以及较为成熟的电机驱动模块、较为先进的光敏检测模块、稳定的电源模块等组成。基本的系统原理是在智能调控的模式下,光敏检测模块中的光敏电阻遭遇到外界光强的变化,在自身电阻因为光强的变化发生改变后,引起系统电压的变化,并且在电压大小发生改变后迅速将将信号的变化反馈给单片机结构,然后在电机接收到一系列因为光强变化而传递给单片机结构的信号后,经过电机驱动控制模块的指令来进行电机的启动和运作,然后表现为使得窗帘智能打开和智能关闭。这样就可以实现对于窗帘的智能操控和手动操控这两种控制功能的运作,构成多功能自动窗帘控制系统,使得本设计更加智能化和人性化。 关键词:单片机;红外遥控;智能家居

The intelligent curtain design based on 51MCU

Abstract:The design of this paper is an intelligent control curtain system, based on the structure of the single-chip microcomputer and STC89C51 single-chip microcomputer system, as well as the more mature motor drive module, more advanced photosensitive detection module, stable power supply module and other components. Is the basic principle of system in intelligent control mode, the photosensitive detection module of photosensitive resistance encountered outside the change of light intensity, resistance because of the change of light intensity change in itself, cause the change of system voltage, and rapidly after will change in the size of the voltage to the change of the feedback signal to microcontroller structure, and then receives a series because of the light intensity changes in motor and passed to the single chip microcomputer after the structure of the signal, through the motor drive control module instruction for motor starting and operation, and then show the closed curtains intelligent open and intelligent. This can realize the intelligent control of the curtain and manual control of the operation of the two control functions, constitute a multi-functional automatic curtain control system, making the design more intelligent and humanized.

Key words:STC89C51SCM;Infrared remote control;Smart home

1

1 绪论

新世纪是信息时代,各行各业基于信息技术,推出了各自的智能产品,例如智能家居,智能办公、智能驾驶等,这些智能产品都和当今的互联网技术以及控制系统紧密相连。对家居产品的智能控制也更快、更方便了。

在智能家居方面,目前出现的智能产品有只能家电、智能热水器、智能报警等等,对于窗帘而言,智能化的窗帘使用率还不是很高,大多家庭和办公场所的窗帘还是手动的。对于这种局面,是由于智能窗帘的成本相对使用对象价格很高,所以在普通人家庭中并不广泛使用。另外,房子和办公楼越来越多,窗户也越来越大,虽然建筑结构非常漂亮,采光也很好,但也是一个问题。在大窗户里使用扶手其实并不能便于生活,目前设计这些建筑的设计师都还没有没有考虑到这些问题。

自动窗帘控制系统具有以下基本控制功能:

(1)灯光控制:根据外界光源强度值,通过光敏剂采集,自动开启或关闭窗帘。也就是说,在清晨第一缕阳光照进房间,光照强度增加到设定值时,单片机通过传感器采集控制步进电机开启窗帘;而在夜幕降临,光照强度降低到预定的设定值时,单片机会通过传感器收集信息,并发送信号给单片机,然后单片机控制步进电机关闭窗帘。

(2)温度控制:通过红外线遥控和温度控制系统来确定环境的温度;当温度高于或低于规定温度的时候,智能窗帘系统都会通过控制步进电机来打开或关闭窗帘。

(3) 红外线控制:当光线强度达不到设定值时,利用手动操作遥控器,红外接收系统对接收到的信号进行分析,然后发送信号给单片机可以控制步进电机开关窗帘。

2

2总体方案设计

2.1 系统的基本功能

在实现窗帘完全智能化自动控制,从窗帘的操作条件上,通过窗帘使用条件,人的行为习惯以及减少拒动,从合理和可行性上,将选择灯光控制和手动控制两种相结合的方式,作为智能窗帘操作方式。该方案的优点为:首先能够依照室外阳光的强度完成窗帘的自动操作;二是可以根据每一个体其实际情况来手动控制

设计主要内容:

(1)通过STC89C51单片机,来实现直流电机的正反转,最终完成窗帘的拉开和关上。 (2)用上、下限位开关实现电机在最高点和最低点时的自动停止,防止窗帘过卷。 (3)用SC2262编码和SC2272解码芯片组成的315m无线收发模块来执行无线遥控功能 (4)通过光敏检测模块检测周围环境的光照强度,并且自动完成对窗帘开启和关闭的控制。如果光线是暗的,它就关闭,如果光线是强的,它就打开,不会出现错误的行为,实现智能控制。

(5)用LED灯来表明系统当前的运行状态。当黄灯亮时,系统为自动模式,即黄灯亮的时候,当外界光照亮的时候,电机反向旋转关闭窗帘,当外界光照暗的时候,电机正向旋转自动打开窗帘;当绿光亮时,转变为手动控制模式,电机正向旋转打开窗帘;当红灯亮时,电机反向旋转关闭窗帘;当防过卷开关时,指示灯就会闪烁4次,控制步进电机立即停止,这样就完成了急停装置。

2.2 系统的模块组成

在本智能系统里,系统的基本结构由检测单元、处理单元和控制单元三部分组成。检测单元包括了窗外光源强度的检测,用光敏模块完成,另外还包括窗帘拉开和关闭位置的检测,用限位开关完成。处理单元主要通过STC89C51单片机实现检测结果处理以及电机的操作。控制单元主要完成窗帘开关操作,通过直流电机完成。运行模式上具有自动和手动两种方式。当智能窗帘在自动运行模式下,光敏模块时刻检测环境中光线强度,如果该强度低于该设计值,那么单片机就发出打开窗帘的命令,直流电机动作,让窗帘自动打开;当光线强度大于设定值时,那么单片机就发出关闭窗帘的命令,直流电机反转,完成窗帘的自动关闭。在窗帘的打开和关闭过程,时刻检测开关位置是否满足,一旦满足,就停止窗帘开关操作。当运行模式为智能遥控时,将利用遥控收发模块完成电机控制,实现窗帘的半自动操作;当处于手动模式时,电机的正反转是由手动遥控信号控制,使用者能够根据自身需要发出窗帘的开关命令完成窗帘的半自动操作。在此,光敏检测模块包含了光敏电阻、三极管等元件;直流电机的正反转功能主要利用继电器与三极管来完成的; sc2272编码组成的无线收发解码芯片组成了遥控收发模块用于实现无线遥控功能。编程期间采用C语言对单片机进行编程,其次对电路板进行绘图、焊接和调试。 智能窗帘系统控制流程见图2-1。

3

上限位开关无线遥控模块手动控制模块ST89C51单片机 电机驱动模块光敏检测模块下限位开关

图2-1 系统基本组成图

2.3单片机介绍

2.3.1单片机STC89C51简介

STC89C51RC是一种可以编程的芯片。由于是基于8051内核,因此其最大工作时钟主频为81MHz。该芯片包含9K字节的flash ROM闪存只读程序存储器,可反复读写1200次左右。芯片还兼容了MCS-51标准指令系统。还集成了一个8位的通用CPU和闪存,并且还具有ISP的特点。

选择原因:

(1)STC89C51芯片正常工作电压较低,工作频率范围较宽。芯片设有多个定时器和外部接口,用来表达上升沿或下降沿的中断(下降沿中断模式代表着0或1的代码信息)。成本相对较低,内部元件之间的标准定位也是芯片的一大特点。

(2)STC89C51芯片编程采用C语言,C语言具有良好的可移植性,这使得编程的效率很大程度上得到了提高。芯片的工作电压较低,使得所生产的产品具有体积小,重量轻,功耗低的优点,这也是选择该芯片的原因。

(3)STC89C51可以通过PC机端的程序将用户编制的程序代码直接下载到单片机上,运行速度也更快。

(4)STC89C51是单时钟,向下兼容8051的芯片。它具有新的流水线结构和MAX-810复位电路。当然高速低功耗也是该芯片的一大特色。

性能参数:

1.STC89C51RC有三种Flash ROM 容量选择:4KB\\8KB\\15KB; 2.工作频率:0-41MHZ 3.内置标准51核

4.内部RAM存储容量为512比特; 5.中断源有8个;

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

7.定时器和计数器分别有3个,为16位制; 8.单片机的工作电压为直流3.8-5.5V;

4

9.通用I\\O信号接口:信号输入接口32个,信号输出接口36个; 10.系统自带ISP(系统可编程)\\IAP(应用可编程);不需要利用专门的编程和仿真软件进行编程和测试

11.外形封装: PDIP引脚为40个,另外还有PLCC、PQFP等引脚;

5

2.3.2 SC2272介绍

解码器SC2272的引脚如下表2-2所示。

表2-2 SC2272解码器引脚图

对于SC2272解码芯片,其功能不同是通过型号的后缀来进行区分的。如L4、M4、L6、以及M6这几款产品,其中L为锁存输出,数据成功接收后,可以保持稳定的电平状态,一直到下一个信号发出,状态才会改变;M为非锁存输出,数据PIN输出为瞬时电平,主要功能就是完成信号的发出,大多用于微动相关控制。信号里后缀的数字代表了并行控制的通道数量,如后缀为4的,说明其在完成并行传输的通道有4路,并且乡对应的地址码也是4位;对于后缀6,代表了通过6路完成并行数据的传递,其地址码是6位。

3系统各硬件模块

3.1单片机控制系统

3.1.1 时钟模块

对于STC89C51的单片机,集成了一个具有高收益的逆变器,这个逆变器的输入输出引脚分别是XTAL1和XTAL2。逆变放大器和时钟模式放大器得出了单边机的时钟电路。按照实际情况和外围电路的不同,可以在外部时钟和内部时钟模式之间进行切换。经综合考虑,在智能窗帘系统中,选取内部时钟作为本设计的时钟模块。

基于内部时钟模式的电路,应对其输入以及输出端增加规格为30pf的电容,让其实现振荡功能。该振荡电路的晶体频率范围是1.2MHz~12Mhz。鉴于智能窗帘系统对于时间的要求没有特别之处,最终将选择频率为12Mhz的晶体振荡器完成电路的驱动。

3.1.2 复位电路

复位电路就是对整个系统电路完成保护,所以对于复位电路的设计,必须科学合理,不然会发生CPU误读或者系统控制程序存在BUG的情形。复位电路的复位模式有上电复位以及按键复位两种。按键复位过程的实现,通过单片机的RST端上给定的高电平完成,在硬件上

6

应借助复位按钮,这个复位俺就位于单片机的电源正端和RST之间。另外基于调试过程的频繁复位,从便捷角度考虑,将选用手动的复位方式完成复位。其电路见图3-1。

图3-1 复位电路电路图

3.1.3 电源模块

基于本设计的侧重点,对于系统的电源模块,只要实现给单片机正常供电即可,因此对于电源模块不做具体分析。另外本设计中的驱动电机的供电只要满足3.3V直流电即可。最后从制作成本和操作的简单性上以及测试安全,供电方式确定为由1.5V三节干电池组成。电源电路见图3-2。

图3-2 电源模块电路

3.2 电机驱动模块

7

电机驱动电路模块模块可以让步进电机接收芯片传输过来的0,1数字信号,从而完成电机正转或是反转,实现智能窗帘的关闭或是打开。在该智能窗帘控制系统里,对于电机的控制,选择ULN2003A来完成,该元件具有7路高耐压电流输入回路。

如图3-3所示。电机驱动模块的公共端接5V的电源,另外四线接ULN2003驱动芯片的OUT1~4的输出端口。

图3-3 电机驱动模块电路图

3.3 光敏检测模块

根据外界光照情况,电动窗帘自动开闭,采用光电传感器。本文采用光敏电阻。该电阻是一种通过光电导体制作的光电器件,通常也称之为光电导体。光敏电阻没有极性。这是一个纯电阻装置。使用时可加直流电压。当光照强度低时,光刻胶电阻很大,电路中的电流很小。当光刻胶受到了一定的光照时,电子空穴对在光敏层中被激发,光敏层参与导电,其电阻值值急剧下降,而电路中的电流迅速增大。该光刻胶的特点是高灵敏度和良好的光谱特性。一般来说,光刻胶被制成片状结构,以更大的接触面积吸收更多的光能。铹鸝饷飾镡閌赀诨癱骝。

反向输入端的电压值由具有最大暗电阻和最小光电阻的光敏电阻器确定。在比较分析两个信号后,它们会被发送到STC89C51的P0端口,该端口控制电机的正向和反向。实现了当光线暗时自动开启窗帘,光线亮时自动关闭窗帘。光敏检测模块如图3-4所示

夹覡闾辁

8

图3-4光敏检测模块电路图

3.4 无线遥控模块

对于无线遥控模块,具有无线收发的电路,能够完整的实现收发功能,在此,发送模块选择SC2262编码芯片,接收模块则选择解码芯片SC2272通过315M实现无线遥控。SC2262和SC2272均通过CMOS工艺加工,具有一定的节能特点,另外还能完成红外以及无线遥控。无线遥控主要用到315M无线控制器,因为信号的发射模块的工作频率为315MHz,所以称之为315M无线遥控器,该发送模块是采用声表面波来稳定频率。该频率稳定性很高。当温度在-24和+84度之间变化的时候,频率漂移仅为3.1PPM/度。因此,315M发射机模块是最好的选择。

线遥控发射模块如图3-5所示。

图3-5 无线遥控发射模块电路图

当芯片SC2272接收到该信号时,两次分析比较解码芯片SC2272的地址码,并在VT管脚上输出高电平,相应的数据管脚也将输出高电平。如果发送器一直按住此键,编码芯片将连续发送。当发射机停止按键时,SC2262将不打开电源,其17针为低电平信号,因此315MHz高频传输电路将不工作。按下该键时,SC2262通电,其17针输出调制串行数据信号。

同时手动遥控模块的设计使得智能窗帘更加人性化。 接收模块如图3-6所示。

9

图3-6 无线遥控接收模块电路图

10

4 系统软件设计

4.1 模块化程序

主程序主要实现系统初始化以、逻辑运算以及其他单元功能的实现。对于主程序的设计,必须注意各个功能实现的控制次序,不然在实际应用中,窗帘会误动或者拒动,达不到设计要求。模块化程序流程结构见图4-1。

图4-1模块化程序

4.2 主要模块程序设计

4.2.1 直流电机程序设计

系统正在运行。光敏检测模块判断外部环境的照明亮度,检查正向和反向按钮是否打开,并将信号发送至STC89C51单片机。芯片分析决定了步进电机的后续动作。灯亮时,电机正转完成窗帘的开启操作;当灯变暗时,电机通过单片机的控制,进行反转而完成窗帘的关闭操作。另外窗帘在打开过程中的停止主要依靠上限位开关的闭合来决定。当上限为开关时断开状态,电机就会停止工作,不打开时,步进电机将继续运行,直到上限开关打开。根据直流电动机的功能,主要在单片机的控制命令下实现,为正确实现正反转打下了基础。在防过卷功能中,可以及时的通过上、下限位开关的状态来进行停止命令的触发。电机控制流程见图4-1。

11

开始正转按钮是否按下反转按钮是否按下Y电机正转,打开窗帘ST89C51单片机Y电机反转,关闭窗帘上限位开关是否打开YNN下限位开关是否打开电机停止Y图4-1 电机驱动模块流程图

4.2.2 无线发射和接收模块程序设计

无线收发模块是整个智能窗帘模块中最能展现智能电器理念的模块,该系统具有的自动模式是在光线昏暗时关闭窗帘,光线明亮时打开窗帘,实现了自动化控制。

其无线控制模块流程图如图4-2所示。

光敏检测模块检测到光线(白天)没有检测到光线(夜)STC89C51电机正转(打开)

图4-2 无线控制模块流程图

电机反转(关闭)

12

5 软件仿真

因为在protues里,无线模块里的部分元件不能进行仿真测试,所以在系统的仿真环节,仅对,手动控制、电机操作以及光敏检测这三个的模块电路开展了仿真测试。另外也从优化角度完成了一些电路的简化,让智能窗帘的控制系统在结构和流程上更加的简单明了。本次仿真见图5-1。

图5-1 软件系统仿真

6 硬件调试

当软件工作完成后,就要进行系统的硬件测试,首先根据电路图完成硬件的焊接等工作,并把智能窗帘的软件下装到单片机,让硬件具备测试条件;其次,对电路板开展功能测试,本次测试,大多模块元件功能正常,个别存在虚焊。此次测试主要问题为无线遥控与接受功能硬件一致存在无信号问题。通过分析发现,主要是由于红外接收装置HS0038对于户外光线的光照时间以及光线强度非常敏感,对于单片机的信号接收产生了很大的干扰,对此问题,对设计方案进行了调整,选择了SC2262以及SC2272编码解码芯片作为无线收发模块,后对其在此进行硬件测试,窗帘的智能化操作各项功能均正常。

另外在软件上,单片机的代码通过C语言过程完成,在测试中也有一些小问题,后在老师的指导下,找到了问题原因并修改,至此,整个设计基本上实现了窗帘智能化操作功能,也较为圆满的完成了本次毕业设计。硬件仿真见图6-1。

13

图6-1硬件仿真图

7 总结

为了达到这次系统设计的目的。采用步进电机的正反转来打开和关闭窗帘。采用光刻胶作为外界光照强度检测元件,提供单片机的外部信息;采用遥控模块,实现手动控制;采用STC89C51RC 作为主控芯片,控制整个系统的运行;另外,系统还有另一个按键和显示屏。本次设计的智能窗帘控制系统具有生产成本低、精准控制,符合智能家具的发展方向等特点。 通过对智能窗帘系统现状的分析,对系统经过多次调试,所设计的智能窗帘控制系统大致能够完成最初所设计的产品要求。可以开发一些成品去进入市场,看看市场的需求。另外,这种设计还可以根据不同的用户需求进行扩展,因此具有很强的实用价值。

参考文献

[1]余发山,王福忠. 单片机原理及应用技术[M]中国矿业大学出版社.2008年6月第1 版 [2]李小为,张健. 智能家居中电动窗帘的设计与实现[J]电脑知识与技术.2018年 [3]谭浩强.C程序设计(第三版)[M]北京:清华大学出版社,2005

[4]孙艺婕,蒋善超. 基于 51 单片机的智能家居窗帘的控制系统设计 [J]智慧工厂.2018 [5]童诗白.模拟电子技术基础[M]高等教育出版社第2版

[6]曾兴文.陈健,刘乃安.高频电子线路辅导[M]西安:西安电子科技大出版社,2000

14

[7]邹书文,黄光桂.无线电遥控单片机.电脑与信息技术[M]1995

[8]吕俊芳.传感器接口与检测仪器电路[M].北京:北京航空航天大学出本社,2000

附录:程序及原理图

1 原理图

2 源程序

#include #include

#include //头文件

#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;

15

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;ivoid 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) {

16

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;

17

}

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; }

18

} } }

void main()//主函数 {

light=0; buzz=0;

while(1)//进入死循环 {

work();//调用工作函数 } }

19

因篇幅问题不能全部显示,请点此查看更多更全内容