韦德体育投注网是什么,韦德体育app

How to Interface GSM Module to 8051 Micro Controller-Send and Receive SMS

praveen December 23, 2016 6 Comments

This article is about interfacing GSM module to 8051 microcontroller. GSM module has become a very commonly occurring hardware in embedded system applications and the knowledge on how to interface GSM module with microcontroller is very essential if you want to become a good embedded system designer.

GSM module

GSM ( communications) module is basically a modem which accepts a and works in the GSM network provided by the operator just like a mobile phone. The GSM module can be controlled by a  computer or a microcontroller to do different tasks in the network such as calling, sending messages, accepting messages, sending FAX etc. The GSM module usually communicates with the parent hardware by means of serial communication. If the parent hard ware is a personal computer, the communication is usually done through the serial port (RS232) and if the parent system is  microcontroller based, the communication is through the TTL pins Rx and Tx. Advanced GSM modules may even have bluetooth or Wi-Fi connectivity. Common applications of GSM module are message delivery/reception systems, mobile based appliance control systems or simply any data communication application which is supported by the GSM network provider and the GSM module.

GSM Module – Buyers Guide韦德体育投注网是什么,韦德体育app – are you looking to buy a GSM module? There are a handful of product variants for GSM module – like SIM900, SIM300, SIM800 etc. We have created this buyers guide to help you select the right GSM module for your project needs.

Gsm Module and 8051

The parent hardware (PC or uC) does different tasks with the GSM module by sending different different commands and the data to the module in a suitable order and format. The GSM module we are using here is SIM900 type and commonly used SIM900  and the task we are doing here with the module is to send a message to a mobile phone The commands and their  format required for this application are given below.

AT to check the modem.

AT+CMGF=1 to configure the GSM module to SMS mode.

AT+CMGS=”mobile number  to send the mobile number to the GSM module.

CTRL+Z to send the message.

Circuit diagram.

Interface GSM Module to 8051 Circuit Diagram

 

The circuit diagram for interfacing GSM module to 8051 microcontroller is shown above. Here the GSM module and the microcontroller communicates in between using serial communication. Rx pin of the 8051 is connected to Tx pin of the GSM module and Tx pin of the 8051 is connected to the Rx pin of the GSM module. The LCD module is involved in this project to give an indication message when the SMS is sent. Switch S1, capacitor C4 and resistor R2  are associated with reset circuit of the microcontroller. Capacitor C1, C2 and crystal X1 are associated with clock circuit. C3 is just a noise by-pass capacitor. Resistor R2 is used to set the contrast of the LCD display. Resistor R3 limits the current through the back light LED.

Program.

ORG 000HMOV TMOD,#00100001B        MOV TH1,#253D           MOV SCON,#50H          SETB TR1RS EQU P2.7RW EQU P2.6E  EQU P2.5        MAIN: ACALL DINT MOV A,#"A"ACALL SENDMOV A,#"T"ACALL SENDMOV A,#0DHACALL SENDACALL DELAY1MOV A,#"A"ACALL SENDMOV A,#"T"ACALL SENDMOV A,#"+"ACALL SENDMOV A,#"C"ACALL SENDMOV A,#"M"ACALL SENDMOV A,#"G"ACALL SENDMOV A,#"F"ACALL SENDMOV A,#"="ACALL SENDMOV A,#"1"ACALL SENDMOV A,#0DHACALL SENDACALL DELAY1MOV A,#"A"ACALL SENDMOV A,#"T"ACALL SENDMOV A,#"+"ACALL SENDMOV A,#"C"ACALL SENDMOV A,#"M"ACALL SENDMOV A,#"G"ACALL SENDMOV A,#"S"ACALL SENDMOV A,#"="ACALL SENDMOV A,#34DACALL SENDMOV A,#"+"ACALL SENDMOV A,#"9"ACALL SENDMOV A,#"1"ACALL SENDMOV A,#"9"ACALL SENDMOV A,#"5"ACALL SENDMOV A,#"4"ACALL SENDMOV A,#"4"ACALL SENDMOV A,#"3"ACALL SENDMOV A,#"4"ACALL SENDMOV A,#"0"ACALL SENDMOV A,#"0"ACALL SENDMOV A,#"7"ACALL SENDMOV A,#"7"ACALL SENDMOV A,#34DACALL SENDMOV A,#0DHACALL SENDACALL DELAY1MOV A,#"H"ACALL SENDMOV A,#"E"ACALL SENDMOV A,#"L"ACALL SENDMOV A,#"L"ACALL SENDMOV A,#"O"ACALL SENDACALL DELAY1MOV A,#1AHACALL SENDACALL DELAY1ACALL DINT     ACALL TEXT1ACALL DELAY1HERE1:SJMP HERE1SEND:CLR TI     MOV SBUF,AWAIT:JNB TI,WAIT     RETDELAY1: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,#0FFh    SETB E    MOV A,P0    JB ACC.7,DELAY    CLR E    CLR RW    RET             DISPLAY:MOV P0,A    SETB RS    CLR RW    SETB E    CLR E    ACALL DELAY    RET                 CMD: MOV P0,A    CLR RS    CLR RW    SETB E    CLR E    ACALL DELAY    RET DINT:MOV A,#0FH     ACALL CMD    MOV A,#01H     ACALL CMD    MOV A,#0CH     ACALL CMD    MOV A,#06H     ACALL CMD    MOV A,#81H     ACALL CMD    MOV A,#3CH     ACALL CMD    RET   TEXT1: MOV A,#"S"    ACALL DISPLAY    MOV A,#"E"    ACALL DISPLAY    MOV A,#"N"    ACALL DISPLAY    MOV A,#"T"    ACALL DISPLAY    MOV A,#" "    ACALL DISPLAY    MOV A,#" "    ACALL DISPLAY    MOV A,#" "    ACALL DISPLAY    RET               END

