单片机控制GSM模块发短信,程序

单片机控制GSM模块发短信,程序,第1张

void send(uint sdata)--这是发送一个字节的函数

{

SBUF=sdata

while(TI==0)

TI=0

}

send ("AT+CMGF=0\r\n")

send ("AT+CMGS=25\r\n")

发送一个字节的函数,在这里,你却用它发送字符串?

----

单片机发出的东西,你先不要急着送到手机模块。

先送到 PC 的串口助手,看看,你都发出了什么。

有难度,你要理解网上选课是什么构架,一般的是b/s模式的,也就是说能上网就可以进行选课,如果你要开发这样的网上选课系统也可以,首先要把接口写好,不过我认为短消息是要收费的,上网毕竟简单 省钱 呵呵

1.第一个明显错误,就是phone[i] =SBUF这句是读串口,发串口是SBUF=phone[i]

2.for循环中循环内容应该包含串口发送和检测串口是否发送完语句,每发送一个数据就要使用while(TI=0)而不是想象中的所有数据发完才检测TI。建议如果对编程不熟请给每一个循环都使用大括号!不要偷懒,比如你的for循环,加上大括号避免错漏循环体!

可以使用一下子程序作为串口发送数据

void UART_SendDat(unsigned char dat)//参数为发送的数据

{

SBUF=dat

while(!TI)

TI=0

}

发送AT指令的程序可封装为

void Send_ATCMD(unsigned char cmd[],unsigned char Count)//参数为发送的AT指令数组,数组长度

{

unsigned char i

for(i=0i<Counti++)

{

UART_SendDat(cmd[i])

}

}

3.表示字符表单引号'A'而不是双引号“A",双引号表示字符串,里面含有字符串结束符'\0';

4.串口初始化程序,请加上,以子程序形式封装

5.GSM初始化和配置指令,请加上,以子程序形式封装

6.一点建议,在main函数中最好都是一些子程序调用而不要直接出现像你写的那些语句,你的那种写法可读性和排错性都较差


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11791068.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存