毕业设计(论文)基于GSM和单片机的智能家电控制_第1页
毕业设计(论文)基于GSM和单片机的智能家电控制_第2页
毕业设计(论文)基于GSM和单片机的智能家电控制_第3页
毕业设计(论文)基于GSM和单片机的智能家电控制_第4页
毕业设计(论文)基于GSM和单片机的智能家电控制_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 基于gsm和单片机的智能家电控制 学 院: 信息学院 专 业: 自动化 姓 名: 学 号:100105041016 指导老师: 职 称: 副教授 中国.珠海 二一四年五月诚信承诺书本人郑重承诺:本人承诺呈交的毕业设计基于gsm和单片机的智能家电控制是在指导老师的指导下,独立开展研究取得的成果,文中应用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。 本人签名: 日期: 年 月 基于gsm和单片机的智能家电控制摘 要 gsm(global system for mobile communication)移动通信系统在当前信息传播异常火爆的信息化中扮演着很重要的作用,在移

2、动通讯领域是应用最广泛、使用人数最多的一种系统,然而sms(short message service)在近代却受到了许多的系统开发商与营运商的关注,由于短消息的廉价性,各种各样的基于短信的应用也蓬勃兴起,本文正是以gsm作为信息传输的平台,设计出了利用stc89c52rc增强型单片机芯片作为控制中心,检测与接收gsm模块发送过来的信息,从而通过继电器的闭合与断开来实现远程家电控制的系统。 发送短消息的原理是严格遵循标准的at指令集,由于所设计的系统只需用户通过自己的手机向sim300模块中的手机卡发送简单的英文与数字信息即可远程对家电进行on/off的控制,故只需将gsm模块设置为text的

3、编码模式即可。 该系统主要由gsm模块sim300、stc89c52rc、小型电磁式继电器songle srd-05vdc-sh、s9013npn三极管等组成,在介绍硬件组成部分将会对gsm模块sim300、stc89c52rc以及其外围电路进行详细的描述。 在程序设计方面,主要由主程序、串口接收中断服务子程序、定时器中断服务等组成。其中主程序负责和sim300模块进行短信的接收与发送,串口接收中断服务子程序与定时器中断服务程序完成串口数据的收发。出于安全性的考虑,该系统控制的对象为电饭煲或者电灯,从而成功地实现对其进行远程的控制。关键字:stc89c52rc;智能家电;sim300;远程控制

4、based on gsm and single chip microcomputer intelligent home appliance control abstract gsm(global system for mobile communication)mobile communication system in the current information dissemination unusually hot informatization plays a very important role,is the most widely used in the modern times

5、,however,has been the attention of many system developers and operators and operators,because of the short message of cheap,all kinds of application based on sms is also booming,with gsm as a platform of information transmission,this paper designed the use stc89c52rc enhenced single-chip microcomput

6、er as the control center,testing and receiving the gsm module to send information,thus by closing and opening relay to realize the remote home appliance control system. text message to strictly follow the principle of the standard at instruction set,because the design of the system need to users thr

7、ough their mobile phones to the sim300 module of the card to send simple english and digital information can be remote to control the on/off the home appliances,so just take the text encoding scheme. the system is mainly composed of gsm module sim300,stc89c52rc and small electromagnetic relay songle

8、 srd-5vdc-sh,s9013npn triode,etc,introduces the hardware components on the gsm module sim300, stc89c52rc and its peripheral circuit are described in detail.in the aspect of programming,mainly by the main program,a serial port receiving interrupt service subprogram,timer interrupt service,etc.one of

9、the main program is responsible for sending and receiving messages and sim300 module,a serial port receiving interrupt service subroutine complete serial data transceiver with timer interrupt service routine.for reasons of security,the system control object for the rice cooker or electric light,thus

10、 successfully on the remote control.key words: stc89c53rc;intelligent home appliances;sim300;the remote control 目录1前言1 1.1 本设计的目的、意义及应达到的技术要求11.2 本设计在国内外的发展概况及存在的问题11.3 解决的主要问题21.4 方案的选择22 gsm智能家电系统硬件设计32.1家电控制系统的总体结构32.2 stc89c52rc芯片介绍42.3 52单片机串行口结构52.4 单片机控制的外围系统62.4.1复位电路的设计62.4.2时钟电路的设计72.4.3工作

