TC35TC35i或MC35MC35i与MCU51单片机打电话、短信实验程序

上传人:无*** 文档编号:77643296 上传时间:2022-04-20 格式:DOC 页数:17 大小:82.01KB
收藏 版权申诉 举报 下载
TC35TC35i或MC35MC35i与MCU51单片机打电话、短信实验程序_第1页
第1页 / 共17页
TC35TC35i或MC35MC35i与MCU51单片机打电话、短信实验程序_第2页
第2页 / 共17页
TC35TC35i或MC35MC35i与MCU51单片机打电话、短信实验程序_第3页
第3页 / 共17页
资源描述:

《TC35TC35i或MC35MC35i与MCU51单片机打电话、短信实验程序》由会员分享,可在线阅读,更多相关《TC35TC35i或MC35MC35i与MCU51单片机打电话、短信实验程序(17页珍藏版)》请在装配图网上搜索。

1、/* * * * TC35/TC35i或MC35/MC35i与MCU51单片机打电话、短信实验程序 * * * * 功能:短信控制8路发光管的亮与灭 * * 短信读取8路发光管的当前开关状态 * * 通过发短信控制蜂鸣器报警鸣音 * * 按键控制功能: * * 1、按板上第一个按键,自动拨打程序中设定好的目标电话号码 * * 2、按板上第二个按键,自动发送DS18B20温度传感器测到的温度值对目标手机 * * 3、按板上第三个按键,自动发送测试“DEMO”短信给程序中设定的目标手机 * * 4、按板上第四个按键,控制液晶显示内容,用户可以自定义显示内容 * */#include#define

2、uchar unsigned char#define uint unsigned int#define RxIn 90/定义接收的数组长度为90uchar code AT=AT;/握手信号uchar code ATE=ATE; /关回显uchar code AT_CNMI=AT+CNMI=2,1;/设置这组参数来了新信息直接显示到串口,不作存储uchar code AT_CSCA=AT+CSCA=+8613010360500;/设置服务中心号码uchar code AT_CMGF=AT+CMGF=1;/设置短信的格式为text格式uchar code AT_CMGR=AT+CMGR=;/读取短

3、信指令uchar code AT_CMGS=AT+CMGS=;/发送短信指令uchar code AT_CMGD=AT+CMGD=;/发送短信指令uchar code successfully=Operate Successfully!;/发送操作成功信息到目标号码uchar code fail=Operate failed,try again!;/发送操作失败信息到目标号码uchar AT_delete12;uchar AT_Read12;/用来存储发送读取短信指令 uchar AT_SendNumber22; /用来存储发送短信号码指令uchar numberbuf3; /用来保存短信条数

4、 uchar idata SystemBufRxIn; /储存出口接收数据 uchar CommandBuf6; /用来储存指令 uchar idata state17; /用来存储IO口状态 uchar idata state117; /用来存储IO口状态 uchar Rx=0; uint temp; /记录状态 uchar temp1;/ 用于记录P0口状态uchar temp2; / 用于记录P2口状态 bit check=0;/查询标志位 bit receiveready=0; /接收短信标志位bit sendready=0; /发送短信准备标志位bit send=0; /发送短信标志

5、位bit flag=0; /指令标志位sbit P3_7=P37;/启动GSM的启动线连IGTsbit realy0=P10; /发光管1sbit realy1=P11; /发光管2sbit realy2=P12; /发光管3sbit realy3=P13; /发光管4sbit realy4=P14; /发光管5sbit realy5=P15; /发光管6sbit realy6=P16; /发光管7sbit realy7=P17; /发光管8sbit sw1=P33;sbit sw2=P34;sbit sw3=P35;sbit sw4=P36;sbit beep=P32; /蜂鸣器sbit k

