本文是关于接口的GSM模块8051单片机.GSM模块已经成为嵌入式系统应用中非常常见的一种硬件,如果你想成为一名优秀的嵌入式系统设计者,那么GSM模块与单片机的接口知识是非常必要的。

GSM模块

GSM全球移动系统(通信)模块基本上是一个接受a的调制解调器SIM卡就像手机一样,在运营商提供的GSM网络中工作。GSM模块可以由计算机或计算机控制单片机在网络中执行不同的任务,例如调用发送消息接受消息发送传真等。GSM模块通常通过方式与父硬件通信串行通信.如果父硬件是一台个人计算机,通信通常通过串行端口(RS232)如果父系统是基于单片机的,则通信是通过TTL引脚Rx和Tx。高级GSM模块甚至可能有蓝牙或Wi-Fi连接。GSM模块的常见应用有消息发送/接收系统,移动设备控制系统或者仅仅是GSM网络提供商和GSM模块支持的任何数据通信应用程序。

GSM模块-买家指南-你想买GSM模块吗?GSM模块有很多的产品变体,比如SIM900, SIM300, SIM800等等。我们创建了这个买家指南,以帮助您选择合适的GSM模块,为您的项目需要。

Gsm模块和8051

母硬件(PC或uC)通过发送不同的命令和数据以合适的顺序和格式到GSM模块来完成不同的任务。我们在这里使用的GSM模块是SIM900类型和常用的SIM900,我们在这里做的任务是发送消息到一个移动电话的命令和他们的格式需要这个应用程序如下。

检查调制解调器。

+ CMGF = 1命令功能配置GSM模块为短信模式。

+发生=”手机号码发送手机号码到GSM模块。

CTRL + Z发送信息。

线路图。

接口GSM模块到8051的电路图

电路图GSM模块接口以8051单片机为例如图所示。在这里GSM模块和单片机之间使用串行通信进行通信。8051的Rx引脚连接GSM模块的Tx引脚,8051的Tx引脚连接GSM模块的Rx引脚。的液晶显示模块参与了这个项目,以便在发送短信时提供提示信息。开关S1、电容C4和电阻R2与单片机的复位电路有关。电容器C1、C2和晶体X1与时钟电路有关。C3只是一个噪声旁路电容器。电阻R2用于设置LCD显示的对比度。电阻R3限制通过背光LED的电流。

程序。

Org 000h mov tmod,# 00100001b mov th1,# 253d mov scon,# 50h setb tr1 rs equ p2.7 rw equ p2.6 e equ p2.5主要:驱使着力MOV, #“A”驱使着发送MOV, #“T”驱使着发送MOV, # 0 dh驱使着发送驱使着DELAY1 MOV, #“A”驱使着发送MOV, #“T”驱使着发送MOV, #“+”驱使着发送MOV, #“C”驱使着发送MOV, #“M”驱使着发送MOV, #“G”驱使着发送MOV, #“F”驱使着发送MOV, #“=”驱使着送MOV, #“1”驱使着发送MOV, # 0 dh驱使着发送驱使着DELAY1 MOV, #“A”驱使着发送MOV, #“T”驱使着发送MOV, #“+”驱使着发送MOV, #“C”驱使着发送MOV, #“M”驱使着发送MOV, #“G”驱使着发送MOV, #“S”驱使着发送MOV, #“=”驱使着送MOV, # 34 d驱使着发送MOV, #“+”驱使着发送MOV, #“9”驱使着送MOV, #“1”驱使着发送MOV, #“9”驱使着送MOV, #“5”驱使着发送MOV, #“4”驱使着送MOV, #“4”驱使着发送MOV, #“3”驱使着发送MOV, #“4”驱使着送MOV, #“0”驱使着发送MOV, #“0”驱使着发送MOV, #“7”驱使着发送MOV, #“7”驱使着发送MOV, # 34 d驱使着发送MOV, # 0 dh驱使着发送驱使着DELAY1 MOV, #“H”驱使着发送MOV, #“E”驱使着发送MOV, #“L”驱使着发送MOV, #“L”驱使着发送MOV, #“O”驱使着发送驱使着DELAY1 MOV, # 1啊驱使着发送驱使着DELAY1驱使着力驱使着TEXT1call delay1 here1: sjmp here1 send: clr ti mov sbuf, a wait: jnb ti, wait ret delay1: mov r6,# 15d back: mov th0,# 00000000b mov tl0,# 00000000b setb tr0 here: jnb tf0, here clr tr0 clr tf0 DJNZ r6, back ret delay:CLR E CLR RS SETB RW MOV P0, # 0 ffh SETB E MOV, P0 JB ACC.7,延迟CLR E CLR RW RET显示:MOV P0, SETB RS CLR RW SETB E CLR E驱使着延迟RET CMD: MOV P0, CLR RS CLR RW SETB E CLR E驱使着延迟RET力:MOV, # 0 fh驱使着CMD MOV, # 01 h驱使着CMD MOV, # 0 ch驱使着CMD MOV, # 06 h驱使着CMD MOV, # 81 h驱使着CMD MOV, # 3 ch驱使着CMD RET TEXT1:Mov a,#" s "调用显示Mov a,#" e "调用显示Mov a,#" n "调用显示Mov a,#" t "调用显示Mov a,#" "调用显示Mov a,#" "调用显示Mov a,#" "调用显示ret结束

