基于单片机与GSM模块无线温度传输系统_第1页
基于单片机与GSM模块无线温度传输系统_第2页
基于单片机与GSM模块无线温度传输系统_第3页
基于单片机与GSM模块无线温度传输系统_第4页
基于单片机与GSM模块无线温度传输系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

华南农业大学珠江学院毕业论文(设计)基于单片机与GSM模块无线测温传输系统软件设计 孙立治 指导教师: 刘爱民 系: 信息工程系 年级专业:电子信息工程0801班 提交日期: 答辩日期: 答辩委员会主席(签名): 评阅人(签名): 年 月 日摘 要本论文设计了一种通过GSM短消息的收发实现对系统设备进行遥控,基于单片机控制,利用支持短消息业务的GSM引擎模块发送温度报警信息,还利用现有的900M或1800M的GSM网络,而监控终端也不再仅局限于PC机,也可以是移动通讯平台或其他移动终端。对系统环境状况监测和数据传输的GSM短消息遥控监测系统。该系统克服了普通电话遥控的人机界面不友好,且控制功能少等缺点,实现了数据采集(温度等)、实时监测、短信报警的功能。系统的控制过程如下:用温度传感器采集外界温度值,通过A/D转换将此模拟信号转换为数字信号传入单片机中,对单片机进行编程。本系统采用了西门子公司提供的TC35短信模块进行短信的编辑和发送,它的串口通讯遵循RS232标准,所以要与单片机连接还要通过串口的电平转换电路,这也是系统设计的一部分;短信模块发送短信是由AT指令控制的,其发送的短信格式有两种:文本格式和PDU格式, 本论文选择采用文本格式,这样AT指令的短消息编程也成为了系统设计一部分。前面说提到的AT指令,即Attention AT命令集是从Terminal Equipment或DTE(Data Terminal Equipment) 向TA(Terminal Adapter)或DCE(Data Circuit Terminating Equipment)发送的通过TE发送AT命令来控制MS的功能与GSM网络业务进行交互复。关键字:单片机;TC35i模块;短消息;AT指令;温度检测AbstractThis dissertation designed a GSM short message sending and receiving remote control system equipment, control, based on single chip GSM engine module sends temperature alarm information to support short message service, to monitor the terminal is no longer confined to the PC, but alsocan be a mobile communications platform, or other mobile terminal.The control process of the system are as follows: outside temperature, temperature sensor acquisition A/D converter to convert this analog signal to digital signal into the microcontroller, the microcontroller to be programmed. Microcontroller to obtain the temperature through the serial port and Siemens TC35 SMS module serial communications and data transfer, the temperature obtained by TC35 SMS module temperature mode of information sent to the target mobile communication platforms or other mobile devices.TC35 SMS module control, editing, and sending of text messages, it sends the message format in two ways: the text format and PDU format, this dissertation used text format. TC35 SMS module is controlled by using AT command. Such a short news programming of the AT command also become a part of the design. AT command, the Attention AT command set is from the Terminal Equipment or DTE (Data Terminal Equipment) to the TA (Terminal Adapter) or DCE (Data Circuit Terminating Equipment) sent by the TE to send AT commands to control the MS functions and GSM network services interaction complex.Keywords: microcontroller; TC35i module; short message; AT Instruction; Temperature detection设计说明本次设计的基于单片机与TC35i的 GSM模块无线测温报警系统主要有两大功能,分别为温度检测、短信报警。基于题目的基本要求,本系统对温度检测、短信报警这两大功能进行重点设计。本系统设计采用以单片机STC89C52和西门子TC35i短信模块为核心,结合DS18B20等必要的外围电路实现远程无线报警功能。当系统上电启动后,单片机利用DS18B20检测温度。采用单片机的定时器计时的方式来计算时间,每隔一段时间,系统就会向事先设置好的移动终端发送温度。当温度高过一定的值或者低于一定的值的时候,就算系统计时的时间还没到,系统也会向移动终端发送信息。为了方便随时可以接受信息,本设计还设计了按键功能,当按下按键的时候系统也会向移动终端发送信息。设计标准如下:(1) 通过单片机和DS18B20检测温度。(2) 设定报警范围,当温度不在这个范围的时候就自动发送当前温度到移动终端。(3) 按键功能,没按下一次按键,系统就向移动终端发送当前温度。关键字:STC89C52单片机;DS18B20;TC35i目 录1 引言11.1 项目背景与意义11.2 项目目标12 系统的整体架构分析32.1 系统的主要模块32.2 DS18B20原理及引脚介绍32.2.1 DS18B20产品的特点32.2.2 DS1820的工作原理42.3 STC89C52单片机72.3.1 时钟电路72.3.2 复位及复位电路82.3.3 STC89C52引脚介绍92.4 TC35i模块介绍103 软件设计133.1 TMOD配置133.2 串口通讯原理133.2.1 串行接口的一般概念133.2.2 89C52单片机的串行接口结构143.2.3 串行口的控制与状态寄存器143.2.4 波特率的选择163.3 单片机中断系统介绍183.3.1 中断请求源183.3.2 中断允许寄存器IE183.4 AT指令183.4.2 AT指令集193.5 温度采集203.6 GSM模块发送信息213.7 程序编译文档的创建224 结论23参考文献24致谢25附录26附录A 系统原理图26附录B 源程序27附录C 检测单片机串口发送数据程序341 引 言1.1 项目背景与意义随着短消息服务(SMS)和通用分组无线服务(GPRS)等数据业务的发展,GSM无线网络应用于机电产品和工业控制领域的趋势不断扩大,各种以GSM网为传输平台的数据采集及远程监控系统方案和产品也不断出现。例如,在现代家庭的环境安全监测和家用电器的控制上,利用GSM网络既可实现对盗情、燃气泄漏及火警等的监测,并以短消息方式向主人发出警报;又可发送短消息对家用电器例如空调、电视、音响、微波炉等进行遥控 。GSM网络信号覆盖面积广、网络接入灵活、无需布线,打破了距离的限制,从而可以实现全国乃至全球漫游监控 。短消息(SMS)利用信令信道传输,直接把要发的信息加上目的地址发送到短消息服务中心,由服务中心再发给终端。短消息容量有限(每条短信内容最多140个字节),适于传输小流量的数据;由于建立时间较长,传送过程要受短消息服务中心服务器繁忙程度的影响,因而适于非连续性和实时性要求不太高的传输场合。短消息传输具有实现简单,通信成本低的优点。本论文在温室温度监控远程报警和远程开启的应用背景下,结合其传输数据少和非连续性工作的应用特征,研制了利用51系列单片机控制GSM模块TC35i以短消息(SMS)的方式进行远程报警和开启的装置。装置中单片机以中断方式检测传感器的振动信号,通过串口与GSM模块通信以控制其启动和短信的收发、解析等。本装置结构简单、传输可靠,稍做改进即可应用于多种需远程交互的场合。1.2 项目目标基于STC89C52、TC35i温度远程报警系统具有结构简单、可靠性高、成本低等特点,可广泛应用于大棚温室、粮仓及物资仓库温度检测等。本论文首先给出了基于STC89C52、TC35i温度远程报警系统的整体架构,分析了整个项目的硬件基础和软件基础。然后详细介绍STC89C52单片机和TC35i的应用开发基础的主要特征。在温度检测部分,STC89C52单片机通过DS18B20温度传感器读取温度,然后通过单片机串口和TC35i串口之间相互通信,把读取的温度传输到TC35i模块,最后通过TC35i模块发信息到目标手机号码。2 系统的整体架构分析2.1 系统的主要模块 系统主要由STC89C52单片机、DS18B20温度传感器和TC35i模块构成,其系统结构如图1所示。图1 系统整体框图系统的控制过程如下:用温度传感器采集外界温度值,通过A/D转换将此模拟信号转换为数字信号传入单片机中,对单片机进行编程。本系统采用了西门子公司提供的TC35短信模块进行短信的编辑和发送,它的串口通讯遵循RS232标准,所以要与单片机连接还要通过串口的电平转换电路,这也是系统设计的一部分;短信模块发送短信是由AT指令控制的,其发送的短信格式有两种:文本格式和PDU格式。2.2 DS18B20原理及引脚介绍DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。2.2.1 DS18B20产品的特点(1) 适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。(2) 独特的单线接口方式,DS1820在与微处理器连接时仅需要一条口线即可实现微处理器与DS1820的双向通讯。(3) DS1820支持多点组网功能,多个DS1820可以并联在三线上,实现组网多点测温。(4) DS1820在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。(5) 温度范围55125,在-10+85时精度为0.5。(6) 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。(7) 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。(8) 测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。(9) 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。2.2.2 DS1820的工作原理(1) DS1820的地址序列码。 DS1820的地址序列码光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是DS1820的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS1820自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS1820都各不相同,这样就可以实现一根总线上挂接多个DS1820的目的。 (2) DS1820温度值格式表。DS1820中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。如表1所示。表1 DS1820温度值格式表LS ByteBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0232221202-12-22-32-4MS ByteBit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8SSSSS262524这是12位转化后得到的12位数据,存储在DS1820的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 (3) 高速暂存存储器。 高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。其中第九个字节是冗余检验字节。其寄存器内容如表2所示。表2 DS1820暂存寄存器分布寄存器内容字节地址温度值低位 (LS Byte)0温度值高位 (MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保 留5保 留6保 留7CRC校验值8根据DS18B20的通讯协议,主机(单片机)控制DS1820完成温度转换必须经过三个步骤:每一次读写之前都要对DS1820进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS1820进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS1820收到信号后等待1660微秒后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。ROM指令如表3所示,RAM指令如表4所示。表3 ROM指令表指 令约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址) 符合ROM 55H发出此命令之后,接着发出64 位ROM编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该DS1820 的读写作准备搜索ROM 0F0H用于确定挂接在同一总线上 DS1820 的个数和识别 64 位ROM 地址。为操作各器件作好准备 跳过ROM 0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令,适用于单片工作告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应 表4 RAM指令表指 令约定代码功 能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms),结果存入内部9字节RAM中读暂存器 0BEH 读内部RAM中9字节的内容 写暂存器 4EH 发出向内部RAM的3、4字节写上下限温度数据命令,紧跟该命令之后是传送两字的数据复制暂存器 48H 将RAM中第3 、4字节的内容复制到EEPROM中重调 EEPROM 0B8H 将EEPROM中内容恢复到RAM中的第3、4字节读供电方式 0B4H 读DS1820的供电模式。寄生供电时DS1820发送“0”,外接电源供电 DS1820发送“1”(6) DS1820使用中注意事项。 DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。(7) DS18B20引脚图。TO92封装的DS18B20的引脚排列如图2所示,其引脚功能描述见下:GND:接地。DQ:数据输入/输出引脚。VDD:接+5V电源。图2 DS18B20引脚图2.3 STC89C52单片机STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。2.3.1 时钟电路STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图3所示。在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.212MHz之间选择,电容值在530pF之间选择,电容值的大小可对频率起微调的作用。图3 内部方式时钟电路 2.3.2 复位及复位电路复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表5所示。表5 寄存器的复位状态寄存器复位状态寄存器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXXBSBUF不定IE0XBPCON0XXX0000BTMOD00HRST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。复位操作有上电自动复位相按键手动复位两种方式:上电自动复位是通过外部复位电路的电容充电来实现的,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。按键手动复位是通过使复位端经电阻与Vcc电源接通而实现的,复位电路图如图4所示。 图4 单片机复位电路图2.3.3 STC89C52引脚介绍(1) 主电源引脚。VCC(Pin40):电源输入,接5V电源。GND(Pin20):接地线。(2) 外接晶振引脚。XTAL1(Pin19):片内振荡电路的输入端。XTAL2(Pin20):片内振荡电路的输出端。(3) 控制引脚。RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号。PSEN(Pin29):外部存储器读选通信号。EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。(4) 可编程输入/输出引脚。STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。PO口(Pin39Pin32):8位双向I/O口线,名称为P0.0P0.7;P1口(Pin1Pin8):8位准双向I/O口线,名称为P1.0P1.7;P2口(Pin21Pin28):8位准双向I/O口线,名称为P2.0P2.7; P3口(Pin10Pin17):8位准双向I/O口线,名称为P3.0P3.7。STC89C52主要功能如表6所示。表6 STC89C52主要功能主要功能特性兼容MCS51指令系统8K可反复擦写Flash ROM32个双向I/O口256x8bit内部RAM3个16位可编程定时/计数器中断时钟频率0-24MHz2个串行中断可编程UART串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能2.4 TC35i模块介绍本文系统通信模块采用TC35i,TC35i是SIEMENS公司推出的GSM专用调制解调器,它可在GSM网中完成语音、数据、短消息以及传真的传送,TC35i具有标准的工业接口和完整的SIM卡阅读器,因此使用非常简单,它提供的命令接口符合GSM0705和GSM0707规范,并提供RS232数据口,模块和单片机接口通过40针数据电缆相连接,由于TC35i模块的数据接口是CMOS电平,因此单片机对TC35i 模块控制和通信信号不用进行电平转换,通过R232 将TC35i模块和PC机连接起来即可。TC35i模块输入输出的TTL正电平逻辑不是+ 5V,而是+ 2.9V,因此,必须对该输入电平进行逻辑转换,系统通过在集电极开路缓冲器7407的输出加上拉电阻完成电路逻辑的转换。系统加电后,为使TC35i进入工作状态,必须给IGT(绝缘栅晶体管)加一延时大于100ms的低脉冲电平,下降持续时间不可超过1ms。启动后, IGT应保持高电平(3.3 V) 。驱动IGT时TC35i供电电压不能低于3.3V,否则TC35i不能激活。ZIF连接座的CCIN引脚用来检测SIM卡是否插好,如果连接正确,则CC IN引脚输出高电平,否则为低电平,可以在系统中,将引脚与参考地间连接红色指示灯,提示用户SIM卡是否插好。TC35i模块有40个引脚,通过一个ZIF(Zero Insertion Force,零阻力插座)连接器引出。这40个引脚可以划分为5类,即电源、数据输入/输出、SIM卡、音频接口和控制。TC35i的第15引脚是正电源输入脚通常推荐值4.2V,第610引脚是电源接地。11、12为充电引脚,可以外接锂电池,13为对外输出电压(共外电路使用),14为ACCU-TEMP接负温度系数的热敏电阻,用于锂电池充电保护控制。15脚是启动脚IGT,系统加电后为使TC35i进入工作状态,必须给IGT加一个大于100ms的低脉冲,电平下降持续时间不可超过1ms。1623为数据输入/输出,分别为DSR0、RING0、RXD0、TXD0、CTS0、RTS0、DTR0 和DCD0。TC35i模块的数据输入/输出接口实际上是一个串行异步收发器,符合ITU-T RS232接口标准。它有固定的参数:8位数据位和1位停止位,无校验位,波特率在300bps115kbps之间可选,默认9600。硬件握手信号用RTS0/CTS0,软件流量控制用XON/XOFF,CMOS电平,支持标准的AT命令集。其中18脚RxD0、19脚TXD0为TTL的串口通讯脚,需要和单片机或者PC通讯。TC35i使用外接式SIM卡,2429为SIM卡引脚,SIM卡同TC35i是这样连接的:SIM上的CCRST、CCIO、CCCL、CCVCC和CCGND通过SIM卡阅读器与TC35i的同名端直接相连,ZIF连接座的CCIN引脚用来检测SIM卡是否插好,如果连接正确,则CCIN引脚输出高电平,否则为低电平。TC35i的第32脚SYNC引脚有两种工作模式,一种是指示发射状态时的功率增长情况,另一种是指示TC35i的工作状态,可用AT命令AT+SYNC进行切换,本模块使用的是后一种。当LED熄灭时,表明TC35i处于关闭或睡眠状态;当LED为600 ms亮/600ms熄时,表明SIM卡没有插入或TC35i正在进行网络登录;当LED为75 ms亮/3s熄时,表明TC35i已登录进网络,处于待机状态。30、31、32脚为控制脚,其中30为RTC backup,31为Power down,32 为SYNC。3538为语音接口,35、36接扬声器放音。37、38可以直接接驻极体话筒来采集声音(37是话筒正端,39是话筒负端)如下图5所示。图5 TC35i引脚图3 软件设计3.1 TMOD配置C51中有两个计数/定时器T1 和T0;每个计数器都有两个八位寄存器,即是十六位的寄存器。TH1、TL1分别是计数器T1的高八位和低八位存储区,TH0、TL0分别是计数器0的高八位和低八位存储区。在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。TMOD和TCON是寄存器的名称,在写程序时就可以直接用这个名称来指定。TMOD 寄存器的内容如表6所示。表6 寄存器TMODGATEC/TM1M0GATEC/TM1M0从表6中可以看出,TMOD被分成两部份,每部份4位。分别用于控制T1,T0,(前四位控制T1,后四位控制T0)TR0、TR1分别是控制T0和T1工作状态的位。定时/计数器一共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合(00方式1,01方式1,10方式2,11方式3)。C/T:定时/计数器即可作定时用也可用计数用,到底作什用,根据需要自行决定,也说是决定权在编程者。如果C/T为0就是用作定时器,如果C/T为1就是用作计数器。3.2 串口通讯原理3.2.1 串行接口的一般概念单片机与外界进行信息交换称之为通讯。89C52单片机的通讯方式有两种,并行通讯:数据的各位同时发送或接收。本文档不涉及并行通讯,只讲串行通讯。串行通讯:数据一位一位顺序发送或接收。串行通讯有同步通讯和异步通信两种方式:异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。 在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。用这种格式表示字符,则字符可以一个接一个地传送。在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。3.2.2 89C52单片机的串行接口结构89C52单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯,如图6所示。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。所以,语句SBUF=SBUF;是有意义的。它并不是将本身的值赋给了本身,而是将一个寄存器的值赋给了另一个寄存器,并且单片机不会搞错哪个是发送的,哪个是接受的。图6 单片机串口电路图3.2.3 串行口的控制与状态寄存器串行口控制寄存器SCON它用于定义串行口的工作方式及实施接收和发送控制。其各位定义如表7所示。表7 串口控制寄存器SCON示意表SM0SM1SM2RENTB8RB8TIRISM0.SM1:工作方式控制位(其中fosc为晶振频率)如表8所示。表8 SM0.SM1工作方式SM0SM1工作方式说 明波特率000同步移位寄存器Fosc/1201110位异歩收发由定时器控制10211位异步收发Fosc/32或Fosc/6411311位异步收发由定时器控制SM2:多机通讯控制位。本次设计不使用,编程时置0即可。REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。TI: 发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。RI: 接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI必须用软件清0。电源控制寄存器PCON,此寄存器只有第一位SMOD和本文档有关。SMOD:串行口波特率加倍位:1方式1,3波特率定时器1溢出率/16;方式2波特率为Fosc/32。0方式1,3波特率定时器1溢出率/32;方式2波特率为Fosc/64。8051单片机的全双工串行口可编程为4种工作方式,现分述如下。方式0为移位寄存器输入/输出方式。本文档不用,故不叙述。方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。输出: 当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。输入: 在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。方式2为固定波特率的11位异步通讯接口方式。它比方式1增加了一位可程控为1或0的第9位数据。输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。 输入: 在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。方式3为波特率可变的11位异步通讯接口方式。除波特率外,其余与方式2相同。3.2.4 波特率的选择如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在89C52串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。以下讨论中,FOSC是晶振的频率。方式0的波特率固定为晶振频率的1/12。方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc。方式1和方式3的波特率(2SMOD)*(定时器1的溢出率)/32 ,其中T1溢出率= T1计数率/产生溢出所需的周期数。式中T1计数率的含义是:一秒钟计数的次数。它取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为fosc/12(即一个机器周期);当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。定时器T1工作于方式0:溢出所需周期数=8192-x (X为预置数)定时器T1工作于方式1:溢出所需周期数=65536-x定时器T1工作于方式2:溢出所需周期数=256-x因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。单片机串口是否正常发送数据关系是本次设计的关键一环,关系到本设计是否能够顺利地完成,所以编写了一个程序通过串口调试助手来验证单片机所发送的数据是否正常,串口助手如图7所示。图7 串口调试助手从图7串口调试助手中可以看见,左上角第一个设置是串口的选择。波特率的设置必须和已经写到单片机里的程序设置的波特率一致!校验位也要和单片机程序一至,数据位是八位,停止位是一位。一切设置好后,在助手的下面的文本区填入要发送的数据,点击发送后如果上面的大文本框内能够正确的显示出来的话,实验就成功了。3.3 单片机中断系统介绍3.3.1 中断请求源(1) 外部中断请求源。外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异可暂不考虑。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。(2) 内部中断请求源。TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由软件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断。3.3.2 中断允许寄存器IE在MCS51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。其寄存器内容如表9所示。表9 中断寄存器EAESET1EX1ET0EX03.4 AT指令AT即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设备(TE)或电脑来完全控制SMS,几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM研制了一整套AT指令,其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM0705标准以及现在的GSM0707标准,完全标准化和比较健全的标准。如:对SMS的控制共有3种实现途径:最初的BlockMode;基于AT指令的TextMode;基于AT指令的PDUMode。到现在PDUMode已经取代BlockMode,后者逐渐淡出。GSM模块与计算机之间的通信协议是一些AT指令集,AT指令是以AT作首,字符结束的字符串,AT指令的响应数据包在中。每个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。所有的AT命令都以“AT”,根据命令形式可以将AT命令分表10所示。表10 AT命令类 别形 式含 义 测试命令AT+C*=?执行该命令将返回该命令所支持的参数及参数范围读命令AT+C*?执行该命令将返回该命令当前的参数值写命令AT+C*=执行该命令将设置该命令的参数值3.4.1 单片机与TC35i通行协议注意事项(1) 通信过程中,单片机与TC35i必须完成握手后,才进行数据交换,否则通信失败。(2) 单片机每发送一条指令,需加回车符作为指令的结束符,否则TC35i不识别。(3) TC35i接受一条完整的AT指令后,TC35i并不立即执行这条指令,而是首先把刚才接到的AT指令全部反发送出来(含0DH),其次发送一个回车符和换行符,然后执行该条指令。3.4.2 AT指令集常用的AT指令集主要有:AT:测试连接是否正确。ATE0:关闭回显,程序初始化AT部分首先关闭回显。ATE1:打开回显,使用超级终端测试命令时打开。AT+CGMI:得到厂商信息。AT+CGMR:得到版本号。AT+CGSN:得到序列号(IMEI)。AT+CIMI:得到手机IMSI号码。AT+CSCS:获取、设置当前字符集,可设置为GSM或UCS2。AT+CBC:获取电量。AT+CCLK:获取设置手机时钟。AT+CNUM:机身号码,分为线路一和线路二。AT+CSQ:当前信号。AT+COPS:网络营运商。AT+CSCA:短信中心号码。AT+CPMS:选择短信储存地点,可选择ME(SIM卡)和MT(机身)。AT+CMGL:列出指定状态的短信息的PDU代码。AT+CMGR:列出指定序号的短信息PDU代码。AT+CMGS:发送短信。AT+CMGD:删除指定的短信。AT+CMGF:短信格式。分为Text模式和PDU模式。AT+CNMI:设置新短消息通知电脑端。AT+CSCA:短信中心。AT+IPR:显示串口波特率。AT+IPR=19200:更改串口波特率为19200。AT&W:保存设置本次设计主要用到的AT指令有AT+CMGS即发送短信指令、AT+CSCA即设置短信服务中心地址和AT+CMGF 选择短信格式指令。3.5 温度采集温度采集部分主要是采用DS18B20温度传感器通过连接到单片机的P37口来读取温度,其主要的流程图如图8所示。图8 检测温度流程图3.6 GSM模块发送信息在单片机检测到温度的时候,通过一定的条件将检测的温度发送到目标手机中,其中单片机与GSM模块是通过串口来进行通信的,本次设计主要用的是max232串口通信。其流程如图9所示。图9 发送信息流程图3.7 程序编译文档的创建本系统软件设计语言采用C语言,因此在本系统的语言设计中,采用了KEIL C51汇编编程工具来进行程序的开发,调试和软件仿真。美国Keil Software公司开发的Keil C51是MCS-51单片机系统的软件编译开发软件,它是一款能够兼容C语言和汇编语言的开发平台。通俗易学,为编写程序提供了良好的便利。Keil C51软件基于Windows平台,提供丰富的编程语言选择和强大的集成开发调试环境。且使用Keil C51进行软件开发时,生成语句快,代码紧凑,简单易懂。在实际中,可方便的应用于大型软件系统的开发中,是电子信息、计算机软件开发人员进行软件开发时很好的工具。(1) 在D盘创建一个文件夹,命名为“message” 。(2) 打开KEIL C51,点击PROJECT-NEW PROJECT,创建一个新的工程,在弹出的对话框中,保存选择“message”文件夹,文件名命名为“message”。(3) 点击保存,在弹出的的“ select device for targettarget1”对话框的DATA BASE中选择“Atmel”“AT89C52”,点确定。(4) 点击“new file”创建一个新文件,在文件空白处编写程序。(5) 点击“保存” ,在弹出的“save as”对话框里文件名写“message.C”。 (6) 点击“保存” ,在左边的“project workspace”栏里,右击“source group 1”,在弹出的对话框里选择“add files to groupsource group 1”,在文件类型中选“All files”,文件名选择“message.C”,然后点“add”。(7) 点

温馨提示

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

评论

0/150

提交评论