Chào các bác. Thấy cái này cũng được khá nhiều người quan tâm nên em chia sẻ cho mọi người tham khảo.Đk thiết bị qua tin nhắn điện thoại (Hơi tốn tiền tin nhắn chút nhưng cũng thấy hay hay).
đây là code em xây dựng.
Code:
#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 dùng 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> //> //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); 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); 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; while(1) { ; } }
Comment