关于这个项目。

8051的定时器1被配置为串行通信模式2。8051的定时器0被配置为模式1定时器,用于创建程序中使用的少量延迟。为此目的,使用00100001B加载TMOD寄存器。TH1加载253D设置波特率为9600。相关方程为TH1 = 256 - ((Crystal / 384) / Baud),晶体频率为Hz。我们这里使用的晶体是11.0592 MHz,我们需要的波特率是9600。将这些值代入上述方程,得到TH1=256-((11.0592/384)/9600)=253。加载SCON寄存器50H,设置串口模式为Mode1,并使能接收器。

下一部分是控制GSM模块来执行我们的任务,即向给定的移动号码发送预定的消息。此时需要先向GSM模块发送AT命令查看状态。格式为AT/r。这是通过依次发送A的ascii码,然后是T的ascii码和/r(回车)的ascii码到GSM模块。回车符的ascii码是0DH。

然后向GSM模块发送AT+CMGF=1命令,配置短信模式下的GSM模块。格式为AT+CMGF=1/r。这是通过发送的ascii代码,然后ascii代码(T)然后ascii代码+,然后ascii代码的c、M的ascii代码,然后ascci G代码,那么F的ascii代码,然后ascii代码=,然后ascci代码+,然后ascii代码1 / r的最后ascci代码。

然后向GSM模块发送命令AT+CMGS=“手机号”,将目标手机号发送给GSM模块。格式为AT+CMGS=“手机号码”/r。GSM模块,用于配置短信模式下的GSM模块。格式为AT+CMGF=1/r。这是通过发送的ascii代码,然后ascii代码(T)然后ascii代码+,然后ascii代码的c、M的ascii代码,然后ascii代码的G,然后ascii代码的年代,然后ascii代码=,然后ascii代码”,然后ascii代码的每个手机号码的一个接一个地的ascii代码”最后的ascii代码/ r。

然后你需要发送短信文本到GSM模块。这是通过将文本中每个字母的ascii码一个接一个地发送到GSM模块来完成的。最后将CTRL+Z(代入)的ascii码发送给GSM模块发送消息。“CTRL+Z”的HEX格式ascii码为01AH。为了给GSM模块足够的时间接受和执行每个命令,每个命令之间必须有1秒的延迟。整个过程可以简单地写成如下所示。

1 / r s延迟。+ CMGF = 1 / r 1 s延迟。AT+CMGS=“手机号码”/r 1S延时。消息文本。1 s延迟。CTRL + Z 1 s延迟。

串行通信用于向GSM模块发送不同命令的单个字母的ascii码。这是通过将每个字母的ascii码加载到累加器A并调用子例程SEND来实现的。子程序SEND通过清除SCON寄存器的发送标志位TI和将累加器A中的内容加载到SBUF寄存器来工作。传输标志TI由uC在传输完成后设置。子例程监视此标志,并在发现设置该标志时退出。使用JB指令检查TI标志的状态。

文本“SENT”显示在LCD模块后的最后一个命令ie;向GSM模块发送CTRL+Z。LCD模块与微控制器的接口方法是经典的8线接口模式。读这篇文章接口LCD模块到8051感谢理解这部分。

在LCD上显示消息SENT之后,使用代码HERE1:SJMP HERE1暂停程序。如果不这样做,程序将无限循环并一次又一次地发送消息。您需要手动按下重置按钮重新发送消息。

笔记。

  • GSM模组在市场上可用有不同的电源电压,如12V, 9V, 5V等。我在这里使用的模块操作12V。因此,给电源模块,根据您的GSM模块的数据表。
  • GSM模块打开后,需要一段时间才能进入网络。GSM模组上会有一个LED指示灯。在大多数GSM模块中,当GSM模块准备使用时,网络指示灯LED开始以固定速率闪烁。
  • 确保你的SIM卡有足够的现金余额,并且与你正在使用的GSM模块相匹配。
作者

6评论

  1. 亚达夫

    先生,这是一件很有用的物品。
    我只是想知道我们可以发送一个DTMF代码到我们的GSM模块吗?如果是,那么控制室如何得到那个否?它将如何转换,串行接收数据到8位十六进制?我想知道这一切,因为我想控制将连接在8051端口之一的设备。
    先生,请答复,我在等你的答复。
    谢谢. .

Baidu