资源简介
利用51单片机控制MC35实现发送短信。在这个过程中,单片机判定MC35对AT命令的响应,判定命令是否成功。不成功再发送,直到成功。最终确保短信的发送成功。
代码片段和文件信息
#include “Includes.h“
uchar Size = MC35; //请根据您的模块型号设置型号 MC35i/MC35/TC35i/TC35四种可选
uchar code TEL_temp[20]={‘1‘‘8‘‘9‘‘5‘‘8‘‘1‘‘7‘‘3‘‘9‘‘2‘‘8‘0x0d‘2‘‘5‘};
//存对方号码0x0d后面的是代码长度,25为5个汉字长度,每加一个汉字+2
uchar F=0;
uint m;
uint n;
uchar chinit;
uchar chping;
uchar data int_case; //中断标志
uchar uart_buff[MAX_TM]; //通信程序中的缓冲 /////
uchar idata send_countreceive_count;
data uchar AT_Command_Type; //当前发送的命令类型
data uchar AT_Command_Status; //命令发出以后的返回参数
uchar idata para_temp[MAX_T]; //多用临时用
uchar data read_tmp; ///读电话本号参数
uchar data num_tmp1; ///读短信号码参数
uchar data TMP_BUF; // 万用 值
uchar data sms_tmp; ///参数代码
uchar data system_server ; //系统状态
//定时用****************
uint data timercount; //50MS定时器
uchar data timer_1S_cnt;
uchar data timer_10S_cnt;
uchar data timer_S_cnt;
uchar data timer_tmp;
//位变量****************
bit TC35_bit ;
bit txd_rxd_bit; //接收正确的指令中断
bit at_send_bit; //发送允许
/*********************************************************************
* 延时1MS的函数 *
*********************************************************************/
void delay1ms(uint x){
for(m=0;m for(n=0;n<120;n++);
}
/*********************************************************************
* C51中字符串函数的扩充 *
*********************************************************************/
uchar strsearch(uchar *ptr2){//查字符串*ptr2在*ptr1中的位置
//本函数是用来检查字符串*ptr2是否完全包含在*ptr1中
//返回: 0 没有找到
// 1-255 从第N个字符开始相同
uchar abc;
if(ptr2[0]==0) return(0);
for(a=0b=0;a if(uart_buff[a]==ptr2[b]){//第一个字符相同
for(c=a;c if(ptr2[b]==0)//比较正确
return(a+1); //返回值是整数,不含0
if(uart_buff[c]!=ptr2[b]) break;
}
b=0;
}
}
return(0);
}
/*********************************************************************
* AT指令发送程序 *
*********************************************************************/
uchar Send_AT_Command( uchar type){ //发送AT指令
//拨号时号码放在phone.number
//其他用para_temp
AT_Command_Type=type;
send_count=0;
switch(type){
case RESET_TC35: //复位TC35
strcpy(uart_buff“AT+CFUN=11“);
break;
case CHECK_PIN: //检查当前是否要输入PIN码
strcpy(uart_buff“AT+CPIN?“);
break;
case TC35_INIT: //TC35初始化命令
strcpy(uart_buff“ATE0V0“);
break;
case SIM_ID:
strcpy(uart_buff“ATE0V0+CMGF=1+CNMI=21“);
break;
case AT_IPR:
strcpy(uart_buff“AT+IPR=9600“);
break;
case SMSS_ID:
strcpy(uart_buff“ATE0V0^SSMSS=1+CNMI=21“);
break;
case SMS_CMGF: //SMS 接收方式
strcpy(uart_buff“ATE0V0+CMGF=0“);
break;
case PHONE_WRITE: //存电话号码
strcpy(uart_buff“AT+CPBW=“);
strcat(uart_buffpara_temp);
break;
case PHONE_READ: //读电话本
strcpy(uart_buff“AT+CPBR=“);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1577 2010-03-14 22:58 GSM发送程序\main.LST
文件 7891 2010-03-14 22:58 GSM发送程序\GSMdemo.hex
文件 5136 2010-03-14 22:58 GSM发送程序\GSMdemo.M51
文件 689 2010-03-14 22:51 GSM发送程序\GSMdemo.plg
文件 590 2010-03-14 22:57 GSM发送程序\main.c
文件 400 2010-03-14 16:26 GSM发送程序\GSMcs.LST
文件 13375 2010-03-14 22:58 GSM发送程序\GSM.c
文件 2064 2010-03-14 22:26 GSM发送程序\GSMdemo.Uv2
文件 510 2010-03-14 22:58 GSM发送程序\main.OBJ
文件 26429 2010-03-14 22:58 GSM发送程序\GSM.LST
文件 7567 2010-03-14 22:58 GSM发送程序\GSM.OBJ
文件 1741 2010-03-14 22:51 GSM发送程序\GSMdemo.Opt
文件 2068 2008-08-22 19:09 GSM发送程序\GSMdemo_Uv2.Bak
文件 1749 2010-03-14 22:51 GSM发送程序\GSMdemo_Opt.Bak
文件 3673 2010-03-14 22:58 GSM发送程序\GSMdemo
文件 4102 2010-03-14 22:59 GSM发送程序\Includes.h
目录 0 2010-03-14 22:59 GSM发送程序
----------- --------- ---------- ----- ----
79561 17
- 上一篇:jcrop v0.9.12
- 下一篇:google earth 高程点坐标提取软件
评论
共有 条评论