11、指示灯电路设计72.4.4外部继电器控制模块设计82.5 gsm模块sim300介绍92.6 sim300与单片机的通信方式93 gsm智能家电系统软件设计123.1 串口程序设计123.1.1 串口初始化程序133.1.2 中断服务程序153.2 存储程序设计173.2.1 数据读的设计173.2.2 数据写的设计173.3 短消息程序设计183.3.1 at命令的介绍183.3.2 短信部分text传输模式204系统调试和成果演示224.1硬件调试224.2软件调试244.3成果演示275 总结29参考文献30谢辞31附录32附录a:32附录b:441前言1.1 本设计的目的、意义及应达到

12、的技术要求 伴随着当今世界经济的快速增长,生活节奏快这一现实使得越来越多的人们追求更高的生活质量与品位。但是,怎样建立一个高效率、低成本的智能控制家电的系统已成为了当今世界的一个热点问题。它要实现的功能是通过网络等信息通信技术手段远程控制家电,使得控制者不受时间、地域的限制,特别是电信的gsm网络覆盖范围之广阔化、无缝化、以及手机的日益的普及为基于此的远程智能家电控制系统提供了巨大的市场发展空间1。 本文正是通过gsm网络作为通信平台对家电进行远程控制及信息反馈,具有运行费用低、操作简单、实现方便快捷等优点,能够从根本上有效地满足用户对家电的智能控制,让用户真正体验到高品质的生活,达到人与家电

13、信息互联、人与信息互通的效果。 建立一套基于gsm与stc89c52rc单片机的智能家电控制系统尤其有意义。使该系统实现控制者给gsm模块发送短信息指令来控制单片机的外围设备的设计目的,从而实现智能控制家电设备之初想。在不久的将来,智能家电控制系统将逐步进入中低端市场,从东部市场走向西部市场。智能化家电将逐步成为电子信息领域的支柱产业,适合于普通大众使用,有着广阔的市场前景。1.2 本设计在国内外的发展概况及存在的问题 gsm 900和gsm 1800是目前两种主要的gsm系统,因为使用不同的频率,所以它适用于移动的电话是不一样的。但是现在大部分的手机基本上都是具有双频的手机,因此可以自由在这

14、两个频段之间任意进行切换。欧洲国家普遍采用的系统除了gsm900和gsm1800之外还加入了gsm1900,也就是我们普通老百姓平常所说的三频手机。随着中国手机市场的进一步飞速的发展,现在已经有生产厂家生产出在gsm900 gsm1800 gsm1900这三个频段进行自动切换的移动电话了,并且实现了我们之前老祖宗心里压根都不敢想象的事,那就是:一部手机在手中,走遍天下都不怕。 智能家电的控制在发达国家,特别是美国、日本、韩国这些电子产品先进的国家应用都比较普遍,并且非常受欢迎。在我们中国,起步比较晚,但是发展却是非常之迅速的,生产厂家很多,产品也是各种各样。在外观与产品质量上,总体与国外还有差

15、距,但有些家庭的智能终端产品已经做得很成熟,不但美观漂亮,而且功能也很多,与国外的品牌比非常具有竞争。智能家电控制是未来居家生活的发展方向,虽然现在普及比较少,某种程度上来说还是有钱人的专属,不过现在已经有廉价的产品出现,例如家庭的情景灯光系统。它的功能简单,价格便宜,比较实用,目前比较容易让人们接受2。1.3 解决的主要问题 首先,基于stc89c52rc单片机和gsm实现远程家电控制是本次设计的题目 ,详细的内容有:利用设计好的单片机最小系统、外围电路以及sim300模块,通过at指令和c语言,实现模块与单片机之间的通信,从而由控制芯片单片机通过串口中断实时进行检测,若检测到gsm模块si

