RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

[Hướng dẫn] Giải mã remote hồng ngoại với 8051

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • ngoanrazor
    Thành viên tích cực
    • Jun 2012
    • 272

    #1

    [Hướng dẫn] Giải mã remote hồng ngoại với 8051

    Mình bên CNNT nhưng đang mê điện tử hồi nhỏ , hôm nay mình viết tut này để chia sẽ các bn newbie kinh nghiệm của mình sau khi giải mã remote hồng ngoại


    1. Công cụ:

    • PC máy tính cài Windows
    • Mcu 8051,...
    • Phần mềm VIRTINS Multi (phần mềm hiện sóng trên pc bằng card âm thanh) - Download

    Mạch điện:



    Chân 3,4 opto nối vào GND vào TX của jack audio 3.5 , jack còn lại cắm vào cổng micro máy tính.


    2. Phân tích mã remote


    Mở chương trình VIRTINS Multi lên và chọn kênh A.


    Ở đây mình dùng remote đầu đĩa TQ.


    Bây giờ bạn bấm nút record trên thanh menu và cầm remote lên hướng mắt hồng ngoại và bấm vào 3 nút bất kỳ. Mục đích của hành động này là phân tích xem phần mã remote nào giống nhau để ta loại bỏ ra và tìm quy luật giải mã. Sau khi bấm tôi có 3 sóng mã:








    Sau khi phân tích ta thấy:






    Kết luận: Phần khác nhau có tất cả 16 gợn sóng => 16 bit, ta quy ước đỉnh nhọn là 0, đỉnh bằng là 1 và T ~= 600 us

    3. Giải mã trên 8051



    • Tạo timer cho nó tự ngắt sau 100us sau 7 lần ta có 700us

    Code:
    void timer1 (void) interrupt 3
    {
       tick++;
    }
    • Do chân data của mắt hồng ngoại ta mắc vào chân P3.2 ngắt ngoài nên khi có tín hiệu âm trên nó sẽ xảy ra ngắt đây là lúc ta giải mã.

    Code:
    void NgatNgoai(void) interrupt 0
    {
    	 char IR[16]; // biến chứa bit remote
    	int i=0;
    	char x=0;
    	P1_0=1;
    
    // xén phần mã remote giống nhau
    	while(P3_2==0)
    	{
    
    	}
    	while(P3_2==1)
    	{
    	
    	}
    	while(1)
    	{
    		
    		if(P3_2==0)
    		{
    			while(P3_2 ==0)
    			{;}
    			i++;
    		}
    		
    		if(i==17)
    			break;
    	}
    
    // đọc phần mã khác nhau 16 bit
    	while(x<16)
    	{
    		   
    			if(P3_2==1)
    			{
    				tick=0;
    				while(tick<7) { ; } // chờ 700 us
    
    				if(P3_2==1) // nếu sau 700us mà tín hiệu còn thì nó là bit 1 (đỉnh bằng)
    				{
    					
    					IR[x]=1;
    					while(P3_2==1)
    					{
    						;
    					}
    				}
    				else // ngược lại là đỉnh nhọn
    				{
    					IR[x]=0;	
    				}
    	
    				x++;
    			}
    			else
    			{
    				while(P3_2==0)
    			   {
    			   	;
    			   }
    			}
    			
    	}
    
    	Delay(100); // delay 100ms cho kết thúc phần tín hiệu còn lại nếu không khi thoát hàm ngắt  nó sẽ xảy ra ngắt tiếp
    }
    Chúc các bạn thành công!
    Ngoanrazor
    Attached Files


  • myth-coder
    Thành viên tích cực
    • Aug 2011
    • 303

    #2
    Mình chưa có cơ hội thử cái này nhưng chắc là ok, thank chủ thớt nhé. Mà mình cũng là dân ngoại đạo như chủ đây, có điều mình đi sau nhiều quá. Muốn làm quen với chủ để tiện trao đổi, học hỏi

    Comment

    • myth-coder
      Thành viên tích cực
      • Aug 2011
      • 303

      #3
      Skype với cả yahoo của mình ở đây có cả đó. bạn add vào nhé. Tại vì mình ko thấy những thứ đó ở thông tin của bạn . Rất vui được làm quen

      Comment

      • minhtinh
        Thành viên tích cực
        • Jul 2006
        • 324

        #4
        Thanksssss.
        Last edited by minhtinh; 20-12-2013, 01:02.
        |

        Comment

        • congtham91
          Thành viên mới
          • Jul 2013
          • 5

          #5
          làm sao thuốc đc phần mềm này nhỉ! chủ thớt giúp e với! thanks

          Comment

          • mvtdt
            Thành viên mới
            • Jan 2013
            • 4

            #6
            mình cũng là dân ngoại đạo CNTT, cũng quan tâm về chủ đề này, thanks chủ thớt nhiều!

            Comment

            • lowpass
              Thành viên tích cực
              • Jul 2011
              • 511

              #7
              Quá cao siêu, mình đọc mãi mà vẫn còn lơ mơ, chưa hiểu đựơc các khái niệm xung cao, xưng thấp, đỉnh cao, đỉnh bằng, và không hiểu phần giải thuật. Haizz quá khó, đánh dấu cái để ngâm cứu.
              Email:
              Đau đầu vì điện tử

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...