基于GSM的远程遥控开关插座一种短信控制远程遥控开关插座终稿 -

更新时间:2024-04-16 13:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程设计

题 目 基于GSM的远程遥控开关插座

学生姓名 刘乐乐 学号 0810064082 所在院(系) 物理与电信工程学院 专业班级 电信082 指导教师 卢超 完成地点 实验楼521室

2011年12月10日

陕西理工学院课程设计

基于GSM的远程遥控开关插座

作者:刘乐乐

(陕理工理工学院院(物电学院)电子信息科学与技术专业082班级,陕西 汉中 723000)

指导教师:卢超

[摘要]针对生活中需要一款能远程控制用电器开断的产品。设计出一款利用GSM网络,以AT89S52

为控制核心的远程遥控开关插座。详细分析了TC35i的AT指令、发送和接受短消息的功能等问题。设计了系统的GSM模块电路、单片机驱动继电器电路及单片机与TC35i进行数据通信的软件,系统抗干扰能力强。实验表明,该远程遥控系统性能稳定,工作可靠、简单实用,维护方便,具有广泛的应用前景。

[关键词]AT89S52,GSM,TC35i,继电器,短信收发

引言

随着全球移动通信系统和通信网络的迅速普及竞争的日益激烈,新技术和新业务的开发和应用十分重要。如果把TC35i模块与单片机结合,就可以实现单片机上的数据距离传输,这在现实应用中是十分有用的。TC35i模块与单片机实现的短信息处理系统不仅便于集成,而且成本低,即可以应用在控制智能家电,智能停车场管理系统等日常生活中,,也可以应用应用在地下油田勘探系统或架设通信路线难的地方,不在受地形条件限制。本文设计的GSM远程遥控开关插座,可以远距离的对家用电器等电类产品进行开关,有着诱人的应用前景。

1 总体方案设计和论证

系统主要分为远程无线通信模块、控制电路模块、继电器驱动电路模块、电源模块。运用单片机和全球通模块TC35i设计出一种利用短信实现远程遥控开关插座的装置。其传输距离远、安全性高、使用方便。对各模块的实现分别有以下几种方案: 1.1远程无线通信模块

方案一:采用PTR2000等无线模块来实现开关插座的远程控制,其构成的外围电路简单、容易实现。但是其传输的距离比较近。难以实现设计中远程遥控开关插座的功能。

方案二:采用西门子公司推出的GSM模块TC35i,利用其短消息功能可以很容易的对开关插座进行远程的控制。其传输距离远、可靠性高。故在本设计中远程无线通信模块选用此方案。

1.2控制电路模块

方案一:采用可编程逻辑器件(PLD)实现。PLD工作速度较快且稳定,并可以在系统编程,能够很方便地实现控制的随时修改。但价格较贵,实现较为复杂,不适于本设计。

方案二:采用 AT89S52单片机来实现。单片机体积小、价格便宜、功能齐全。而软件编程灵活、还可通过软件编程实现其它附加功能。故在本设计中控制电路模块选用此方案。 1.3继电器驱动电路模块

方案一:采用uln2003等继电器驱动芯片。由于手头没有这些芯片。所以放弃此方案。 方案二:采用三极管构成的继电器驱动电路。利用此方案可以很容易的实现单片机控制继电器的通断。其电路实现容易、价格低廉、稳定性高。故在本设计中采用此方案。

第1页 共20页

陕西理工学院课程设计

1.4电源模块

方案一:采用购买变压器自行设计电源。其电路简单、价格低廉。但是TC35i对电源的要求比较苛刻、自制的电源体积较大。这使得产品在使用起来不是很方便。故放弃此方案。

方案二:采用购买的适配器来设计电源。适配器输出的直流电压比较稳定,很容易通过相应的电源变换电路使其输出比较稳定的电压为系统供电,且自身的体积较小,使用起来方便。故在本设计中使用此方案。

2 系统硬件设计

2.1总体框图

