学历提升辅导,就找秀文网,秀文网欢迎您!
当前位置:首页 >  网络教育 >  毕业论文 > 内容页

基于单片机的智能窗帘控制系统设计(毕业论文范文)

2021-11-23 17:19:27毕业论文访问手机版218
摘 要:智能窗帘作为智能家居的一个重要部分,其智能化的程度直接影响人们的日常生活水平。文章以STC89C52单片机为主控制核心芯片,研究和设计带红外遥控、自定义时间控制、光照强度控制、手动控制功能的智能窗帘控制系统,实现窗帘的自动和半自动开合。文章以汇编语言为源程序进行软件设计,通过Protues软件进行硬件设计与仿真,并最终完成智能窗帘的模型制作。
关键词:智能窗帘;单片机;红外遥控;光照强度控制;自定义时间控制;手动控制;LCD1602显示;直流电机;汇编语言;按键;Protues仿真

1绪论

1.1智能窗帘研究的意义

智能窗帘[1-6]作为智能家居[22-23]的重要组成部分,与人们的日常生活息息相关。其智能化程度直接影响人们的生活水平。近年来随着物联网[7-8]技术的迅速发展,智能家居成为家庭信息化和社会信息化发展的重要组成部分。智能家居控制系统[9-10]的应用让人们在家中就能享受到更安全、更舒适、更方便、更高效的生活。而在现代家居中,窗帘具有良好装饰、采光、通风、防尘、挡雨等作用,是家居生活必不可少的重要组成部分,智能窗帘控制系统的设计思想也就在这种形势下应运而生。
目前,常用的窗帘轨道都是拉绳轨道或滑轨式,当窗户面积大、窗户高或安装厚重的窗布时,采用手动或者拉绳都比较费力、费时,效率低下,并且容易导致帘布损坏。智能窗帘控制系统具备丰富的智能化控制功能,这些智慧化的功能更加人性化,比如温控功能、光控功能、遥控功能、预警功能等不需要人为操作就可以根据外界环境的变化自动控制窗帘的启闭。研究开发这些智能化的功能都将为家庭营造一个高效、舒适、温馨、安全、便捷的居住环境,进而改善和提高人们的生活质量。

    在国外发达国家智能窗帘已经相当普及,而在国内中低收入的家庭中仍使用着传统的手拉式窗帘,高收入家庭也仅有一部分采用电动窗帘。造成这种情况的原因不仅是智能窗帘高昂的价格(如果一副窗帘配两个电机,电机为400元左右,轨道80元一米,如果一个窗户3米宽,则装自动窗帘的成本大概是:2*(400+3*80)=1280元,遥控另算一般40元左右,总成本在1400—1700之间),开发、设计水平与国外相比也还存在一定的差距。因此,研发和设计价格低且智能化的窗帘对人们的生活质量、经济以及电子技术的发展都具有非常重要的意义。

1.2智能窗帘的研究现状

窗帘的发展大致包括四个阶段:原始窗帘阶段、无滑动固定式窗帘阶段、手拉或滑轨式窗帘阶段、智能窗帘阶段。
国内窗帘的研究已经进入智能窗帘的研究阶段。但研究还并不深入,许多领域都需要进一步探索与拓展,功能和稳定性还需要进一步完善。国内智能窗帘的研究已经实现了多功能性,譬如单控、群控[11];光控[12-14]、雨控[15]、遥控(红外遥控)[16-17]等等,对于高端产品的开发已经进入智能家居阶段,即智能窗帘作为智能家居研究的一部分,与其它家居电器一起利用无线网络技术或者蓝牙技术通过远程终端进行控制,最常见的远程终端包括计算机和手机。国外对窗帘的研究也处于智能窗帘的研究阶段,其技术相比于国内更加成熟,但就智能窗帘的发展而言,还有许多技术和功能需要进一步研究和开发。
智能窗帘的研究不仅可以改善人们的生活质量,为用户提供一个舒适、安全、便捷的生活环境,同时也能为一些企业带来新的发展机遇。譬如为房地产业带来新的购房概念与卖点,促进电子技术、物联网技术产业的进一步发展。随着智能家居的发展,智能窗帘必将逐渐代替普通窗帘,甚至走在智能家居的前列。以目前智能窗帘的应用趋势与智能家居的应用相比,也的确如此。因此,智能窗帘具有良好的发展潜力与发展趋势。

1.3本文涉及的基于单片机智能窗帘控制系统的概述

1.3.1基于单片机智能窗帘控制系统的组成

本系统主要组成部分包括:单片机、红外遥控模块、定时控制模块、光控模块、LCD液晶显示模块、电机驱动、按键操作等部分,其总体框架见图1。
 
 
 
 
  单
 
  片
 
  机
红外遥控模块
定时控制模块
光控模块
按键操作
LCD液晶显示
直流
电机
 电源
 电机驱动
图1 系统总体框架图
 
 
  
 
 
 
 
 
 
 
 
 

< >单片机模块红外遥控模块定时控制模块光控模块按键操作模块LCD液晶显示电机驱动模块1.3.2本文所研究的主要内容本文主要研究的内容包括:
< >窗帘控制系统的硬件设计。主要介绍窗帘控制系统所选取的硬件及其功能和详细参数。采用STC89C52单片机为主控制中心。此外,还介绍了红外遥控模块、自定义时间控制模块、光照信息采集模块、LCD液晶显示模块、按键操作模块、窗帘驱动模块的硬件设计。红外遥控技术。系统功能的一部分是通过红外遥控板发射红外信号,通过红外信号的收发以及主控制单片机对接收的红外信号进行处理,来控制电机的转动。本系统未采用现成的红外发射芯片,而是利用另一块单片机(STC89C52)自行设计红外发射电路,因此,设计好红外发射模块,并按照预先规定的协议进行通信,才能够实现电机的转动,窗帘的开闭。定时控制技术。系统拟用时钟芯片与单片机相结合以实现用户对时间的随意设定,对日期的任意调整。LCD液晶显示。液晶显示屏主要显示日期及具体的时间,进行自定义时间设定时,显示用户将要设定的开闭窗帘时间。之后再回到正常时间的走时。进行时间模式调整时,将显示用户将要调整的日期和时间。软件设计。本文采用汇编语言进行软件设计。汇编语言具有目标代码简短、占用内存少、执行速度快的特点,它是高效的程序设计语言。系统需要处理红外信号、光照信号、按键操作等传来的各类信息,需要控制电机的转动以及LCD液晶的显示,如何做好软件设计是系统实现的关键。进行窗帘模型制作,对系统进行调试。2系统硬件电路设计