6、ey1=P20; /开关1sbit key2=P21; /开关2sbit key3=P22; /开关3sbit key4=P23; /开关4sbit key5=P24; /开关5sbit key6=P25; /开关6sbit key7=P26; /开关7sbit key8=P27;/开关8void Delay_ms(uint i);void Start_GSM(void);void UART_init (void);void sendchar(uchar ch);void sendstring(uchar *p);void GSM_INIT(void);void receive_ready(v

7、oid);void message_read(void);void read_message(void);void sendmessage(void);uchar code AT7=0x41,0x54,0x2B,0x43,0x4D,0x47,0x53,0x3D;/AT+CMGS= AT+CMGS=“+8613xxxxxxxxx”回车输入短消息。Crtl+Z结束并发送。uchar code AT12=0x41,0x54,0x44,0x3E;/ATD ATD*; (拨号,*为需要拨的号码,如呼叫13973292929,则为ATD13973292929;uchar code neirong11=13

8、185018567;sbit DQ=P37; /DS18B20数据传输线接单片机的相应的引脚unsigned char tempL=0; /临时变量低位unsigned char tempH=0;/临时变量高位float temperature; /温度值unsigned char k,ge,shi,bai;uchar code atshanchu= AT+CMGD=9;/* 延时子程序*/void delay1(uint ms) uchar k; while(ms-) for(k = 0; k 120; k+); /-/*函数功能:延时子程序入口参数:k出口参数:*/void delay(u

9、nsigned int k) unsigned int n; n=0; while(n 0;i-) DQ=1; delay(1); DQ=0; dat=1; DQ=1; if(DQ) dat|=0x80; delay(4); return(dat);/*函数功能:向DS18B20写一字节数据入口参数:dat出口参数:*/WriteOneChar(unsigned char dat) unsigned char i=0; for(i=8;i0;i-) DQ=0; DQ=dat&0x01;delay(5);DQ=1;dat=1;delay(4);/*函数功能:DS18B20初始化子程序入口参数:出

10、口参数:*/Init_DS18B20(void)unsigned char x=0; DQ=1; /DQ先置高 delay(8); /延时 DQ=0; /发送复位脉冲 delay(85); /延时(480ms) DQ=1; /拉高数据线 delay(14); /等待(1560ms) /*函数功能:向DS18B20读温度值入口参数:出口参数:temperature*/ReadTemperature(void) Init_DS18B20(); /初始化WriteOneChar(0xcc); /跳过读序列号的操作WriteOneChar(0x44); /启动温度转换delay(125); /转换需要

11、一点时间,延时Init_DS18B20(); /初始化WriteOneChar(0xcc); /跳过读序列号的操作WriteOneChar(0xbe); /读温度寄存器(头两个值分别为温度的低位和高位)tempL=ReadOneChar(); /读出温度的低位LSBtempH=ReadOneChar(); /读出温度的高位MSB /温度转换,把高低位做相应的运算转化为实际温度temperature=(tempH*256)+tempL)*0.0625; delay(200);return(temperature);/* 发送数据函数*/void senddata(uchar dat) SBUF

12、=dat; while(!TI); TI = 0;/void mingling(uchar zijie,uchar *p) uchar m; for(m=0;m0;i-) for(j=0;j125;j+) ;/*/函数void Start_GSM(void);实现功能:对TC35进行启动,开启TC35/功能详述:单片机上的P3_7管脚是跟TC35的IGT管脚相连;需要启动TC35,必须在 15脚(/IGT)加时长至少为100ms的低电平信号,/且该信号下降沿时间小于1ms。启动后,15 脚的信号应保持高电平./*/void Start_GSM(void) P3_7=0; Delay_ms(10

13、00); P3_7=1; Delay_ms(1000); /*/函数void UART_init;实现功能:对串口进行初始化/*/void UART_init (void) TMOD=0x20; /选择定时器1 PCON=0x00;/波特率不加倍 SCON=0x50;/串行工作方式1允许串行接收 TH1=0xFD;/实验板上晶振位11.0592MHZ,选择波特率为9600 TL1=0xFD;/在相应计数器上赋值 EA=1;/总中断开启 ES=1;/串行中断开启 TR1=1;/开启定时器1 /*/函数void sendchar(uchar ch);实现功能:发送一字节数据/*/void send

14、char(uchar ch) SBUF=ch;while(TI=0);TI=0;/*/函数void sendstring(uchar *p);实现功能:通过串口发送字符串/*/void sendstring(uchar *p) while(*p) sendchar(*p); p+; sendchar(0x0D); sendchar(0x0A);/*/函数void receive(void) interrupt 4 using 1;实现功能:通过串口接收数据/*/void receive(void) interrupt 4 using 1 if(RI) if(RxRxIn) SystemBufR

