1 简介
Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目
毕业设计 单片机与GSM的手机短信收发系统(源码+论文)
大家可用于 课程设计 或 毕业设计
🧿 项目分享:
https://gitee.com/sinonfin/sharing文章来源地址https://www.toymoban.com/news/detail-432168.html
1 硬件设计
使用单片机控制GSM,首先:单片机下载完程序后,先不要接GSM,先让单片机和电脑通信,利用串口调试助手查看单片机AT指令的数据。然后单片机的TXD/RXD分别接上图所示的TXD/RXD并共地,完成对TC35模块的初始化和短消息的数据收发以及打电话的功能
1.1 TC35i模块
TC35i模块主要由六部分组成: GSM基带处理器、GSM射频模块、供电模块 (ASIC)、 闪存、ZIF连接器、天线接口。其中,GSM基带处理器是整个模块的核心,主要处理GSM终端内的语音、数据信号,并涵盖蜂窝射频设备中的所有模拟和数据功能。TC35i模块结构框图如图
GSM开发板有两种供电方式,一种是直接把开关电源适配器插到电源插头上,另一种是直接用直流稳压电源的正负极分别接到上图的电源正5V、电源地。当用电脑串口调试GSM时,必须用短路帽直接把J3、J4分别插上短路帽
1.2 单片机硬件链接
LCD1602液晶显示模块通过排阻接STC12C5A32S2单片机P0口,4*4矩阵键盘按键,接STC12C5A32S2单片机P1口
2 软件设计
单片机与GSM模块的的软件接口其实就是单片机通过与GSM模块相关的AT 指令控制手机的控制技术。指令的执行过程需要单片机与GSM模块交互应答完成,每次发送或接收的字节数有严格的规定,二者必须依据这些规定实现数据交换,否则,通信就是失败的。设计采用的相关AT指令说明:
a、 单片机与 TC35i模块由串口建立连接:AT。
b、 设置 TC35i模块工作模式:AT+CMGF=n,n=0:PDU模式;n=1:文本模式,通常要设置为 PDU模式,在这种模式下,能传送或接收透明数据(用户自定义)。
c、 发送信息指令:AT+CMGS=n,n为目标号码。
d、 新消息提示指令:AT+CMNI=2,1,0,0,设置为mode=2,mt=1。
e、 读 TC35i模块短消息数据:AT+CMGR=n,n为短消息号(十进制)。
f、 拨号指令:ATD。这个命令用来设置通话、数据或传真呼叫。
g、 来电显示指令:AT+CLIP=1。
h、 接听指令: ATA。
i、 挂电话指令:ATH。
2.1 软件流程图
程序使用模块化的编程思路。主程序包括系统初始化、屏幕刷新和按键扫描三部分,其流程如图4-1所示。屏幕刷新功能用一个子程序模块实现,在模块当中实现相应字符串的显示,其流程如图4-2所示。参数设置子程序的按键扫描,不是设置键按下则退出扫描,重新轮询。若有设置键按下,则进入功能选择子程序。
3 关键代码
主函数
void main()
{
di();
Ini_UART();
lcd_int();
k=0;
Print_Str(AT);
delayms(100);
Print_Str(AT_CMGF);
delayms(100);
Print_Str(AT_CNMI);
delayms(200);
Print_Str(AT_CLIP);
delayms(250);
clr_rsbuf();
P1=0xff; //P0开机初始化
key=0xff; //键盘值开机初始化为ff(检测到的键值应为0----15)
while(1)
{
ScanMessage();
key_4x4_scan();//不停调用键盘扫描程序
};//原地循环
}
4.3.2 信息检测函数
void ScanMessage(void)
{
for(ii=0;ii<32;ii++) if(RsBuf[ii-3]=='C'&&RsBuf[ii-2]=='M'&&RsBuf[ii-1]=='T'&&RsBuf[ii]=='I')
{
di();delayms(50);
di(); delayms(50);
di(); delayms(50);
lcd_write_com(0x80); //将显示位置定位在第一行第0个字符处
clr_rsbuf();
Print_Str(AT_CMGR);
delayms(250);delayms(250);delayms(250);delayms(250);
lcd_write_com(0x80); //将显示位置定位在第一行第0个字符处
for(i=0;i<15;i++)
{
lcd_write_data(RsBuf[i+20]); //显示
delayms(100);
}
lcd_write_com(0x80+0x40); //将显示位置定在第一行第0个字符处
for(i=15;i<32;i++)
{
lcd_write_data(RsBuf[i+20]); //显示
delayms(100);
}
}
else if(RsBuf[ii-3]=='C'&&RsBuf[ii-2]=='L'&&RsBuf[ii-1]=='I'&&RsBuf[ii]=='P')
{
beep=0;
delayms(250);
delayms(250);
lcd_write_com(0x80); //将要显示的位置定位在LCD的第一行第0个字符处
for(i=(ii+3);i<15+(ii+3);i++)
{
lcd_write_data(RsBuf[i]); //来电显示
delayms(5);
}
lcd_write_com(0x80+0x40); //将要显示的位置定位在第一行第0个字符处
for(i=(ii+3)+15;i<32+(ii+3);i++)
{
lcd_write_data(RsBuf[i]); //显示"ATH"
delayms(5);
}
while(!beep)
{
key_4x4_scan();//不停调用键盘扫描程序
}
clr_rsbuf();
}
}
4 最后
🧿 项目分享:文章来源:https://www.toymoban.com/news/detail-432168.html
https://gitee.com/sinonfin/sharing
到了这里,关于毕业设计 单片机与GSM的手机短信收发系统(源码+论文)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!