2.1系统总体设计

本系统以窗帘为模型,通过单片机控制电机的转动,进而控制窗帘的开闭。系统采用两个直流电机,通过电机驱动分别控制左右窗帘的收缩。系统的默认控制模式为自定义时间控制模式,当有红外遥控信号或者光控信号要求时,系统转向新的要求模式进行工作。窗帘主控部分搭载有51单片机最小系统、红外接收电路、定时模块、光照传感模块、按键模块、LCD显示模块、电机驱动模块。副控制部分为红外发射模块,由单片机(STC89C52)最小系统、按键、红外发射电路组成。整个系统分为四种工作模式:
< >红外遥控模式自定义时间模式光控模式手动模式
图 2  系统总体方案图
 
红外接收模块
 
 
单片机
 窗帘驱动
光照信息采集
时钟芯片
发射红外信号
LCD显示
                                                                                                                                  
 
 
 
 
 
 

2.2电源模块

窗帘控制系统中需要供电的模块有:单片机最小系统模块、红外信号发射模块、自定义时间控制模块、光照采集模块、LCD液晶显示模块、电机及电机驱动模块。电机驱动模块需要使用双电源供电(5V、9V),单片机及其它模块需要5V直流电压,本系统采用单相桥式整流电路。此电源电路通过单相桥式整流电路和稳压电源芯片7805、7809,把交流220V电压整流为5V和9V直流电压。220V的交流电压通过变压器,将电压降低,然后通过单相桥整流电路将交流电能转换成直流电能,图中的电容起滤波作用,最后通过稳压芯片输出稳定的直流电源,具体电路如图3。

 
 
 
图3  电源电路设计图
  
 

2.3电机及电机驱动模块

2.3.1电机模块

窗帘的运动是靠直流电机的转动来实现的,因此,控制直流电机的转动方向就能控制窗帘的打开与闭合。
直流电机的工作原理:直流电机中固定有环状的永磁体,电流通过电机转子上的线圈就产生洛伦兹力,洛伦兹力带动电机旋转。当电机转子上的线圈平行于磁场时,若此时电机继续转动,其受到的磁场方向将发生改变,此时因为转换片与转子末端的电刷交替接触,从而线圈上的电流方向也发生改变,线圈上的电流方向与磁场方向同时发生改变,产生的洛伦兹力方向却不发生改变,从而电机能保持同一转动方向不发生改变。因此,只要改变流入电机的直流电流的方向,就能改变电机的转向。
本设计采用的是微型直流电机,其额定电压为3V~ 9V,空载时转速为6800 ~16800转/分,额定电流250 ~ 420mA。直流电机具体参数如表1。
 
表1  直流电机参数
属性   参数  
工作电压 DC 3V DC 6V DC 9V
工作电流 2500mA 350mA 420mA
空载速度 6800rmp 11000rmp 16800rmp
负载速度 20rmp 147rmp 170rmp
重量 63g
外形尺寸 30.5mm*24.2mm*12mm
噪声 <65db
 

2.3.2电机驱动模块L298N[19-20]

电机驱动模块使用电机驱动芯片L298N,L298N是双全桥电机驱动芯片,可以驱动46V、2A以下的电机,内部含2个H-Bridge的高电压、大电流双全桥式驱动器,能接收标准TTL逻辑准位信号,且可以直接透过电源来调节输出电压。芯片内部包含4信道逻辑驱动电路,可同时驱动1个4相或2个二相电机,该芯片可直接由单片机的IO端口提供模拟时序信号。由于电机正常工作时对电源的干扰很大,只用一组电源供电会影响单片机的正常工作。所以使用该芯片时要接双电源。一组5V电源给单片机和控制电路供电,另一组5V、9V电源分别供给L298N的+Vss、+Vs(分别是L298N的9、4引脚)。电机驱动芯片L298N如图4。

 
 
 
 
图4  电机驱动芯片L298N
  

产品参数见表2所示
表2  L298N的运行参数
参数 符号 测试环境 最小值 典型值 最大值 单位
驱动电源电压 Vs 持续工作 2.5 -- 46 V
逻辑电源电压 Vss -- 4.5 5 7 V
输入低电平电压 ViL -- -0.3 -- 1.5 V
输入高电平电压 ViH -- 2.3 -- Vss V
使能端低电平电压 Ven=L -- -0.3 -- 1.5 V
使能端高电平电压 Ven=H -- 2.3 -- Vss V
全桥式驱动器总的电压降(每一路)   VcE(sat) IL=1A
IL=2A
1.8 -- 3.2
4.9
V
检测电压1,15脚 Vsen -- -1 -- 2 V
 
 
L298N与单片机、直流电机连接的原理图如图5。
 
C
ENB
IN1
IN3
 
 
 
  L298N
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Vcc
+5V
IN4
IN2
ENA
MOTO1
直流电机1
直流电机2
MOTO2
OUT3
OUT1
OUT2
OUT4
D5    D6   D7   D8
D1-D8:3A 400V
接单片机
接单片机
接单片机
接单片机
接单片机高
 电平有效
   图5   L298N接线原理图
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 

本系统设计的电机驱动电路如图6所示。电容C7和C9是较大的电解电容,起滤波作用,C8、C10用于消除电路高频有害信号。图中的8个二极管用于保护电机驱动芯片L298N。电机是感性负载,当电感线圈通电后再断电时,绕组两端会产生一个比电源电压高N倍,极性与电源电压相反的反相电压,即自感电动势。这个反相电压会加在L298N的功率开关器件上,将L298N的功率开关器件击穿烧坏,所以要用8个二极管建立一个泄放通道,将绕组自感电动势产生的高电压和电流释放。

 
 
 
图6  本系统设计的电机驱动电路图
  