GSM远程遥控开关插座主要由远程无线通信模块、控制电路模块、继电器驱动电路模块和电源模块组成。用户通过手机发送短消息给数据终端,该信息是以TEXT编码方式发送,内容为字符,不能为中文汉字。数据终端使用TC35i模块接收,然后将接收到的信息发送给单片机,单片机通过判断短消息的内容来控制继电器的通断,从而控制插座的通断。在单片机响应完用户的短消息指令后,单片机会控制TC35i给用户回一条短信,表明自己已经执行了用户的命令。系统设计了两个插座,一个两孔插座和一个三孔插座。短消息’1’和‘2’主要用于控制三孔插座。其中发送短消息’1’表示接通三孔插座,短消息’2’表示断开三孔插座。短消息’3’和‘4’主要用于控制两孔插座。其中发送短消息’3’表示接通两孔插座,短消息’4’表示断开两孔插座。系统在上电时,其中三孔插座不带电,两孔插座带电。系统框图如图2.1所示:

用户手机GSM网络SIM卡插座继电器单片机TC35i模块

图2.1 系统框图

2.2远程无线通信模块外围电路的设计

无线通信模块采用的是西门子公司推出的GSM(TC35i)模块,可以实现无线数据传输,语音传输,短信功能。TC35i主要特性与技术指标包括以下几点:

①频段为双频GSM900MHz和GSM1800MHz;②支持数据、语音、短消息和传真;③高集成度(54.5mm×36mm×3.6mm);④质量为9g;⑤电源电压为单一电压3.3V-4.8V;⑥可选波波特率300bps-115kbps;⑦电流消耗——休眠状态为3.5mA;空闲状态为25 mA;发射状态为300 mA(平均),2.5A峰值;⑧温度范围——正常操作-20℃—+55℃,存放-30℃—+85℃;⑨SIM电压为3V/1.8V。

TC35i 有 40 个引脚,通过一个ZIF(Zero Inser- tion Force)连接器引出。这 40 个引脚可

以划分为五类,即电源、数据输入/输出,SIM卡、音频接口和控制。第 1~14 脚为电源部分,

1~5 为电源电压输入端 Vbatt+,6~10 为电源地GND,11、12 为充电引脚,13为对外输出电压(共外电路使用),14 为 ACCU-TEMP(接负温度系数的热敏电阻);24~29为SIM卡引脚,分别为CCIN 、CCRST、CCIO CCCLK 、CCVCC和CCGND。33~40 为语音接口,用来接电话手柄 15、30、31和32 脚为控制部分,15为点火线 IGT(Ignition) 当TC35i 通电后必须给IGT一个大于100ms低电平,模块才启动30为RTC backup ,31为Power down ,32为SYNC ,16~23 为数据输入 / 输出,分别为 DSR0、RING0 、RxD0 、TxD0、CTS0、RTS0、DTR0 和 DCD0。

TC35i模块的外围电路连接图如图2.2所示:

第2页 共20页

陕西理工学院课程设计

图2.2 TC35i 模块的外接电路

图2.2中U1为TC35i,C1为SIM卡。TC35i的24~29脚是和SIM卡通信用的。其连接方式为(CCIN—VCC,CCRST—RESET,CCIO—IO,CCCLK—CLK,CCVCC—VCC,CCGND—GND)。

TC35i的32引脚SYNC通过一个三极管控制LED1构成了信号显示模块。1、LED1灯灭,表明TC35i电源关闭,处于休眠、报警或单纯的充电模式;2、LED1 600ms亮/600ms灭,表明未插入SIM卡,或者个人身份未登录记/已注销,或者网络正在搜寻中,或者正在进行用户身份鉴定,或者网络注册正在进行中;3、75ms亮/3s灭,表明网络注册成功(控制通道和用户交换信息完成),无来电;4、LED1灯亮,依据不同的呼叫类型,声音呼叫,数据呼叫,在建立或者完毕时的状态。

TC35i的RING0引脚连接一个电阻和发光二极管接VCC构成了来电显示模块,当有电话打进来时,LED2 1秒亮,4秒灭。

TC35i的触发点火信号端/IGT,通过一个简单的RC电路使模块上电后自动搜索网络并注册,进入正常工作区。

电路中个元件的参数如下:

R1=10K R2=0.47K R3=100K R4=0.33K C1=330uf C2=C3=C4=C5=C6=0.1uf 单片机与TC35i的连接方式如图2.3所示:

图2.3 单片机与TC35i的连接电路

TC35i采用4V供电,其引脚RXD0接单片机的RXD,TXD0接单片机的TXD。GND接单片机的GND。

第3页 共20页

陕西理工学院课程设计

2.3 控制电路的设计

系统核心的控制器选用的是单片机AT89S52; 8K字节在系统可编程Flash存储器;1000次擦写周期;全静态操作:0Hz-33MHz;三级加密程序存储器;32个可编程I/O口线;三个16位定时器/计数器;六个中断源;全双工UART串行通道;低功耗空闲和掉电模式;掉电后中断可唤醒;看门狗定时器;双数据指针;掉电标识符 。

图3为单片机构成的控制电路,其P1口接8个发光二极管,用来显示TC35i的工作状态。LED0亮表示初始化GSM;LED1亮表示选择短消息格式为TEXT;LED2亮表示检查网络的的注册状态;LED3亮表示设置短信通知命令,判断是否收到新的短信,并删除可能是上次收到的短信;LED4亮表示有新的短信进入;LED5亮,读取新短信;LED6亮,填写中心号码;LED7亮,填写目的手机号码;LED全亮表明填写发送内容,向用户手机发送回复短信。

单片机和TC35i的连接方法为:

TXD—TXD0;RXD0—RXD0;GND—GND;

单片机的P2.0、P2.3、P2.4、P2.7用于控制四路继电器。 电路中各元件的参数为:

R0=R1=R2=R3=R4=R5=R6=R7=1K R9=10K CRYSTAL=11.0592M C1=C2=30pf C3=10uf C4=0.1uf 单片机的控制电路如图2.4所示:

图3 单片机构成的控制电路

图2.4 单片机控制电路

2.4 继电器驱动电路的设计

继电器驱动电路的设计如图2.5所示:

第4页 共20页

陕西理工学院课程设计

图2.5 继电器驱动电路

图2.5中三极管的型号9013,二极管D1的型号为IN4007,继电器RL1为5脚的5V继电器(10A/250AC),电阻R1的阻值为5.6K,VCC为5V。

单片机的I/0口输出低电平时,三极管T导通,继电器通电,常开触点闭合,常闭触点断开,三极管T导通时,其必须工作在饱和区才能保证继电器通电,触点动作。单片机输出高电平时,三极管截止,继电器不工作。

图2.5中的反相器不能取掉,如果取掉电路将无法正常工作,二极管D1可以消除继电器通电后产生的感生电压,起到保护电路的用。

单片机的P2.0、P2.3、P2.4、P2.7分别接四路继电器驱动电路,P2.0、P2.3这两路分别接三孔插座的零线和火线(接常开触点),P2.4、P2.7这两路分别接两孔插座的零线和火线(接常闭触点),系统在上电后,两孔插座是有市电的,而三孔插座没有电。 2.4 电源电路的设计

系统分为两部分供电,一部分为TC35i构成的TC35i模块,另一部分为单片机构成的继电器控制插座模块。

TC35i模块的供电电路如图2.6所示:

图2.6 TCC5i 模块的供电电路

电路中个元件的参数为:

R1=3.6K R2=1.5K R3=10K

C1=100uf C2=C3=C4=470uf C5=0.1uf L1=100uH

LM2576为开关型型降压稳压器,能驱动3A的负载,有优异的线性和负载调整能力。固定的输出电压有3.3V、5V、12V、15V。图4中其输出的电压VCC为4V;D2管子的型号为IN5822。

图2.6中输入信号为适配器输出的12V直流电源,输出电压为VCC,该电压为TC35i模块供电。

第5页 共20页

陕西理工学院课程设计

电源适配器输出的12V直流电源经7805稳压为5V后为单片机构成的继电器控制插座模块的系统供电。

3 软件设计

系统的软件设计主要是检测用户是否通过手机给模块发送短消息,当用户通过手机给系统发送命令时,系统接收到短消息并将其通过串口发送给单片机,单片机解读出短信,然后控制插座的通断。从而实现用户远程遥控开关插座。

