Thông báo

Collapse
No announcement yet.

[IR] giải mã remote

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

  • [IR] giải mã remote

    thành thật thì quá bí rùi mới lên hỏi các bác
    tình hình là tham khảo rất nhiều nguồn trên in tờ nét cả viết code và lụm code về xài nhưng mạch nó cứ đơ ra nên mong các cao nhân chỉ giáo
    em dùng ngắt ngoài RB0 và chuyển led 7 đoạn thành led đơn cho đơn giản
    các bác check giùm em 2 cái code

    #include <16F877.h>
    #fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, NOPUT
    #use delay(clock=20000000)
    #use Fast_IO(B)
    #use Fast_IO(D)
    void xuat (int8 x);
    void xulydulieu ();
    int8 dulieuthu;
    int8 bitdo;

    void main( )
    {
    set_tris_d(0); // tat ca chan d deu la ngo ra gan led
    set_tris_b(1); // rbo la ngo vao con lai la ngo ra
    enable_interrupts(INT_EXT); //cho phep ngat ngoai
    ext_int_edge(H_to_L); // ngat canh xuong
    enable_interrupts(GLOBAL); // ok ngat
    while(1)
    {
    output_d(dulieuthu);
    delay_ms(500);
    }
    }

    #INT_EXT
    void xulydulieu ( )
    {
    int i=1;
    int8 j;
    disable_interrupts(INT_EXT);
    while(!input(pin_b0))
    {
    delay_us(200);
    i++;
    }
    if(i>9 && i <14); // 2000~2600us
    {
    dulieuthu=0x00;
    for(j=1;j<8;j++)
    {
    while(input(PIN_B0));
    delay_us(800); // Sirc
    bitdo=input(PIN_B0);
    if (bitdo==0) // bit 1
    {
    bit_set(dulieuthu,j);
    while(!input(PIN_B0));
    }
    }
    }
    enable_interrupts(INT_EXT);

    #include <16f877a.h>
    #use delay(clock=20000000)
    #fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, NOPUT

    byte const led[11]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0,0xff};
    #define one_min 8500 //1800*10-6*20000000/4=9000 hon kem nhau 500
    #define one_max 9500
    #define zero_min 5500 //1200*10-6*20000000/4=6000
    #define zero_max 6500


    int16 irframes[14]; //7lenh+5address+start+stop
    int8 ircount =0; //
    int1 irdone=false;


    #int_ext //NGAT NGOAI
    void ngat_isr()
    {
    if (irdone) return;
    irframes[ircount++] = get_timer1();
    if (ircount >= 12)
    { irdone = TRUE;
    output_bit(PIN_C2, 1);
    }
    set_timer1(0);
    }


    void start_ir() {
    memset(irframes, 0x00, sizeof(irframes)); //MEMSET(DESTINATION,VALUE,N)(destination is a pointer to memory, value is a 8 bit int, n is a 16 bit int,)
    ircount = 0; //SIZEOF(Determines size in bytes of operand)
    irdone = FALSE;
    set_timer1(0);
    }

    void main() {
    int8 i;
    int8 bits=0;

    set_tris_b(0b11111111); //dua gia tri vao vxl
    set_tris_d(0b00000000); // xuat led 7 doan
    set_tris_c(0b11111011);// den nho chop tat

    output_bit(PIN_C2, 0);
    delay_ms(100);

    setup_timer_1(t1_internal|t1_div_by_1 );
    enable_interrupts(INT_EXT); //CHO PHEP NGAT NGOAI
    ext_int_edge(H_TO_L);
    enable_interrupts(GLOBAL);
    start_ir();
    while(TRUE)
    {
    if (irdone) {
    delay_ms(100);
    irframes[13]=6000;
    // bo frames dau tien vi do la start
    //bat dau
    for (i=2; i<=8; i++)
    {
    if ((ONE_MIN <= irframes[i]) && (irframes[i] <= ONE_MAX))
    shift_right(&bits,1,1);
    else
    if ((ZERO_MIN <= irframes[i]) && (irframes[i] <= ZERO_MAX))
    shift_right(&bits,1,0);
    }
    shift_right(&bits,1,0);
    //ket thuc
    switch (bits)
    {
    case 0:
    {output_high(pin_D0);
    delay_ms(1000); }
    break;
    case 1:
    {output_high(pin_D1);
    delay_ms(1000); }
    break;
    case 2:
    {output_high(pin_D2);
    delay_ms(1000); }
    break;
    case 3:
    {output_high(pin_D3);
    delay_ms(1000);}
    break;
    case 4:
    {output_high(pin_D4);
    delay_ms(1000);}
    break;
    case 5:
    {output_high(pin_D5);
    delay_ms(1000);}
    break;
    default:
    {output_high(pin_D6);
    delay_ms(1000);}
    break;

    }
    start_ir();
    output_bit(PIN_C2, 0);
    }
    }
    }

  • #2
    m cũng đang mắc vấn đề giải mã này, rất mong bạn nào đã làm được thì chia sẻ cho mọi người cùng biết.
    chúc vui!!!

    Comment


    • #3
      bạn bị gì nói mình có thể giúp không mạch mình cũng chạy rồi

      Comment


      • #4
        Thử đoạn code nay xem. có gì thắc mắc cứ hỏi.
        Attached Files

        Comment


        • #5
          Có bạn nào thử viết chương trình để điều khiển thiết bị bẳng sóng vô tuyến chưa (sử dụng module thu phát 315mhz tự mã hóa và giải mã bằng mã manchester ko dùng pt2262 và pt2272, mình thấy mã manchester rất hiệu quả trong truyền dữ liệu bằng rf) ? mình đang thử làm bộ điều khiển cho xe điều khiển từ xa, trước mắt mình làm 2 kênh thôi (điều khiển góc của 2 servo vì con pic mình xài có 2 pwm ah, và có thể thêm một tốc độ nữa) cơ bản mình đã làm xong và thử nghiệm rất tốt dữ liệu truyền nhận chính xác và gần như liên tục (gần với thời gian thực) nhưng công suất không được cao lắm khoảng 50m thôi! có bạn nào biết cách tăng công suất mạch phát chỉ giúp mình với! Nếu bạn nào có hứng thú với vấn đề này va muốn chia sẻ kinh nghiệm với mình thì hãy mail cho mình

          vothanhha120485spkt@gmail.com
          0917970779
          yahoo: ariancdcdt06

          Comment


          • #6
            Click image for larger version

Name:	Image9.jpg
Views:	1
Size:	30.4 KB
ID:	1354062Click image for larger version

Name:	Image10.jpg
Views:	1
Size:	32.2 KB
ID:	1354063

            Comment


            • #7
              thông cảm! chụp bằng wc tối quá

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              • 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
              • afrendly
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi afrendly
                Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                04-12-2025, 01:27
              • nick22
                Trả lời cho Máy điện châm ?
                bởi nick22
                Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
                01-12-2025, 13:23
              Đang tải...
              X