16、m300有传输数据信息过来,则会进行一系列的返回,最终确认所发信息是否为程序中预先设定的字符。 本次毕业设计中所采用的sim300硬件设备为现成的模块,通过与所设计的芯片部分连接好就可以了。因此,连接成功硬件后,如何设计程序,怎样通过at指令和c语言编程来实现远程控制功能成为了此次设计的主要任务和需要解决的主要问题。1.4 方案的选择 目前,远程控制家电的方法有很多,主要有固话线路、蓝牙和gsm网络以及互联网等方式。 a.通过gsm网络控制远程家电。作为最简单灵活、成本不算很高的手机等移动通信设备来进行家电远程控制,从而实现与家庭中的gsm模块进行实时通信,是可以实现本次方案的选择之一,但是其

17、通信信号及其稳定性相对来说是比较差的。 b.用电脑作为网关进行远程控制家电。此种方式主要是利用pc机的串口来与单片机进行通信,从而达到远程控制家电的功能,人机界面也非常友好。但是,这就意味着要实现该系统功能的家庭就需要多配备一台pc机,而其价格相对来说比较昂贵,不利于该系统的市场化,并且pc机的系统功耗比较高,长时间的运行需要其重新启动,然而这对于一个可以实时监控的系统来说是非常之不利的。 c.通过嵌入式控制器来控制远程家电。随着互联网的技术发展,原有的32位的ipv4地址扩展到了现在的ipv6的128位地址,高速的互联网使智能家电占有了一席之地,但是若将这些需要远程控制的家电接入互联网上,则

18、在控制端的mcu需要相关的tcp/ip协议栈得到应用与实现,并且在微型控制器的运行速度和硬件上的资源分配方面有比较高的要求,这无形中已经提高了设计该系统的成本。从另一方面来说,每个想要实现远程家电控制的家庭都需要配备一个internet接口,都需要分配给家电一个独立的ip地址,基于目前网络覆盖范围,显然要实现该系统的普及也是有相当大的困难的。 d.通过家庭的固话电线来控制远程家电。电话遥控器虽然在一些发达城市中的智能小区已经得到了普及,但是固定电话的控制终端会受到物理位置固定性的影响,不能满足随时随地进行远程控制家电的目的。 综上所述,无疑方案a是最适合设计该系统的最佳选择。2 gsm智能家电

19、系统硬件设计2.1家电控制系统的总体结构 本次所设计的远程控制家电的智能系统的硬件部分主要有:gsm模块sim300和单片机模块两部分,这两个模块基于串口通信的原理,通过分别连接gsm模块的grx、gtx、gnd与单片机的txd、rxd、gnd三个引脚,就可以实现课题。系统的主要功能是:通过英文短消息的接收与发送,从而单片机根据接收到的英文短消息来控制相应的家用电器,实现了远程控制。 (1)家用远程控制系统的总体结构框图如下图2.1所示 电磁式继电器songle-05vdc-sh增强型单片机stc89c52rcgsm模块sim300 台灯 电饭煲图2.1 家电控制系统结构框图(2) 家用远程控

20、制系统的总体结构示意图如下图2.2所示开台灯耶!下班后回家有饭吃罗,爽! 图2.2 家电控制系统结构示意图2.2 stc89c52rc芯片介绍单片机是微机的一种,是将单片机的cpu、存储器、i/o接口和总线制作在一块芯片上的大规模集成电路。由于单片机具有体积小、功能齐全、价格低、开发应用方便等优点,又可以将其嵌入产品的内部,所以得到了很广泛的应用3。xtal2 xtal1vcc o定时/计数器2个/3个ram 128/256字节sfr 21个/27个rom/eprom/flash8k字节时钟电路总线控制 并行口 4个串行口 全双工2个 中断系统6个中断源 2/4个优先级 cpurst ea a

21、le psenvssp0 p1 p2 p3图2.3 单片机的组成 89c52单片机的组成如上图2.3所示。在图中,与并行口p3复用的引脚有:串行口输入和输出引脚rxd和txd,外部中断输入引脚into和int1,外部计数输入引脚t0和t1,外部数据存储器写和读信号wr和rd。 (1)cpu系统 cpu系统包括8位的cpu、时钟电路和总线控制,其中cpu含布尔处理器。单片的核心部分就是cpu,设计中所用到单片机的cpu为8位,因此,其处理数据能力、运算速度和实施控制功能等各方面都符合本设计要求。 (2)存储器系统 该系统包含8k字节的程序存储器(rom/eprom/flash)和512字节数据存

