欢迎来到天天文库
浏览记录
ID:32701608
大小:449.50 KB
页数:16页
时间:2019-02-14
《基于51单片机gprs手机教程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、.基于51单片机GPRS打电话等功能的实现!血顶猎鹰大家好,小弟花了大半个月时间折腾出使用51单片机和TC35进行打电话,发短信,收到短信后回一个短信给发信人(谁发的就回给谁,不是指特定的一个人!)网上好多程序都是不能用的,这个程序经本人实际调试过,可以使用!!!先介绍下功能:1.按下第一个按钮打电话给程序中指定的手机2.按下第二个键发温度值给程序中指定的手机3.按下第三个键发测试短信给程序中指定的手机4.随便来个手机发一个bang给和单片机连在一起的手机卡,手机卡回ph=0.7给你的手机,发别的字符就不会(这个相当于密码),当然这个bang和p
2、h=0.7这个是你自己设的。下面看看电路图:右边那个长长的就是TC35的接口了,第15脚接单片机,其他的按着连就行了。处于方便,1602就这样接了,还有按钮怎么接程序看看就知道了,红笔是我修改的,你懂的!这些脚和单片机一下,再接下晶振就好了,接下来进入正题。程序如下,程序横向有点长,为了让大家可以看程序方便点就把字体缩小了。里面解释很详细了,程序我是修改别人的,之前不能用,现在可以了。...为了便于大家理解,我把几个重要的地方说下打电话过程mingling(3,AT12);for(x=0;x<11;x++)senddata(neirong[x])
3、;senddata(0x3b);senddata(0x0D);while(sw1==0);senddata(0x0D);//发0x0d停止打电话,首先发一些命令准备打,然后输入电话号码,在内容里面,然后结束符号,等待按键松开就不打了。发短信的过程ES=0;mingling(8,AT7);for(i=0;i<11;i++)senddata(neirong[i]);senddata(0x0d);delaymm(100);senddata(shi+0x30);senddata(ge+0x30);//发送数据内容senddata(0x20);sendda
4、ta(0x1a);senddata(0x0d);ES=1;串口中断关不关都没事的,一般不会冲突。过程和打电话的差不多,只是命令有点不同,你懂的!接受短信过程先检测下有没短信来receive_ready();来了的话那个TC35通过串口给单片机发东西,我看了下东西是这个:&&+CMTI:"SM",1010表示我当前的短信数,说明我之前有9条,加上现在的共10条我们取标志位TI,所以有SystemBuf[5]==0x54)&&SystemBuf[6]==0x49就表示短信来了,0x54,0x49就是TI的意思,你懂的!来短信了我们准备发出短信,if(
5、receiveready==1){read_message();receiveready=0;sendready=1;}Delay_ms(300);message_read();这里是准备的过程其中voidmessage_read(void)/*准备是否回复短信给目标号码*/{if((sendready==1)&&(SystemBuf[5]==0x47)&&(SystemBuf[6]==0x52))send=1;}就是绕来绕去,你们也可以不绕,这里简单。另外我看了下这个时候数组里面存的东西,用我下面注释了的程序就好了(如果你们也想看看)/*wri
6、te_cmd(0x01);write_cmd(0x80);for(i=64;i<80;i++){write_dat(SystemBuf[i]);delaymm(1);}write_cmd(0xc0);for(i=80;i<91;i++){write_dat(SystemBuf[i]);...delaymm(1);}while(1);//读出来看下,结果是//&&+CMGR:"RECUN0~15//READ","+8615158116~31//07680",,"11/06/132~47//1,14:01:09+32"&&48~63//1234567
7、89123456764~79//891234567880~89*/看这个小东西把你的手机号码,发的时间日期,内容都记下来存到数组里了,接下来的事情就好办了voidreadcommend(void)/*读取短信内容,判断相应指令是否正确*/{uchari;for(i=0;i<4;i++)//将短信内容中的指令部分截取出来放到{//CommandBuf数组中CommandBuf[i]=SystemBuf[64+i];}if((CommandBuf[0]=='b')&&(CommandBuf[1]=='a')&&(CommandBuf[2]=='n')
8、&&(CommandBuf[3]=='g'))//判断指令是否为开发光管指令{write_cmd(0x01);//测试接收write_c
此文档下载收益归作者所有