You are on page 1of 25

Em ang lm mt ti v module sim , em code thnh cng gi nhn tin nhn, nhng khi em code gi tin

nhn nhiu ln th n b li , ch gi c 2 ln th con 89s52 ca em li reset


#include<AT89X51.h>
#include<string.h>
#include<stdio.h>
#include <stdlib.h>
#define spwr P1_1
#define LCDPORT P2
sbit _RS=P3^7;
sbit _E =P3^6;
bit ___status=0;
#define lcd_delay 400

// Khai bao thu vien de su dung ham strlen()

// Chan kich hoat module sim

char sokt,ktchuoi,tam;
char goi[]="RING";
char tntoi[]="CMTI";
char nt[]=">";
char Error[] ="ERROR";
char OK[] = "OK";
char idata sdt[15],nd[12];
unsigned char Mat_Khau[6] = {0,1,0,9,9,7};
unsigned char Code[6] = {112,112,112,112,112,112};
unsigned char Ki_Tu_Nhap_Vao[11] = {112,112,112,112,112,112,112,112,112,112,112};
char idata ktnhan[60];
long demtg;
unsigned char dsdt,dnd,dem,On_Off_Bang,Nhap_Sai_Mat_Khau,cthtx,length,z,j,Cot,Hang,Vi_Tri_Con_Tro;
unsigned char Cho_Phep_Nhap,Doi_Mat_Khau,Kt,i,Lap_Sai_Mat_Khau;
unsigned char dsdt,Gioi_Han_Con_Tro;
code unsigned char P16cu,P17cu;
code unsigned char sdtchunha[11];
sbit eeprom_sda_pin = P3^3;
sbit eeprom_scl_pin = P3^2;
void guitinnhan(void);
void guitinnhan1(unsigned char *sodienthoai,unsigned char *noidung);
int Kiem_Tra_So_Dien_Thoai(void);
void Thong_Bao(unsigned char *Dong1,unsigned char *Dong2);
void In_Lai_So(void);
void Random(void);
void Quet_Phim(void);
void delay(unsigned int j);
void lcd_com(unsigned char a);
void lcd_com(unsigned char a);
void lcd_lenh(unsigned char a);
void lcd_data(unsigned char a);
void lcd_init(void);
void lcd_puts(char *aaa);
void delay_us(unsigned char us);
void delay_ms(unsigned char ms);
1

void delays(int x);