系统程序软件设计的重点再对单片机的编程。通过向TC35i写入不同的AT指令,能完成多种功能,如网络登录、读取SIM卡上电话号码、发送SMS消息,接收SMS消息等。系统中与GSM有关的GSM AT指令如表3.1所示:

表3.1 与SMS相关的若干GSM AT指令

AT 指令 AT+CREG AT+CMGD AT+CMGF AT+CMGR AT+CMGS AT+CNMI AT+CSCA AT&F ATE0 功能 检测网络注册状态 Delete SMS message (删除 SIM 卡内存的短消息) Select SMS message format (选择短消息信息格式 Read SMS message (读短消息) Send SMS message (发送短消息) New SMS message indication (显示新收到的短消息) SMS service center address (短消息中心地址) 格式化命令,初始化GSM 清除回显 0-PDU 1-文本) 整个程序采用系统C 语言编程,使程序看起来更加清晰,在整个过程中我们都是模块化调试,可靠性好。系统的主程序流程图如图3.1所示:

串口初始化

清除回显命令检测SIM卡,TC35i与单片机进行通信,控制插座的通断 图3.1 主程序流程图

在主程序中通过一个死循环程序在不停的检测SIM卡,在这个检测的子程序中,单片机通过向TC35i写入不同的AT指令,可以完成单片机与TC35i之间的通信。

SIM卡检测的子程序如图3.2所示:

第6页 共20页

陕西理工学院课程设计

选择短消息格式为text填写短消息中心号码判断SIM卡是否注册成功?否是否中心号码是否填写成功?是填写目的手机号码否显示新收到的短消息删除SMS信息判断是否有新的短消息进入?否是读取短消息是手机号码填写是否成功?是填写发送内容否短信发送是否成功?单片机解读短消息,根据用户的命令控制插座的通断

图3.2 SIM卡检测的子程序

该子程序通过单片机向TC35i写入AT指令,对TC35i进行初始化设置,并使程序判断是否有新的短消息进入,一旦有短消息进入,TC35i就会通过串口将短消息发送给单片机,单片机解读短信,根据用户的指令控制插座的通断。(短消息’1’和‘2’主要用于控制三孔插座。其中收到短消息’1’表示接通三孔插座,短消息’2’表示断开三孔插座。短消息’3’和‘4’主要用于控制两孔插座。其中收到短消息’3’表示接通两孔插座,短消息’4’表示断开两孔插座)。接着单片机控制TC35i通过填写短消息中心号码、目的手机号码、及发送的内容。给用户发送一条回应信息。最后程序会删除用户给TC35i发送的信息。再次判断是否有新的短消息进入,有新的短消息进入时会再次执行上述过程。

串口初始化的子程序如图3.3所示:

设置串行口为工作方式1,允许接收设置定时器1为工作方式2,8位自动重装PCON为0,波特率不倍频定时器1装入初值允许串口中断定时器1开始工作 图3.3 串口初始化子程序

串口初始化的子程序设置波特率为9600(单片机晶振为11.0592M),其接收到的数据在串口中断服务程序中会做以处理,发送数据时,需调用一个简单的子程序。该子程序只需要判断TI这个这个发送标志位就能实现数据的发送。其程序流程图如图3.4所示:

第7页 共20页

陕西理工学院课程设计

TI是否为1?否是将发送的数据赋给SBUF 将TI置零图3.4 串口发送数据子程序

在图3.2的程序流程图中涉及到填写目的手机号码的子程序、填写本地中心号码的子程

序、填写回复短信内容的子程序、网络查询的子程序、发送模式选择子程序、短信读取子程序、短信删除子程序、清除回显子程序、短信通知子程序和GSM初始化子程序。这些子程序都是通过单片机向TC35i写入AT指令来实现的,程序中用到的若干GSM AT指令如表3.1所示。

GSM初始化子程序(格式化命令)的流程图如图3.5所示: 发送“AT&F”指令,判断是否发送完毕?

否是

发送0x0D

发送0x0D

