基于STC12的家居智能信息仪设计与实现

任工昌+张戈



摘 要: 为了实现家居环境信息的可视化,设计一款智能家居信息仪。该系统基于STC12芯片集成了时钟显示、温湿度检测、有害气体浓度检测与报警、防盗报警、噪音检测等功能。该系统设计分为硬件设计和软件设计,硬件部分介绍各部分硬件选型及总电路的设计,软件部分采用C语言编程实现各个模块程序的设计及整个系统的程序设计。结果表明,该系统功能全面,具有经济性、实用性等优点。
关键词: 智能家居; 单片机控制; 液晶显示; 防盗报警; 噪音检测
中图分类号: TN911?34; TN99 文献标识码: A 文章编号: 1004?373X(2017)08?0069?04
Design and realization of intelligent home information instrument based on STC12
REN Gongchang, ZHANG Ge
(School of Mechatronics Engineering, Shaanxi University of Science and Technology, Xian 710021, China)
Abstract: In order to achieve the visualization of home environment information, a smart home information instrument was designed. The functions of clock display, temperature?humidity detection, harmful gas concentration detection and alarm, burglar alarm and noise detection are integrated in the system based on STC12 chip. The design of system is divided into two parts of hardware and software. The selection of some hardwares and overall circuit design are introduced in the hardware section. C language programming is adopted in the software section to realize program design of each module and program design of the whole system. The result shows that the function of the system is comprehensive, and has the advantages of economy and practicability.
Keywords: intelligent home; SCM control; liquid crystal display; burglar alarm; noise detection
0 引 言
智能家居依托信息技術的发展已经成功地在智能化市场占有一席之地。智能家居是以家居环境为平台,融合了建筑科学、通信技术、网络信息、计算机技术、自动控制等多领域技术知识而产生的高科技居住环境。智能家居功能强大、服务全面、管理高效,相对于传统家居,给居住者提供更安全、更舒适、更便利及更环保的家居环境[1]。本文通过STC12C5A60S2芯片控制,设计开发并实现了一套智能家居信息仪。本系统以STC12C5A60S2芯片为核心,其具有显示时钟、温湿度等信息,检测有害气体、防盗报警以及噪音检测等多样实用的功能,可实现人们对居住环境信息的直观监测,相对于精度更高、智能化水平更好的智能家居设备,本仪器具有经济性,实用性等特点。
1 系统总体设计思路
智能家居信息仪的主控制器是整个系统处理的核心模块。本系统基于STC12主控芯片将各个功能划分成模块进行设计,并根据需要的功能分为如下模块:单片机模块、时钟模块、温湿度检测模块、有害气体浓度检测与报警模块、防盗报警模块、噪音检测模块、显示模块、报警模块、按键模块。系统总体模块框图如图1所示。
2 系统硬件设计
智能家居信息仪主要涉及到的硬件包括STC12C5A60S2芯片、LCD12864B液晶显示、DS1302芯片、DHT11传感器、MQ?7气体传感器、热释电红外线(PIR)传感器等。
2.1 单片机模块
主控制芯片选择STC12C5A60S2是因为其足够的内存(60 KB),自身带有8路高速10位A/D转换,可以满足系统的要求。但问题在于它的运行速度变快了很多,相对于传统8051其平均加快了8~12倍,每条指令提升的速度不一致,从最快的24倍到最慢的3倍。因此系统中对时间要求比较高的功能模块芯片需要精确测量每个延时函数在STC12C5A60S2上的执行时间,才能实现每个模块的功能[2]。STC12C5A60S2系列单片机引脚如图2所示。
2.2 液晶显示模块
本系统最终显示的内容较多且有汉字,因此选择可显示汉字及图形的LCD12864液晶显示模块。LCD12864是128×64点阵的汉字图形型液晶显示模块,支持串行和并行通信,本系统选择8位并行通信方式[3]。根据LCD12864显示原理设计的显示界面如图3所示。
2.3 时钟模块
本系统在外电路连接DS1302时钟芯片,从而实现对年、月、周、日、时、分、秒的计数。该芯片精确度高,价格便宜,采用双电源供电,可以接上外部电源自动计时,当系统停止供电时,备用电源供电继续计时。该芯片接线简便、功能强大,完全符合本系统的要求,因此采用DS1302时钟芯片[4]。DS1302芯片的引脚图如图4所示。
2.4 温湿度模块
温湿度检测若分别采用温度传感器和湿度传感器测量,精度会更高,稳定性也会更好,但考虑到家居环境并不需要非常精确的检测结果,决定选用DHT11数字温湿度传感器。它由一款感湿元件(电阻式)和一个NTC测温元件组成,集成了温湿度传感器的功能,并连接性能很高的8位单片机。因此质量优良,响应速度快,并且具有很强的抗干扰能力[5],其测量范围为湿度20%~90% RH,温度0~50 ℃;测量精度为湿度±5% RH,温度±2 ℃,满足家居环境的检测需求。DHT11引脚名称与功能如表1所示。
表1 DHT11引脚名称与功能
2.5 有害气体检测模块
本设计选择家居环境中常见的CO作为有害气体的代表,实时检测空气中的CO浓度,当空气中CO浓度大于阈值16 PPM时,系统启动蜂鸣器警告用户。MQ?7传感器检测CO的灵敏度高、稳定性强、成本低,而且可检测多种含CO的气体,可满足家居环境中CO的检测要求[6]。MQ?7传感器的引脚功能如表2所示。
表2 MQ?7传感器的引脚功能
2.6 热释红外防盗报警模块
图5是热释红外探测单元结构图。其包括透镜聚焦系统、红外感知器件和检测处理信号等部分。大致流程为:人体自发辐射的红外线通过菲涅尔透镜聚焦到热释电红外探测单元;人体的红外信号由热释电红外传感器转换成电信号并传输给检测处理信号部分进行处理;最终将处理的结果送到微控制器,启动报警功能。
2.7 噪音检测模块
声压可以由MIC 检测,声压的大小由MIC 输出电平的大小表示。MIC输出的电平进行放大,ADC 采样和量化后,就是波形数据[7]。噪音检测电路如图6所示。噪音声波经MIC检测并转换为电压信号后,由运算放大器NE5532将电压信号放大。其放大原理为:12 V直流电源与可变的R13结合改变NE5532的增益,使交流信号经过线性放大后变化范围为-6~6 V。由D11,R17组成的半波整流电路将放大后的信号检出0~6 V的直流脉冲信号,再通过C14将高次谐波滤除,形成相对平滑的直流波动电平。由C14和R17组成的RC大约只有0.1 s的时间常数,因此噪音信号的直流平均电压可以快速反映,保证实时地检测出噪声。同时,ADC0809的0~5 V的A/D转换范围将被0~6 V的直流电压覆盖,电平的转换需求得到满足[8]。
2.8 蜂鸣器报警模块
蜂鸣器驱动方式为I/O口定时翻转电平,所以需要交变的信号来驱动蜂鸣器。本系统的报警信号产生方式为:选取P3.6口输出167 Hz和500 Hz的音频信号驱动蜂鸣器。报警信号产生的具体方法为:周期为2 ms的500 Hz音频信号,每间隔1 ms变反1次作为信号电平;周期为6 ms的167 Hz音频信号,每间隔3 ms变反1次作为信号电平。三极管将两个频率不同的信号放大后,经过蜂鸣器LS,即可产生频率不同的报警声。由于本系统需要报警的模块有有害气体检测报警和防盗报警两个模块,所以通过设置不同的报警声来区别不同模块的报警。有害气体检测的报警声是响2 s停0.5 s,防盗报警的报警声是蜂鸣器一直在响。
2.9 按键模块
本系统的时钟显示模块在开始时需要通过按键设置初始值,因此需要3个按键,其功能及定义为:按键1为时间调整,按键2,3分别为加和减。由于本系统所需按键数量较少,考虑到编写程序的简单,采用3个独立式按键。由于是用I/O口线直接构成的单个按键电路,独立式按键形成了自己的特点:一个按键对应一根I/O口线,各个按键运行时互不影响,独立工作。独立式按键的优点是软件编程简单,硬件电路可灵活配置,不足之处在于按键需求较多时,由于每个按键占用一根I/O口线,所以需要同等数量的I/O口线,在资源较少时不宜采用。
3 系统软件设计
智能家居信息仪系统的软件程序设计是基于STC12C5A60S2单片机,采用C语言编程,程序编写及软件调试用Keil。在软件设计中,结合硬件原理图来设计各个模块的程序流程图并实现各个模块的功能,最后将编写好的各个模块的程序按照整体思路整合在一起就基本形成了本系统设计所需求的软件系统,再通过联机调试、修改完成系统的软件设计。如图7所示为主程序流程图。
3.1 系统软件调试
3.1.1 Keil软件介绍
Keil C51是一款软件开发系统,其为51系列并兼容单片机C语言,由美国Keil Software公司出品。C语言和汇编语言相比,功能更强大、结构更简单、可读性更强而且便于维护,对于使用者而言学习更简单、应用更方便。若开发者用过汇编语言之后再用C语言编程,会有更加深刻地体会。Keil C51软件为全Windows界面,其库函数内容丰富,集成开发调试工具的功能也非常强大。在开发大型软件时高级语言的优势就得到了充分的展现,关键在于Keil C51可以非常高效地生成的目标代码,多数语句编译后生成的汇编代码结构紧凑,便于理解[9]。
3.1.2 程序在Keil环境下的调试
新建工程,选择主控芯片,STC12C5A60S2可以当成Intel的8052/87C52/87C54/87C58,或者Philips的P87C52/P87C54/P87C58。然后设置晶振及生成HEX文件,编写程序,保存为c文件,再添加到项目并进行软件编译。
3.1.3 利用Keil软件测延时
在按照时序图编写程序的时候,一些对程序执行时间要求较高的器件,它的每一步执行时间必须在时序图的要求内,这时靠软件来延时的程序就得知道它们具体的运行时间,Keil软件在运行程序的时候可以看到每条程序执行所需的时间。第一次运行sec为0.000 424 26 s,第二次运行sec为0.001 430 12 s,其相差大概在1 ms。这个Delay程序就是1 ms的延时程序。通过修改Delay中的参数就可以改变延时时间,达到器件的时序图要求。
3.1.4 STC程序在线下载
通过STC官方程序下载软件对程序进行在线下载,首先进行芯片选择,然后选择HEX文件,连接串口选择,最终实现在线下载。
3.2 系統显示结果
经过硬件选型设计及软件程序设计,调试后结果如图8所示,该系统显示屏可以显示时间、温湿度和噪音信息;当空气中CO浓度超标则会有报警系统提示;当主人离开家时设置系统防盗报警模式,若有外人进入家中系统就会启动报警装置。
4 结 语
本文在STC12C5A60S2芯片控制的基础上,设计并实现了一套智能家居信息仪。本系统以微控系统为核心,其具有显示时钟、温湿度等信息,检测有害气体、防盗报警以及噪音检测等多样实用的功能,适合安放于居室、教室、办公室、宿舍等不同场合,是办公、居家等地点的安全与生活小助手。
参考文献
[1] 张玲.一种基于STM32的智能家居系统设计[J].电子技术,2014(11):51?54.
[2] 宋凤娟,付侃,薛雅丽.STC12C5A60S2单片机高速A/D转换方法[J].煤矿机械,2010(6):219?221.
[3] 刘磊.基于STM32的电子万年历系统设计[J].科技资讯,2015(1):20.
[4] 任志敏.基于DS1302和LCD1602的万年历系统设计[J].电脑开发与应用,2015(3):28?30.
[5] 李长有,王文华.基于DHT11温湿度测控系统设计[J].机床与液压,2013(13):107?108.
[6] 陈军统,潘再平,杨舒捷.基于9S12XS128单片机煤气报警器设计[J].制造业自动化,2012(6):132?135.
[7] 尹晓琦.基于GPRS和虚拟仪器的环境噪声监测系统[J].湖南科技大学学报(自然科学版),2014(1):102?105.
[8] 瞿少成,艾宁,徐海洋,等.基于噪音检测的自适应音量控制系统的研制[J].电子测量技术,2009(4):94?96.
[9] 吴挺运,林成何.Keil C51精确延时程序设计[J].电子科技,2012(12):103.