22、储器(ram)以及特殊功能寄存器sfr。内带2k的eeprom存储空间。 (3)i/o口和其他功能单元 包括4个并行i/o口、3个16位定时计数器/计数器,即:t0和t1以及t2;2个通用异步串行口(uart),还可用定时器软件实现多个uart; 外部中断4 路,下降沿中断或低电平触发电路,power down 模式可由外部中断低电平触发中断方式唤醒4。但本次课题所涉及的i/o口只用到了p3.5、p0.0、p2.1、p0.1、p0.2。具体的分配如下表2.1所示。 表2.1 引脚功能分配表i/o口分配 功能p0.0当继电器1闭合时该绿色发光二极管1亮p0.1控制继电器1的闭合与断开p0.2控制

23、继电器2的闭合与断开p2.1当继电器2闭合时该绿色发光二极管2(电压控制型)亮p3.5显示复位(手动/上电),若单片机有复位时,该七彩灯将亮p3.0串口通信(ttl电平)rxd.接收数据端p3.1串口通信(ttl电平)txd.发送数据端其他悬空2.3 52单片机串行口结构 51/52系列单片机芯片的内部设计有一个串行接口uart,是一个可以编程的全双工的异步串行通信接口,占用p3.0与p3.1这两个引脚。在程序设计时可以设计为通用异步接收和发送器,也可以设置为同步移位寄存器,并且还能够实现多机的通信。有三种帧格式,还能够设置各种的波特率,总得来说,使用非常方便和灵活。 ritirxd(p3.0

24、)txd(p3.1) 输入移位寄存器内部总线同步时钟发送sbuf(99h)接收sbuf(99h)串行口中断=1 接收控制器 发送控制器门电路串行口控制寄存器(98h) 图2.4 单片机串行口结构图 51/52单片机串行口结构框图如图2.4所示,其组成部分有:发送/接收缓冲寄存器sbuf、输入移位寄存器、发送控制器、接收控制器和串行口控制寄存器等。串行口控制寄存器scon用于设置串行口的工作方式、接收/发送控制以及设定状态标志等,发送缓冲寄存器sbuf则就是用在存放将要发送的数据,与此相对的是接收缓冲寄存器sbuf,此寄存器的作用是接收由外部设备输入移位寄存器中的数据,其中定时器t1的作用是作为

25、波特率的发生器5。 在进行串行通信的过程中,外面的设备的数据通过单片机的p3.0引脚rxd输入,输入的数据首先是逐位的进入到输入移位寄存器中,然后将此数据由串行的转换为并行的,最后才送入接收缓冲寄存器sbuf中。在接收时,则由输入移位寄存器和接收缓冲器sbuf构成双缓冲的结构,此双缓冲结构的作用是避免在接收到次帧数据的时候,cpu未能及时地响应接收寄存器前一帧的中断请求,还没能把前一帧的数据读走,而造成2帧的数据重叠而产生接收错误。 在发送数据的时候,串行的数据通过单片机的p3.1引脚txd输出,因为cpu是主动的,所以无论怎样都不会产生像接收那样会产生重叠的问题,故不需要双缓冲器结构。将要发

26、送的数据通过发送控制器控制逻辑门电路而进行数据的逐位输出即可。2.4 单片机控制的外围系统2.4.1复位电路的设计单片机的复位是使单片机或系统中的其他部件处于某种确定的初始状态。单片机的工作正是从复位开始的。当stc89c52rc的rst引脚加高电平复位信号(保持2个以上机器周期)时,单片机内部就执行复位操作,而复位信号变为低电平时,单片机就开始执行程序。所设计的系统正为此高电平按键复位,上电瞬间,rst引脚将获得高电平,随着电容c0的充电,该引脚的高电平也将逐渐下降,在此,选用10uf的电容c0和1k电阻r0,从而可以保持足够的时间6。如图2.5所示。图2.5 单片机的复位电路2.4.2时钟

27、电路的设计 作为单片机的时钟基准,片内振荡器的输入和输出分别接上xtal1与xtal2,一般来说,晶振频率高一些可以提高指令的执行速度,但与此相应的噪音也会增加,在满足系统功能的前提下,应该选用低一些的晶振。由于本系统需要与gsm模块通信,故应该选择11.0592mhz的晶振y0,这样便于将波特率设定为标称值9600bps。如下图2.6所示。 图2.6 单片机的晶振电路2.4.3工作指示灯电路设计当按下六角自锁开关后,s0将会从3转向1处,若此时单片机接上+5v的电源,则工作指示灯发光二极管led0会亮。而在+5v与电源接地之间加上一个电容,因为考虑到电源的输入纹波对单片机的影响,所以需要在电

28、源的管脚处增加一个220uf的电容c3来实现滤波,以减小输入管脚处所受到的干扰。设计的电路图如图2.7所示。图2.7 工作指示灯电路2.4.4外部继电器控制模块设计 (1)设计的原理通常单片机输入输出端口输出的电压为4.76伏(p0口需加上拉电阻), 若直接把单片机输出的电压加到继电器上,则继电器会拉低此电压,使该继电器无法正常的进行工作。但是,三极管具有电流放大作用,不仅若此,还可以当做开关的通与断来控制继电器。从而实现用比较弱的直流电来控制比较强的交流电。 (2)设计的框图npn型三极管工作电磁式继电器工作从i/o口获取电平 (3)电磁式继电器 继电器是电器控制中最常用的一种控制元器件。继

29、电器由通电线圈和触点(常开或者常闭触点)构成。其工作原理是当线圈通电时,由于磁场的作用,使开关触点闭合或者打开,接通或断开执行机构,完成控制功能。本设计中所用到的继电器为松乐牌小型电磁式继电器,主要组成部分有铁芯、衔铁、触点弹簧和线圈等。当主线圈回路通以一定的电压时,线圈中将会流过一定的电流,此电流会产生电磁感应效应,从而将副回路的触点弹簧吸引过来,导致副回路的交流电导通。当主回路的线圈电流消失时,电磁感应效应则随之消失,副回路的触点弹簧与导通回路的触点断开,利用这一特点就可以很方便的实现以主回路的弱小电流控制副回路的交流电流,其中续流的二极管d1是用来保护三极管不被感应电压损坏,具体的设计电

30、路图如图2.8所示。图2.8 单片机控制继电器回路 2.5 gsm模块sim300介绍 图2.9 gsm模块sim300实物图 sim300的实物图如上图2.9所示,gsm模块sim300内部集成了tcp/ip协议,而且还对tcp/ip at指令进行了扩展,所以设计该系统时用该模块将会使设计变得十分方便与简单,除了本设计需要利用到该模块的sms功能外,此模块还可以实现语音、数据以及高速传输的传真信息的接收与发送。不仅如此,该模块的功耗也比较低,当其进入睡眠不工作的状态时,电流消耗仅有2.5毫安,其自动波特率的范围也比较广,满足本设计系统的9600bps波特率要求。 sim300模块的优良的性能

31、使它能够应用于许多控制方面的系统,最基本的特点是为三频gsm/gprs 900/1800/1900mh或者四频850/900/1800/1900mhz. 并且gsm300集成了比较完整的射频电路和gsm的基带处理器,是一款主流的gprs芯片7。2.6 sim300与单片机的通信方式 单片机gsm模块之间的通信方式是串行通信方式的,并且是串行方式中的异步串行通信方式,异步串行通信是指发送方和接收方的数据的发送与接收是靠自己的时钟所控制的。但是,为了使双方的数据接收与发送相协调,一般要求发送与接收方的设备时钟保持一样,异步通信只需要一条通信线路就可以实现从一方到另一方的传输,但是两条数据线的话就可