void sendchuoi(char *a);
void init(void);
void send(unsigned char a);
void clock();
void eeprom_start();
void eeprom_stop();
void send_data (char x);
char get_data();
void write_data(unsigned char addres,unsigned char byte);
char read_data(unsigned char addres);
//>> chuong trinh chinh
void main()
// Chuong trinh chinh
{
unsigned char i,z;
ktchuoi = 0; cthtx = 0; dem = 0; tam = 0; dsdt = 0; dnd = 0;
P1=0xFF;
for(i=0;i<10;i++)
{
ktnhan=48;
}
lcd_init();
lcd_lenh(0x80);
lcd_puts("RESET MUDULESIM:");
P2=0x00;P1=0x00;P2=0x00;
//P3=0x00;
//sendchuoi("AT");
// Gui hm gui 1 chuoi
//send(13); 7
spwr=0;
init();
sendchuoi("AT");
send(0X0D);
delays(5);
{
sendchuoi("AT+CMGF=1");send(0X0D);
delays(5);
sendchuoi("AT+CNMI=2,1,0,0,0");send(0X0D);
delays(5);
sendchuoi("ATE0");send(0X0D);
delays(5);
sendchuoi("AT+CMGD=1,4\r\n");send(0x0D);
delays(10);
}
delays(5);
sendchuoi("AT");
send(0X0D);
tam=0;
cthtx = 0;
while(1)
{
Random();
2

sendchuoi("AT+CMGS=\"");
sendchuoi("0906454203");
sendchuoi("\"\r\n\Ma Code");
delay(50);
sendchuoi("\r\n");
delay(50);
send(26);
delays(1);
for(i=0;i<60;i++)
{
ktnhan = 0;
}
sendchuoi("AT+CMGD=1,4\r\n");send(0x0D);
delay_ms(500);
delay_ms(3000);
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

}
delays(1);
if(read_data(0) == 0)
{
lcd_lenh(0x01);
lcd_lenh(0x80);
lcd_puts(" Xin chao ");
lcd_lenh(0xC0);
lcd_puts("Lan dau su dung!");
delays(5);
lcd_lenh(0x01);
lcd_lenh(0x80);
lcd_puts("So dien thoai: ");
lcd_lenh(0xC0);
Gioi_Han_Con_Tro = 11;
while(1)
{
Quet_Phim();
}
}
else
{
lcd_lenh(0x01);
lcd_lenh(0x80);
lcd_puts(1);
}
while(1)
{
if (cthtx == 1)
{
demtg++;
if(demtg>100)
{
demtg=300;
if(strstr(ktnhan,tntoi))
{
delays(1);
tam = 1;
3

//
sendchuoi("AT+CMGR=1");send(0X0D);
//
delays(5);
//
sendchuoi("AT+CMGD=1");send(0X0D);
//
dsdt = 0; dnd = 0;
//
length = sokt;
//
lcd_lenh(0x01);
//
lcd_lenh(0x80);
// //******** code tach so dien thoai ******
//
for(i=0;i<sokt;i++)
//
if((ktnhan == 34) && (ktnhan[i+1] == 43))
//
{
//
for(j=i+1;j<sokt;j++)
//
if(ktnhan[j] == 34)
//
{
//
for(z=i+1;z<j;z++)
//
{
//
sdt[dsdt] = ktnhan[z];
//
dsdt++;
//
}
//
break;
//
}
//
break;
//
}
// //******** code tach noi dung dien thoai *****
//
for(i=sokt;i>0;i--)
//
{
//
if((ktnhan == 75) && (ktnhan[i-1] == 79))
//
{
//
for(j=sokt;j>0;j--)
//
{
//
if(ktnhan[j] == 34)
//
{
//
for(z=j+1;z<=i-2;z++)
//
{
//
nd[dnd] = ktnhan[z];
//
dnd++;
//
}
//
break;
//
}
//
}
//
}
//
delays(5);
//
tam = 0;
//
guitinnhan();
//
}
//
sokt=0;
//
cthtx = 0;
//
}
//
delay(50);
//
}
//
}
}

void Quet_Phim(void)
{
unsigned int Tam = 0;
P0 = 0xF0;
ACC = P0;
if (ACC != 0xF0)
{
Cot = 0;
Hang = 0;
delay_us(50);
ACC = P0;
Tam = ACC;
if (ACC != 0xF0)
{
Tam = Tam / 16;
while(1)
{
Cot = Cot + 1;
B = Tam;
B = B % 2;
Tam = Tam / 2;
if (B == 0)
{
P0 = 0x0F;
ACC = P0;
Tam = ACC;
while(1)
{
Hang = Hang + 1;
B = Tam;
B = B % 2;
Tam = Tam / 2;
if (B == 0)
{
Tam = (Hang - 1 ) * 4 + Cot;
switch(Tam)
{
// Phan nap so
case 1:
case 5:
case 6:
case 7:
case 9:
case 10:
case 11:
case 13:
case 14:
case 15:
if (Vi_Tri_Con_Tro < Gioi_Han_Con_Tro)
{
switch(Tam)
{
case 1:
5

Random();
lcd_lenh(0x01);
lcd_lenh(0x80);
for(i=0;i<6;i++)
lcd_data(Code + 48);
//Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 0;
break;
case 5:
Random();
lcd_lenh(0x01);
lcd_lenh(0x80);
for(i=0;i<6;i++)
lcd_data(Code + 48);
//Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 9;
break;
case 6:
Random();
lcd_lenh(0x01);
lcd_lenh(0x80);
for(i=0;i<6;i++)
lcd_data(Code + 48);
// Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 8;
break;
case 7:
Random();
lcd_lenh(0x01);
lcd_lenh(0x80);
for(i=0;i<6;i++)
lcd_data(Code + 48);
//Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 7;
break;
case 9:
Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 6;
break;
case 10:
Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 5;
break;
case 11:
Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 4;
break;
case 13:
Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 3;
break;
case 14:
Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 2;
break;
case 15:
Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 1;
break;
}
lcd_data(Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] + 48);
if(Vi_Tri_Con_Tro == Gioi_Han_Con_Tro - 1)
{
6

lcd_lenh(0x10);
}
else
if(Vi_Tri_Con_Tro < Gioi_Han_Con_Tro)
{
Vi_Tri_Con_Tro++;
}
break;
}
// Phim lui
case 2:
if(Vi_Tri_Con_Tro > 0)
{
Vi_Tri_Con_Tro = Vi_Tri_Con_Tro - 1;
lcd_lenh(0x10);
}
break;
// Phim toi
case 3:
if(Vi_Tri_Con_Tro < Gioi_Han_Con_Tro)
{
Vi_Tri_Con_Tro = Vi_Tri_Con_Tro + 1;
lcd_lenh(0x14);
}
break;
// Phm DEL ( xa ki tu )
case 4:
{
Ki_Tu_Nhap_Vao[Vi_Tri_Con_Tro] = 122;
lcd_data(160);
lcd_lenh(0x10);
}
break;
// Phim mo/dong cua
case 8 :
case 12:
{}
break;
case 16:
{
switch(Gioi_Han_Con_Tro)
{
case 6:
{
}
break;
case 7:
{
}
break;
case 11:
7

{
if(Kiem_Tra_So_Dien_Thoai() == 0) // sdt sai yeu cau nhap lai
{
Thong_Bao(" So DThoai Sai"," Moi Nhap Lai! ");
delays(5);
lcd_lenh(0x01);
lcd_lenh(0x80);
lcd_puts("So dien thoai:");
In_Lai_So();
}
else
{
//Gioi_Han_Con_Tro = 7;
for(i=0;i<11;i++)
Ki_Tu_Nhap_Vao = 112;
Random();
sendchuoi("AT+CMGS=\"");
sendchuoi("0905098365");
sendchuoi("\"\r\n");
delay_ms(500);
sendchuoi("Ma code:");
for(i=0;i<6;i++)
send(Code + 48);
sendchuoi("\r\n");
delay_ms(500);
send(26);
delay_ms(500);
lcd_lenh(0x01);
lcd_lenh(0x80);
lcd_puts("Dang gui code");
guitinnhan();
sendchuoi("AT+CMGD=1");send(0X0D);
delays(1);
lcd_lenh(0x01);
lcd_lenh(0x80);
lcd_puts("Da gui code");
}
}
break;
}
}
break;
}
while (1)
{
ACC = P0;
if (ACC == 0x0F)
break;
}
break;
}
}
break;
8

}
}
}
}
}
void guitinnhan(void)
{
unsigned char i;
sendchuoi("AT+CMGS=\"");
for(i=0;i<dsdt;i++) send(sdt);
sendchuoi("\"\r\n");
delay_ms(500);
for(i=0;i<dnd;i++) send(nd);
sendchuoi("\r\n");
delay_ms(500);
send(26);
delay_ms(500);
}
void guitinnhan1(unsigned char *sodienthoai,unsigned char *noidung)
{
sendchuoi("AT+CMGS=\"");
sendchuoi(sodienthoai);
sendchuoi("\"\r\n");
delay_ms(500);
sendchuoi(noidung);
sendchuoi("\r\n");
delay_ms(500);
send(26);
delay_ms(500);
}
int Kiem_Tra_So_Dien_Thoai(void)
{
unsigned int i,tam,dem;
tam = 0; dem = 0;
for (i=0;i<11;i++)
if(Ki_Tu_Nhap_Vao == 112)
{
dem = dem + 1;
}
if (dem > 1)
{
tam = 1;
}
else
if (dem == 1)
{
if(Ki_Tu_Nhap_Vao[11] == 112)
{
tam = 0;
}
else
{
tam = 1;
9

}
}
else
{
tam = 0;
}
if(tam == 0)
{
return 1;
}
else
{
return 0;
}
}
void Thong_Bao(unsigned char *Dong1,unsigned char *Dong2)
{
lcd_lenh(0x01);
lcd_lenh(0x80);
lcd_puts(Dong1);
lcd_lenh(0xC0);
lcd_puts(Dong2);
}
void In_Lai_So(void)
{
lcd_lenh(0xC0);
for(i=0;i<Gioi_Han_Con_Tro;i++)
{
lcd_data(Ki_Tu_Nhap_Vao + 48);
}
lcd_lenh(0xC0 + Vi_Tri_Con_Tro);
}
void Random(void)
{
for(i=0;i<6;i++)
{
Code = rand()%9;
delay_us(20);
}
}
void delay(unsigned int j)
{
unsigned int i=0;
for(;i<j;i++);
}
void lcd_com(unsigned char a)
{
LCDPORT=a;
_E=1;
delay(lcd_delay);
_E=0;
}
void lcd_lenh(unsigned char a)
10