About  the program.

韦德体育投注网是什么,韦德体育appTimer 1 of the 8051 is is configured Mode 2 for serial communication. Timer 0 of the 8051 is configured as Mode 1 timer for creating few delays used in the program. TMOD register is loaded with 00100001B for this purpose. TH1 is loaded with 253D for setting the baud rate to 9600. The relevat equation is TH1 = 256 – ((Crystal / 384) / Baud) where crystal frequency is in Hz. The crystal we are using here is of 11.0592 MHz and the baud rate we need is 9600. When substituting these values in the above equation, we get TH1=256-((11.0592/384)/9600)=253. SCON register is loaded with 50H for setting the serial port mode to Mode1 and receiver enabled.

The next part is controlling the GSM module for performing our task which is to send a predetermined message to a given mobile number. For this, first you need to send the command AT to the GSM module for checking the status. The format is AT/r.This is done by sending the ascii code of A , then ascii code of T and ascii code of /r ( carriage return) to the GSM module one by one.The ascii code of carriage return is 0DH.

Next you have to send the command AT+CMGF=1 to the GSM module for configuring the GSM module in the SMS mode. The format is AT+CMGF=1/r.This is done by sending the ascii code of A, then ascii code of T, then ascii code of + ,then ascii code of c, then ascii code of M, then ascci code of G, then ascii code of F, then ascii code of =, then ascci code of +,then ascii code of 1 and finally the ascci code of /r.

韦德体育投注网是什么,韦德体育appNext you have to send the command AT+CMGS=”mobile number” to the GSM module for sending the target mobile number to the GSM module. The format is AT+CMGS=”mobile number”/r. GSM module for configuring the GSM module in the SMS mode. The format is AT+CMGF=1/r.This is done by sending the ascii code of A, then ascii code of T, then ascii code of + ,then ascii code of c, then ascii code of M, then ascii code of G, then ascii code of s, then ascii code of =, then ascii code of “, then ascii code of of each of the mobile number one by one, then the ascii code of” and finally the ascii code of /r.

韦德体育投注网是什么,韦德体育appThen you need to send the message text to the GSM module. This is done by sending the ascii code of each letters in the text to the GSM module one after another.Finally the ascii code of CTRL+Z (substitute) is send to the GSM module for sending the message. The ascii code of CTRL+Z in HEX format is 01AH. A delay of 1 second has to be introduced between each commands for giving the GSM module enough time to accept and execute each commands.  The entire procedure can be simply written as given below.

AT/r1S delay.AT+CMGF=1/r1S delay.AT+CMGS="mobile number"/r1S delay.message text.1S delay.CTRL+Z1S delay.

Serial communication is used for sending ascii codes of individual letters of the different commands to the GSM module. This is done by loading the ascii code of each letter to accumulator A and calling the subroutine SEND. The subroutine SEND works by clearing the transmit flag bit TI of the SCON register and the loading to content in accumulator A to SBUF register. The transmit flag TI will be set by the uC when the transmission is complete. The subroutine monitors this flag and exits when it is found to be set. The status of the TI flag is checked using JB instruction.

The text “SENT” is displayed on the LCD module after the last command ie; CTRL+Z is sent to the GSM module. The method used for interfacing the LCD module to the microcontroller is the classic 8 wire interface mode. Read the article Interfacing LCD module to 8051 韦德体育投注网是什么,韦德体育appfor understanding this part well.

The program is halted there using the code HERE1:SJMP HERE1 after the message SENT is displayed on the LCD. If this is not done so, the program will loop infinitely and send the message again and again. You need to press the reset button manually to send the message again.

Notes.

  • The GSM modules available in the market comes with different supply voltages like 12V, 9V, 5V etc. The module I am using here operates on 12V. So give the power supply to the module according to your GSM modules datasheet.
  • The GSM module requires some time to get in to the network after it is switched ON. There will be an indicator LED on the GSM module for this purpose. In most GSM modules the network indicator LED starts blinking in a fixed rate when the GSM module is ready to use.
  • Make sure that your SIM card has enough cash balance and it matches with GSM module you are using.
Comments
  • Yadav
    March 24, 2016

    sir, this is very usefull article.
    I just want to know that can we send a DTMF code to our GSM module ? if yes, then how controllar will get that no? how it will convert that serially received dato to 8 bit hex? I want to know all this, because i want to controll the devices which will be connected at one of the port of 8051.
    plz reply sir I am waiting for ur answer.
    thanks..

Leave a Reply