李祥龙无线终端设计技术结课报告 2.docx
- 文档编号:27488632
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:17
- 大小:134.55KB
李祥龙无线终端设计技术结课报告 2.docx
《李祥龙无线终端设计技术结课报告 2.docx》由会员分享,可在线阅读,更多相关《李祥龙无线终端设计技术结课报告 2.docx(17页珍藏版)》请在冰豆网上搜索。
李祥龙无线终端设计技术结课报告2
武汉理工大学华夏学院
信息工程
无线终端设计技术结课报告
课程名称无线终端设计技术
课程设计总评成绩
学生姓名、学号李祥龙10213010218
学生专业班级通信1102
指导教师姓名罗云贵
摘要:
随着无线技术的发展,无线设备将实现自由、方便、舒适的现代
生活理念。
各种无线终端的出现,解决了现代社会中很多繁琐的问题,方便了人们的生活和工作。
本学期我们学习到无线终端设计技术,该课程是对我们通信专业知识的综合检测。
本文主要介绍了我们利用开发实验箱的3G模块和51单片机模块进行手机网络通话的设计。
1.设计模块的介绍
本次设计中我们主要是利用AT指令进行呼叫,接听功能。
模块通过AT指令集进行数据交互,AT指令是目前手机通讯中最常用的控制指令,通过它可以控制手机通信的很多行为,如拨叫号码、按键控制、传真收发等。
AT指令主要参照3GPP27.007、3GPP27.005、ITU-TV.25ter。
支持单通道和多通道交互,MUX协议支持3GPPTS27.010。
在设计实现过程中,3G模块主要实现的功能如拨打电话、接听电话、发送短信、无线上网等,有专门的流程,也就是必须按照一定的先后顺序发送AT指令。
串口模块采用SIPEX3238作为串口电平转换芯片。
这款芯片带有两路串口输入和相应的输入。
它支持5.0V至3.3V宽电压输入。
在30s内,该芯片未监测到有信号输入时,它就会处于自动切断电源的状态。
在串口通信过程中,对信号的检测非常严格,所以,接收数据时一般采用单片机串口中方式,可快速响应串口数据的接收。
2.程序设计
1)硬件电路图
如下图所示为程序硬件部分的电路图:
2)AT指令流程图
开机通话流程图如下:
关机流程图如下:
串口通信流程图如下:
其中用到的AT指令有:
AT^DGPIOSM=1//设置模块休眠唤醒模式这里是选择硬件流控方式唤醒
AT+CFUN=5//激活SIM/USIM卡,可以根据这条指令检测SIM/USIM卡是否在位
AT+CFUN=1//激活协议栈
AT+COPS=0//注册网络
ATA//接听电话
ATH//挂断所有电话
3.主要源代码以及实现结果
主程序
#include
#include"uart_key.h"
#include"lcd_12864.h"
#include"delay.h"
#include"at.h"
//sbitFMQ=P2^4;
voidmain()
{unsignedchara,flag1,flag2,AskCalling[11];
unsignedchari;
FMQ=0;
USART1_Init();
init_lcd();
Clr_Scr();
PrintStr(0,2,"李祥龙");
TD_Init();/delayms(2000);
TD_PowerON();delayms(2000);
PrintStr(2,0,"***************");
while
(1)
{delayms(200);
a=Check_Key();
if(a>0)
{
if(a=='E')
{PrintStr(4,0,"拨号:
");
flag1=1;
if(i==11)
{
i=0;flag1=0;//TD_Calling(AskCalling);
}
}
if(flag1)
{
if(a<='9'&&a>='0')
{
if(i<11)
{num_disp8(4,i+5,a);
AskCalling[i]=a;
i++;
}
}
elseif(a=='C'&&i>0){i--;num_disp8(4,i+5,'');a=0;}
}elseif(a=='C')TD_PowerOFF();
}
/*if(TD_DetectCalling()>0)
{
TD_Answer();//flag2=0;
}
*/
}
}
初始化源代码
#include
#include
#include"uart_key.h"
#include"delay.h"
#include"lcd_12864.h"
#include"at.h"
ExternvolatileunsignedcharAnswerIsOK,AnswerIsCALL,AnswerIsHANG,AnswerIsNO,AnswerIsRING,AnswerIsBUSY;
externunsignedcharAnswerPhoneNumb[12];
voidTD_Init(void)
{
do{
SendStr1("AT^DSLP=0,0\r\n");ClearOneLine
(2);
PrintStr(2,0,"初始化中...");
delayms(600);
ClearOneLine
(2);
if(!
AnswerIsOK){PrintStr(2,0,"初始化失败!
");delayms(600);}
}while(!
AnswerIsOK);
AnswerIsOK=0;
PrintStr(2,0,"初始化成功!
");
delayms(1000);
//return1;
}
实现后在LCD上显示如下:
开机源代码
voidTD_PowerON(void)
{/******激活sim卡**********/
do{
SendStr1("AT+CFUN=5\r\n");ClearOneLine
(2);
PrintStr(2,0,"激活SIM卡.");
delayms(700);
PrintStr(2,0,"激活SIM卡..");
delayms(700);
PrintStr(2,0,"激活SIM卡...");
delayms(700);
PrintStr(2,0,"激活SIM卡....");
delayms(700);
ClearOneLine
(2);
if(!
AnswerIsOK){PrintStr(2,0,"激活失败!
");delayms(700);}
}while(!
AnswerIsOK);
AnswerIsOK=0;
PrintStr(2,0,"激活成功!
");
delayms(1000);
/******开机**********/
do{
SendStr1("AT+CFUN=1\r\n");/
fullfunctionality(poweron)
ClearOneLine
(2);
PrintStr(2,0,"开机中.");
delayms(500);
PrintStr(2,0,"开机中..");
delayms(500);
PrintStr(2,0,"开机中...");
delayms(500);
ClearOneLine
(2);
if(!
AnswerIsOK){PrintStr(2,0,"开机失败!
");delayms(2000);}
}while(!
AnswerIsOK);
AnswerIsOK=0;
PrintStr(2,0,"开机成功!
");
delayms(1000);
/******开机**********/
do{
SendStr1("AT+COPS=0\r\n");
ClearOneLine
(2);
PrintStr(2,0,"注册网络.");
delayms(500);
PrintStr(2,0,"注册网络..");
delayms(500);
PrintStr(2,0,"注册网络...");
delayms(500);
ClearOneLine
(2);
if(!
AnswerIsOK){PrintStr(2,0,"注册失败!
");delayms(500);}
}while(!
AnswerIsOK);
AnswerIsOK=0;
PrintStr(2,0,"注册成功!
");
delayms(5000);
ClearOneLine
(2);
//PrintStr(2,0,"您现在可以打电话了!
");
//return1;
}
实现后LCD显示如下:
拨号应答源代码:
voidTD_PowerOFF(void)
{/******注销网络**********/
do{
SendStr1("AT+COPS=2\r\n");
ClearOneLine
(2);
PrintStr(2,0,"注销网络.");
delayms(500);
PrintStr(2,0,"注销网络..");
delayms(500);
PrintStr(2,0,"注销网络...");
delayms(500);
PrintStr(2,0,"注销网络....");
delayms(500);
ClearOneLine
(2);
if(!
AnswerIsOK){PrintStr(2,0,"注销失败!
");delayms(500);}
}while(!
AnswerIsOK);
AnswerIsOK=0;
PrintStr(2,0,"注销成功!
");
delayms(1000);
do{
SendStr1("AT+CFUN=6\r\n");无返回值
ClearOneLine
(2);
PrintStr(2,0,"注销SIM卡.");
delayms(500);
PrintStr(2,0,"注销SIM卡..");
delayms(500);
PrintStr(2,0,"注销SIM卡...");
delayms(500);
ClearOneLine
(2);
if(!
AnswerIsOK){PrintStr(2,0,"注销SIM卡失败!
");delayms(500);}
}while(!
AnswerIsOK);
AnswerIsOK=0;
PrintStr(2,0,"注销SIM卡成功!
");
delayms(1000);
do{SendStr1("AT+CFUN=0\r\n");
ClearOneLine
(2);
PrintStr(2,0,"关机中.");
delayms(700);
PrintStr(2,0,"关机中.");
delayms(700);
PrintStr(2,0,"关机中..");
delayms(700);
ClearOneLine
(2);
if(!
AnswerIsOK){PrintStr(2,0,"关机失败!
");delayms(700);}
}while(!
AnswerIsOK);
AnswerIsOK=0;
PrintStr(2,0,"关机成功!
");
delayms(1000);
ClearOneLine
(2);
PrintStr(2,0,"再见!
");}
voidTD_Calling(unsignedchar*PhoneNumber)
{unsignedchartemp[18];//3+11+3
memset(temp,'\0',sizeof(temp));
memcpy(temp,"ATD",3);
memcpy(temp+3,PhoneNumber,11);
memcpy(temp+3+11,";\r\n",3);
do{SendStr1(temp);
ClearOneLine(4);
PrintStr(4,0,"在连接...");
delayms(500);
}while(!
AnswerIsOK);
AnswerIsOK=0;ClearOneLine(4);
PrintStr(4,0,"连接成功,等对方应答!
");
delayms(500);
while
(1)
{
if(Check_Key()=='C'){ClearOneLine(4);ClearOneLine(6);TD_HangUp();break;}
if(AnswerIsCALL){ClearOneLine(4);ClearOneLine(6);PrintStr(4,0,"通话中...");AnswerIsCALL=0;}
if(AnswerIsHANG){ClearOneLine(4);ClearOneLine(6);PrintStr(4,0,"对方已挂机!
");AnswerIsHANG=0;break;}
if(AnswerIsNO){ClearOneLine(4);ClearOneLine(6);PrintStr(4,0,"无应答!
");AnswerIsNO=0;break;}
if(AnswerIsBUSY){ClearOneLine(4);ClearOneLine(6);PrintStr(4,0,"用户忙!
");AnswerIsBUSY=0;break;}
}
}
unsignedcharTD_DetectCalling(void)
{unsignedchartemp[17];
//while(AnswerIsRING)
if(AnswerIsRING)
{
FMQ=1;
ClearOneLine(4);
memcpy(temp,AnswerPhoneNumb,11);
memcpy(temp+11,"来电!
",5);
PrintStr(4,0,temp);
AnswerIsRING=0;
return1;
//delayms(1000);
}else
{FMQ=0;return0;}
}
voidTD_Answer(void)
{while
(1)
{
if(Check_Key()=='E'){TD_AnswerCalling();ClearOneLine(4);PrintStr(4,0,"通话中...");delayms(500);}
if(Check_Key()=='C'){TD_HangUp();break;}
if(AnswerIsHANG){ClearOneLine(4);PrintStr(4,0,"对方已挂机!
");AnswerIsHANG=0;break;}
}
}
voidTD_AnswerCalling(void)
{do{
SendStr1("ATA\r\n");ClearOneLine(4);
PrintStr(4,0,"应答中...");
delayms(1000);
}while(!
AnswerIsOK);
PrintStr(4,0,"请通话!
");
AnswerIsOK=0;FMQ=0;
}
voidTD_HangUp(void)
{do{
SendStr1("ATH\r\n");
ClearOneLine(4);
PrintStr(4,0,"挂机中...");
delayms(1000);
}while(!
AnswerIsOK);
PrintStr(4,0,"挂机成功!
");
AnswerIsOK=0;FMQ=0;
}
实现后LCD显示如下:
4.总结
本次手机通话设计最终成功完成主要是在老师以及同学的帮忙下完成的。
这也让我了解到在学习这门专业课中,有许多知识虽然以前专业基础课上也有涉及,但这门课程主要是它们综合运用,是对以前知识的加深和巩固。
实验过程中,有遇到的许多问题,暴露出我们对部分的基础知识掌握尚且不足。
诸如在C语言的编程我们还是存在或多或少的问题,此次编程主要用到函数的调用,指针地址的调用等,但我们最后还是在老师的提示下才发现程序的问题所在。
在动手过程中,我把用51单片机C语言设计3G通信与以前的直接用AT指令通信进行了对比。
发现,此时的单片机起着处理数据和交互信息的功能。
本次设计艾也大大提高了我查阅资料和阅读相关专业资料的能力。
关机流程、主叫流程、被叫流程等需要参见《LC6311(+)UART+USB多EP业务流程手册》或《LC6311(+)ATCommandSetUserManual》如果要知道其中一条AT指令的详细含义,可以在《LC6311(+)ATCommandSetUserManual》中用查找的方式进行搜索,如我们要知道AT指令““AT+CGMR”的含义,就找到相应的位置进行阅读分析。
此次结课设计,让我了解到自己许多的不足,在日后,我们还要加强对这些专业课的学习,并且培养自己的专业素养。
当然,这本次结课设计中,我也了解到动手能力的重要性,要学以致用并不是说说那么简单,平时要多思考,多动手。
课程设计评分表
评分项目
评分成绩
1.选题合理、目的明确(10分)
2.设计方案正确,具有可行性(30分)
3.测试性能达到技术要求(35分)
4.答辩(25分)
总分(100分)
答辩记录:
指导教师(签名)
日期:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 李祥龙无线终端设计技术结课报告 李祥龙 无线 终端 设计 技术 报告