{
_RS=0;
lcd_com(a);
}
void lcd_data(unsigned char a)
{
___status=1;
_RS=1;
lcd_com(a);
}
void lcd_init(void)
{
delay(lcd_delay);
lcd_lenh(0x38);
delay(lcd_delay);
lcd_lenh(4);
delay(lcd_delay);
lcd_lenh(0x85);
delay(lcd_delay);
lcd_lenh(6);
delay(lcd_delay);
lcd_lenh(1);
delay(lcd_delay);
lcd_lenh(15);
}
void lcd_puts(char *aaa)
{
unsigned int i=0;
for(;aaa!=0;i++)
lcd_data(aaa);
}
//> delay
void delay_us (unsigned char us)
{
while(us--);
}
void delay_ms(unsigned char ms)
{
while(ms--)
{
unsigned char i=122;
while(i--);
}
}
void delays(int x)
{
while(x>0)
{x--;delay_ms(500);}
}
//> giao tiep may tinh
void sendchuoi(char *a)
{
int i,n; //Khai bo bi?n c?c b? s? nguyn: i,n
11

n=strlen(a); //Tnh d? di c?a chu?i *a, luu vo bi?n n


for(i=0;i<n;i++) //Vng l?p d? g?i l?n lu?t t?ng k t? ln,
{ //cho d?n khi h?t chu?i *a (k t? th? n-1).
send(a); //G?i hm g?i 1 k t?.
}
}
void ngatnoitiep(void) interrupt 4 using 1
{
char a;
if (RI==1)
{
a=SBUF; //lay du lieu tu SBUF
if(a==0)
{
sokt=0;
}
else
if(tam == 0)
{
if(a>=10)
{
{
cthtx = 1; // c tn hi?u truy?n xu?ng
demtg=0;
ktnhan[sokt]=SBUF;
sokt++;
if(sokt>500)
{
sokt=0;
}
}
}
}
else
if(tam == 1)
{
if(a>31)
{
{
cthtx = 1; // c tn hi?u truy?n xu?ng
demtg=0;
ktnhan[sokt]=SBUF;
sokt++;
if(sokt>500)
{
sokt=0;
}
}
}
}
RI = 0;
}
else
12

if (TI==1)
{
TI = 0;
};
}
//---------------------------------------//So sanh CMTI
void init()
{
EA = 1; // cho phep dung ngat
ES = 1; // dung ngat noi tiep
SCON=0x50; //PORT NOI TIEP CHE DO 1
TMOD = 0x20; // dung timer1, che do 8 bit tu nap lai
TH1 =-3; //Ci d?t t?c d? 9600 baud; // -3,0x7e chon tan so bus = 9600
TR1 = 1 ; // khoi dong timer1
RI=0;TI=0;
}
void send(unsigned char a)
{
SBUF=a; //Ghi 1 byte d? li?u vo thanh ghi SBUF
delay_us(160);
//while(TI==0){} //vng l?p d? d?i c? truy?n TI ln 1
//TI=0; //Xa c? truy?n TI sau khi truy?n xong
}
//>> 24c02
//--------------------------------------------------------------------------------------------//-------------------- 24c02c ----------------------------------------------------------------//--------------------------------------------------------------------------------------------void clock()
{
eeprom_scl_pin=1;
delay(2);
eeprom_scl_pin=0;
}
void eeprom_start()
{
eeprom_sda_pin=1;
delay(1);
eeprom_scl_pin=1;
delay(2);
eeprom_sda_pin=0;
delay(1);
eeprom_scl_pin=0;
}
//;=========================================================
void eeprom_stop()
{
eeprom_sda_pin=0;
delay(1);
eeprom_scl_pin=1;
delay(2);
eeprom_sda_pin=1;
13

delay(1);
eeprom_scl_pin=0;
}
//;=========================================================
void send_data (char x)
{
char z;
for(z=7;z>=0;z--)
{
eeprom_sda_pin = ((x>>z)&0x01);
clock();
}
eeprom_sda_pin=1;
while(eeprom_sda_pin==1){}
clock();
}
char get_data()
{
char z,dl;
dl=0;
eeprom_sda_pin=1;
for(z=0;z<8;z++)
{
if(eeprom_sda_pin==1)
dl = (dl << 1)|0x01;
else dl = dl << 1;
clock();
}
eeprom_sda_pin=1;
clock();
return dl;
}
void write_data(unsigned char addres,unsigned char byte)
{
eeprom_start();
send_data(0xa0);
send_data(addres);
send_data(byte);
eeprom_stop();
}
//;=========================================================
char read_data(unsigned char addres)
{
char byte;
eeprom_start();
send_data(0xa0);
send_data(addres);
eeprom_start();
send_data(0xa1);
byte=get_data();
eeprom_stop();
return byte;
}
14

http://codientu.org/threads/14880/

Giao tip 8051 vi IC SIM 900


#include <REGX52.H>
#include <string.h>
#include "stdio.h"
#include "math.h"
// Define Macro
#define RL1 P2_0
#define RL2 P2_1
#define RL3 P2_2
#define RL4 P2_3

//-------------------------------------------------------// Global variable


#define BUFF_SIZE 20
unsigned char buffer[BUFF_SIZE];
//unsigned char dl_rv;
unsigned char timer_count;
bit flag__;
bit ok;
char dem;

//------------------------------------------------------------// Function Static


void truyen_mang(char *s);
void xu_ly_tin_nhan(void);
void Process_mess(char *dtin);
//--------------------------------------------------------------------// ctrinh delay
void delay(unsigned int ms)
{
unsigned int i;
for(i=0;i<ms;i++);
}
//-------------------------- chuong trinh ngat nhan byt co tin nhan gui toi
//
khi co tin nhan gui toi thi thuc hien doc tin nhan
void isr_tinnhan() interrupt 0
{
truyen_mang("AT+CMGR=1\r"); // doc tin nhan tai o nho thu 1 cua SIM.
delay(2000);
}
//------------------------------------------------------// ham xu ly du lieu nhan duoc
//----------------------------------------------------------------// khoi tao UART
void khoitao_uart(void)
15

//
//

SCON=0x52;
TMOD=0x21;
// khoi tao 2 timer time1 dung cho UART, timer0 dng de tao time doc tin nhan
TH1=TH1=-3;
// baud = 9600
//TH0 = -10000/256; // 10ms
//TL0 = -10000%256;
TR1=1;
ES = 1;
//TR0 = 1;
ET0 = 1;
EX0 = 1;
IT0 = 1;
EA =1;

}
//---------------------------------clear buff-----------//
void clear_buffer(void)
{
unsigned char i;
for(i = 0 ; i< BUFF_SIZE ; i++)
{
buffer[i] = '\0';
}
}
//-------------------------------------------------------------------------// Chuong trinh ngat UART nhan du lieu tu sim
void isr_interrup() interrupt 4
{
char dl_rv;
if(RI)
{
dl_rv=SBUF;
switch (dl_rv)
{
case '\*':
clear_buffer();
dem = 0;
break;
case '#':
Process_mess(buffer);
break;
default:
buffer[dem] = dl_rv;
dem++;
if(dem>BUFF_SIZE)
dem=0;
break;
}
RI = 0;
}
}
//-------------------------------------------------------//+CMGR: "REC READ","+841653263756","","13/05/20,19:49:22+28"TB1 ON 1234>
16

//>
//OK
//--------------------------------------------------

//---------------------------------------------------------------// truyen mang dl xuong sim


void truyen_mang(char *s)
{
//
putchar(0x0d);
//xuong dong
while(*s)
{
putchar(*s);
s++;
delay(1000);
}
}
//---------------------------------------------------------------// Khoi tao Sim 900
void khoitao_sim(void)
{
delay(4000);
truyen_mang("AT\n\r");
delay(10000);
truyen_mang("AT+CMGF=1\n\r");
delay(10000);
}
//---------------------------------------------------------// xu ly tin nhan nhan duoc
void Process_mess(char *dtin)
{
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '1') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') &&
(*(dtin+5)== 'N') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') &&
(*(dtin+10)== '4'))
{
RL1 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 1 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '2') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') &&
(*(dtin+5)== 'N') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') &&
(*(dtin+10)== '4'))
{
RL2 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
17

truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 2 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '3') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') &&
(*(dtin+5)== 'N') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') &&
(*(dtin+10)== '4'))
{
RL3 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 3 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '4') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') &&
(*(dtin+5)== 'N') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') &&
(*(dtin+10)== '4'))
{
RL4 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 4 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '1') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') &&
(*(dtin+5)== 'F') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') &&
(*(dtin+10)== '4'))
{
RL1 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 1 da duoc tat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '2') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') &&
(*(dtin+5)== 'F') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') &&
(*(dtin+10)== '4'))
{
RL2 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
18

truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 2 da duoc tat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '3') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') &&
(*(dtin+5)== 'F') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') &&
(*(dtin+10)== '4'))
{
RL3 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 3 da duoc tat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '4') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') &&
(*(dtin+5)== 'F') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') &&
(*(dtin+10)== '4'))
{
RL4 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 4 da duoc bat");
putchar(0x1A);
}
}
//------------------ chuong trinh chinh---------------//
void main(void)
{
khoitao_uart();
//PS=1;
khoitao_sim();
delay(10000);
flag__ = 0;
ok = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Do an tot nghiep svth: Nguyen Huy Bien k12D He Thong Da Duoc Khoi Dong");
putchar(0x1A);
delay(10000);
ES=1;

19

while(1)
{
;
}
}

http://www.dientuvietnam.net/forums/forum/vi-%C4%91i%E1%BB%81u-khi%E1%BB%83n-mcu-b%E1%BB%99%C4%91i%E1%BB%81u-khi%E1%BB%83n-t%C3%ADn-hi%E1%BB%87u-s%E1%BB%91-dsc/vi-%C4%91i
%E1%BB%81u-khi%E1%BB%83n-h%E1%BB%8D-8051/186196-chia-s%E1%BA%BB-giao-ti%E1%BA%BFp8051-v%E1%BB%9Bi-ic-sim-900

20

Code M ngun C ( Bin dch bng Keil C 4)


#include <REGX52.H>
#include <string.h>
#include "stdio.h"
#include "math.h"
// Define Macro
#define RL1 P2_0
#define RL2 P2_1
#define RL3 P2_2
#define RL4 P2_3

//-------------------------------------------------------// Global variable


#define BUFF_SIZE 20
unsigned char buffer[BUFF_SIZE];
//unsigned char dl_rv;
unsigned char timer_count;
bit flag__;
bit ok;
char dem;

//------------------------------------------------------------// Function Static


void truyen_mang(char *s);
void xu_ly_tin_nhan(void);
void Process_mess(char *dtin);
//--------------------------------------------------------------------// ctrinh delay
void delay(unsigned int ms)
{
unsigned int i;
for(i=0;i<ms;i++);
}
//-------------------------- chuong trinh ngat nhan byt co tin nhan gui toi
// khi co tin nhan gui toi thi thuc hien doc tin nhan
void isr_tinnhan() interrupt 0
{
truyen_mang("AT+CMGR=1\r"); // doc tin nhan tai o nho thu 1 cua SIM.
delay(2000);
}
//------------------------------------------------------// ham xu ly du lieu nhan duoc
//----------------------------------------------------------------// khoi tao UART
void khoitao_uart(void)
{
SCON=0x52;
TMOD=0x21;
// khoi tao 2 timer time1 dung cho UART, timer0 dng de tao time doc tin nhan
TH1=TH1=-3; // baud = 9600
//TH0 = -10000/256; // 10ms
//TL0 = -10000%256;
TR1=1;
// ES = 1;
//TR0 = 1;

21

// ET0 = 1;
EX0 = 1;
IT0 = 1;
EA =1;
}
//---------------------------------clear buff-----------//
void clear_buffer(void)
{
unsigned char i;
for(i = 0 ; i< BUFF_SIZE ; i++)
{
buffer[i] = '\0';
}
}
//-------------------------------------------------------------------------// Chuong trinh ngat UART nhan du lieu tu sim
void isr_interrup() interrupt 4
{ char dl_rv;
if(RI)
{
dl_rv=SBUF;
switch (dl_rv)
{
case '\*':
clear_buffer();
dem = 0;
break;
case '#':
Process_mess(buffer);
break;
default:
buffer[dem] = dl_rv;
dem++;
if(dem>BUFF_SIZE)
dem=0;
break;
}
RI = 0;
}
}
//-------------------------------------------------------//+CMGR: "REC READ","+841653263756","","13/05/20,19:49:22+28"TB1 ON 1234>
//>
//OK
//--------------------------------------------------

//---------------------------------------------------------------// truyen mang dl xuong sim


void truyen_mang(char *s)
{
// putchar(0x0d); //xuong dong
while(*s)
{
putchar(*s);
s++;
delay(1000);

22

}
}
//---------------------------------------------------------------// Khoi tao Sim 900
void khoitao_sim(void)
{
delay(4000);
truyen_mang("AT\n\r");
delay(10000);
truyen_mang("AT+CMGF=1\n\r");
delay(10000);
}
//---------------------------------------------------------// xu ly tin nhan nhan duoc
void Process_mess(char *dtin)
{
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '1') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'N')
&& (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL1 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 1 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '2') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'N')
&& (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL2 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 2 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '3') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'N')
&& (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL3 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 3 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '4') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'N')
&& (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL4 = 0;

23

truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 4 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '1') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'F')
&& (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL1 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 1 da duoc tat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '2') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'F')
&& (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL2 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 2 da duoc tat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '3') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'F')
&& (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL3 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 3 da duoc tat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '4') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'F')
&& (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL4 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 4 da duoc bat");
putchar(0x1A);
}
}
//------------------ chuong trinh chinh---------------//

24

void main(void)
{
khoitao_uart();
//PS=1;
khoitao_sim();
delay(10000);
flag__ = 0;
ok = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Do an tot nghiep svth: Nguyen Huy Bien k12D He Thong Da Duoc Khoi Dong");
putchar(0x1A);
delay(10000);
ES=1;
while(1)
{
;
}
}

25

You might also like