摘要 随着生活水平的提高,人们对自我财产的保护意识逐渐增强,同时伴随着现代科技逐步走进人们的生活,智能家居应运而生。报警系统作为智能家居的一部分备受人们重视,而市场上的报警系统的设计虽日渐成熟,但依然有缺陷。本设计独辟蹊径,运用加速度传感器作为主要感知层,这样不用限制门窗的材质,使报警系统更加完善。 本设计针对现有的GSM无线网络,介绍了基于GSM的远程家庭智能报警系统的设计及实现方法。利用各种传感器,如温湿度传感器、加速度传感器等对家中可能出现的各种意外情况进行采集,并通过组建的家中内部无线网络及时向单片机进行中断报警。GSM模块在单片机控制下,利用GSM网络,将各种报警信息通过短信的方式发送到预先设定的手机中,达到了远程无线智能报警的功能。同时,本文在对加速度信号的处理上,采用新的方法,即使用加速度平均值,并设定参考点的思路和方法,有效避免了漏报、误报现象的产生,是系统更加稳定。经过测试,该系统经济、可靠、稳定性高。家庭无需为传感器布线,具有广泛的市场推广价值。
目录 1 引言 1.1 国内外现状 1.2 设计目的与意义 1.3 系统结构流程图 2 硬件设计 2.1 传感器的选型 2.1.1 MMA7455I加速度传感器 2.1.2 DHT11温度传感器 2.2 PT2262/2272无线收发模块 2.3 AT89S52单片机模块 2.3.1 AT89S52单片机概述 2.3.2 AT89S52单片机的典型功能 2.4 GSM模块 3 软件设计 3.1系统软件设计的总体思路 3.1.1主函数软件设计流程图 3.1.2 基于C语言的程序调试 3.2 系统各功能模块的软件设计 3.2.1 温度传感器DHT11的软件设计 3.2.2 加速度传感器MMA7455的软件设计 3.2.3 IIC通讯协议 3.2.4 液晶显示的软件设计 3.2.5 GSM模块中的AT指令 4 系统调试 4.1液晶显示 4.2 GSM的调试 4.3加速度传感器的调试 4.4 DHT11温湿度传感器 5 总结与展望 5.1总结 5.2展望 参考文献 致谢 附录一 原理图 附录二 程序
1 引言1.1 国内外现状
在目前国内现代化居住格局日益封闭的情况下,财产安全问题显得尤为重要。当前安全防范及报警系统是确保住宅、财产安全的重要的途径之一,同时也是数字化家庭的重要组成部分。当遇到盗窃、失火、煤气泄漏等紧急情况时,及时通过通信系统完成报警以及提示就显得尤为必要。 目前的、家居报警系统领域多用到开关振动、超声波、红外探测、门磁开关等类型的传感器,其在应用过程中暴露出诸多的缺点:首先,传感器价格昂贵,体积庞大,难以集成。比如超声波传感器,体积大,市场价在8 元左右,操作复杂,易受干扰;其次,误报现象比较严重,困扰人们的生活,比如我们家里面电车或者汽车上常用的震动型传感器,在人不小心碰到时就会发出刺耳的警笛声,虽然起到了一定的报警作用,但是给人的生活带来很大困扰,并且当人距离报警声音传播范围之外时,亦无法知道车辆的安全状况。另外,市场上并没有一种专业的报警系统,能让人随时随地的知道家庭公司等安全状况,并能够显示警情位置,警情级别等。 同时大多数的报警系统采用红外传感器和门磁开关配合使用,而门磁开关主要由开关和磁铁两部分组成,开关部分由磁簧开关经引线连接。定型封装而成;磁铁部分由对应的磁场强度的磁铁封装于塑胶或合金壳体内。当两者分开或接近至一定距离后,引起开关的开断从而感应物体。因而门磁开关只适合非铁质的门或窗,但现代家居设计中,大部分使用的都是铁质合金,门磁开关的应用范围大大地受限。 1.2 设计目的与意义 基于单片机的智能家居防盗系统着重于对家中涉及安全的因素进行监控和报警,用到的传感器有加速度传感器、温度传感器、烟雾传感器;控制期间使用AT89S51单片机;并且采用无线网络GSM节点,采用直接发送短信或拨打电话的方式直接向户主报警。使得报警更加快捷方便,同时不用布线,避免了维修的复杂性。 同时本设计介绍了一种由嵌入式报警主机、无线发射装置,手机终端,无线传感器网络节点构成的智能报警系统。 首先本系统采用新型的加速度传感器,能够将门窗的震动和移动两种状态区别开来,当门窗产生震动而没有发生位移时,通过程序计算没有达到位移门限就判断为没有异常情况发生。当门窗发生移动时,说明家中可能已经被盗处以较危险的情况,此时告知户主,拉响警笛,这样就解决了传统报警系统给人们生活带来的干扰。 同时我们将温度传感器布防在厨房、客厅的等地方,通过无线通信技术形成一个传感器网络,与家庭嵌入式主机系统通信。当某个传感器被触发时,就会向主机发送信号,主机通过接收到的信号判断警情地址,警情级别做出相应的判断后,通过GSM模块儿发送相应的信息,信息被手机捕获经软件分析后,发出语音告知机主。 1.3 系统结构流程图本设计主要由三大部分组成,分别为:感知网络、控制主机、客户终端。该框图详细的说明了该设计的工作流程,我们的产品分为两部分,有家庭传感器节点组成的感知网络,传感器信号经MCU分析后由2262配置一个唯一的地址,将信号发给家庭主机,经分析后经GSM模块向手机发射出相应的语音报警信息,告知机主。 图1-1 系统结构流程图
2 硬件设计 本系统的硬件主要是由传感器网路、PT2262/2267无线收发模块、MCU控制器、GSM模块组成。下图是总体硬件结构: 图2-1 系统硬件结构 传感器部分主要是采集家中安全信息,如温度、门窗的移动情况,而本设计最有特色的部分也在于传感器的选择,采用新型的加速度传感器,使防盗模块更完善;AT2262/2272是用于无线连接传感器与单片机的部分,此部分避免了防盗系统大量的布线工作;单片机主要是对采集信息的处理、判断并做出相应的处理过程,是整个系统的大脑;GSM模块主要是用于联系用户,现代在手机十分普及的背景下,采用GSM模块进行短息或语音通话直接通知户主家庭安全情况,会非常快捷,使得家中安全情况得到及时处理。下面对各部分硬件进行详细说明。 2.1 传感器的选型2.1.1 MMA7455I加速度传感器2.1.1.1MMA7455工作原理及引脚功能 本设计使用的是飞思卡尔公司的MMA7455I,飞思卡尔公司有稳定的人员队伍。该公司在全球30个国家拥有24000 多名研发和设计人员,人员结构知识化,年轻化,有稳定的教师和辅助人员队伍。其中,天津飞思卡尔公司拥有 40 多名研发和设计人员,90%以上拥有研究生学历。 该公司在全球30个国家拥有多家公司。飞思卡尔全球有9个全资生产工厂,一个合营生产设施,还有与第三方生产商建立的诸多合作关系等。飞思卡尔根据轻资产(asset-light)战略,有选择地将内部生产能力集中在处于领先地位的细分化或专业加工工艺上,由第三方工厂提供标准工艺技术,作为内部资源的补充。1992 年,飞思卡尔公司开始在天津开展业务,包括在天津的封装和测试运行部门,北京、苏州和天津3个研发中心,北京、上海和深圳3个销售办事处。天津工厂成立于 1992 年,是飞思卡尔拥有的两个大型芯片测试和封装工厂之一。该工厂占地 400,000 平方英尺,从 2001 年开始投入生产。工厂每周生产超过 900 万个微控制器、混合信号和射频设备。该公司可提供生产实习、设计的实习设备和场地。 飞思卡尔公司有坚实的科研和技术生产活动。该公司的客户包括摩托罗拉的个人通讯事业部,以及一些其它消费和汽车电子厂商。2006年,飞思卡尔在下列领域居于市场领先地位:汽车(全球汽车半导体产品市场份额位居第一)、网络(全球网络通信处理器市场份额第一;全球用于蜂窝基站的射频功率产品市场份额位居第一)、工业控制器、消费电子产品(微控制器和嵌入式处理器市场份额位居第二)和无线产品(无线通信应用专用标准产品市场份额位居第四;蜂窝手机数字基带半导体产品全球市场份额位居第四)。公司为客户提供广泛多样的辅助设备,连接各种产品、网络和真实世界的信号(如声音、振动和压力等)。产品包括传感器、射频半导体、功率管理及其它模拟和混和信号集成电路。飞思卡尔全球现有1万个终端客户,其中包括由公司自己的销售队伍服务的100多家知名的原始设备生产商,以及通过数千个代理商网络服务的其他终端客户。2004年,摩托罗拉半导体部成为飞思卡尔半导体。例如,开发出了许多关键产品类别,包括通信处理器、微控制器、固态加速度传感器、蜂窝式半导体和模块等。摩托罗拉半导体部一直引领加工工艺技术的发展,从率先使用200毫米硅片、铜连线技术、绝缘体上的硅芯片(SOI)到硅锗碳,为客户带来了性能更高、性能更低的产品。因此选用飞思卡尔公司的传感器是十分可靠的选择。 MMA7455是一款数字输出(I2C/SPI)、低功耗、紧凑型电容式微机械加速度计,具有信号调理、低通滤波器、温度补偿、自测、可配置通过中断引脚(INT1或INT2)检测0g,以及脉冲检测(用于快速运动检测)等功能。0g 偏置和灵敏度是出厂配置,无需外部器件。客户可使用指定的0g 寄存器和g-Select 量程选择对0g 偏置进行校准, 量程可通过命令选择 3 个加速度范围(2g/4g/8g)。MMA745xL 系列具备待机模式,使它成为以电池为电源的手持式电子器件的理想选择。MMA7455 数字三轴加速度传感器模块核心为飞思卡尔公司的MMA7455L数字三轴加速度传感器,该模块设计使用官方推荐设计,板卡线路经过高电磁兼容设计和优化,具有输出精确,体积小,工作可靠,各种标识清晰,扩展性好等特点。MMA7455L 芯片安装在带DIP 插脚的印刷电路板(PCB)上,它允许客户将其集成到特定的设计应用对产品进行评估。这样客户就能够在他们自己硬件和软件环境内灵活地评估器件。 MMA7455I是三轴小量程加速传感器是检测物件运动和方向的传感器,它根据物件运动和方向改变输出信号的电压值。后面的图片示出了它们的关系。各轴的信号在不运动或不被重力作用的状态下(0g),其输出为1.65V。如果沿着某一个方向活动,或者受到重力作用,输出电压就会根据其运动方向以及设定的传感器灵敏度而改变其输出电压。用单片机的IIC/SPI接口方式读取数值,就可以检测其运动和方向。 图2-2 MMA7455实物图 各引脚功能: Pin:输入电压,同时可以接到单片机AD参考电压端; Pin2:(可选)5V电源; Pin3、GND:电源地; Pin456、NC:悬空管脚; Pin7、CS:SPI片选管脚,低电平有效; Pin8、INT1:中断1/数据准备就绪; Pin9、INT2:中断2; Pin10、MISO:SPI管脚MISO; Pin11、MOSI:SPI管脚MOSI; Pin12、CLK:SPI管脚CLK;
图2-3 MMA7455的外围电路
2.1.1.2用加速度传感器测量位移的原理与误差分析 MMA7455I是一种差容式伺服加速度传感器,它采用先进的集成电路表面加工技术,将敏感元件和信号调理电路集成在单片集成电路上,组成一个完整的加速度测量系统.安装时使加速度传感器的敏感方向与门窗运动的方向平行,由于重力加速度g 的作用,当加速度传感器不运动时,其输出为1g,即传感器的零点偏置不是0,此时加速度输出值现对于参考点的位置有正有负。 设a(t),v(t),d(t)和T分别是门或窗运动的加速度、速度、位移和采样的总周期,g(t)为重力加速度。当门或窗运动时,水平方向的加速度传感器的输出为: A(t)=a(t)(2-1) 此时g(t)的变化是很小的,可看做是常数。作零点校正一般采用测量前先存储零点值,计算时将测量值减去零点值的方法。这里根据门窗运动的特点,提出一种简单方便的方法,用这种方法可以实现加速度传感器的动态零点校正。 由于加速度传感器的输出采用了零点校正,因而只需考虑门窗运动的加速度积分得门窗运动的速度。
(2-2) 若将看成下始点的初始速度,则于是同样,位移可以通过对速度积分得到
(2-3) 那么门窗的相对位移用加速度传感器测量位移的算法可简要表述为: 将一个周期的加速度的测量值减去其平均值,令边界条件为零,对修正后的加速度积分得到速度,将所求速度减去其平均值,令边界条件为零,对修正后的速度积分即得到相对位移。 2.1.2 DHT11温度传感器本设计使用的是温湿度传感器DHT11,DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC 测温元件,线性温度传感器是线性化输出负温度系数(简称NTC)热敏元件,它实际上是一种线性温度-电压转换元件,就是说通以工作电流(100ua)条件下,元件电压值随温度呈线性变化,实现了非电量到电量线性转换。并与一个高性能8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
图2-4 DHT11实物图 每个DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20 米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。 综上所述,DHT11可以测量相对湿度和温度,可以全部校准,并且直接转换成数字信号输出,此模块具有卓越的长期稳定性,无需额外添加部件,可以实现超长的信号传输距离,超低能耗,是四脚安装的,可以完全实现互换。 DHT11的应用范围有暖通空调设备、汽车领域、消费品、气象站、湿度调节器、测试及检测设备、数据记录器、自动控制、家电领域、医疗器械等等。在本设计中,DHT11主要是用来监测室内温度状况,当家中有火灾发生时,居室中温度升高,当温度超过一定的温度阀值时,温度信号被传感器采集到发送给单片机,单片机经过处理、判断,执行报警,有效地避免灾情进一步发生。 表2-1 DHT11的性能说明 使用DHT11时需要注意避免结露情况下使用。长期保存条件是在10-40℃,同时湿度需在60%。超出建议的工作范围可能导致高达3%RH的临时性漂移信号。返回正常工作条后,传感器会缓慢地向校准状态恢复,要加速恢复进程。在非正常工作条件下长时间使用会加速产品的老化过程。 表2-2 DHT11各管脚功能 气体的相对湿度,在很大程度上依赖于温度。因此在测量湿度时,应尽可能保证湿度传感器在同一温度下工作。如果与释放热量的电子元件共用一个印刷线路板,在安装时应尽可能将DHT11远离电子元件,并安装在热源下方,同时保持外壳的良好通风。为降低热传导,DHT11与印刷电路板其它部分的铜镀层应尽可能最小,并在两者之间留出一道缝隙。长时间暴露在太阳光下或强烈的紫外线辐射中会使性能降低。DATA信号线材质量会影响通讯距离和通讯质量,推荐使用高质量屏蔽线。手动焊接,在最高260℃的温度条件下接触时间须少于10秒。
图2-5 DHT11应用电路 此电路即为本设计中DHT11的应用电路。当传输距离小于20米时使用5K的上拉电阻,当传输距离大于20米时上拉电阻做相应的改变。 DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零。操作流程如下: 一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
图2-6 通讯过程 总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号。主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。 用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集。采集数据后转换到低速模式。
图2-7 开始传送数据 总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一位数据都以50us低电平时隙开始,高电平的长短定数据位是0还是1。格式见下面图示,如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常。当最后一位数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高,进入空闲状态。
图2-8 数字0信号表示方法
图2-9 数字1信号表示方法 测量分辨率分别为 8bit(温度)、8bit(湿度)。上面各图说明了DHT11在工作时的时序图,也有助于之后编程时调用延时的时间。 2.2 PT2262/2272无线收发模块 由于本设计成本和本人的能力有限,在本设计的实际硬件中没有用到此模块,但这一模块在原始设计的理念中是不可或缺的一部分,因为这一部分可以有效避免不必要的布线问题,同时也便于传输出现故障时进行有效快捷的维修。因此,在此文中对这一模块进行详细地说明是十分必要的,同时也可提高我的知识面。 PT2262/2272是台湾普城公司生产的一种CMOS工 艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。 编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作。当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。 图2-10 PT2262 无线发射模块 2262无线发射模块电路图,该电路由A0……A5可以配置该芯片地址,当2272的设置的地址与其相标配时,才能接收到信号。控制D0……D7的高低电平配置可以发相应的数据,比如我们可以经D0口经过模拟电路与单片机相连,此时若P1^0口为高电平此时2262工作,并将D0高电平的信号发射出,经2272解码后将信息翻译处理来。发射电路有DOUT口经驱动电路经红外发射头发出。
图2-11 PT2272无线接收模块 U12为一体化红外接收头,接收到信号后,经2272解码,将信息经D0……D3口输出,我们通过电路设置使不同的传感器电路,触发2262不同的数据I/O口,这样单片机通过采集2272的数据接口就可以知道报警传感器的位置,从而坐车相应的处理。 图2-12 PT2272 无线接收模块 设置地址码的原则是:同一个系统地址码必须一致;不同的系统可以依靠不同的地址码加以区分。 PT2262/2272芯片的地址码的设定:在通常使用中,一般采用8位地址码和4位数据码,这时编码电路PT2262和解码PT2272的第1~8脚为地址设定脚,有三种状态可供选择:悬空、接正电源、接地三种状态,3的8次方为6561,所以地址编码不重复度为6561组,只有发射端PT2262和接收端PT2272的地址编码完全相同,才能配对使用,例如将发射机的PT2262的第2脚接地第3脚接正电源,其它引脚悬空,那么接收机的PT2272只要第2脚接地第3脚接正电源,其它引脚悬空就能实现配对接收。当两者地址编码完全一致时,接收机对应的D1~D4端输出约4V互锁高电平控制信号,同时VT端也输出解码有效高电平信号。用户可将这些信号加一级三极管放大,便可驱动继电器等负载进行遥控操纵。 2.3 AT89S52单片机模块2.3.1 AT89S52单片机概述单片机是把组成微型计算机的各个功能部件,如中央处理器、随机存储器、只读存储器、I/O接口电路、定时器/计数器以及串行通信接口电路等集成在一块芯片上,构成 一个完整的微型计算机。通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。而嵌入式计算机系统的技术要求则是对象的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可靠性。比较普通计算机和嵌入式计算机的差异,说明这是由于它们应用场合和应用环境的不同而造成的,而单片机则属于低端嵌入式计算机。 单片机的硬件简单,字长一般为8位,也有16位的,存储空间最小。集成的片内外设比较丰富。由于硬件的局限性,导致软件上就不能太大,采集速度低。难以完成复杂的实时运算。单循环式,一般没有操作系统。 单片机具有小巧灵活、成本低、易于产品化。它能方便地组装成各种智能式控制设备以及各种智能仪表。面向控制,能针对性地解决从简单到复杂的各类控制任务,从而获得最佳性价比。抗干扰能力强,适应温度范围宽,在各种恶劣条件下都能可靠地工作,这是其它机型所无法比拟的。可以很方便地实现多机和分布式控制,使整个系统的效率和可靠性大为提高。 单片机的应用场合也非常广泛,小巧灵活、成本低、易于产品化。它能方便地组装成各种智能式控制设备以及各种智能仪表。面向控制,能针对性地解决从简单到复杂的各类控制任务,从而获得最佳性价比。抗干扰能力强,适应温度范围宽,在各种恶劣条件下都能可靠地工作,这是其它机型所无法比拟的。可以很方便地实现多机和分布式控制,使整个系统的效率和可靠性大为提高。机电一体化产品是集机械技术、微电子技术、自动化技术和计算机技术于一体,具有智能化特征的各种机电产品。单片机在机电一体化产品的开发中可以发挥巨大的作用。典型产品如机器人、数控机床、自动包装机、点钞机、医疗设备、打印机、传真机、复印机等。家用电器是单片机的又一重要应用领域,前景十分广阔。如空调器、电冰箱、洗衣机、电饭煲、高档洗浴设备、高档玩具等。另外,在交通领域中,汽车、火车、飞机、航天器等均有单片机的广泛应用。如汽车自动驾驶系统、航天测控系统、黑匣子还有分式系统的前端模块等等。 ATMEL公司生产的具有Flash ROM的增强型51系列单片机目前在市场上仍然十分流行,其中AT89S系列十分活跃。AVR单片机是ATMEL在90年代推出的精简指令集RISC的单片机,跟PIC类似。使用哈佛结构。是增强型RISC内载Flash的单片机。AVR的单片机广泛应用于计算机外部设备,工业实时控制,仪器仪表,通讯设备,家用电器,宇航设备等各个领域。 近年来单片机的发展非常快,纵观单片机的现状及历史,其发展趋势正朝着大容量、 高性能化、小容量低价格化、外围电路内装化、多品种化及增强I/O接口功能、降低功 耗等方面发展。为满足不同的用户要求,各公司竞相推出能满足不同需要的产品。 在CPU的功能上更加完善和强大,比如采用双CPU结构,提高处理能力,增加数据总线的宽度,使处理数据的能力明显优于一般的8位单片机,同时采用流水线结构和RISC体系结构。在存储器方面加大存储容量,实行程序保密化。现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,可实现的功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。 MCS-51系列的8031推出时的功耗达630MW,而现在的单片机普遍都在100MW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。 本设计中使用的是AT89S52单片机。AT89S52为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 AT89S52主要功能列举如下:拥有灵巧的8位CPU和在系统可编程Flash晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)、内部程序存储器(ROM)为8KB、内部数据存储器(RAM)为256字节、32个可编程I/O口线、8个中断向量源、三个16位定时器/计数器、三级加密程序存储器、全双工UART串行通道。 AT89S52单片机的特性是与MCS-51 兼容、拥有4K字节可编程闪烁存储器,它的寿命一般为1000写/擦循环、数据保留时间为10年、全静态工作时工作频率是0Hz-24Hz、拥有三级程序存储器锁定和128*8位内部RAM、32可编程I/O线、两个16位定时器/计数器、5个中断源 、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。
图2-13 AT89S52单片机 2.3.1.1AT89S52单片机管脚说明 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。 表2-3 P3口特殊功能口
:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
:外部程序存储器的选通信号。在由外部程序存储器取指令期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源。
:反向振荡放大器的输入及内部时钟工作电路的输入。
:来自反向振荡器的输出。
2.3.1.2 AT89S52单片机的振荡器特性和芯片擦除: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 2.3.2 AT89S52单片机的典型功能2.3.2.1 中断系统 中断系统是计算机中的一项很重要的技术。中断系统的主要功能是为了解决快速CPU与慢速的外设之间的矛盾,它是由硬件和软件组成的。有了中断系统,能使计算机的功能更强、效率更高、使用更加灵活方便。下面简单介绍中断系统的组成、处理过程及其应用。 52单片机总共有6个中断源。外部中断有/INT0、/INT1,其中中断请求是由P3.3、P3.3引脚输入的,可选择低电平有效或沿下降沿有效。内部中断源有T0、T1、T2溢出中断和串行口中断源。不同的中断源有不同的中断矢量,当某个中断源的中断请求被响应后,CPU将通过硬件自动地把相应的中断源的中断入口地址装入PC中,即从此地址开始执行中断服务程序。因此,使用时一般在此地址单元中存放一条跳转指令,当CPU响应中断是,使单片机自动执行相应的入口地址的跳转指令,然后再通过该跳转指令至用户安排的中断服务程序的入口处。 表2-4 中断入口地址 中断处理过程分为三个阶段,即中断响应、中断处理、中断返回。下图为中断响应过程中硬件自动完成的流程图,如果中断响应条件满足,而且不存在中断受阻,CPU将响应中断呢。在此情况下,CPU首先使被响应中断的“优先级激活”触发器置位,以阻断同级和低级的中断。
图2-14 中断响应过程 然后,根据中断源的类别,在硬件的控制下内部自动形成长调用指令,此指令的作用是:首先自动将断点压入堆栈,但不自动保存PSW的内容,然后将对应的中断源的入口地址装入程序计数器。 CPU中断响应结束后即转到中断服务程序的入口地址,从执行中断服务程序的第一条指令开始到执行RETI返回指令为止,这个过程成为中断处理或中断服务。
2.3.3.2单片机串行口 串口通信是计算机与外界交换信息的一种基本通信方式。52单片机中的串行接口是一个全双工通信接口,即能同时进行数据的发送和接收。它可作伪通用异步接收和发送器使用,也可以用作同步移位寄存器,其帧格式和波特率均可通过软件编程设置,在使用上非常方便灵活。 串行通信的基本特征是数据逐位顺序进行传送串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。 单片机接收数据的过程是:当CPU允许接收(即SCON的REN位置“1”)且接收中断标志RI复位时,就启动一次接收过程。接收数据时,外界数据通过引脚P3.0(RXD)串行输入,数据的最低位首先进入输入移位寄存器,一帧数据接收完毕再并行送入到缓冲器SBUF中,同时将接收中断标志RI置“1”。当用软件将输入的数据读走并将RI复位后,才能再开始下一帧数据的传送。 发送数据的过程为:当发送中断标志位TI复位后,CPU执行任何一条写SBUF指令,就启动一次发送过程。CPU在执行写SBUF指令的同时启动发送控制器开始发送数据,被发送的数据由TXD引脚串行输出,首先输出最低位,当一帧数据发送完即发送缓冲器空时,CPU自动将发送中断标志TI置1,当软件将TI复位时,同时又将下一个数据写入数据缓冲器后,CPU再次重复上述过程直到数据发送完成。 2.4 GSM模块 本设计使用的是西门子公司生产的TC35i。TC35i是Siemens公司推出的无线通信GSM模块,可以快速安全可靠的实现数、语音传输、短消息服务(SMS)和传真。模块工作电压为3.3—5.5V,可以工作在900MHz和1800MHz两个频段,所在频段功耗分别为2W(900MHz)和1W(1800MHz)。模块有AT命令集接口,支持文本和PDU模式的短消息、第三组的二类传真、以及2.4K、4.8K、9.6K的非透明模式。此外,该模块还具有电话簿功能、多方通话、漫游检测功能,常用的工作模式由省电模式、IDLE、TALK等模式。通过独特的40引脚的ZIF连接器,可分别连接SIM卡支架和天线。TC35i模块主要由GSM基带处理器、GSM射频模块、供电模块、闪存、ZIF连接器、天线接口留部分组成。作为TC35i的核心,基带处理器主要处理GSM终端内的语音、数据信号,并涵盖了蜂窝射频设备中的所有的模块和数字功能。在不需要额外硬件电路的前提下,可支持FR、HR、EFR语音信道编码。 目前,国内已经开始使用的GSM模块有很多,而且这些模块的功能、用法差别不大。本设计采用西门子TC35 系列的TC35i,这种无线模块功能上与TC35 兼容,设计紧凑,大大缩小了用户产品的体积。TC35i 与GSM2/2 兼容、双频(GSM900/GSM1800)、RS232 数据接口,该模块及射频电路和基带与一体,向用户提供标准的AT 命令接口,为数据、语音、短消息和传真提供快速、可靠、安全的传输,方便用户的应用开发及设计。 TC35i 模块主要由GSM基于处理器、GSM射频模块、供电模块、闪存、ZIF 连接器、天线接口六部分组成。通过ZIF 连接器与单片机实现电路接口,该接口读取或发送TC35i 模块中的数据,将是本文论述的重点,也是TC35i 应用的核心。 单片机与TC35i 的软件接口其实就是单片机通过AT 指令控制手机的控制技术,首先设置TC35i 模块的工作模式:AT+CMGF=n,n=0 为PDU模式;n=1 为文本模式;通常设置为PDU 模式,在这种模式下,能传送或接受透明数据(用户自定义数据)。AT+CMGR=n 为读TC35i 模块短消息数据,n 为短消息号。AT+CMGL=n为列出TC35i 模块内的短消息,n=0 是未读的短消息,n=1 位已读的短消息,n=2 位未发送的短消息,n=3为已发送的短消息n=4 为所有短消息。AT+CMGD=n 为删除TC35i 模块的短消息,n 为短消息编号。 软件编程通过向TC35i 写入不同的AT 指令能完成多种功能,如网络登陆、读取SIM卡上电话号码、发送SMS 消息、接收SMS 消息等。常用的AT指令我们将在软件设计中详细说明。 3 软件设计3.1系统软件设计的总体思路3.1.1主函数软件设计流程图
整个系统主要的分为两个状态:主人在家状态、主人不在家状态。当主人在家时,报警系统仅对温度传感器和烟雾传感器进行监视;当按下主人不在家的按键时,系统就进入到主人不在家状态,对家中的门窗、温度、烟雾等作一系列的监控,一旦有意外发生能及时通知户主采取急救措施,有效避免灾情进一步发生。 程序是由主程序、开机初始化模块、主人在家状态模块、延时和定时器模块、无人在家状态模块、传感器检测模块、串口初始化和GSM通信模块组成。 (1)主程序。单片机上电后即执行主程序。主程序调用开机初始化模块,之后确定用主人是否在家模块,确定要工作的状态。 (2)开机初始化模块。该模块控制所有模块的指示灯点亮以确定所有模块都正常工作,同时对单片机内部特殊寄存器进行赋值,设置完毕后进入主人在家状态,只有当系统复位后此模块才会再次被调用。 (3)主人在家状态模块。该模块调用对输入的定时扫描,在家中温度或烟雾浓度出现异常情况是报警,同时可在按键控制下转入到无人在家模块。该模块桶用探测器检测模块、延时和定时器模块相结合防止探测器的误触发,提高系统可靠性。 (4)延时和定时器模块。该模块包含软件延时子函数及设置并启动定时器的子函数以达到对键盘的定时扫描。 (5)无人在家状态模块。该模块调用传感器检测模块、延时和定时模块对外部输入 进行检测,在传感器被触发的情况下发出警报并进入发送短信模块。 (6)传感器检测模块。采用定时扫描的方式进行实时检测防止报警被误触发,想主人在家状态模块和无人在家状态模块返回各输入口状态。 (7)传感器检测模块。传感器主要是由MMA7455i加速度传感器、温度传感器和烟雾传感器组成,对家中情况进行监控,并做简单的信号处理。 (8)串口初始化和通信模块。该模块对在进入发送短信状态时对串口进行初始化,负责与串口数据的收发,并在发送短信完毕时对特殊寄存器和全局变量进行设置。防止由于某些传感器一直处在触发状态而引起的短信重复发送。 (9)GSM发送短信模块。该模块通过调用串口初始化和通信模块与GSM模块发送AT指令控制其发送短信。
图3-1 系统程序结构 3.1.2 基于C语言的程序调试C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。 C是高级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。 C也是一种结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。同时C语言适用范围大,适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,明显优于其它高级语言,有一些大型应用软件也是用C语言编写的。 指针是C语言的一大特色,可以说是C语言优于其它高级语言的一个重要原因。就是因为它有指针,可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。 而汇编语言是面向机器的程序设计语言。在汇编语合中,用助记符代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统。汇编程序把汇编语言翻译成机器语言的过程称为汇编。 大多数情况下Linux程序员不需要使用汇编语言,因为即便是硬件驱动这样的底层程序在Linux操作系统中也可以完全用C语言来实现,再加上GCC这一优秀的编译器目前已经能够对最终生成的代码进行很好的优化,的确有足够的理由让我们可以暂时将汇编语言抛在一边了。但实际情况是Linux程序员有时还是需要使用汇编,或者不得不使用汇编,理由很简单:精简、高效和lib无关性。假设要移植Linux到某一特定的嵌入式硬件环境下,首先必然面临如何减少系统大小、提高执行效率等问题,此时或许只有汇编语言能帮上忙了。汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。 综上所述,本设计使用的是C语言进行程序的编写。AT89S52的C语言编程和C51系列的相同,因此以下用51系列来说明。 由于8051系列是8 位机,因而不存在字节校准问题。这意味着数据结构成员是顺序放置的。数据类型的转换:当计算结果隐含着另外一种数据类型时,数据类型可以自动进行转换,例如,将一个位变量赋给L:一个整型变量时,位型值自动转换为整型值,有符号变量的符号也能自动进行处理。这些转换也可以用C 语言的标准指令进行人工转换。编译器支持下列数据类型: 表3-1数据类型 51系列包括多种寄存器,其中一些具有特殊功能,如定时器,端口的控制寄存器等,为了能够直接访问这些寄存器,C51 编译器提供了一种定义的自主形式,这是必要的,因为这些定义与标准C 语言是不兼容的。为了支持这些特殊功能寄存器(SFR)的声明,引入了关键词“sfr”。 必须注意的是“sfr”后不是一个地址而是一个名字。因此上例中名字P0 和P1(port0和port1)定义为特殊功能寄存器并被赋予相应的绝对地址,名字可按意愿自由选取,源文件中不应有先定义的sfr 名字。“=”号后的地址必须是常数,不允许带有运算符的表达式,这个常数表达式必须在特殊功能寄存器的地址范围内,位于0X80 到0XFF 之间。 8051 系列寄存器数量和类型是极其不同的,因此将所有特别的“sfr”声明放入一个头文件,头文件包括8051 一些系列成员中的SFR 定义。进一步的定义可由用户由文件编辑器产生。 在新的8051 系列产品中,SFR 在功能上经常组合为16 位的,为了有效的访问这类SFR,使用定义“sfr16”,当“SFR”的高端直接位于低端后时,对SFR16 位的访问是可能的。例如8052 的定时器2 就是这种情况,16 位声明的语法与“sfr”相同,SFR 低地址部分必须作为sfr16 的地址。 T2(由T2L 和T2H 组成)和RCAP2(由RCAP2L 和RCAP2H 组成)被定义为16位SFR,即使在这种情况下,声明中的名字后仍不是赋值语句,而是一个SFR 地址,高字节必须直接位于低字节之后,这种声明适用于所有新的SFR,但不能用于Timer0 和Timer1。
3.1.2.1中断服务程序 C51 编译器及其对C 语言的扩充允许编程者对中断的所有方面进行控制。这种支持能使系统编程者创建高效的中断服务程序,用户只需在普通和高级方式下关心中断及必要的寄存器组切换操作,C51 编译器将产生最合适的代码。 使用中断服务函数的完整语法如下: 返回值 函数名([参数])[模式][再入] interrupt n[using n]。“interrupt”后接一个0~31 的常数,不允许使用表达式。中断不允许用于外部函数,它对函数目标代码的影响如下: 1. 当使用函数时,SFR 中的ACC、B、DPH、DPL 和PSW(当需要时)入栈; 2. 如不使用寄存器组切换,甚至中断函数所需的所有工作寄存器(Rn)都入栈; 3. 函数退出前,所有的寄存器内容出栈; 4. 函数由8051 控制命令“RETI”终止; 中断控制部分是由4个专用寄存器组成的,分别为TCON、SCON、IE和IP。五个中断源的中断请求标志位及定时器/计数器的控制位,均设置在定时控制寄存器TCON和串口控制寄存器SCON中。 其中TCON用于控制定时器/计算器的启、停和外部中断源的触发方式以及存放定时器的溢出中断标志和外部中断源的中断请求标志。其地址为88H,各位的定义为: 表3-2 TCON各位的定义 TF1和TF0:分别为定时器1和定时器0的溢出标志。当定时器加1计满产生溢出时,由硬件自动置“1”,并申请中断。进入中断服务程序后,由硬件自动清“0”。这两位也可作为程序查询的标志位,在查询方式下应由软件来清“0”。 TR1和TR0:分别为定时器1和定时器0的启停控制位。当由软件将TRi清0后,可停止定时器的工作,将该位置“1”后,可启动定时器工作。 IE1和IE0:分别为外部中断1和外部中断0的触发方式选择位。当外部中断源有请求时,相应的中断标志位由硬件置“1”。 IT1和IT0:分别为外部中断1和外部中断0的触发方式选择位。IT1设置为“0”时,相应的外部中断为低电平触发方式,设置为“1”时,相应的外部中断为边沿触发方式。 同时在单片机中,设有一个专用寄存器IE(称中断允许寄存器),其作用是控制各中断源的开放或屏蔽。各个位的定义如下: 表3-3 IE各位的定义 EA为CPU中断允许控制位。EA=1,CPU开放中断,EA=0,CPU禁止响应一切中断。当EA=1时,仅使CPU对所有中断开放,但每个中断源被允许还是被屏蔽由各自的允许位确定。 ES为串行口中断允许位。ES=1,允许串行口接收和发送中断;ES=0,禁止串行口中断。 ET1为定时器1的中断允许控制位。ET1=1允许T1中断,否则禁止中断。 EX1为外部中断1的中断允许控制位。EX1=1,允许外部中断1中断,否则禁止中断。 ET0为定时器0的中断允许控制位。ET0=1,允许定时器T0中断,否则禁止中断。 EX0为定时器0的中断允许控制位。ET2为定时器2中断允许控制位,仅用于52子系列单片机。 在本设计中,使用的是内部中断。单片机对采集到的加速度传感器和温度传感器的数据进行分析判断,当符合报警条件时再申请中断,执行中断服务程序。 在中断响应过程中需要利用软件实现以下中断服务:
图3-2 中断服务程序 3.1.2.2 串口通信的软件设置 51系列的串行口主要是由两个数据缓冲器SBUF、一个输入移位寄存器、一个串行控制寄存器SCON和一个波特率发生器T1等组成。特殊功能寄存器SCON用来存放串行口的控制和状态信息。定时器/计数器T1作串行口的波特率发生器,其波特率是否增倍由特殊功能寄存器PCON的最高位控制。 在本设计中串口通讯是工作在方式2下的,方式1为11位异步通讯方式,即一个起始位、8个有效数据和一个停止位,还有一个附加位,波特率可以改变(由定时器 T1的溢出率决定,并可由SMOD加倍)。发送操作在T1=0时,发送电路自动在8位发送数据前后分别添加一位起始位和停止位,并在移位脉冲作用下由TXD引脚依次发送一帧数据,发送完后自动维持TXD引脚为高电平.TI也由硬件在发送停止位时自动置“1”,需要由软件将其请“0”。第9位数字是SCON中的T8,这位数据可由用户安排,在这里我设定为奇偶校验位。 3.2 系统各功能模块的软件设计3.2.1 温度传感器DHT11的软件设计 在本设计中MMA7455主要是实现对家中门窗的动态运动进行监控,进而作为防盗报警的依据。DHT11采用的是单线双向串行通讯,当收到单片机读信号后,DHT11发送响应信号,并送出40bit的数据,并触发一次信号采集,在本设计中只读取其中的温度信息数据,如果DHT11没有收到单片机发送开始信号,DHT11不会主动进行温度采集。具体的软件设计流程图如下:
图3-3 DHT11软件设计流程图 3.2.2 加速度传感器MMA7455的软件设计 MMA7455加速度传感器主要是采集门窗的运动状况,测出其运动的加速度,单片机再进一步得出门窗运动的位移,进而可判定是否有窃贼进入到家中。当单片机调用加速度信息子模块时,首先发出读加速度信号,7455进行初始化并把自身的地址和单片机发出的地址相比较,如果符合即反馈应答信号,单片机分别发出X、Y、Z轴地址采集不同轴上的加速度信息,7455按相应的地址发送信息,单片机收到信息后进行校验,并返回加速度数据的返回值,退出调用。
图3-4 7455子函数流程图 3.2.3 IIC通讯协议在现代电子系统中,有为数众多的IC需要进行相互之间以及与外界的通信。为了提供硬件的效率和简化电路的设计,PHILIPS开发了一种用于内部IC控制的简单的双向两线串行总线IIC。IIC总线支持任何一种IC制造工艺,并且 PHILIPS和其他厂商提供了种类非常丰富的IIC兼容芯片。作为一个专利的控制总线,IIC已经成为世界性的工业标准。 每个器件都有一个唯一的地址,而且可以是单接收的器件(例如:LCD驱动器)或者可以接收也可以发送的器件(例如:存储器)。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。IIC是一个多主 总线,即它可以由多个连接的器件控制。 基本的IIC总线规范于20年前发布,其数据传输速率最高为100Kbits/s,采用7位寻址。但是由于数据传输速率和应用功能的迅速增加,IIC总线也增强为快速模式(400Kbits/s)和10位寻址以满足更高速度和更大寻址空间的需求。 IIC总线始终和先进技术保持同步,但仍然保持其向下兼容性。并且最近还增加了高速模式,其速度可达3.4Mbits/s。它使得IIC总线能够支持现有以及将来的高速串行传输应用,例如EEPROM和Flash存储器。 在IIC总线传输过程中,将两种特定的情况定义为开始和停止条件(见图3):当SCL保持“高”时,SDA由“高”变为“低”为开始条件;当SCL保持“高”且SDA由“低”变为“高”时为停止条件。开始和停止条件均由主控制器产生。使用硬件接口可以很容易地检测到开始和停止条件,没有这种接口的微机必须以每时钟周期至少两次对SDA取样,以检测这种变化。 SDA线上的数据在时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。输出到SDA线上的每个字节必须是8位,每次传输的字节不受限制,但每个字节必须要有一个应答ACK。如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线SCL为低,以促使发送器进入等待状态;当接收器准备好接受数据的其它字节并释放时钟SCL后,数据传输继续进行。 数据传送具有应答是必须的。与应答对应的时钟脉冲由主控制器产生,发送器在应答期间必须下拉SDA线。当寻址的被控器件不能应答时,数据保持为高并使主控器产生停止条件而终止传输。在传输的过程中,在用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,从而使被控发送器释放数据线,以允许主控器产生停止条件。 IIC总线在开始条件后的首字节决定哪个被控器将被主控器选择,例外的是“通用访问”地址,它可以在所有期间寻址。当主控器输出一地址时,系统中的每一器件都将开始条件后的前7位地址和自己的地址进行比较。如果相同,该器件即认为自己被主控器寻址,而作为被控接收器或被控发送器则取决于R/W位。 3.2.4 液晶显示的软件设计 本设计中采用液晶显示,使数据更加直观。液晶显示屏选用1602,它主要用于显示加速度传感器采集到的X、Y、Z轴的加速度值以及温度传感器DHT11采集到的室内温度值,以便更清晰直观地感受到报警系统的工作状态。其软件的主要思路如下图所示:
图3-5 液晶屏的软件设计 3.2.5 GSM模块中的AT指令单片机与TC35 i的软件接口通过AT指令完成,控制手机的短消息有关的AT指令有: A.单片机与TC35i模块由串口建立连接:AT; B.设置TC35i模块工作模式:AT + CMGF = n, n = 0: PDU模式; n = 1:文本模式,通常要设置为PDU模式,在这种模式下,能传送或接受透明数据(用户自定义数据); C.读TC35i模块短消息数据:AT + CMGR = n, n为短消息号(十进制); D.列出TC35i模块内的短消息:AT =CMGL = n, n = 0:未读的短消息;n = 1:已读的短消息;n = 2:未发送的短消息;n= 3:已发送的短消息;n = 4:所有的短消息; E.删除TC35i模块短消息:AT + CMGD = n,n为短消息号(十进制) 。 根据设置不同,GSM模块将收到的短消息保存在缓存单元或存入SIM卡,单片机从GSM模块中接收短消息实质上就是从SIM或缓存中读出信息。这主要利用AT + CMGR和AT +CMGL两条指令来完成。由于不同的厂商对AT指令集的解释代码和响应信息不一样,所以单片机首先要确认能否与GSM模块建立起通信,一般用ATE指令完成此确认;然后用AT + CMGF指令选定短消息的数据格式;在收到GSM模块的正确回答后以AT指令完成读出功能。一般用AT +CMGL读取以前的信息,在收到手机的R ING(振铃)数据时,用AT +CMGR读取实时信息。 AT 指令的指令符号、常数、PDU 数据等都是以ASCII 编码形式传送;传送透明数据必须把TC35i 模块的工作模式设置为PDU模式;单片机向TC35i 模块发送每一条指令后,必须以回车符作为该条指令的结束,例如单片机向手机发送“AT+CMGF=0”这条指令,其ASCII编码序列为“41H、54H、2BH、42H、4DH、47H、46H、3DH、30H、0DH”,最后一个字节0DH 就是回车符,表示该条指令结束,如果没有这个回车符,手机将不识别这条指令。当TC35i 模块接收到一条完整的AT 指令后,TC35i 模块并不立即执行该条指令,而是先把刚才接收到的AT 指令的ASCII 编码序列全部反发送出来(含0DH);其次发送一个回车符和一个换行符的ASCII 编码,即0DH 和0AH;然后执行该指令。
图3-6 短消息收发流程 单片机读取TC35i模块的PDU 数据时,原始数据应该是16进制数,但读回的数据仍然是ASCII表示的16进制数。这样一个字节的16进制数就变成了2 个字节的ASMII 码。但是PDU 数据包中的数据字节长度部分仍然是实际字符长度。而不是变成ASCII 码的字节长度,这在编程时应特别注意,否则,接收的数据就不完整。单片机接收到PDU 数据包数据后,必须将其恢复成16 进制数据,其算法如下:设a 为接收的ASCII码,b为转换后的16进制数。那么如果a<39H,则b=a-30H;如果a=39H,则b=a-30h-07H。最后把前后两个数合并为一个字节。TC35i 模块向单片机应答PDU数据包的字节数时不包括前9个字节数据,但向单片机传送PDU 数据包时,包括这9个字节的数据。例如,如果TC35i模块应答的PDU 数据长度为50,而实际向单片机传送的16 进制数据为59 字节,ASCII码为2×59字节,所以单片机必须按2×59个字节接收PDU 数据。 常用的AT指令如下表: 表3-4 常用AT指令 AT指令在本设计中的应用可详细参看附录中的程序部分。
4 系统调试本设计由以下几部分组成:单片机最小系统、加速度传感器、温湿度传感器、GSM及其控制板、供电电源、显示等六部分组成。由于本设计采用的都是数字传感器,通讯方式是串行通信模式,故本系统的调试过程基本上是程序的调试。 4.1液晶显示首先进行调试的是显示程序,只有有了显示,才能观察到读取的各个传感器的数据,才能直观的判定其他部分工作是否正常。 显示部分采用的是1602液晶显示,1602液晶是字符型的显示屏,只能显示字母和符号。显示屏上需要显示温度值、湿度值、加速度传感器的三轴加速度值。加速度单位为g。在1602液晶的子程序的开始,定义了一系列的数组用于显示的调用。当传感器没有插好,或者忘记供电时,液晶屏的第一行将会显示“No acceleration!”以提示出现故障,当正常工作时液晶的第一行将显示温度值,湿度值以及加速度的X轴的数据,第二行将会显示Y轴和Z轴的加速度值。显示的加速度值是在程序中经过处理转化的。在读取X轴的数据后,需要将数据按照数据手册上的值进行转换,并将每一位转化成字符型的值放到数组中,通过1602液晶的控制字送到屏幕上显示。显示效果如下图所示: 图4-1 液晶显示调试结果 有了显示部分,就好像有了一只眼,这样就能在程序中设置标识,通过显示屏来判断程序运行是否正常,就能够直观的判断调试结果,给调试过程带来了很大的方便。 4.2 GSM的调试GSM和单片机最小系统是整个系统的神经中枢和大脑,动作的执行和处理都过这两部分来组成,因此是调试中的重中之重。 对于单片机最小系统来说,首先是正常工作,单片机使用的AT89S52单片机,在焊接过程中,由于EA引脚没有接高电平,在用流水灯测试单片机最小系统时对IO口单独赋值时电平输出有效,当让流水灯循环流动时,却没有达到预期的效果。由于当EA为高电平时,单片机先访问内部程序存储器,当寻址范围超出内部程序存储器的最大寻址空间时,就自动跳向外部程序存储器。因此才会出现上出现的情况。此外就是P0口的输出问题,当作为传输数据口时是不用接上拉电阻的,当作为驱动时就这排上拉电阻就会非常重要。 调试好最小系统后就要与GSM模块进行联调了。在这里利用的是GSM发短信和打电话的功能,对GSM模块的控制是通过单片机和GSM进行串口通信,通过串口通信发送AT指令给GSM,GSM进会按照相应的指令进行工作。在这个过程中,程序的编写都需要参考GSM数据手册中的AT指令表,这样编写出的程序才能按照预期进行工作。 图4-2 GSM与单片机相连接 在单片机与GSM进行联调的过程,遇到了两个经常犯的错误,一个是串口通信的端口连接,另一个就是晶振的选取。在串口通讯时必须将单片机的TXD和RXD端子和对应GSM的RXD和TXD相连,而且要共地。否则数据不能正常传输,也达不到预期的效果。晶振的选取是以通信的波特率为准进行参数设置的。GSM与单片机通讯的波特率是9600,因此需要选择11.0592MHz的晶振,不能选择12MHz的晶振。这是因为标准的51单片机晶振是1.2M~12M,由于一个机器周期是12个时钟周期,所以使用12M的晶振时,一个机器周期是1us,在进行定时时容易计算,而且速度相对是最高的。之所以使用11.0592M的晶振是因为在进行通信时,12M的频率进行串行通信不容易实现标准的波特率,比如9600,4800等。而11.0952MHZ的晶振在计算时钟、串口通信的波特率等运算中能够得到一个整数,计算的结构更加的精确和方便。12M的容易出现累积误差,因此在这里需要使用11.0592MHz的晶振才能保证精确的波特率,才能保证在传输数据的过程中不发生错误。 4.3加速度传感器的调试加速度传感器采用的是MMA7455I,是一款数字传感器,具有三个自由度,通过对CS端子进行赋值可以选择通信方式即SPI和IIC两种通信方式,当CS为高电平时采用的是IIC通讯方式,低电平时为SPI通讯方式。IIC通信为串行通信,可通过一个时钟线和数据线读取加速度传感器内的数据。 MMA7455I加速度传感器的测量范围为
0-
2g/4g/8g,可通过mode control register来设置工作模式(g为重力加速度),这里选择量程为4g。通过IIC协议来读取加速度的值。每个轴上的加速度值的长度都是一个字节(8bit),由于满量程为4g,因此MMA7455I的分辨率为
,也就是满63为1g的加速度。按照这个方法送到显示屏上显示,显示单位为g,可以精确到小数点后两位。读取加速度后就可以进行位移的计算了。在程序调试时设置当加速度大于
时,开始采集加速度数据,并打开定时器开始计时,并在循环采集程序中设置采集次数标志位,当加速度小于的时候,退出循环采集程序,然后求和,求平均算出加速度的平均值。有个平均加速度值,运动时间,由于初始加速度值为0,有公式
上面公式中的加速度值和时间就可以求出移动的大致距离。 在采集的过程中,加速度值是带有符号的,在相加的过程中如果出现来回的抖动,有符号的只想加加速度值就会变小,甚至最终导致和位移为0。这样就可以消除抖动带来的误报现象。这就是这个过程的位移算法。 芯片的工作电压是3.3V,因此需要通过电压转化来进行供电,转换芯片采用RT9161,它具有很小的失调电压,电流大,驱动能力强,用此款芯片来对传感器进行供电,可靠性高。 在调试过程总最容易忽略,最容易犯错的就是单片机最小系统和传感器共地的问题,如果不共地,单片机读取的数据就有错误,只有共地后才有了统一的电平参考标准,才能正确的传输数据,设计上一般不会忽略这个问题,但是在调试过程中由于接线等问题,经常会忘了共地而对调试带来很大的麻烦。 图4-3 防盗报警电话 4.4 DHT11温湿度传感器 在本设计中DHT11用于采集温湿度信息,可单总线串行输出数字信号。DHT11总共有四个管脚,在焊接电路时,第一个管脚接VCC,第二个管脚为数据传输管脚,直接接到单片机的p2.0口,同时为了加强传输信号,在此管脚上加一个5k的上拉电阻,等待数据传输。 总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,此时调用一个18毫秒的延时子函数,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后调用一个80us低电平响应信号。主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。 图4-4 DHT11接上拉电阻 用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。送出的40bit数据,是由两个字节的湿度数据、两个字节的温度数据和一个字节的校验和数据,同时,温、湿度数据是以一个字节按由高位到低位传输、一个由低位到高位传输,因此在程序中分别将一个字节的数移位后,将前四个字节相加,再和第五个字节相比较,如果相同即判定数据传输正确。 图4-5 火灾报警短信 在连接好电路后,向DHT11哈气,观察液晶屏上湿度值是否增加,以此来判断DHT11是否能实现对湿度信息采集的功能。同时把电烙铁加热,等达到一定的温度后,放置在DHT11的旁边,从液晶屏中观察温度值的变化,同时但温度升高到45°时,观察单片机是否会通过GSM给指定手机发送短信。 图4-6 系统总体图 5 总结与展望5.1总结本文设计了基于单片机的智能家居报警系统,通过近段时间的努力研究,主要完成以下内容: - 通过分析家居生活中可能遇到的安全隐患,选择了其中的两个(防盗、防火灾)进行报警设计;
- 通过分析把整个系统分为若干个模块;
- 分别对每个模块进行了分析和设计(软硬件设计);
- 使用Altium Designer Summer09绘制了系统原理图;
- 焊接、调试实物模型。
5.2展望中国经济经过30 年的高速发展,居民的生活水平和消费能力有了很大提高,新需求的增长以及信息化对人们传统生活的改变,让许多人尤其是先富起来的一部分人,对智能家居的需求日益强烈。由此,智能化小区建设近年来也是如火如荼,“智能家居”更是被炒得炙手可热。智能家居要走进寻常百姓家中是指日可待的发展趋势。中国是一个具有巨大的消费潜力的市场,国内的智能控制理念推广不够,是由于这是一个新兴行业,不同于普通消费品市场的建设,消费观念的形成还需要时间,现在只是在部分高端市场得到应用,并且主要是被国外品牌所占据,为此我们通过与国外公司的合作学习先进的企业管理和品质控制理念,相信未来国内智能化产品市场一定会拥有美好的前景,智能化也将成为人们日常生活的基本标准。 然而对于家居生活中存在的安全隐患,本设计并没有做到十分全面,例如:关于甲醛等有害气体检测、管道泄漏情况检测、电路安全状况的监测等,都没有涉及,因此本系统还有很大的扩展空间。随着信息时代来临,智能监控进入高速发展时期,智能防盗报警系统作为智能化系统中的子系统之一,同样承载着智能监控所面临的挑战与机遇。针对居住的环境不同,用户对于防盗报警系统的要求也不是一成不变的。因而智能防盗报警系统的设计中要考虑这些因素。既要易于使用,又要易于安装和维护,还要有利于扩张和升级,还要考虑与其他系统的集成和信息共享,还要关注计算机、通信技术的发展对系统带来的影响。 目前,智能家居“钱”途无量,但目前国内仍处于向国外企业学习阶段。这里的学习并非统统照搬,而是根据我们国家的环境、政策,学习国外的成功经验,借“机”生蛋,增加国内企业成功的“筹码”,使得国内智能家居产业发展的风生水起。 因此智能报警系统可作为智能家居的一部分进行扩展,本设计只是做了单方面的报警,如果继续拓展的话,可通过GSM对家中的一些电器进行双向的控制。例如:在烈日炎炎的夏日,当主人准备回家时可查看家中温度,如果超过了主人需求的温度,则可通过手机直接和家中安装的GSM模块实现远程无线连接,进一步可控制空调的开放和关闭来实现对家中温度的调节,这样当主人到家时立刻就能享受到家中的温馨清凉。 基于单片机的智能家居报警系统是智能家居中的一部分,为智能家居正常工作提供有力的保障,但如果融入智能家居设计中,本设计会得到进一步的完善、更广泛的应用,实现更可观的价值。
附录二 程序主程序(在压缩包里面下载)
所有资料下载地址(含完整文档+程序+ppt文件):
http://www.51hei.com/bbs/dpj-85476-1.html
|