发送0x0A 图3.5 GSM初始化子程序 在图3.5中,单片机通过串口向TC35i发送AT&F指令,实现GSM的格式化,在发送AT&F时,利用一个for循环,在调用串口发送子程序,可以实现AT&F的发送,单片机通过串口向TC35i发送0x0D和0x0A,实际就是在向TC35i发送回车符,0D+0A是回车, 0D为空格,0A为换行,这些都在ASC(美国信息交换标准代码)码表中可以查到。 回复短信内容的子程序流程图如图3.6所示: 判断系统收到的短信内容根据收到的短信发送相信的回送内容发送0x1A发送0x0D发送0x0A 图3.6 短信回复内容子程序 在图3.6所示的流程图中,系统会根据收到的内容(1、2、3、4)回复不同的短信给用户,表明自己已经执行了用户的命令。回复短信内容时程序也是通过一个for循环,然后将要回复的内容通过单片机发送给TC35i。发送0x1A表明系统的短信内容已经填写完毕,0x1A是一个结束符。这是系统在填写完发送内容后必须发送的,否则短信将不能发送。 在图3.2的程序流程图中涉及到的其它子程序和图3.5、图3.6的程序流程图基本类似。都是通过单片机向TC35i写入不同的指令,填写不同的内容、发送回车来实现的。 第8页 共20页

陕西理工学院课程设计

4 系统的调试与测试

将SIM卡插入板子上的卡槽,适配器和三孔插座分别插入通有市电的插板,等上约一分钟左右,发现TC35i模块上的绿色发光二极管LED1 75ms亮/3s灭,表明SIM卡网络注册成功。与此同时单片机P1口的发光二极管会从P1.0口到P1.2口依次的点亮和熄灭,最后P1.3口的发光二极管会发亮。这个二极管常亮表明系统在判断是否接收到新的短消息,如果接收到新消息此灯会熄灭的。

给系统的三孔插座和两孔插座分别接入小太阳和台灯,保持小太阳和台灯的开关是闭合的,此时会发现台灯是亮的,而小太阳是灭的,因为系统在上电后三孔插座没电,两孔插座有电。用手机给装在系统上的SIM卡发送数字短信‘1‘,过一会发现TC35i模块上的红色发光二极管LED2发亮,这表明SIM卡收到了新的短信,接着会发现P1.3口的发光二极管熄灭,P1.4口到P1.7口的发光二极管依次的点亮和熄灭,与此同时会发现小太阳开始工作。当P1.0口到P1.7口的灯全亮时表明系统已经给用户发回复了执行其命令的信息,不一会儿,用户的手机上将收到系统给用户的回复信息。而单片机P1.3口的发光二极管又会再次长亮。

短消息’1’和‘2’主要用于控制三孔插座。其中发送短消息’1’表示接通三孔插座,短消息’2’表示断开三孔插座。短消息’3’和‘4’主要用于控制两孔插座。其中发送短消息’3’表示接通两孔插座,短消息’4’表示断开两孔插座。

依次用手机给给系统发送数字短信‘2’、‘4’、‘3’。会发现,小太阳熄灭、台灯熄灭和发亮。

测试通过,测试结果系统能正常工作,完成本设计。

5 收获体会和改进意见

5.1 收获体会

1、掌握了multisim、proteus、protel、keil uvision等设计电路的相关软件。

2、掌握了示波器、函数信号发生器、交流毫伏表、直流电源等实验仪器的使用方法。 3、掌握了论文、研究报告等书面性材料的书写方法。 4、具备了一定的电路设计能力和C语言编程能力。

5、学会了对各类芯片其资料的查阅方法以及如何在硬件电路中对其使用的方法。 5.2 改进意见

系统如果在外接一个显示单元,在液晶上显示出时间、日期、以及插座的通断状态等其它信息,这样构成一个可视化的界面,会使用户使用起来很方便,而且功能更加完美和强大。

6 结语

系统设计并实现了一种短信遥控开关插座,该产品统结构简单、价格低廉、实用性好、对于家庭在使用各类用电器时,提供了远程的无线遥控开关。是一款非常不错的家用产品,有很大的发展前景。

