Thông báo

Collapse
No announcement yet.

[Chia Sẻ] Giao tiếp 8051 với IC SIM 900

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • [Chia Sẻ] Giao tiếp 8051 với IC SIM 900


    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)
    	{
    	;
    	}
    }
    Nguyễn Huy Biên - 01649 802 694
    gmail :

  • #2
    mình cũng đang làm đồ án tương tự như vậy. bạn có thể có mình xin 1 số tài liệu liên quan được không??? kiếm hoài không ra.

    Comment


    • #3
      có sơ đồ kết nối này nọ không bác?

      Comment


      • #4
        Thank bác nhiều cho e xin cái phần cứng đi

        Comment


        • #5
          KO CÓ SƠ ĐỒ KẾT NỐI HẢ BẠN

          Comment


          • #6
            sao ko dùng bộ đếm và so sánh và để thêm 1 cái điện thoại cùi bắp chố đó , khi mình nhá máy lần 1 tương ứng bộ đếm 1 lệnh so sánh bằng hoặc hơn gì đó thì tương ứng thiết bị 1 sáng , khi nhá máy lần 2 thiết bị 2 sáng tương tự lần 4 thiết bị 1 tắt và khi tắt hết rồi dùng chính nó reset cho nó luôn . nếu làm như vậy đỡ tốn tiền tin nhắn .và thao tác nhanh hơn ngồi nhắn tin nữa

            Comment


            • #7
              Chào các bạn, mình bỏ nghề cách đây 3 năm rồi không biết có còn lưu lại không, Mình sẽ tìm lại nếu còn sẽ gửi lên cho các bạn tham khảo
              Nguyễn Huy Biên - 01649 802 694
              gmail :

              Comment

              Về tác giả

              Collapse

              bienhou Tìm hiểu thêm về bienhou

              Bài viết mới nhất

              Collapse

              Đang tải...
              X