管脚接口说明如表3
表3 管脚接口
电机驱动L298输入端口 电 机
IN1  IN2 电机M1  的控制端
IN3  IN4 电机M2  的控制端
ENA 电机M1  的使能端
ENB 电机M2  的使能端
 
控制端的使用说明如表4
表4 控制端的使用说明
IN 1 IN 2 EN A IN 3 IN 4 EN B 电机
-- -- 0 -- -- 0 不转
0 1 1 0 1 1 正转
1 0 1 1 0 1 反转
1 1 1 1 1 1 制动
0 0 1 0 0 1 制动
 
本系统将电机驱动模块输入端(IN端)与单片机P1口部分引脚相连接,既保证单片机引脚的节约又能驱动两个电机的转动,具体连接方法如表5所示。
表5 单片机与L298N芯片的接口
单片机引脚 L298N端口 电机引脚
P1.3 
 
IN2 控制MOTO1
IN3 控制MOTO2
P1.2 IN1 控制MOTO1
IN4 控制MOTO2
P1.1 ENA MOTO1使能
ENB MOTO2使能
 
注:P1.3同时连接IN2、IN3,P1.2同时连接IN1、IN4,目的是节约单片机的IO口,保持电机的正常运转。

2.4自定义时间控制模块

本系统选用时钟芯片DS1302[21]、LCD1602及按键完成时间自定义控制模块的设计。DS1302为低功耗、高性能时钟芯片,它能够完成年、月、日、周、时、分、秒的计时,具备闰年补偿功能。DS1302最基本的功能是记录时间数据,对于某些具有特殊意义的数据点,DS1302在记录数据的同时也记录下了出现该数据的时间。这种特殊功能对于需要长时间连续测控的系统以及对异常数据出现的原因的查找有重要的意义。时钟芯片DS1302如图7。

 
 
 
图7  时钟芯片DS1302
 
DS1302的内部结构如图8
 
Data  Bus
I/O
SCLK
RST
AD  BUS
X1
振荡器与分频器
输入移位
寄存器
实时时钟
命令与控制逻辑
31x8 RAM
X2
32.768KHz
图8  DS1302内部结构图
 
 
  
 
 
 
 
 
 
 
 

DS1302工作电压工作范围:2.5~5.5V,其采用三线接口方式与单片机进行同步通信,并且可采用突发方式一次传递多个字节的RAM数据、时钟信号,DS1302内部有一个31x8的临时存放数据的RAM寄存器。DS1302引脚功能如表6.
表6  DS1302引脚功能表
引脚号 引脚名称 功能
1 Vcc2 主电源
2、3 X1、X2 振荡源,外接32.768KHz晶振
4 GND 地线
5 RST 复位/片选线
6 I/O 串行数据输入/输出端(双向)
7 SCLK 串行时钟,输入,控制数据的输入与输出
8 Vcc1 后备电源
 
 
DS1302命令控制字:
   7        6        5        4       3        2         1       0
1 RAM/CK A4 A3 A2 A1 A0 RD/W
控制字说明:
Bit0 W/RD:读写选择位,0 写操作,1 读操作
Bit1~Bit5:内部时钟寄存器地址或RAM地址
Bit6 RAM/CK:时钟/日历或RAM数据选择位,1选择RAM,0选择时钟
Bit7:必须为1,0禁止使用此芯片
DS1302的寄存器地址及寄存器内容如表7所示
 表7  DS1302的寄存器地址及内容
  寄存器地址       寄存器内容
1 0 0 0 0 0 0 0 RD/W 80H 00-59 CH 10秒
     
1 0 0 0 0 0 0 1 RD/W 81H 00-59 0 10分
     
1 0 0 0 0 0 1 0 RD/W 82H 01-12 00-23 12/24 0 10/AP 小时 小时
     
1 0 0 0 0 0 1 1 RD/W 83H 1-28/29/30/31 0 0 10日
     
1 0 0 0 0 1 0 0 RD/W 84H 01-12 0 0 0 10M
     
1 0 0 0 0 1 0 1 RD/W 85H 01-07 0 0 0 0 星期
     
1 0 0 0 0 1 1 0 RD/W 86H 00-99 10年 YEAR
     
                                       
 
 
读写操作的启动是通过控制RST端为高电平来完成的,操作步骤为:首先发送8位命令控制字,指明是读操作还是写操作以及指明读写的地址,数据的传输是从低位到高位依次顺序传输。
读操作具体过程:
< >启动准备:RST置低,SCLK置低启动读写开始信号:RST置为高电平发送要读取数据的地址的命令字节数据,如读年寄存器延时,SCLK置低读取年寄存器的数据读过程结束,清SCLK,RST置低。启动准备:RST为低电平,SCLK为低电平启动读写开始信号:将RST置为高电平发送要写入地址的命令字节数据,如写年寄存器延时,SCLK置低发送要写入年寄存器的数据写过程结束,清SCLK,RST置低
 
 
 
 
 
 
 
 
R/W    A0   A1   A2   A3   A4   R/C  1
读操作时序
RST
SCLK
I/O
写操作时序
RST
SCLK
I/O
 
 
 
 
 
 
 
 
R/W    A0   A1   A2   A3   A4  R/C  1
 
 
 
 
 
 
 
 
D0   D1  D2   D3   D4  D5   D6    D7
图9  DS1302单字节读写时序
DS1302的单字节读写时序如图9。 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
自定义时间控制模块的完成还需要显示模块显示对时间的操作,本系统使用的是2行16个字的LCD1602液晶显示屏进行设计。LCD1602已经存储有字符图形,要使其显示出图形来,只需通过单片机编写要显示字符的代码以及在屏幕上显示该字符位置的代码,然后通过单片机I/O引脚将代码传送给芯片即可。LCD1602的控制指令如表8所示。
表8  LCD1602指令表
指       令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
清显示 0 0 0 0 0 0 0 0 0 1
光标返回 0 0 0 0 0 0 0 0 1 --
置输入模式 0 0 0 0 0 0 0 1 I/D S
显示开/关控制 0 0 0 0 0 0 1 D C B
光标或字符移位 0 0 0 0 0 1 S/C R/L -- --
置功能 0 0 0 0 1 DL N F -- --
置字符发生存贮器地址 0 0 0 1 字符发生寄存器地址(AGG)
置数据存贮器地址 0 0 1 显示数据存贮器地址(ADD)
读忙标志或地址 0 1 BF 计数器地址(AC)
写数到CGRAM或DDRAM 1 0 要写的数据
从CGRAM或DDRAM读数 1 1 0 0 1 要读的数据
 
 
LCD1602的内部显示地址如表9所示
表9  LCD1602内部显示地址
标号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
第一行 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
第二行 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
 
 
对LCD1602进行指令操作时都要判定忙标志位(BF),当忙标志位为低电平时才可以执行指令,否则指令无效。对LCD1602进行写入显示地址操作时,要求地址代码的最高位(D7位)必须恒为高电平。如要在第一行第一个字符位置处显示字符,那么其地址代码应为:
00000000(00H)+10000000(80H)=10000000(80H)。
本系统设计的时间自定义仿真电路如图10,X1、X2外接32.768KHz晶振,按键意义见表10。
表10 时间自定义模块按键意义
键名 意义
JIA 调整年月日时分秒的加“1”时间
JIAN 调整年月日时分秒的减“1”时间
MOSHI 调整日期时间的选择按钮
KALARM 开窗帘时间的选择按钮
GALARM 关窗帘时间的选择按钮
 
 

 
 
 
图10  时间自定义仿真电路
  
 

2.5单片机模块

本系统的设计使用了两片单片机芯片,一片作为红外发射部分的主控制芯片,一片作为主电路核心控制芯片,类型均为STC89C52。本设计使用了单片机的定时/计数及中断功能,故主要介绍单片机端口的第二功能和中断特性。
·P0口:P0口是地址/数据总线复用口,当用作I/O口使用时,要求接入10KΩ左右的拉高电阻。
·P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1.0、P1.1可分别作为定时/计数器2的外部计数输入(P1.0/T2)和(P1.1/T2EX).
·P2口:与P0口结合可用于外部端口扩展,P2口存储外部扩展地址的高8位数据。
·P3口:P3口的重要用途是它的第二功能,第二功能如表11
表11  P3口第二功能表
端口引脚 第二功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INT0(外部中断0)
P3.3 INT1(外部中断1)
P3.4 T0(定时/计数器0外部输入)
P3.5 T1(定时/计数器1外部输入)
P3.6 WR(外部数据存储器写选通)
P3.7 RD(外部数据存储器读选通)
 
STC89C52共有6个中断向量:两个外部中断(INT0、INT1),三个定时中断(定时器0、1、2)和一个串行口中断。中断控制、地址及优先级见表12。
表12  STC89C52中断控制
中断源 中断允许控制位 中断源入口地址 优先级
INT0 EX0 0003H            最高
 
 
 
 
            最低
T0 ET0 000BH
INT1 EX1 0013H
T1 ET1 001BH
串行口 ES 0023H
T2 ET2 002BH
 

2.6红外遥控模块

      本设计的红外遥控模块由红外发射模块和红外接收模块组成,红外接收模块采用红外接收头HS38B。红外发射模块并未使用现成的红外发射芯片,而是结合单片机、按键、三级管、红外发射管自主设计。红外遥控模块系统总设计思路如图11。
 
红外发射控制
 按键
编码及调制
红外发射
红外接收
解码并响应
主控制板上红外接收
图11  红外遥控设计思路
 
 
  
 
 
 
 
 
 

2.6.1红外发射模块

红外遥控发射部分系统框图见图12。红外发送部分利用单片机的定时中断功能,由定时器T1产生周期约26us的矩形脉冲,即每隔13us定时器T1产生一次中断,使单片机产生周期为38KHz的脉冲信号,此脉冲将作为载波信号,来调制将要发送的信号。按键设置有正转、反转、停止及待定义功能的按键。系统根据扫描到不同的按键值对发射脉冲编码赋值,并将该编码赋值信号调制在38KHz的脉冲上,经过PNP(2N5401)三级管将信号放大后驱动红外发光管,将控制信号发送出去。
 
STC89C52
编码、调制信号
  按键
PNP信号放大
 红外发光二极管
驱动
图12  红外发射系统框图
 
 
  
 
 
 

本设计红外发射部分电路如图13,使用Protues中的IRLINK模拟红外发光二极管,按键设置有正转、反转、停止以及两个待定义的按键。

 
 
 
图13  红外发射电路
  

发射的红外信号的仿真波形如图14所示
 
 
 
 
 
图14  发射信号的仿真波形图
 

2.6.2红外接收模块

HS38B具备低功耗、高灵敏度、优良的抗干扰特性,适用于家用电器、玩具等红外遥控接收。其参数如表13。
表13  HS38B光电参数
参数 符号 测试条件 Min Typ Max 单位
工作电压 Vcc -- 4.5 -- 5.5 V
接收距离 L L5IR5IF=300mA 10 15 -- m
载波频率 f0 38K Hz
接收角度 θ ½ 距离衰减½ +/-45 Deg
BMP宽度 fBW -3Db Bandwidth 2 3.3 5 KHz
静态电流 Icc 无信号输入时 -- 0.8 1.5 mA
低电平输出 VOL Vin=0V Vcc=5V -- 0.2 0.4 V
高电平输出 VOH Vcc=5V 4.5 -- -- V
输出脉冲宽度 TPWL Vin=500µ VP-P※ 500 600 700 µ
TPWH Vin=500m VP-P※ 500 600 700 µ
 
红外接收头内部放大器的增益很大,易引起干扰,所以在VCC与GND之间要接滤波电容,红外接收电路如图15。红外遥控仿真电路如图16,图中示波器A通道的脉冲波为发射端发射信号,B通道的矩形波为接收端接收到的信号。
 