该系统虽然有很多优点但是也存在一些缺点,系统的板子由于是手工焊接的,所以体积比较大。没有外壳,使用起来不是很方便。

参考文献

[1] 林凌;李刚;丁茹,等. 新型单片机接口器件与技术[M] .西安:西安电子科技大学,2005. [2] 潘斌;郭红霞. 短信收发模块TC35i的外围电路设计[M].-单片机与嵌入式系统应用2004(7):38-41.

[3] 周嵘;潘晓斌;郑堤. TC35与微处理器的短消息接口方法[J].微计算机信息,2004(09).

[4] 彭涛;袁涛;谭涛. TC35i GSM 模块的底纹波噪声供电设计[J]. 微计算机信息,2007,31(2)

第9页 共20页

陕西理工学院课程设计

3-5.

[5] 宣彩平;王皓;邹国良利用. GSM无线模块发送短消息[J].计算机应用,2004(05). [6] 李鸿. 用单片机控制手机收发短信息[J].电子技术应用,2003,29(1).

[7] TC35i cellular engine hardware interface description.SiemensVersion00.03.www.Siemens.com 2003.

[8] 李家福;余立建. 基于GSM网络的智能监控模块设计[J].电子技术应用,2006,32(3)

第10页 共20页

陕西理工学院课程设计

附录1 样机实物照片如图A1和B1所示:

图A1 样机实物照片

图B1 样机实物照片

第11页 共20页

陕西理工学院课程设计

附录2 样机程序

GSM_TC35i.c程序如下: #include #include #include sbit P2_0=P2^0; sbit P2_3=P2^3; sbit P2_4=P2^4; sbit P2_7=P2^7; #define uint unsigned int #define uchar unsigned char #define RST 0X01 #define CMGF 0X02 #define CMGD 0X03 #define CREG 0X04 #define CMGR 0X05 #define CMGS 0X06 #define CSCA 0X07 #define ATDAT 0X08 #define TC35RET 0X00 #include\void ATE0(void); void delay_GSM(uint); void init_serialcom( void ); void send_uart( unsigned char); void ATNAME(void); void AT_CMGS(void); void AT_CSCA(void); void AT_RST(void); void AT_CREG(void); void AT_CMGF(void); void AT_CMGR(void); void AT_CMGD(void); main() {

//--------初始化------------------- P2=0xff; init_serialcom(); delay_GSM(100); ATE0();

//Displaybyte(0X01); delay_GSM(100); TC35_MAX=0; ATE0();

//Displaybyte(0X02); delay_GSM(100);

第12页 共20页

陕西理工学院课程设计

ATE0();

delay_GSM(100);

for(i_TC35=0;i_TC35<=69;i_TC35++) {TC35_RE[i_TC35]=0;} i_TC35_RECE=0; TC35_MAX=0; ATE0(); while(1) {

RECEIVE_MESSAGE(); } }

GSM.h程序如下:

//---------------------------------------------- //本文件为存放子函数区域

//子函数功能为标准发送AT指令函数 //------------------------------------------------ #include #define uint unsigned int #define uchar unsigned char #define RST 0X01 #define CMGF 0X02 #define CMGD 0X03 #define CREG 0X04 #define CMGR 0X05 #define CMGS 0X06 #define CSCA 0X07 #define ATDAT 0X08 #define SMST 0X09 #define TC35RET 0X00

uchar TC35_CON,SMS_NUM,SMS_RECEIVE; uchar read_flag; uchar i_TC35_RECE; uchar i_receive, TC35_RE[80],

TC35_MAX, i_TC35;

///////需要改动的地方//////其他省份请自己百度下///////////////////////////////////////////// uchar code TC_MDSJ2[]={\ //目的手机地址, uchar code TC_ZXH2[]={\ //汉中移动本地中心号。 ////////其他地方不要乱动////////////////////////////////////////////////////////

