传感器课程设计(5)

2019-06-11 10:41

4.1.2 PDU 编码规则

目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用三种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。一般的PDU编码由ABCDEFGHIJKLM十三项组成。

A: 短信息中心地址长度,2位十六进制数(1字节)。 B: 短信息中心号码类型,2位十六进制数。

C: 短信息中心号码,B+C的长度将由A中的数据决定。 D: 文件头字节,2位十六进制数。 E: 信息类型,2位十六进制数。

F: 被叫号码长度,2位十六进制数。

G: 被叫号码类型,2位十六进制数, 取值同B。 H: 被叫号码,长度由F中的数据决定。 I: 协议标识,2位十六进制数。

J: 数据编码方案,2位十六进制数。 K: 有效期,2位十六进制数。

L: 用户数据长度,2位十六进制数。

M: 用户数据,其长度由L中的数据决定。J中设定采用 UCS2 编码,这里是中英文的Unicode字符。

21

4.2 主程序设计

4.2.1 主程序流

开始 是否有解防信号号 否 是 是否有振动报警信号 否 延时处理 是 否 是否有红外报警信号 是否P0.7=1 是 检测到报警信号准备发送报警信号 否 结束 TC35i是否响应 否 是 送控制信息到输出缓存区

图4.1 主程序流程图

22

4.2.2主程序清单

采用AT89C52单片机,晶振11.0592MHZ,通讯速率19200,采用TTL串口通讯手机号码缓存在28H-33H的内存中 短信内容缓存在48H-57H的内存中

短信中心的号码存放在58H-63H的内存中 密码\车辆报警\存放在64H-73H的内存中 手机号码存放在74H-7F的内存中 P1.0为手机开关机控制端 P1.1为串口接收模块数据OK P0.2为解防/设防控制端 P0.1红外信号采集端 P0.0振动信号采集端 P3.0串行接收端(RXD) P3.1串行发射端(TXD) ORG 0000H

AJMP MAIN;转入主程序

FOK EQU P1.0;定义为串口接收模块数据OK KGJ EQU P1.1;定义手机开关机控制端 SX EQU P1.2;定义手机模块上线状态

JSF EQU P0.2;定义解防/设防控制端(解防 0 设防1) ZK EQU P1.5;定义中控控制端

DY EQU P0.7;定义电源断线控制端 JJ EQU P3.6;定义紧急

DD EQU P3.7;定义低电压报告 MAIN:

SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发 MOV SCON,#50H;设置成串口1方式

MOV TMOD,#20H;波特率发生器T1工作在模式2上

MOV TH1,#0FDH;预置初值(按照波特率9600BPS预置初值) MOV TL1,#0FDH;预置初值(按照波特率9600BPS预置初值) SETB TR1;启动定时器T1

MOV PCON,#10000000B;设定SMOD为1,波特率翻倍! LCALL YUSJ;开机清除接收短消息手机号码 CLR KGJ;打开手机

MOV DPTR,#1000;延时1秒 LCALL DELAYXMS;开机延时 SETB KGJ;复位手机控制 MOV DPTR,#10000;延时10秒 LCALL DelayXmS;开机延时

LCALL ATEOK;开机发送ATE指令!

LCALL CNMI ;发送(AT+CNMI=1,1,0,0,1),短信到达TE LCALL SCQBDX;调用删除SIM卡中所有短信的子程序 START:

23

LCALL XRDXZX;调用询问手机SIM卡中短信中心号码子程序 LCALL XRSJ;读出授权电话号码及密码,写入内存中 LCALL MJCS LCALL MJCS

CLR SX;模块上线 KKS:

JB RI,UARTI;检测到RI(串口中断标志)变1就退出 JNB BJ,BAOJIN;直接报警

JB RI,UARTI;检测到RI变1就退出 JNB DY,DYBJ;电源报警

JB RI,UARTI;检测到RI变1就退出 JNB CM,CMBJ

JB RI,UARTI;检测到RI变1就退出 JNB XL,XLBJ

JB RI,UARTI;检测到RI变1就退出 JNB JJ,JJBJ

AJMP KKS;循环监测 MDBJ:

LCALL FMDBJ;调用鸣笛报警响应子程序 AJMP KKS JDBJ:

LCALL FJDBJ;调用继电器报警响应子程序 AJMP KKS

4.3电话呼入提示子程序

RING:

CLR RI;清楚串口中断标志

MOV A,SBUF;将串口寄存器中接收到的数据给A CJNE A,#52H,RING1;判断串口数据R CLR RI;软件清除串口中断标记 LCALL PDRI;等待下一个串口数据

MOV A,SBUF;将串口寄存器中接收到的数据给A CJNE A,#49H,RING1;判断串口数据I CLR RI;软件清除串口中断标记 LCALL PDRI;等待下一个串口数据

MOV A,SBUF;将串口寄存器中接收到的数据给A CJNE A,#4EH,RING1;判断串口数据N CLR RI;软件清除串口中断标记 LCALL PDRI;等待下一个串口数据

MOV A,SBUF;将串口寄存器中接收到的数据给A CJNE A,#47H,RING1;判断串口数据G CLR RI;软件清除串口中断标记

24

LCALL PDDA;调用串口接收0D/0A数据子程序 MOV DPTR,#100;延时0.1秒 LCALL DelayXmS

LCALL CLCC;调用来电显示指令子程序 跳过20个内存(: 1,1,4,0,0,\) MOV R3,#20;定义接收数据的总长度 LCALL TGSJ;调用接收串口数据子程序 LCALL DHHM;判断来电号码 JZ GJ

跳过13个内存

MOV R3,#13;定义接收数据的总长度 LCALL TGSJ;调用接收串口数据子程序 MOV DPTR,#100;延时0.1秒 LCALL DelayXmS 检查是否继续呼入

等待第二次RING电话呼入提示 CLR RI;软件清除串口中断标记

LCALL PDDXRI;5秒内检测串口是否有数据返回? JNC RING1;如果5秒内没检查到铃音,就退出 震铃2次后关机,解防/设防 震铃5次后进入通话状态 跳过8个内存

MOV R3,#8;定义接收数据的总长度 LCALL TGSJ;调用接收串口数据子程序 4.4查询信息字子程序

PDCX:

CLR RI;软件清除串口中断标记 LCALL PDRI;等待下一个串口数据

MOV A,SBUF;将串口寄存器中接收到的数据给A CJNE A,#36H,PDJF;判断串口数据6 CLR RI;软件清除串口中断标记 LCALL PDRI;等待下一个串口数据

MOV A,SBUF;将串口寄存器中接收到的数据给A CJNE A,#37H,PDJF;判断串口数据7 CLR RI;软件清除串口中断标记 LCALL PDRI;等待下一个串口数据

MOV A,SBUF;将串口寄存器中接收到的数据给A CJNE A,#45H,PDJF;判断串口数据E CLR RI;软件清除串口中断标记 LCALL PDRI;等待下一个串口数据

MOV A,SBUF;将串口寄存器中接收到的数据给A

25


传感器课程设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:学校教育目标及愿景(精)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: