¿Cuál es el procedimiento más sencillo para conectar el microcontrolador 51 y el sim900a?
Descripción del programa:
Después de ejecutar el programa, si el módulo gprs encuentra la señal del proveedor de servicios, llamará al teléfono especificado.
1. Conecte el puerto serie 1 de su propio microcontrolador 51 al tx rx gnd de GSM.
2. Busque #define delante del programa, modifique la configuración de SCM de acuerdo con las instrucciones y luego compile el programa.
Descarga el programa
3. Pulsa el botón de reinicio del módulo para iniciar el módulo, espera a que la luz de señal parpadee lentamente y reinicia el microcontrolador.
4. Espere a que la transferencia se realice correctamente
*************************** ******* *******************************/
# incluir & ltREGX52. H & gt
#Definir carácter uchar sin signo
#Definir uint entero sin signo
//La siguiente es la configuración de LED en la placa. Reemplace Px_x con su pie correspondiente.
#define LED1_ON P1_0 = 0
# define led 1_OFF p 1_0 = 1
#define LED2_ON P1_1 = 0
# define led 2_OFF p 1 _ 1 = 1
#define LED3_ON P1_2 = 0
# define led 3 _ OFF p 1 _ 2 = 1
#define LED4_ON P1_3 = 0
# define led 4 _ OFF p 1 _ 3 = 1
//El siguiente es el tamaño del oscilador de cristal de su microcontrolador 51.
# define FOSC _ 110592m
//#define FOSC_12M
//El siguiente es el contenido enviado al teléfono móvil después de encenderlo. El número enviado está en el programa Revisar.
uchar SMS_text【】="123";
//Tenga en cuenta que ya sea que la señal se reciba o envíe, se ingresará la rutina del servicio de interrupción.
/*Programa de inicialización (debe usarlo, de lo contrario no se puede enviar ni recibir), el segundo programa usará el temporizador 1*/
void serial inti() // valor inicial Elemento de configuración (debe usarse, de lo contrario no se puede enviar ni recibir)
{
TMOD = 0x 20; //Temporizador 1 modo de trabajo 2: temporizador de sobrecarga automática de 8 bits< / p>
# ifdeffosc _ 12m//Establezca aquí diferentes valores según el tamaño del oscilador de cristal para inicializar el puerto serie.
th 1 = 0x F3; //Carga el valor inicial a una velocidad de 2400 baudios.
TL 1 = 0x F3;
# En caso contrario
th 1 = 0x FD //Carga el valor inicial a una velocidad de 9600 baudios.
TL 1 = 0x FD;
# endif //SOC _ fin de 12M
tr 1 = 1 //Encender el temporizador
SM0 = 0; //Establece el modo de trabajo de la comunicación en serie (10 es una transmisión, la velocidad en baudios es variable, controlada por la velocidad de desbordamiento del temporizador 1).
sm 1 = 1; //(igual que arriba) En este modo, una vez que el temporizador se desborda, se enviará un bit de datos.
REN = 1; //Bit de habilitación de recepción en serie (establezca sm0sm1 antes de activar la habilitación en serie)
EA = 1; //Active la interrupción del host
ES = 1; //Abrir interrupción del puerto serie
}
/*La interrupción de la comunicación serie se ingresará después de recibir y enviar*/
Interrupción serie no válida( ) interrumpir 4
{
//a = SBUF;
P2 = SBUF
RI = 0; La señal de interrupción se borra, lo que indica que la recepción continuará.
//flag = 1; //Ingrese el símbolo de interrupción
}
envío UART 1 nulo (uchar c)
{
SBUF = c;
And (!TI); // Espere a que aparezca la señal de finalización de la transmisión (TI=1).
TI = 0;
}
//El puerto serie envía continuamente la matriz de caracteres y se detiene cuando encuentra el número de terminación /0.
void UART 1 envía (uchar * str)
{
mientras (* str!='\0')
{
SBUF = * str
Y (!TI); //Espera a que aparezca la señal de finalización de la transmisión (TI=1).
TI = 0;
str++;
}
}
// La función de retardo se trata de 1s, pero no se permite cuando el retraso es grande. ...
Tiempo de retardo no válido (segundos intermedios)
{
uint i, j = 0;
for(I = 0;i<seci++)
{
para (j = 0;j & lt65535;j++)
{
}< /p >
}
}
void main()
{
uchar I = 0;
led 1 _ APAGADO;
LED2 _ APAGADO
LED3 _ APAGADO
LED4 _ APAGADO
serial inti(); p>
mientras(1)
{
led 1 _ ON
LED2 _ OFF
UART 1 envía( "AT+CMGF = 1\r");
Dresseq(3); //retraso 3 segundos
Envíos UART 1("AT+CSCS=" GSM "\r" );
Dressec(3); //retraso 3 segundos
Envíos UART 1("AT+CSMP = 17, 167, 0, 250 \r"); Modo SMS (modo de guardado automático del teléfono móvil)
//Envíos UART 1 ("AT+CSMP = 17,167,0,240 \r"); //Modo SMS del dispositivo (modo de no guardado automático del teléfono móvil) )
Dreuse (3); //Retraso de 3 segundos
Envíos UART 1 ("AT+CMGS="18332563682"\r" ); (5); //Retraso 3 segundos
Envíos UART 1 (SMS_text);
Envío UART 1 (0x 1a);
LED2_ON
led 1_OFF;
Dreuse (15); //Retraso 20 segundos
}
}
//Se puede conectar p3.0 y p3.1.