课 程 设 计
实现SIM300模块的简单操作
系 别: 电子信息系
专 业 名 称: 通信工程
学 生 姓 名:杨锦能 谢庆普 林文堂
学 号:******** ********
03131118
指导教师姓名、职称: 杨芃 李嘉
完成日期:2016年 10月 06日
一、概述………………………………………………………………………….1
二、sim300开发板简介………………………………………………………….2
1、 电路原理图………………………………………………………………..2
2、 模块简介…………………………………………………………………..3
3、接口介绍……………………………………………………………………4
三、设计步骤……………………………………………………………………..7
四、编程源程序…………………………………………………………………..8
五、参考资料……………………………………………………………………..9
一、概述
SIM300是一款GSM/GPRS模块,可在全球范围内的EGSM 900MHz、DCS 1800MHz、PCS 1900MHz三种频率下工作,能够提供GPRS多信道类型多达10个,并且支持CS-1、CS-2、CS-3和CS-4四种GPRS编码方案。
SIM300结构轻巧,几乎可以满足所有对产品尺寸有要求的工业应用,如智能手机、掌上电脑或者其他移动设备。
本次课程设计我们会利用51单片机控制SIM300模块来进行一个拨打电话并且挂断这个电话的操作。
二、SIM300开发板简介
1、参考电路图
下图为开发板各个部分的电路原理图
2、模块简介
开发板各个模块如上图所示,电源芯片和手机卡插槽在板的背面。
3、接口介绍
(1)电源接口
电源接口可以接入5V-26V的直流电压,但是最大电流应该大于2A以保持SIM300模块可以正常工作。
(2)串行接口
SIM300提供了两个不平衡异步操作串口,将GSM模块设计成数据通讯设备(DCE),与传统的数据终端设备(DCE-DTE)相连,模块与用户(DTE)通过信号(如图)连接,自动波特率支持从1200bps到115200bps的波特率。
(3)音频接口
模块提供两个模拟输入通道,AIN1和AIN2,作为麦克风输入和线路输入,这两个模拟输入通道是一样的,典型用法是将其中一个通道连上麦克风做成电话听筒,另一个通道连接外部麦克风或者外线输入。模拟的模块输入由控制寄存器决定其配置,用模拟多路传输建立。
对于每个通道,都可以用指令“AT+CMIC”来设置麦克风的输入增益,指令“AT+ECHO”用来设置回波抑制的参数,边音平衡控制用指令“AT+SIDET”来设置。音频接口又分为听筒接口和麦克风输入接口。
(4)蜂鸣器接口
板连接器上的第36引脚可用来驱动一个蜂鸣器以作为来电铃声。蜂鸣器的输出音量可用指令“AT+CRSL”设置。下图是蜂鸣器的电路原理图。
(5)SIM卡接口电路
SIM卡接口支持GSM Phase1规范功能,也支持针对快速kbpsSIM卡的GSM Phase2+规范功能。同时支持1.8V和3.0VSIM卡。
三、设计步骤
(1)、用跳线将单片机的接收端和SIM300开发板的发射端连接起来。并且单片机的接地端一定要与开发板的接地端连接起来,如果接地端不连接在一起,那么单片机和开发板的电平会无法识别。
(2)、打开电源开关,按复位键,启动开发板,开发板指示灯闪烁并寻找信号,当指示灯的闪烁频率一定时,说明开发板已经完成信号寻找过程。
(3)、用keil软件编写一个程序,然后通过烧录软件把程序烧录到单片机里面。
(4)、烧录完成之后复位单片机,程序开始运行,然后我们就可以通过单片机进行一个拨打电话和挂断电话的操作。
4、编写源程序
源程序如下,该程序可以实现拨打电话和挂断电话的操作。
#include void SerialInit()//初始化程序(必须使用,否则无法收发) { // TMOD=0x20;//设置定时器工作方式为8位自动装入数据 // TH1=0xfd;//装入初值,波特率9600 // TL1=0xfd; // TR1=1;//打开定时器 // SM0=0;//设置串行通讯工作模式,(10为一部发送,波特率可变,由定时器1的溢出率控制) // SM1=1;//(同上)在此模式下,定时器溢出一次就发送一个位的数据 // REN=1;//串行接收允许位(要先设置sm0sm1再开串行允许) //9600波特率对应 FFD9H RCAP2L = 0xD9; RCAP2H = 0xFF; //RCLK、TCLK置1 //TR2置1 T2CON = 0x34; //串口工作模式1,接收使能 SCON = 0x50; //允许串口中断 ES = 1; return; } //串行口连续发送char型数组,遇到终止号/0将停止 void SerialSendChars(char *str) { while(*str!='\\0') { SBUF=*str; while(!TI);//等待发送完成信号(TI=1)出现 TI=0; str++; } } void delay_50ms(int t) { int j; for(;t>0;t--) for(j=6245;j>0;j--) ; } void main() { SerialInit();//串口初始化 SerialSendChars("ati\\r");//ati初始化sim300模块 delay_50ms(20); SerialSendChars("ati\\r");//ati初始化sim300模块 delay_50ms(20); SerialSendChars("ati\\r");//ati初始化sim300模块 delay_50ms(20); SerialSendChars("ATD10010;\\r");//拨打号码10086 delay_50ms(600);//等待30秒 SerialSendChars("ATH\\r");//挂断电话 while(1); } 5、参考资料 SIM300开发板用户手册V1.2 SIM300_编程介绍 STC单片机原理及应用下载本文