uchar code TC_MDSJ1[]={\T+CMGS=\ //目的手机地址, uchar code TC_ZXH1[]={\T+CSCA=\ //本地中心号。 uchar code TC_FSNR[]={\ //发送短信内容。 uchar code TC_FSNR2[]={\ //发送短信内容。 uchar code TC_FSNR3[]={\ //发送短信内容。

第13页 共20页

陕西理工学院课程设计

uchar code TC_FSNR4[]={\ //发送短信内容。 uchar code TC_WLZT[]={\T+CREG?\

//网络状态查询

uchar code TC_MSXZ[]={\T+CMGF=1\ //发送模式选择。 uchar code TC_DQML[]={\T+CMGR=1\ //短信读取命令。 uchar code TC_SCML[]={\T+CMGD=1\ //短信删除命令。 uchar code TC_ATF[]={\T&F\ //格式化命令。 uchar code TC_ATE0[]={\void delay_GSM(uint i) {unsigned int i_delay,j_delay; for(i_delay=0;i_delay

void init_serialcom( void ) {

SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr //UART为模式1,8位数据,允许接收

TMOD |= 0x21 ; //TMOD: timer 1, mode 2, 8-bit reload //定时器1为模式2,8位自动重装 PCON |= 0x00 ; //SMOD=1;

TH1 = 0xFD ; //Baud:9600 fosc=\ IE |= 0x90 ; //Enable Serial Interrupt TR1 = 1 ; // timer 1 run TI=1; } //向串口发送一个字符 void send_uart( char a_s) { // TI= 0 ;

while (TI!=1){;} SBUF=a_s; TI= 0 ;

} //串口接收中断函数

void serial () interrupt 4 using 3 {

if (RI) { RI = 0 ; i_receive=SBUF;

TC35_RE[i_TC35_RECE++]=i_receive; // i_TC35_RECE++;

if(i_TC35_RECE>TC35_MAX)

{TC35_MAX=i_TC35_RECE;}

}

第14页 共20页

//清除回显命令

uchar code TC_SMS_1[]={\ //短信通知命令

陕西理工学院课程设计

}

void SMS_CONFIG() { uchar i;

for(i=0;i

void ATE0() { uchar i;

for(i=0;i

void ATNAME() {//I AM OK uchar i;

if(SMS_RECEIVE=='1')

{for(i=0;i

{for(i=0;i

{for(i=0;i

{for(i=0;i

//写目的手机的 void AT_CMGS()

{//AT+CMGS=13132061066 uchar i;

for(i=0;i

第15页 共20页

陕西理工学院课程设计

send_uart(0X22);

for(i=0;i

//写信息中心号 void AT_CSCA()

{//AT+CSCA=+8613010130500 uchar i;

for(i=0;i

for(i=0;i

//AT复位指令 void AT_RST() { uchar i;

for(i=0;i

//AT网络状态查询指令 void AT_CREG() { uchar i;

for(i=0;i

//AT接收格式指令 void AT_CMGF()

第16页 共20页

陕西理工学院课程设计

{//AT+CMGF=1 uchar i;

for(i=0;i

//AT短消息读取指令 void AT_CMGR() {//AT+CMGR=1 uchar i;

for(i=0;i

//AT短消息删除指令 void AT_CMGD() {//AT+CMGD=1 uchar i;

for(i=0;i

void RECEIVE_MESSAGE() {delay_GSM(10); if(TC35_MAX>0) {

if(TC35_CON==RST){

if((TC35_RE[2]=='O')&&(TC35_RE[3]=='K')) { P1=0xfe;

TC35_CON=TC35RET; delay_GSM(10); AT_CMGF(); }

//如果不成功则重新关闭回显 else

{delay_GSM(10);ATE0();} }

第17页 共20页

陕西理工学院课程设计

else if(TC35_CON==CMGF)//选择短消息格式 {

if((TC35_RE[2]=='O')&&(TC35_RE[3]=='K')) { P1=0xfd;

TC35_CON=TC35RET; delay_GSM(10); AT_CREG(); }

else{AT_CMGF();} }

else if(TC35_CON==CREG) {

if(((TC35_RE[9]=='0')&&(TC35_RE[11]=='1'))||((TC35_RE[9]=='0')&&(TC35_RE[11]=='5'))) { P1=0xfb;

TC35_CON=TC35RET; SMS_CONFIG(); } else{ AT_CMGF(); } }

else if(TC35_CON==SMST) {

if((TC35_RE[2]=='O')&&(TC35_RE[3]=='K')) { P1=0xf7;

TC35_CON=TC35RET; delay_GSM(10); AT_CMGD(); } }

else if(TC35_CON==CMGD) {

if((TC35_RE[2]=='+')&&(TC35_RE[3]=='C')&&(TC35_RE[4]=='M')&&(TC35_RE[5]=='T')&&(TC35_RE[6]=='I')) //如果符合条件说明SIM卡接收到短信 { P1=0xef;

TC35_CON=TC35RET; if(TC35_MAX==16)

{SMS_NUM=(TC35_RE[14]-0x30);} else if(TC35_MAX==17)

{SMS_NUM=((TC35_RE[14]-0x30)*10+(TC35_RE[15]-0x30));} delay_GSM(100); AT_CMGR();

第18页 共20页

//短信删除命令 //短信通知命令 //网络状态查询

陕西理工学院课程设计

} }

else if(TC35_CON==CMGR)

{if((TC35_RE[2]=='+')&&(TC35_RE[3]=='C')&&(TC35_RE[4]=='M')&&(TC35_RE[5]=='G')&&(TC35_RE[6]=='R'))//说明读取短信成功 { P1=0xdf; delay_GSM(100);

SMS_RECEIVE=TC35_RE[TC35_MAX-9]; switch(SMS_RECEIVE) {

case '1':P2_0=P2_3=0;break;//三孔插座开 }

delay_GSM(50); AT_CSCA(); } }

else if(TC35_CON==CSCA) {

delay_GSM(10);

if((TC35_RE[2]=='O')&&(TC35_RE[3]=='K')) {

TC35_CON=TC35RET; P1=0xbf;

delay_GSM(100);AT_CMGS(); }

//如果没出现CALL READY 则重新初始化 else if((TC35_RE[2]=='+')) { delay_GSM(100);AT_CSCA();} else{AT_CSCA();} }

else if(TC35_CON==CMGS){ delay_GSM(10);

if((TC35_RE[2]==0X3E)&&(TC35_RE[3]==0X20)) { P1=0x7f;

TC35_CON=TC35RET;

delay_GSM(100);ATNAME();} //填写发送内容 else{AT_CMGS();} }

//发送完毕返回继续扫描接收 else if(TC35_CON==ATDAT){

第19页 共20页

//填写目的手机号码

//填写中心号码

case '2':P2_0=P2_3=1;break;//三孔插座断 case '3':P2_4=P2_7=1;break;//两孔插座开 case '4':P2_4=P2_7=0;break;//两孔插座断

陕西理工学院课程设计

delay_GSM(10); if(TC35_RE[2]=='+') {

P1=0;//短信发送成功 TC35_CON=TC35RET; delay_GSM(1000); AT_CMGD(); P1=0xff; } else{

for(i_TC35=0;i_TC35<=29;i_TC35++) {TC35_RE[i_TC35]=0;} i_TC35_RECE=0; TC35_MAX=0;

delay_GSM(1000);AT_CMGS();} }

//复位接收组

for(i_TC35=0;i_TC35<=79;i_TC35++) {TC35_RE[i_TC35]=0;} i_TC35_RECE=0; TC35_MAX=0; } }

第20页 共20页

陕西理工学院课程设计

delay_GSM(10); if(TC35_RE[2]=='+') {

P1=0;//短信发送成功 TC35_CON=TC35RET; delay_GSM(1000); AT_CMGD(); P1=0xff; } else{

for(i_TC35=0;i_TC35<=29;i_TC35++) {TC35_RE[i_TC35]=0;} i_TC35_RECE=0; TC35_MAX=0;

delay_GSM(1000);AT_CMGS();} }

//复位接收组

for(i_TC35=0;i_TC35<=79;i_TC35++) {TC35_RE[i_TC35]=0;} i_TC35_RECE=0; TC35_MAX=0; } }

第20页 共20页

本文来源:https://www.bwwdw.com/article/wh1p.html

Top