32、以实现数据的双向传输了,本设计的系统之间的连接方式就是通过两条数据线进行数据传输的。异步串行通信的过程中,帧的格式通常由起始位、数据位、奇偶校验位和停止位这四部分组成的,如下图2.10所示。异步通信时,发送方先发送1位起始位“0”,接着就发送8位数据,并且规定比较低的位在前面,较高的位在后面,其后是奇偶校验位,但是此位是可有可无的,最后是停止位“1”。完整的一帧包括从起始位到停止位。各个位的作用如下所述。 空闲位 下一帧空闲位 b d0 d1 d2 d3 d4 d5 d6 d7 p s t 0图2.10 异步串行通信的数据格式 起始位b:起始位是在一帧数据的开始处的,它所占的位数是1位。通信线

33、上若没有数据传输时,该位为高电平,接收端就不断检测通信线的状态,当连续若干个“1”之后出现一个“0”时,就知道发送方发送了一个新的字符,接收方就准备接收了。 数据位(d0-d7):起始位之后就是若干位的数据位了。传送时首先是低位,然后才传输高位。奇偶校验位(p):数据位后是奇偶校验位,奇偶校验位是通过对数据进行奇偶性检查,从而根据此来判断字符是否传输正确。在通信的双方,需要事先约定好到底是采用奇校验还是偶校验(本系统设置的串行口工作方式是方式1,所以没有奇偶校验位)。奇偶校验位的工作原理:p是特殊功能寄存器psw的最低位,它的值根据累加器a的运算结果而变化。譬如说偶校验,如果a中“1”的个数为

34、偶数,则p=0;如果累加器a中的“1”的个数为奇数,则p=1。如果在进行串行通信时,把a的值(数据)和p的值(代表所发送数据的奇偶性)同时发送,那么接收数据到数据后,也要对数据进行一次奇偶校验。如果检验结果相符(校验后p=0,而传送过来的检验位也等于0;或者检验后p=1,而传送过来的检验位也等于1),那么就可以认为接收到的数据是正确的,但是反之,则代表传输的数据时错误的。 停止位(s):占一位,代表一帧字符的结束,在末尾。可以有半位。 在异步通信中,数据通常是通过字符进行传输的,帧格式或者帧的具体含义是1个字符完整的通信格式。发送方和接收方都是通过逐帧的进行发送与接收的,一帧中各位的时间间隔应

35、该要相同,所以必须保证通信的双机之间有相同的传输波特率,否则时间间隔就会不同,若其误差超过百分之五时,双机之间也就不能够进行通信了。但是,异步通信的双方的时钟相互独立,故时钟频率可以不一样,从而在通信时不要求必须有同步的时钟信号,这在现实中是比较容易实现的,虽然此方式的传输效率比较低,但是它可以利用校验位检测错误8。 gsm模块与单片机双机通信时,根据双机的通信距离可分为短距离通信和长距离通信,短距离通信是指1米之内,长距离通信是指1000米左右。因此,如果我们要传输更长的距离,就需要借助于其他的设备才能实现了。在此设计的系统中,我们选择单片机双机四种通信方式中的ttl电平通信,该通信方式是指

36、直接将发送方的单片机txd端与接收方的rxd端相连接,发送方的rxd与接收方的txd直接相连接,并且它们的地端需要共连,这种连接方式比较方便。如图2.11所示。 rxd 乙机(gsm sim300) txd gnd txd 甲机(stc89c52rc) rxd gnd图2.11 ttl电平双机通信连接图3 gsm智能家电系统软件设计 通过前面各个模块的硬件设计可以知道,本次课题的软件系统设计部分包括存储器的写操作、读操作和串口的初始化以及短消息的设置,本系统所采用的编程模式为前后台系统模式,这种模式有区别于引入操作系统之后的多种模式,相对来说比较简单,执行在程序的设计中编写一个无限循环的主程序

37、来不断查询,检测是否有事件发生,从而去执行相应的指令,系统总的流程图如图3.1所示。双机之间的数据传送可以有两种方式,一种是中断方式,另外一种是查询方式。但是无论采用哪种方式,都要借助于ti或者ri标志位的,串行口发送时,当ti置1(发送完一帧数据后)后会开始向cpu申请中断请求,在中断服务程序中,需要在编写程序时将ti清零,以方便于下一帧数据的发送。采用查询方式时,cpu会不断查询ti的状态,只要查询到ti为1就结束查询,ti为1后也要及时地用软件把ti清零,以便下一次好发送下一帧数据9。本次设计采用通过中断的方式来接收与发送数据,因为89c52片内的串行通信接口是一个全双工的通用异步收发器

