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

              • nguyendinhvan
                Trả lời cho Vấn đề về tốc độ quay
                bởi nguyendinhvan
                Sử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
                hôm nay, 19:50
              • Andrea14
                Vấn đề về tốc độ quay
                bởi Andrea14
                Chào mọi người,

                Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
                12-12-2025, 12:42
              • bqviet
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi bqviet
                Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                06-12-2025, 17:17
              • nguyendinhvan
                Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                bởi nguyendinhvan
                Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                05-12-2025, 19:59
              Đang tải...
              X