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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • vdh246
    Thành viên chính thức
    • Mar 2008
    • 31

    #1

    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!
  • vdh246
    Thành viên chính thức
    • Mar 2008
    • 31

    #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, 03: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

    • vdh246
      Thành viên chính thức
      • Mar 2008
      • 31

      #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

      • thanhtra2288
        Thành viên mới
        • Oct 2010
        • 3

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

        Comment

        • cdt0031
          Thành viên mới
          • Jun 2009
          • 26

          #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

          • animo
            Thành viên mới
            • Feb 2006
            • 24

            #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

            • ngdinhloi
              Thành viên mới
              • Mar 2009
              • 6

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

              Comment

              • phananhvu
                Thành viên mới
                • Apr 2012
                • 3

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

                Comment

                • chuotngo
                  Thành viên mới
                  • Oct 2012
                  • 5

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

                  Comment

                  • ngo_huy_binh
                    Thành viên mới
                    • Apr 2013
                    • 13

                    #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...