15、x=SBUF; Rx+; RI=0; /*/函数void GSM_INIT(void);实现功能:初始化TC35模块/*/void GSM_INIT(void) LOOP:Delay_ms(1000);sendstring(AT);Delay_ms(1000); sendstring(ATE); Delay_ms(1000); sendstring(AT_CNMI);Delay_ms(1000); sendstring(AT_CSCA);Delay_ms(1000); for(Rx=0;RxRxIn;Rx+) SystemBufRx=0x00; Rx=0; sendstring(AT_CMGF

16、); Delay_ms(1000); if(SystemBuf2=O)&(SystemBuf3=K) /判断是否模块初始化成功,成功的话模块会回复OK给单片机 /如果单片机没有收到OK,就继续发送初始化指令/ for(Rx=0;RxRxIn;Rx+) SystemBufRx=0x00; Rx=0; else for(Rx=0;RxRxIn;Rx+) SystemBufRx=0x00; Rx=0; goto LOOP; /*/函数void receive_ready(void);实现功能:接收短信准备/*/ void receive_ready(void) uchar i;if(SystemBu

17、f5=0x54)&SystemBuf6=0x49) /如果有新短信来,模块会通过串口向单片机发送字符串, /此函数的功能是判断是否有新短信来,如果来的话就置位准备接受位标志为1 receiveready=1; /如果不是新短信的指令,就舍弃,并将接收数组清零/ else for(i=0;iRx;i+) SystemBufi=0x00; Rx=0; /*/函数 void message_read(void);实现功能:判断短信,准备是否回复短信给目标号/*/ void message_read(void) if(sendready=1)&(SystemBuf5=0x47)&(SystemBuf6

18、=0x52) send=1; /*/函数 void read_message(void);实现功能:发送读取短信指令,/*/ void read_message(void) uchar i; Delay_ms(1000); for(i=0;i3;i+) numberbufi=SystemBuf14+i; for(i=0;i8;i+)AT_Readi=AT_CMGRi; for(i=8;i11;i+) AT_Readi=numberbufi-8; for(Rx=0;RxRxIn;Rx+) SystemBufRx=0x00; Rx=0; sendstring(AT_Read); /发送AT+CMG

19、R=?,?代表短信储存所在位置 /*/函数 void readcommend(void);实现功能:读取短信内容,判断相应指令是否正确/*/ void readcommend(void) uchar i; for(i=0;i5;i+) /将短信内容中的指令部分截取出来放到 /CommandBuf数组中 CommandBufi=SystemBuf61+i; if(CommandBuf0=o)&(CommandBuf1=p)&(CommandBuf2=e)&(CommandBuf3=n) /判断指令是否为开发光管指令 switch(CommandBuf4) case 0x31: realy0=0;

20、/发光管 1开启 break; case 0x32: realy1=0;/发光管 2开启 break; case 0x33: realy2=0; /发光管 3开启 break; case 0x34: realy3=0;/发光管 4开启 break; case 0x35: realy4=0;/发光管 5开启 break; case 0x36: realy5=0; /发光管 6开启 break; case 0x37: realy6=0; /发光管 7开启 break; case 0x38: realy7=0; /发光管 8开启 break; case 0x39: beep=0;Delay_ms(2

21、000);beep=1;Delay_ms(2000);beep=0;Delay_ms(2000);beep=1;/蜂鸣器响 /蜂鸣器 break; case 0x4f: P1=0; /全开 break; case 0x3f: temp1=P1; temp=temp1; check=1;break; default:flag=1; /其他指令定义为错误操作 break; /置位错误操作位为1 else if(CommandBuf0=s)&(CommandBuf1=h)&(CommandBuf2=u)&(CommandBuf3=t)/判断指令是否为关闭电器指令 switch(CommandBuf4

22、) case 0x31: realy0=1; /关闭发光管1 break; case 0x32: realy1=1; /关闭发光管2 break; case 0x33: realy2=1; /关闭发光管3 break; case 0x34: realy3=1;/关闭发光管4 break; case 0x35: realy4=1;/关闭发光管5 break; case 0x36: realy5=1;/关闭发光管6 break; case 0x37: realy6=1; /关闭发光管7 break; case 0x38: realy7=1; /关闭发光管8 break; case 0x53:P1=

23、0xff; /全关 break; default:flag=1;/其他指令定义为错误操作 break; /置位错误操作位为1 else flag=1;/如果发送的指令既不是open也不是shut就定义为错误操作/*/函数 void readstate;实现功能:将P0,P2口的状态转化为数组,/*/void readstate(void) uint bitcnt,i,j; for(bitcnt=0,i=0;bitcnt16,i16;bitcnt+,i+) if(temp=0,i16;j-,i+) statej=state1i; /*/函数 void delete_message;实现功能:删除

24、读短信指令,/*/ void delete_message(void) uchar i; Delay_ms(1000); Delay_ms(1000); Delay_ms(5000); for(i=0;i8;i+)AT_deletei=AT_CMGDi; for(i=8;i11;i+) AT_deletei=numberbufi-8; for(Rx=0;RxRxIn;Rx+) SystemBufRx=0x00; Rx=0; sendstring(AT_delete); /发送AT+CMGR=?,?代表短信储存所在位置 /*/函数 void sendmessage(void);实现功能:发送回复

25、短信指令,/*/ void sendmessage(void) uchar i;for(i=0;i8;i+) AT_SendNumberi=AT_CMGSi; for(i=8;i21;i+) AT_SendNumberi=SystemBuf14+i;/将对方号码提取用来回复给对方 sendstring(AT_SendNumber);Delay_ms(400);if(flag=0) if(check=1)sendstring(state); /如果查询位置1时,发送状态信息 sendstring(successfully);check=0;elsesendstring(fail);Delay_ms(30);sendchar(0X1A);/*/函数 void main();实现功能:主函数,/*

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!