红外遥控解码的一种思路

遥控器共有3个按键——设置、上键、下键。示波器测到的码形分别是:

以BCD码表示分别为0xD08、0xD10、0xD20。解码的主要思路是根据“相对时间”来确定0和1,即不需要在中断中使用事先确定好时间的延时函数来判断,而直接i++,美国服务器,香港虚拟主机,香港服务器租用,然后根据i的大小来判断,将相应的BCD码输出到数码管显示。代码:

led1Selected LED1=0;LED2=1;LED3=1; 3 #define led2Selected LED1=1;LED2=0;LED3=1; 4 #define led3Selected LED1=1;LED2=1;LED3=0; 5 sbit LED1 = P2^3; 6 sbit LED2 = P2^2; 7 sbit LED3 = P2^1; 8 sbit IR_Receive = P3^2; 9 unsigned char count=0; 10 unsigned int codeValue=0,dispValue=0; 11 unsigned char led[3];delay(unsigned { 16unsigned char i; 17while(a–!=0) 18for(i=125;i>0;i–); 19 }display(void) 24 { 25if (dispValue!=0) 26 { led[led[led1SelectedP0=seg[led[delay(1); 33P0=0xff; 34 led2Selected 35P0=seg[led[1]]; 36delay(1); 37P0=0xff; 38 led3Selected 39P0=seg[led[2]]; 40delay(1); 41P0=0xff; 42 }{ 45 led1Selected 46P0=seg[16]; 47delay(1); 48 led2Selected 49P0=seg[16]; 50delay(1); 51 led3Selected 52P0=seg[16]; 53delay(1); 54 } 55 } timer_init() 59 {EX0=EA=} main() 67 { 68 timer_init(); 69while(1) 70 { 71 display(); 72 } 73 }int0(void) interrupt 0 76 { 77unsigned int i; 78i=0;(IR_Receive==i++;(i>{ 84if(i>150 && i<250)(i>450 && i<600) 87 {codeValue=codeValue | 0x01; 90 } 91 }{ 94count=0; 95codeValue=0; 96return; 97 }{100dispValue=codeValue;101codeValue=0;102count=0;103 }104 }有时不但是必要的,而且是很有必要的。

红外遥控解码的一种思路

相关文章:

你感兴趣的文章:

标签云: