Thông báo

Collapse
No announcement yet.

Làm ơn hướng dẫn em cách đọc mã của remote tivi sử dụng C?

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

  • Làm ơn hướng dẫn em cách đọc mã của remote tivi sử dụng C?

    cho em đoạn code của đọc mã remote tivi sử dụng C nha? nhớ là phải C đấy? as thì em có cả mớ rùi! thanks các bác nhiều!

  • #2
    #include<AT89S53.h>

    sbit IR = 0x90; // IR = P1_0
    sbit RS = 0x91; // RS = P1_1
    sbit E = 0x92; // E = P1_2

    unsigned char a=0xFF;
    unsigned char b=0xFF;
    unsigned char c=0;

    void delay_ms( unsigned int ms )
    { unsigned int i,j;
    for (i=0;i<ms;i++)
    for (j=0;j<120;j++){};
    }

    void delay_900us(void)
    { TMOD= 0x01;
    TL0 = 0xB7; //830
    TH0 = 0xFC;
    TR0 = 1;
    while(!TF0) continue;
    TR0 = TF0 = 0 ;
    }
    void delay_20us(void)
    { TMOD= 0x01;
    TH0 = 0xFF;
    TL0 = 0xEB;
    TR0 = 1;
    while(!TF0) continue;
    TR0 = TF0 = 0 ;
    }

    void LCD_PulseEnable ( void )
    {E=1;delay_ms(1);
    E=0;delay_ms(3);
    }

    void LCD_PutCmd(unsigned char k)
    { RS =0;
    transdata(k);LCD_PulseEnable();
    for(c=0;c<=3;c=c+1){RX=1;delay_20us();RX=0;};
    LCD_PulseEnable();
    }
    void LCD_PutChar(unsigned char k)
    { RS =1;
    transdata(k);LCD_PulseEnable();
    for(c=0;c<=3;c=c+1){RX=1;delay_20us();RX=0;};
    LCD_PulseEnable();
    }
    void LCD_Init ( void )
    { delay_ms(50);
    LCD_PutCmd(0x03);delay_ms(5);
    LCD_PutCmd(0x03);delay_ms(1);
    LCD_PutCmd(0x03);delay_ms(1);
    LCD_PutCmd(0x06); // dich con tro sang phai
    LCD_PutCmd(0x0C); // bat hien thi ,tat con tro
    LCD_PutCmd(0x28); // 4 bit , 5x8
    LCD_PutCmd(0x01); // xoa man hinh
    LCD_PutCmd(0x02); // ve dau dong
    }

    void scanIR()
    { delay_900us(); //0
    if(IR) {a= a&0xFE;};

    delay_900us(); //1
    if(IR) {a= a&0xFD;};

    delay_900us(); //2
    if(IR) {a= a&0xFB;};

    delay_900us(); //3
    if(IR) {a= a&0xF7;};

    delay_900us(); //4
    if(IR) {a= a&0xEF;};

    delay_900us(); //5
    if(IR) {a= a&0xDF;};

    delay_900us(); //6
    if(IR) {a= a&0xBF;};

    delay_900us(); //7 bit 0 ma dia chi
    if(IR) {a= a&0x7F;};

    delay_900us(); // bit 1 ma dia chi
    if(IR) {b= b&0xFE;};

    delay_900us(); // bit 2 ma dia chi
    if(IR) {b= b&0xFD;};

    delay_900us(); // bit 3 ma dia chi
    if(IR) {b= b&0xFB;};

    delay_900us(); // bit 4 ma dia chi
    if(IR) {b= b&0xF7;};

    delay_900us(); //4
    if(IR) {b= b&0xEF;};

    delay_900us(); //5
    if(IR) {b= b&0xDF;};

    delay_900us(); //6
    if(IR) {b= b&0xBF;};

    delay_900us(); //7 bit 0 ma dia chi
    if(IR) {b= b&0x7F;};
    }
    void giaima(unsigned char i,unsigned char j )
    { if((i==0x56&&j==0xBD)||(i==0x56&&j==0xB9)){ LCD_PutChar('O');LCD_PutChar('N');};
    if(j==0xB6) { LCD_PutChar('1');};
    if(j==0x49) { LCD_PutChar('2');};
    if(i==0x4E&&j==0x4A) { LCD_PutChar('3');};
    if(i==0xBD&&j==0xB5) { LCD_PutChar('4');};
    if(i==0x4E&&j==0x4E) { LCD_PutChar('5');};
    if((i==0xBD&&j==0xB9)||(i==0xB9&&j==0xB9)){ LCD_PutChar('6');};
    if((i==0xB9&&j==0xBA)||(i==0xBD&&j==0xBA)){ LCD_PutChar('7');};
    if(i==0x56&&j==0x55) { LCD_PutChar('8');};
    if(i==0x4E&&j==0x56) { LCD_PutChar('9');};
    if(i==0xBD&&j==0xA9) { LCD_PutChar('0');};

    if((i==0xBD&&j==0x56)||(i==0xB9&&j==0x56)){ LCD_PutChar('S');LCD_PutChar('M');};
    if((i==0xBD&&j==0xCE)||(i==0xBD&&j==0xCA)){ LCD_PutChar('V');LCD_PutChar('+');};
    if(i==0x4E&&j==0x76) { LCD_PutChar('P');LCD_PutChar('+');};
    if(i==0x56&&j==0xB5) { LCD_PutChar('V');LCD_PutChar('-');};
    if((i==0xB9&&j==0xC9)||(i==0xBD&&j==0xC9)){ LCD_PutChar('P');LCD_PutChar('-');};

    }
    main()
    {
    LCD_Init();


    while(1)
    {

    HERE : while(IR) continue ;
    delay_ms(1);
    if(IR) goto HERE;
    while(!IR) continue;
    while(IR) continue ;

    scanIR();


    P2=a;
    P3=b;

    LCD_PutCmd(0x01);
    LCD_PutCmd(0x84);
    giaima(b,a);
    delay_ms(1000);
    a=b=0xFF;
    P2=P3=0x00;
    };
    }
    Lấy từ nguồn http://dientuvietnam.net/forums/show...275#post179275
    Last edited by vdh246; 17-04-2009, 04:12. Lý do: Bài này lấy của bác ZZ..zz để châm cứu đã! có lẽ đây là cái em cần!

    Comment


    • #3
      #include <at89x51.h>
      sbit signal=P3^2;
      sbit chanel1=P3^3;
      sbit chanel2=P3^4;
      sbit chanel3=P3^5;
      unsigned char datasignal[6];
      void delay(unsigned char time)
      {
      if(time==8) //tre 900us
      {
      TH0=0xFC;
      TL0=0xC2;
      }
      if(time==2) //tre 200us
      {
      TH0=0xFF;
      TL0=0x47;
      }
      TR0=1;
      while(!TF0);
      TR0=0;
      TF0=0;
      }
      bit check()// ham con kiem tra bit cua remote (do dai cua remot 14 bit)
      {
      unsigned char i;
      i=1;
      while(!signal)
      {
      delay(2);
      i++;
      }
      if((i<10)|(i>14))i=0;
      return i;
      }
      void control(unsigned char k)//kich hoat so
      {
      switch(k)
      {
      case (0):
      chanel1=chanel1?0:1;
      break;
      case (1):
      chanel2=chanel2?0:1;
      break;
      case (2):
      chanel3=chanel3?0:1;
      break;
      }
      }
      void process()//xu ly ma phim da bam
      {
      char so;
      so=-1;
      if(datasignal[0]==0x01)so=0;
      if(datasignal[0]==0x81)so=1;
      if(datasignal[0]==0x41)so=2;
      control(so);
      }
      void isr (void) interrupt 0 //ngat int0 P3.2.. Nhan tin hieu tu IR dieu khien
      {
      bit databit;
      unsigned char dem,tre,k,mang;
      EX0=0;
      dem=12;
      mang=7;
      k=0;
      if (check())
      {
      while(dem--)
      {

      while(signal);
      delay(8);
      databit=~signal;
      if(databit)
      {
      datasignal[k]|=0x01;
      while(!signal);
      }
      else
      datasignal[k]&=0xFE;
      if((mang--)==0)
      {
      mang=7;
      k++;
      }
      else
      datasignal[k]<<=1;
      }
      process();
      tre=250;
      while(tre--)
      {
      delay(2);
      if(!signal) tre=250;
      }
      }
      EX0=1;
      }
      void main()
      {
      TMOD = 0x11; //su dung timer,che do 16 bit
      EA = 1; //Cho phep ngat chung.
      EX0 = 1;//cho phep ngat ngoai 0
      P3|=0x38;
      while(1);
      }

      Comment


      • #4
        a code giai ma remote tv sony dung pic 16f877a cho e xin

        Comment


        • #5
          chủ yếu là thuâti toán thôi: chứ 89xx với PIC có khác gì nhau
          tôi viết chương trình này rồi.ngắn lắm: khoang 20 dòng thôi
          vừa làm cái mạch này chạy ầm ầm. remote tv sony
          mail: dongsongbang_dld@yahoo.com
          Nhận làm mạch vi điều khiển, ghép nối máy tính, mạch xung số
          mail:
          dd: 0973423905

          Thương trường là chiến trường. tiến lên để kiếm tiền

          Comment


          • #6
            Remote thì có rất nhiều loại, bác nào biết cách mã hóa của các remote TV made in VN thông dụng không, hướng dẫn các anh em trên diễn đàn với, sao cứ thấy remote sony không hà

            Comment


            • #7
              anh up lên cho anh em biết với đi

              Comment


              • #8
                anh gui cho em diiiiii nhen em dang tim hieu can lam: thank anh truoc nhak phananhvu_92@yahoo.com.vn

                Comment


                • #9
                  anh(chị) cdt0031 nói cho em thuật toán được không ạ ?

                  Comment


                  • #10
                    các bác phải giải thích cho a e hiểu chứ, chứ xin code mà k hiểu thì để làm gì chứ

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X