GSM模块之TC35I发送pdu短信--stc51单片机

本文介绍了如何利用STC51单片机和TC35I GSM模块发送PDU格式的短信。作者分享了一个初步测试成功的、不完善的PDU短信发送程序,并提供了PDU串的详细分析。目前程序仅适用于11位手机号码,发送Unicode文字编码,不支持16位编码和多类服务。
摘要由CSDN通过智能技术生成

这几天研究了一下pdu信息收发,今天花了大半天写出了不完善的pdu信息发送程序并调试成功了,由于竞赛时间有限,暂时不对这个发短信模块进行优化了,等有时间再重新整理好这个,完善其功能

由于此程序用于初步的测试,并且本人没有多少写程序的经验,下面的东西有点儿乱。

 

发送的pdu串格式:信息服务中心地址+pdutype+mr+接收方手机地址+pid+dsc+vp+udl+ud

 

一下是一个发送的pdu串

+8613010670500
13211147412

AT+CMGF=0
AT+CMGS=28

0891683110600705F011000B813112117414F20008A70E6A215757521D59CB53166210529F

 

分析一下:0891             683110600705F0              1100     0B81  3112117414F2  0008A7  0E         6A215757521D59CB53166210529F

长度类型          奇偶兑换加F的信息中心地址

 

下面是完整的c语言实现,只能发送信息到11位号码的手机,16位编码no class,发送Unicode文字代码

 

/*
 * GSM模块收发短信打电话,pdu模式
 * 德国西门子TC35I GSM  模块
 * 基于GSM的单片机无线通讯模块程序
 *
 *  实现发送pdu短信,只需设置信息中心与收信人电话号码,发送Unitcode码。
 *  接收短信,只分辨是否为预置号码的短信,提取信息内容(Unicode码)
 *	16bit no class编码
 *
 *	gsm.h
 *
 *	使用说明:	须设置主人电话与信息中心号码:
 *					uchar code phone[] = "13211145418";		//主人电话号码
 *					uchar code sms_center[] = "+8613010200500";//广州联通
 *
 * 				GSM开关机控制线:
 *					sbit gsm_igt = P0^3;// 点火线
 *					sbit gsm_emergoff = P0^4;//关机线
 *
 *				波特率设置:
 *					uchar code AT_IPR[] = "AT+IPR=2400";	//设置波特率
 *					void gsm_uart_init(void);函数中定时器(定时器1)
 *			
 *				拨打主人电话:
 *					gsm_call();
 *
 *				处理主人来信,内容已经存在gsm_sms_ud[]中:
 *					gsm_sms_host();
 *
 *				处理非主人信息,内容已经存在gsm_sms_ud[]中:
 *					gsm_sms_unknow();
 *	
 *				主函数调用模块如下:
 *				#include <reg52.h>
 *				#include "gsm.h"
 *				#define uchar unsigned char
 *
 *				void main(void)
 *				{
 *					gsm_init();//初始化gsm(包括串口通信设置)	
 *					while(1){
 *						gsm_scan();	//处理gsm消息
 *					}
 *				}		
 *
 *	CopyRight(C) 2010 CrazyLeen <357228736@qq.com>
 *  注意:		使用外部函数delay_s(); delay_ms();
 *				使用了定时器1
 */

#ifndef __GSM_H__
#define __GSM_H__

#include <reg52.h>
#include <string.h>
#include "delays.h"
#define uchar unsigned char

//===========================================GSM模块=====================================================
//引脚定义
sbit gsm_igt = P0^4;// 点火线
sbit gsm_emergoff = P0^3;//关机线

uchar code phone[] = "13211145418";		//主人电话号码
uchar code sms_center[] = "+8613010200500";//广州联通

//SMU
uchar code gsm_password[] = "0053004D0055";

//============================================内置短信=================================================
//Unicode字符代码for sms
//您好,GSM远程控制系统初始化成功。欢迎使用GSM远程控制系统^_^...
uchar code ud_init_ok[] = "60A8597DFF0C00470053004D8FDC7A0B63A752367CFB7EDF521D59CB53166210529F30026B228FCE4F7F752800470053004D8FDC7A0B63A752367CFB7EDF005E005F
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值