图15  红外接收电路
VCC
C
22pF
HS0038
3
2
1
P3.1
P3.2
GND
 
 
  
 
 
 
 
 
 
 
 
 


 
 
 
图16  红外遥控仿真电路
 

2.7光控模块

光控模块选用光电传感器ULN-3330来完成。ULN-3330集合了光敏二极管、低电平放大器、电平探测器、输出功率驱动器和稳压电路。当ULN-3330顶部光照大于50Lx时,其引脚输出高电平,负载上无电流,当光照小于45Lx时,其输出引脚输出低电平,负载上有电流。光电传感器ULN-3330直接输出数字信号,它可以和单片机直接连接,不需要模数转换电路。ULN-3330具体参数见表14。
表14  ULN-3330参数表
电气特性:T=+25℃  Vcc=6.0V  λ=880nm
参数 符号 测试条件 Min Typ Max 单位
工作电压 Vcc -- 4.0 6.0 15 V
工作电流 Icc -- -- 4.0 8.0 mA
光阀值 Eon 输出打开 45 55 65 µW/c㎡
Eoff 输出关闭 -- 62 -- µW/c㎡
磁滞 ΔE (EoFF-Eoff)/EoFF 10 13 16 %
输出电压 VOUT IOUT=15mA -- 300 500 mV
IOUT=25mA -- 500 800 mV
输出电流 IOUT VOUT=15V -- -- 1.0 µA
输出下降时间 tf 90%—10% -- 200 500 ns
输出上升时间 tf 10%—90% -- 200 500 ns
 
ULN-3330引脚连接说明:ULN-3330共三个引脚,1脚Vss接地,2脚输出端Output接单片机I/O口,3脚VDD接+5V电源。本设计仿真光电传感器模块电路如图17(由于Protues中没有ULN-3330元器件,故可用开关代替仿真,其性能特性一致:光敏器件和开关输出到单片机引脚的电平为“0”或“1”)。
 
图17  光电传感仿真电路

3系统软件设计

3.1系统软件总体设计

要实现系统的功能,软件设计是本系统的关键所在。本文利用Keil uVision3和Keil uVision2结合汇编语言进行软件设计。由于本系统的软件设计较为复杂所以本系统采取模块化软件设计,对各功能部件进行分块软件设计。系统软件模块包括红外发射模块、红外接收模块、时间自定义定时模块、光照采集模块、LCD1602液晶显示模块、中断模块、窗帘运动模块。软件系统结构如图18。
 
 
 
 
软件系统
红外发射模块
LCD1602液晶显示模块
红外接收模块
时间自定义控制模块
光照采集模块
中断模块
窗帘运动模块
图18  系统软件设计结构图
 
 
  
 
 
 
 
 
 
 

 
图19   主程序流程框图
初始化
 
P3.2有无脉冲
 
 
P3.2有无脉冲
 
 
 
 
遥控模式
时控模式
 
P2.7有无低电平
 
开始
光控模式
有无定时信息
 
P2.7有无低电平
系统的主程序流程框图见图19。主程序默认执行时控模式,即进入程序后系统运行时间控制模块的程序,若有红外遥控或者光照控制需求则程序转入光控模式或者遥控模式,在光控和遥控模式下,程序也可以执行时控模式,光控遥控模式可任意选择执行其它模式。 
 
 
 
 
 
 
 
 
 
 
 
 

3.2红外遥控模式

3.2.1红外发射

红外发送端利用定时中断功能,由单片机定时器T1产生频率为38KHz(周期为26us)的相反矩形脉冲,发射部分单片机再将待发送的二进制信号编码脉冲调制在38KHz的脉冲基波上,通过红外发射管发射出去,就完成了红外发射功能。

3.2.2红外遥控编码

红外编码采用不同脉宽宽度的二进制信号来实现。以脉宽为0.565ms间隔为1.685ms周期为2.25ms的信号代表二进制“0”;以脉宽为0.565ms间隔为0.56ms周期为1.125ms的信号代表二进制“1”,其编码波形如图20。
 
二进制“0”
1.685ms
2.25ms
1.125ms
二进制“1”
0.56ms
图20  二进制信号“1”“0”的编码
 
 
  
 
 
 
 

红外遥控编码脉冲信号包括引导码、识别码、按键码、识别反码、按键反码。本设计引导码作为起始码,由3ms低电平和5ms高电平构成该信号,如图21。
 
5ms高电平
3ms低电平
图21  编码脉冲引导码
 
 
  
 
 

识别码用于指示遥控系统的种类。按键码用于指明控制功能,红外接收单片机通过翻译按键码的数值来完成相应功能操作。按键反码与识别反码用于信号接收端校验信号在传输过程中是否产生差错。若产生差错则信号接收端将丢弃接收到的信号且等待下一次信号的接收。脉冲由32位“0”“1”的二进制数组成,前16位控制指令控制不同的红外设备,由识别码和识别反码组成,后16位指明不同的操作功能由按键码与按键反码组成。串行数据码的时序图如图22所示。
 
图22  串行数据码发送时序图
5ms
 
3ms
按键码
引导码
识别码
识别反码
按键反码
 
 
  
 
 
 
 

3.2.3二进制信号的调制

二进制信号的调制是将待发送的信号(由发送单片机P3.5引脚的电平转换产生)调制在频率为38KHz(由定时器T1产生)的连续脉冲上。二进制信号的调制原理如图23。A代表待发送信号的编码波形,B代表38KHz的脉冲基波,C代表调制后的间断脉冲串(C=A&B)。(待发送编码假定为011)
 
图23  二进制信号调制原理图
二进制“0”
二进制“1”
二进制“1”
A
B
C
C=A&B
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 

3.2.4红外发射程序设计

红外发射主程序流程如图24。脉冲编码包括四个八位二进制,需调用四次数据发送子程序,最后以二进制数“1”表示结束码,若信号接收端接收完按键反码后接收到“1”信号,则代表本次数据发送结束。反之接收端将丢弃已经接收到的信号等待下一次信号的传送。
 
 
 
 
 
 
 
 
 
