Microcomputer Applications Vo1.34,No.10,2018 文章编号:1007—757X(2018)10—0009—03 基金项目 微型电脑应用2018年第34卷第10期 基于STC12C5A60S2单片机智能窗帘控制系统的设计 郭占苗 (西安航空职业技术学院电子工程学院,西安710089) 摘要:智能窗帘控制系统的设计主要由STC12C5A60S2单片机小系统、DS18B20温度控制模块、PCF8591AD转换模块、 DS1302时钟模块、按键模块和LCD12864液晶显示模块构成。可通过按键设置开启与关闭窗帘时间,由步进电机正反转控制 实现窗帘的自动打开与闭合,由温度传感器和光敏电阻对室内环境进行自动检测,并控制电机做出相应动作,通过霍尔传感 器确定窗帘上限和下限位置,对室内窗帘进行自动控制,并在PCF8591AD转换模块预留有扩展端口,实现多功能控制。智能 窗帘系统具有性价比高、运行稳定、抗干扰性强、便于扩展等优点,具有较高实用价值。 关键词:智能窗帘;单片机;光照;温度;A/D转换器 中图分类号:TN99 文献标志码:A Design of Intelligent Curtain Control System Based on STC1 2C5A60S2 Single Chip Microcomputer GUO Zhanmiao (Institute of Electronic Engineering,Xi’an Aeronautical Polytechnic Institute,Xi’an 710089) Abstract:An intelligent curtain control system is designed based on STC12C5A60S2 single-chip microcomputer system,and mainly includes DS18B20 temperature control module,PCF8591AD conversion module,DS1302 clock module,key-press rood— ule and LCD1 2864 liquid crystal display module.In the system,the curtain time can be set by keyboard.By detecting the in— door temperature automatically the stepping motor could open and close the cuntain automatically in natural or converse rota— tion.By using the Hall sensors,the upper and lower limit positions can be determined.The indoor curtain could be multi—func— tionally and automatically controlled by extended port in PCF8591AD.The system has advantages of high performance-cost ra— tio,stable operation,strong anti—interference and easy exteusion,the intelligent curtain has high practical value. Key words:Intelligent curtains;Single chip microcomputer;Illumination;Temperature;A/D converter 0 引置 智能家居是在现代时尚家居的基础上,将组合智能、电 进行控制,由单片机输出控制电机的正反转,并将窗帘状态、 温度和光照度参数结果显示在LCD12864液晶上l_】],同时, 可通过按键模块调整时间,也可设定窗帘自动开关的时间, 时钟显示模块能够准确显示实时时间,在时钟模块安装纽扣 电池可实现掉电后数据不丢失功能。智能窗帘具体原理框 图,如图1所示。 子智能、机械智能和物联智能巧妙的融人家居产品当中,使 家居更加智能化、国际化、时尚化,是未来国际家居发展的潮 流和趋势。智能窗帘是智能家居的一个重要组成部分,设计 一款人性化、智能化、便捷化和多样化的智能窗帘不仅可以 改变人们的生活方式,还能提高生活质量。经过实践验证, 基于STC12C5A60S2单片机系统的智能窗帘可以很好地完 成窗帘的智能控制,较传统靠人为去拉开和关闭窗帘的方式 更方便,且不易损坏,具有广阔的应用前景。 1硬件设计原理框图 智能窗帘系统设计由达林顿管电路构成的ULN2003芯 片驱动步进电机28BYJ控制窗帘的开启和闭合状态,用霍尔 传感器控制窗帘开启和关闭的最大位移。利用光敏电阻采 图1智能窗帘系统框图 2软件设计程序 2.1主函数设计 集外界光的强度,利用温度传感器采集环境温度,结合I2C 协议和1-wire总线编程,经PCF8591AD转换器输入单片机 main函数里主要调用“BS18B20.h”温度采集头文件函 基金项目:全国住房和城乡建设职业教育教学指导委员会科研课题( ̄zw2016072) 作者简介:郭占苗(1981一),女,内蒙古集宁人,讲师,硕士,研究方向:电子实训的教学与研究。 · 9 。 Microcomputer Applications Vo1.34,No.10,2018 基金项目 微型电脑应用2018年第34卷第10期 数、“LCD12864.h”液晶显示、“DS1302.h”时钟函数和 入初始小时数据,根据实际时间分别写入初始“时分秒”的数 据,最后再调用BCD码转换十进制函数,BCD码转化十进制 gned char bed)” 子函数由“unsigned char BCDDecimal(unsi“PCF8591.h”模数转换函数,在液晶第一行显示“智能窗帘 控制系统”,第二行上显示出“窗帘状态”是“打开”或者“关 闭”,第三行显示当前时间,第四行显示温度和光照度。液晶 时间显示主要代码如下: void sfmBCD码转十进制函数实现,主要语句有{unsigned char Deci— mal;Decimal—bcd>>4;return(Decimal Decimal*10+ show()//时间显示行 (bed&一0x0F));),实现第一次开启时将写入设置的初始 时间显示在LCD12864上的功能。 注意,为了使断电再开机后时间不初始化成程序设置的 { convert(); templ—time0/10 10; temp2一time0 10; 初始时间,所以在DS1302初始化程序使进行写保护,并用了 备用电池。 temp3一time1/10 10; temp4一timel 10; 2.4 PCF8591AD转换和I2C协议 PCF8591具有4个模拟输入、1个模拟输出和1个串行 I2C总线接口。其中PCF8591的第4引脚AIN3,即模拟输 temp5一time2/10 10; temp6一time2 10; lcdpos(3,1); ~writecom(0x06); ~入接口3连接光敏电阻,可采集环境光强精确数值。在 PCF8591器件上输入输出的地址、控制和数据信号都是通过 双线双向I2C总线以串行的方式进行传输 ]。I2C模块化 write data(ASII[temp1]); writedata(ASlI ̄temp2]); data(AsII[temp3]); data(ASII[temp4J); chinese(s);//显示汉字“时” write头文件函数程序主要包括I2C起始信号程序,即在SCL高电 平期间,SDA产生一个由高到低的下降沿;数据传输函数, I2C协议的数据传输是按照高位在前低位在后的顺序传输; writechinese(f);//显示汉字“分” 以及停止信号,即SCL在高电平期间,SDA由低电平向高电 平变化产生一个上升沿。PCF8591将光敏电阻值读出来转 换成数字量,将光照度显示在液晶上,转换代码函数主要调 用“i2c—start();”I2C初始化、“i2csendbyte(0x91);”寻址 write data(ASIIEtemp5]); write~data(ASII[temp6 ̄); chinese(m);//显示汉字“秒”) 将“时分秒”的个位和十位分别取出来从液晶的第三行 第一列开始一次显示,并利用chinese()汉字转化函数,显示 PCF8591和“temp—i2c—receivebyte();”读取转换数值函 数,最后通过语句“return temp;”返回要显示的温度值。 出相应汉字 ],其它状态显示函数与此类同,不再赘述。通 过编写按键函数,实现时间调整、光照度的阈值设定和窗帘 开关的定时。 2.5步进电机与霍尔传感器模块 因为电机功耗比较大,所以用驱动芯片为电机提供较大 电流,步进电机的A、B、C、D四相通过驱动ULN2003分别与 2.2 DS18B20温度采集函数 通过DS18B20可以实时采集室内温度,并将结果显示 在液晶上。该温度采集模块主要包括DS18B20初始化、写 字节操作、读字节和温度采集等子函数。DS18B20的读写字 单片机的P1 0、Pl 1、P1 2和P1 3依次相连,并采用双四拍 模式工作。当窗帘闭合时,步进电机的AB、BC、CD、DA相 依次导通,达到霍尔传感器控制下限位移时电机停转;当窗 帘开启时,步进电机的DA、CD、BC、AB相依次导通,达到霍 节和初始化程序按照器件手册1一wire工作协议时序编写即 可,初始化程序检测卜wire总线是否存在DS18B20器件,读 写时序要注意采样时间[3]。温度采集程序设计主要包括 DS18B20的初始化,启动温度转换和读取寄存器的程序设 计,读取时先读取低字节再读取高字节,最后返回温度值,主 要用语句“temp—high ̄turn temp;”实现该功能。 4;temp j一(1owi> ̄4); re— 尔传感器控制上限位移时,电机停转。可见,通过控制电机 正反转动来控制窗帘开启与闭合状态,并由霍尔传感器限定 窗帘位移的极限 ]。主要在“void TOtime()interrupt 1”定 时器TO中断函数里实现该功能。 2.6液晶显示模块 窗帘状态和相关参数用LCD12864液晶显示,液晶显示 模块主要包括写指令、写数据和初始化子函数。以时间显示 为例,时间显示在液晶的第三行第一列,主要包括写指令和 2.3 DS1302时钟模块 DS1302时钟模块主要实现实时显示当前时间和定时窗 帘开启与关闭时间的功能,按照DS1302时序编写字节读函 数,字节写函数,“unsigned char read一1302(unsigned char add)”地址读函数,即将寄存器地址的数据读出来,以及地址 写函数等。DS1302的6脚双向通信引脚I/O接单片机的P0 —写数据代码,读写指令时,发送数据分高四位、第四位两次发 送,通过语句“send—byte(0xf0&eom);”(高四位)、“send—byte (0xf0 corn<<4);”(第四位)实现。 编程实现第一行汉字显示从0X80地址开始,第二行从 0X90,第三行从0X88,第四行从0X98地址开始,声明时依次 定义汉字位置地址,当显示汉字不再变化时,定义时加关键 字“code”,存储在flash里。液晶的5脚读/写位接单片机P2 1,7脚通信时钟信号引脚scLK接单片机P0 2,5脚使能引 脚CE接P0 0,在写时钟程序时先进行声明l4]。时钟模块芯 片初始化函数,主要根据DS1302的时钟寄存器功能表编写, 向DS1302内写秒寄存器8OH写入初始秒数据,向写分寄存 器82H写入初始分数据,向DS1302内写小时寄存器84H写 · 0引脚,3脚在模块上接电位器调整背光,6脚E使能引脚接 P2 1引脚,因为采用串口方式编写程序 ],所以15脚PSB 接地,19脚背光源正端接智能窗帘系统电源VCC,20脚背光 1O · Microcomputer Applications Vo1.34.No.10,2018 源负端接地GND。 基金项目 微型电脑应用2018年第34卷第10期 3 电路实物制作与调试 PCF8591的14脚接智能窗帘系统5V电源,电路扩展 时.可以给PCF8591的AIN0,AIN1,AIN2分别接入湿度传 感器、烟雾传感器和气敏传感器等传感器,输入的模拟量通 过PCF8951AD采集转换送给单片机,设定阈值.超过阈值 时,窗帘“开启”或“闭合”.设计思路与光敏电阻采集光照度 l翻4 智能窗帘实物制作 类似[8一,A/D转换电路图,如图2所示。 系统电源采用手机充电器数据线接入USB端口供电,同 时在电路板背面装配电池盒,以备在不插电时南电池供电保 证智能窗帘的正常运行;Ds1302时钟芯片的2脚和3脚接 32.768KHz的晶振,给DS1302提供一个时间基准; PCF8591AD模块通过跳线帽给电路扩展预留了端口;4个按 键开关从左到右依次是菜单键、菜单功能键、减一键和加一 键,菜单键里可以选择“窗帘打开时问”、“窗帘关闭时间”、“光 线设定”、“窗帘状态”和“时间调整”.然后按菜单功能键.结合 加减键.选择调时间阈值和光照度的阈值,采集到的值和阈值 进行比较一 ,达到条件时,由电机带动窗帘进行动作并在液晶 上显示状态,由于液晶采自带字库。所以编程时直接将要显示 的汉字直接赋给数组的地址即可显示相应的汉字和字符。 4 总结 图2 PCF8591A/D转换模块电路图 步进电机控制窗帘原理图如图3所示。 基于STC1 2C5A60S2单片机的智能窗帘系统设计,通过 电机正反转来控制窗帘的升降,霍尔传感器控制窗帘的行 程.可以手动设置光照度阈值和定时时间。利用PCF8591AD 转换器采集模拟量送给单片机自动控制窗帘的开启和闭合 模式 ”。该系统可移植性强、易于扩展、实施方便.具有较 高的商业推广和实际应用价值。 参考文献 金鑫.基于单片机的智能窗帘控制系统设计 [1] 邓嘉卿.J-j].科技创新导报,2o15(IO):103一lo8. [2] 邵海龙.梁嵇晖.智能窗帘控制系统[J].微型机与应 用.201 7(2):56-58. [3] 张立雄,刘红.基于MSP43O的智能窗帘控制系统设 计[J].科技经济导刊,2016(7):14. [4] 杨雅涵,于佐军.基于单片机的温控光控智能窗帘设 计[J].控制工程,2106(10):1542—1545. [5] 孙健.智能家居电动窗帘的设计与实现[J].机械工程 与自动化.2O12(4):l33—13j. [6] 潘峰,马占飞.光敏声控智能防盗型电动窗帘的设计与 罔3 步进电机控制窗帘原理图 实现[J].阴山学刊(自然科学版),2015(12):38—40. 步进电机的四相“ABCD”分别于单片机的“P1 0、Pl‘1、 [7] 李伯婧.浅析智能家居窗帘系统的设计与分析[J].科 技展望,201 7(3):1 38. P1‘2和P1’3”端口依次相连,通过电机的转反转编程实现窗 帘的开启与闭合.上限位霍尔传感器和下限位霍尔传感器分 别与单片机的“P0‘5”和“PO 4”相连接。编程实现当窗帘打开 [8] 林晶,王强.基于组态软件的智能家居监控系统研究 [J].吉林建筑大学学报,2015(12):56—58. [9] 黄泉源,李媛媛.基于单片机的智能窗帘设计[J].信 息通信.2Ol5(8):71—72. 时,设置霍尔传感器上限开关阈值,电机正转窗帘开启;当窗 帘闭合时,设置下限开关阈值,电机反转窗帘关闭;除开启和 闭合以外,则电机停转维持原状态不变,多次用“if…else”语 [1o] 何康旭,张婧婧.基于单片机的智能窗帘控制系统的 设计与实现l-J].现代计算机,2012(24):75—78. (收稿日期:2017.11.15) 句来编写判断电机转动程序。 实物制作如图4所示。