38、(uart),在物理上有两个独立的接收、发送缓冲器sbuf,虽然他们有着同一个99h地址,但可以同时发送与接收数据,所以利用ti与ri中断标志位是否为1就可以设计串口中断程序来接收数据10。具体的程序设计过程后面将会详细叙述。 开始 初始化sbuf是否有数据? no 读取第一条短信 yes 执行被控机构 删除第一条短信 图3.1 系统总流程图 3.1 串口程序设计 在本所设计的系统中,单片机的txd与rxd两个引脚分别与gsm模块的grx、gtx两个引脚用跳线相连接进行通信,所以要对串口进行程序设计,其中,包括串口初始化程序设计与串口中断程序设计这两部分。这其中还要对gsm进行初始化设置,设计

39、流程图如图3.2所示。具体的串口程序代码将体现程序的设计过程。上电 启动gsm sim300 初始化单片机 发送at+cmgf=1 发送at+cmgd=1 初始化sim300图3.2 初始化gsm流程图 3.1.1 串口初始化程序 在使用串行口之前,需要对串行口进行初始化程序设计,其主要的内容为以下几个: (1)确定定时器t1的工作方式,也即是要配置tmod寄存器。 (2)计算定时器t1的初始值,从而装载高8位与低8位的值。 (3)启动定时器t1。 (4)确定串行口工作方式。 (5)串行口在中断方式工作时,需要进行中断设置。 具体的程序如下所示:void uart_int(void) scon

40、=0x50;/uart方式1:即串行工作方式1,10位异步通信方式; pcon=0x00;/smod=0:波特率不加倍,即smod=0,表示数据传输率不加倍; tmod=0x20;/t1方式2,用于uart波特率; th1 =0xfd; /装初值; tl1 =0xfd; /装初值 tr1 =1; /启动定时器1 ea=1; /打开全局中断控制 es=1; /打开串行口中断 设计思想与过程:按照串口初始化的设计步骤,因为需要自动重装值,所以t1设置为方式2,之后装载th1和tl1的值,然后启动定时器/计数器1、确定串行口的控制。在配置特殊功能寄存器时,需要设定串行口的工作方式,由于该系统只有一个

41、单片机作为控制,并且单片机需要处于数据帅选状态、数据信息也可以进入sbuf,并且ri置位,所以其sm2位应该设置为0,串行工作在方式1,串行允许接收位ren置1,tb8和rb8为零。综合考虑的scon控制器配置如下表3.1所示:表3.1 scon的配置位地址9f9e9d9c9b9a99 98位符号sm0sm1sm2rentb8rb8ti ri位配置0101000 0 在定时器/计数器工作方式1下,电源控制寄存器pcon中只有一位smod与串行口的工作有关,当把该位置1时波特率将提高一倍,在标准情况时,把该位置零即可。在设置工作方式寄存器tmod时,需要考虑选用什么方式,因为此系统需定时器t1用

42、作波特率发生器来使用,所以选用定时器t1的可自动装入初值模式(方式2),通过这样的设置,通用异步接收/发送芯片就可以把数据串行输出11。而定时器工作方式寄存器tmod(89h)的门控位gate则设置为0,因为设计本系统初衷是仅用软件使tcon中的tr1为1,就可以启动定时/计数器1工作。具体的配置如下表3.2所示。表3.2 tmod的配置位符号gatec/tm1m0gatec/tm1 m0位配置 0 01 0 0 0 0 0 表3.3 方式1常用波特率与th1初值关系波特率/bps 19.2k 9600 4800 2400 1200th1初值 fdh fdh fah f4h e8hsmod 1