开始
延时
四个八位码发完?
发结束码“1”
 
 
 
 
 
 
 
 
初始化按键/中断
有无键按下
发射引导码
发射程序
图24  红外发射主程序流程图
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

红外发射子程序流程如图25。每调用一次该子程序就发送一个码位(一个码位由8个二进制数组成),一次发送需调用四次。程序从高位开始依次发送累加器中的二进制数。发送过程:若为信号二进制为“1”先发送0.56ms低电平,为“0”先发送1.685ms低电平,然后打开定时器T1中断产生38KHz基波脉冲,脉冲持续0.56ms,最后关闭中断,八位二进制发送完后,退出该子程序。
 
图25  发射子程序流程图
发“1”?
延时1.685ms
进入发射子程序
延时0.56ms
开中断
 
0.56ms后关中断
8位数据发完?
退出发射子程序
 
 
  
 
 
 
 
 
 
 
 

;---------------------------------红外发射子程序--------------------------------
FOUT04://循环发射各数据位
          MOV   R1,#08H
FOUT:     RLC   A
          ACALL FSEND
                DJNZ  R1,FOUT
                RET
FSEND:   CLR   TR1//禁止定时器T1定时
          CLR   ET1//禁止定时器T1中断
                CLR   P3.5//关脉冲输出
                JC    FSEND1//进位位为1跳转到FSEND1,为0继续执行下一条指令
                MOV   R3,#08H//发射‘0’码
FSEND0:  MOV   R4,#69H//‘0’码低电平
          DJNZ  R4,$//等待‘0’码低电平发射结束
                DJNZ  R3,FSEND0//‘0’码未发射完,则反会继续发射
                LJMP  FSIG//转脉冲发送信号
FSEND1:  MOV   R3,#02H//发射‘1’码
FSEND10: MOV   R4,#8CH//"1"码低电平
          DJNZ  R4,$//等待‘1’码低电平发射结束
                DJNZ  R3,FSEND10//‘1’码未发射完,则反会继续发射
FSIG:       SETB  TR1//允许定时器T1定时
          SETB  ET1//允许定时器T1中断
                MOV   R3,#08CH//发射脉冲
                DJNZ  R3,$
                CLR   TR1//关定时器T1定时
                CLR   ET1//关定时器T1中断
                CLR   P3.5//关脉冲输出
                RET
;------------------------------T1中断服务程序------------------------------
FINTT1:   CPL   P3.5 //产生38KHz红外遥控信号
                RETI//中断返回

3.2.5红外接收

红外接收芯片输出的信号是对其接收到的信号的求反。HS38B输出引导码(5ms低电平、3ms高电平),低电平触发主控制单片机发生中断,此时开始对低电平计时,低电平信号超过4ms时,认定引导码有效。然后延时跳过3ms高电平,单片机开始接收按键码等信号。

3.2.6红外解码

 
图26  单片机对信号的判断
原码“0”
原码“1”
原码“1”
0.8ms
0.8ms
0.8ms
根据HS38B输出的反码“0”“1”的高低电平宽度不同,可对原码中的“0”“1”进行解码。设定延时程序,延时0.8ms,再对引脚电平取样,此时若取样电平为高,则原码为“0”;为低,则原码为“1”。单片机判断输出的信号见图26。  
 
 
 
 
 

3.2.7红外接收程序设计

 
结束码为“1”?
4个8位码接收完毕?
接收信号并解码
低电平是否超过4ms
有无中断信号
外部中断0初始化
单片机执行相应功能
开始
图27  红外接收流程图
红外接收流程如图27。外部中断0引脚有脉冲低电平发来时,单片机延时4ms后对电平取样,若取样电平仍为低电平则延时后开始接收数据。4个8位数据码发送完毕后,判断结束码是否为“1”,为“1”单片机对I/O口进行操作,执行相应功能。       
 
 
 
 
 
 
 
 
 
 
 
 
(R1)-1-〉R1
MOV  R1,04
0.8ms延时
取样电平为低?
“1”放入累加器A
“0”放入累加器A
等待下一个高电平的到来
8位二进制码接收完?
进入读/解码子程序
退出
(R1)=0?

 

 
图28   红外接收读、解码子程序流程图
红外接收读解码子程序流程图如图28。进入读码子程序后(即接收引导码之后),延时0.8ms,单片机对接收到的电平信号采样,采样电平为高电平,取反后得到原码“0”;采样电平为低电平,取反后得到原码“1”一次采样结束后继续等待下一个高电平的到来。检测到下一高电平到来时,延时0.8ms后又开始电平采样,判断出原码是“0”还是“1”。如此循环,直到8位二进制码接收完毕后退出子程序。红外遥控接收读解码子程序详见附录。 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

3.3时间自定义时控模式

3.3.1时控模式总程序设计

时控模式主程序流程如图29。时控模式包括显示子程序、判键子程序、开窗帘定时子程序、关窗帘定时子程序、判断正常走时与定时时间一致的子程序转换BCD码子程序等。程序开始对LCD1602、DS1302初始化,设定初始显示日期和时间、初始定时开关窗帘时间。然后程序进入判键子程序,判定MOSHI、KALARM、GALARM、JIA、JIAN按键是否按下。若有则进入日期调整或者窗帘开关定时子程序,接着判定正常走时与定时时间是否相等,相等则执行电机转动子程序,整个过程液晶显示屏都会显示日期或时间,具体程序详见附录。
 
图29  时控模式主程序流程图
定时到?
电机转动子程序
初始化LCD1602、DS1302
开始
读DS1302
显示日期及具体时间
键按下?
调整或定时时间
  
 
 
 
 
 
 
 
 
 
 
 

3.3.2判键子程序设计及部分显示子程序设计

设定的按键有MOSHI、KALARM、GALARM、JIA、JIAN、时控按键、光控按键。时控按键和光控按键是时控模式和光控模式选择的按键。MOSHI、KALARM、GALARM、JIA、JIAN是光控模式下使用的按键。MOSHI按键是用于正常时间和日期的调整的,比如调整时间或日期为2014年5月12日14:25。第一次按下MOSHI键时,液晶显示屏将显示调整时间界面,光标停在“分”位闪烁,等待调时,此时若按下JIA键,“分”加1;若按下JIAN键,“分”减1。若继续按MOSHI键,光标将停在“时”位等待调时,此时若按下JIA键,“时”加1;若按下JIAN键,“时”减1。若继续按MOSHI键,光标将停在“日”位等待调时,如此循环,直到调整完“年”位之后再按下MOSHI键,则进入正常走时状态。
第一次按下KALARM键,液晶显示屏将显示开窗帘定时界面,光标停在“秒”位闪烁,等待定时操作。此时若按下JIA键“秒”加1;若按下JIAN,“秒”减1。若继续按KALARM键,光标将停在“分”位等待定时操作,此时若按下JIA键,“分”加1;若按下JIAN键,“分”减1。如此循环直到“时”位操作结束,再按一次KALARM键,液晶显示屏将显示正常走时时间。GALARM流程与KALARM流程操作类似。涉及的程序流程如图30、31,由于时间是变化的所以未用循环体,读写LCD1602、DS1302等具体程序详见附录。
 
进入日期/时间调整子程序
MOSHI键按下?
LCD显示日期/时间调整界面
JIA键按下?
‘分’加1
JIAN键按下?
‘分’减1
MOSHI键按下?
‘时’加1
‘时’减1
JIA键按下?
JIAN键按下?
MOSHI键按下?
JIA键按下?
JIAN键按下?
‘天’加1
‘天’减1
A模块
循环执行A模块直到年月日时分调整完毕
MOSHI键按下?
调时完成,显示正常走时
 
图30  日期/时间调整子程序流程图
‘时’加1
‘时’减1
定时完成
JIA键按下?
JIAN键按下?
GALARM键按下?
GALARM键按下?
‘秒’减1
‘分’加1
‘分’减1
JIA键按下?
JIAN键按下?
GALARM键按下?
进入定时子程序
固定显示TIME ADJUST
显示定时数据
GALARM键按下?
JIA键按下?
JIAN键按下?
‘秒’加1
图 31  关窗帘定时子程序流程图
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

LCD1602显示变化的时间的程序:(以下为显示‘秒’的程序片段,年月日时分的显示与‘秒’显示类似)
XS:     MOV     XXX,XMIAO//XXX为设定的寄存器,用于存放时分秒年月日
LCALL XHEX//XHEX为分离十进制BCD码十位和个位的子程序
MOV     P0,#0CAH
LCALL WR_CODE_1602//将控制命令写入LCD1602
MOVC  A,@A+DPTR
LCALL WR_DATA_1602//将数据写入DS1602
MOV     A,B//‘秒’位由两位组成
MOV    P0,#0CBH
LCALL WR_CODE_1602//将控制命令写入LCD1602
MOVC  A,@A+DPTR
LCALL WR_DATA_1602//将数据写入DS1602
判断定时时间是否到是先判断‘时’相同否,再判断‘分’相同否,最后判断‘秒’相同否,若均相同则转入电机转动模块,进行开关窗帘动作。以下为‘时’的判断程序片段,年月日时分的判定程序类似。
PDS:      MOV     DDD,SHI//DDD为设定的寄存器,用于存放时分秒
LCALL BHEX//BHEX为分离十六进制BCD码十位和个位的子程序
MOV     R7,B
MOV     B,#10
MUL     AB
ADD     A,R7//转化成能与定时时间相比较的进制数
CJNE    A,ZSHI,GGG//比较正常走时的‘时’与定时的‘时’是否相等

3.4光控模式和电机驱动模式

3.4.1光控模式程序设计

光控模式与时控和遥控模式相比程序设计较为简单,光控模式采用集成化的芯片进行设计,芯片引脚输出的数据已经数字化,主控单片机只需要对采集到的数据进行高低电平判定,若为高电平转入关窗帘子程序,若为低电平则转入开窗帘子程序。光控模式的开启需要‘光控’按键操作,主控制单片机P2.7引脚接入‘光控’按键。光控模式的退出由遥控信号操作,光控模式程序流程如图32。光控模式子程序片段如下:
MAIN:  JNB       P2.7,guangkong//若P2.7引脚为低电平,则光控模式被触发
guangkong:  JNB       P2.0,kzhuan//若采集的光信号为低电平,则转入开窗帘程序
JB          P2.0,gzhuan//若采集的光信号为高电平,则转入关窗帘程序
kzhuan:         SETB    P1.1//开窗帘程序
SETB    P1.2
CLR      P1.3
JNB       P3.2,MAIN//遥控信号发来返回主程序
LJMP    guangkong
gzhuan:         SETB    P1.1//关窗帘程序
CLR      P1.2
SETB    P1.3
JNB       P3.2,MAIN
LJMP    guangkong
 
P3.2=0?
开窗帘子程序
关窗帘子程序
P2.0=1?
P2.0=0?
进入光控程序
开始
主程序
P2.7=0?
图 32  光控模式程序流程图
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

3.4.2电机驱动模式程序设计

在多个控制模式下,本设计都需要电机的转动才能完成最终窗帘开关的功能,电机运转部分程序设计较为简单,但使电机能够运转也是本设计的一个不可或缺的部分,电机的运转是依靠L298N芯片的输出来驱动的。而L298N芯片的输入端由单片机P1.1、P1.2、P1.3引脚控制,所以其程序设计仅需对P1.1、P1.2、P1.3引脚进行操作即可,具体程序如下:
电机MOTO1正转:
Zzhuan:        STEB    P1.1//使能端高电平有效
SETB    P1.2//接L298N的IN1、IN4端口
CLR      P1.3//接L298N的IN2、IN3端口
电机MOTO1反转:
Fzhuan:        STEB    P1.1//使能端高电平有效
CLR      P1.2//接L298N的IN1、IN4端口
SETB    P1.3//接L298N的IN2、IN3端口