43、 0 0 0 0 在设置th1时,用到了串口通信计数器,也可以用计算公式算出,不过选用时都是参照常用的波特率与th1的关系表得出的,如上表3.3所示。下面是用串口通信计数器软件虚拟计算出来的结果。 图3.3 th1的初值计算 图3.4 th1的初值计算 由图3.3和3.4的计算结果可以知道,当选用11.0592mhz的晶振时,无论选用什么样的波特率,其误差百分比都为零,这也是在设计时钟电路时为何要选用这种晶振的原因。3.1.2 中断服务程序 串口的数据在进行处理时,一般有两种方式:查询方式和中断方式,此设计的单片机在接收数据时,采用了中断的控制方式,其串口数据的接收中断原理如图3.5所示。下面

44、是其具体的程序。/* 数据接收 */ void uart_receive(void) interrupt 4 ea=0; if(sbuf=65 & sbuf=76 & sbuf=80 & sbuf=48 & sbuf=57) /65到90对应a到z; 48到57对应0到9 ;不接受o和k tempn=sbuf;n+;if(n=50)n=0; ri=0; ea=1; 设计思路和过程:通过上面的程序可以看出,在进入接收中断程序时,需要关断全局总中断,否则会出现数据的混乱,导致收到的数据不正确。首先需要定义一个数组,把接收到的数据寄存在串口缓冲器中,然后将该数据读取到数组tempn中,由于向cpu申

45、请中断后其中断标志位ri将会由硬件置为1,此时需要我们用软件将其清0。同时也需打开全局总中断,即将ea置1。否则,将不能接收下个数据,导致通信无法进行下去。 串口接收中断否缓冲器未满?是 将数据存入缓冲区 并复位定时器t1 返回 图3.5 串口接收中断流程图3.2 存储程序设计 在本次所设计的系统中,单片机中数据的发送与接收都需要存储器的参与,当cpu中收到来自gsm模块中的数据时,将会产生读操作,若cpu向gsm模块发送数据时,将需要进行写操作,详细的设计看下面的简述。3.2.1 数据读的设计 由于存储器的进行读操作时是向cpu申请中断方式来进行的,此部分已经在前面的中断服务程序设计中已经简

46、述过,故在此不再重复。3.2.2 数据写的设计 在scon中的工作方式1下,当执行一条写sbuf的指令时,会启动串行口的发送过程,在发送由波特率决定的移位时钟的同步下,会在txd的引脚上先发送出起始位,接着是发送8位数据位,最后才是停止位。当到停止位时,会产生一个置1的中断标志位ti12。具体的程序内容如下所示。 /* 数据发送 */ void send(uchar *tab) while(*tab)!=0)es=0; /关串口中断sbuf=*tab;/把要发送的字符放入缓冲区while(ti=0);ti=0;tab+;ti=0; es=1; /开串口中断 设计思路和过程:当接收到的字符不是字

47、符串的结束字符0(此字符在字符串后自动添加),while语句就一直执行其循环体里的内容,当遇到结束字符时代表一帧数据发送完毕,此时则需关闭串口中断,将需要发送的字符读进缓冲寄存器sbuf中,当还没读完数据进sbuf中时,ti标志位就一直为0。3.3 短消息程序设计 通过sms可以在gsm终端之间实现短消息的接收与发送,其传递过程需要经过短信服务中心,国内外很多前景非常乐观的控制系统都是基于此来传输与接收数据,并且其稳定的双向传输数据功能使无线远程监测与控制系统、无线数据的双向传送等多种智能性应用得到了飞速的发展13,所设计的系统正是基于这样一个强大的支持平台。在此系统中利用了串行口进行了相关的at指令进行传输,具体的如下所阐述。3.3.1 at命令的介绍 单片机是通过发送at指令对gsm模块进行设置的,一般来说,“at”是其指令的开始部分,acsii码的十六进制0dh是其对应的结束字符。根据“at”字符后面的不同将会控制gsm产生不一样的操作模式,一般的连接线路的modem支持标准的v.25ter指令集和传真指令集14。 但是gsm模块还支持规范gsm07.05 和gsm07.07的指令集。本设计的系统的短消息正是利用了gsm07.07。短信的发送、删除和存储是gsm07.05这种指令集的具体的操作,从而才可以达到通过远程发送短消息控制低功耗的家用电器15。如表3.4所示,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论