4总结

本文设计出了一种集红外遥控功能、时间自定义定时功能、光控功能、显示功能于一体的智能窗帘控制系统。系统可通过遥控器方便地控制窗帘的开闭;可设置利用光照强度控制窗帘的开闭;也可分别设定具体的开关窗帘时间,时间到窗帘自动完成开关动作,无需人为参与。同时还设置了时间显示功能,方便人们日常生活中对时间的计划与把握,各功能可单独操作,相互切换,满足了人们随心所欲控制窗帘的期望。本系统的设计应用了红外遥控技术、传感技术、显示技术、芯片传输技术以及单片机控制技术。系统功能多,操作简便、实用性强,但该系统的仍存在一定的问题。如电机的停转只能通过遥控信号或者复位按键来停止;进入光控模式后若要使用遥控模式还需要按动时控按键才能退出光控模式,即各模式之间还未达到完全独立;系统使用的是直流电机,而直流电机转速太快不适合带动窗帘运动,使用减速电机或者步进电机可以达到更好的效果;光照模式的lx设置范围不宽,需要调整更宽的范围。因此,本系统还在研究实验阶段,还有很大的提升空间。
通过本次毕业设计,我更加深刻地认识到学以致用的重要性。同时,通过此次毕业设计我重新温习了汇编语言的编程技术,掌握了Protues软件绘图与仿真,进一步巩固了对Keil软件的运用,了解到LCD1602、L298N、HS38B、DS1302等芯片的操作方法。这为我以后的学习和工作都奠定了良好的基础。

参考文献

[1] 李小魁,韩大伟.智能遥控窗帘系统设计与实现[J].河南财政税务高等专科学校学报,2013,27(4):92-94.
[2] 周敬.基于单片机的窗帘智能控制系统设计[J].天津科技,2010,37(2):58-60.DOI:10.3969/j.issn.1006-8945.2010.02.027.
[3] 孙勇,杨文月,赵宇新等.自动窗帘控制系统设计[J].微型机与应用,2010,(13):15-17.DOI:10.3969/j.issn.1674-7720.2010.13.006.
[4] 孙健.智能家居电动窗帘的设计与实现[J].机械工程与自动化,2012,(2):133-135.DOI:10.3969/j.issn.1672-6413.2012.02.053.
[5] 庄渊昭.实用智能窗帘机的设计[J].现代电子技术,2008,31(4):181-183.DOI:10.3969/j.issn.1004-373X.2008.04.063.
[6] 张敏敏,陈亮亮.实用智能家居窗帘的设计[J].科技视界,2012,(24):233-234,251.
[7]辛海亮,钟佩思,朱绍琦等.基于ZigBee的物联网智能家居控制系统[J].电子技术应用,2013,39(12):79-81,85.
[8] 朱佳鸽.基于物联网的智能家居系统的设计与实现[D].长安大学,2013.DOI:10.7666/d.D407359.
[9]陈致远,朱叶承,周卓泉等.一种基于STM32的智能家居控制系统[J].电子技术应用,2012,38(9):138-140.DOI:10.3969/j.issn.0258-7998.2012.09.040.
[10] 郭奇.智能家居控制平台的设计与实现[D].沈阳理工大学,2012.DOI:10.7666/d.y2150319.
[11]吴爱萍,黄振兴.基于AT89S52的智能窗帘群控系统[J].科技资讯,2007,(35):77-78.DOI:10.3969/j.issn.1672-3791.2007.35.064.
[12] 孙勤.基于单片机的光控窗帘设计[J].微型机与应用,2012,31(16):32-34,37.DOI:10.3969/j.issn.1674-7720.2012.16.012. 
[13] 刘丹,李钦晓,费心越等.家居环境感光窗帘智能控制与调节系统[J].仪器仪表用户,2014,(1):54-58.DOI:10.3969/j.issn.1671-1041.2014.01.018.
[14]谌容,胡泽,张扯拉等.基于单片机控制的智能光控窗帘系统研究[J].电子世界,2013,(9):21-22.
[15]马泽文,陈玥玮,徐力等.基于单片机的智能防雨帘控制系统[J].价值工程,2011,30(10):151-152.DOI:10.3969/j.issn.1006-4311.2011.10.113.
[16] 张准,牛宗超.智能遥控窗帘系统设计[J].电子世界 ,2013,(23):140-140,141.
[17]冯劲梅,王庆明.采用单片机的直流电机无线遥控系统[J].机电工程,2010,27(12):7-10,14.DOI:10.3969/j.issn.1001-4551.2010.12.002.
[18] 黄志刚,赵之赫.通用型1602LCD自定义字符的显示[J].电子世界 ,2013,(22):182-182.
[19] 雷红淼,程耀瑜.基于L298N的直流电机驱动电路优化设计[J].数字技术与应用,2012,(2):118-118,120.
[20] 王立红.基于单片机的直流电机控制系统设计[J].知识经济,2011,(8):102-103.
[21] 冯大捷.基于DS1302电子时钟的设计[J].科技视界,2012,(2):118-120.
[22]PENG Jun-jie,HE Hui,ZHU Ping-an.Zigbee-based new approach to smart home[J].Journa 1 of Shanghai University.2010,1
[23]YUAN Xiao-Chen,CHEANG Chak-Fong,LI Jian-Qing.Implementation of a Remote Control System for Smart Home[J].Information and communication technology.2007,1

致谢

本文是在XXX老师的指导下完成的,谨此向XXX老师致以最衷心地祝愿和感谢!大学四年来,XXX老师曾教授我单片机、微型计算机等课程。同时,XXX老师也是我的班主任,对我的生活和思想给与了许多指导。在此,请允许我再次向XXX老师致以深深的谢意!
同时,我还要感谢XXX专业所有辛勤工作的老师,是你们的付出,才使我较好的掌握了专业知识。
谢谢帮助过我的同学们,谢谢你们在学习和生活上给予的帮助。
最后,向于百忙之中抽出时间审阅此论文的专家、教授们表示感谢!