Board logo

标题: 红外解码的问题 [打印本页]

作者: fish_of_deadsea    时间: 2007-12-12 13:54     标题: 红外解码的问题

我用的是家里的电视遥控器所以就不知道是什么发射器了,于是我费劲周折终于测出:引导码中4.5ms为低电平,4.5ms为高电平。脉宽0.6ms,间隔0.5ms为“0”,脉宽0.6ms,间隙1.626ms为“1”。总的一组码的发射周期为108ms。
但是我编的有问题啊,我是把结果显示在8个led灯上,但是按每个按扭的结果是一样的:(晶振11.0592)
#include"reg51.h"

#define uchar unsigned char

sbit HW = P1^2; //红外接收与单片机的接口

uchar IRCode[4] = { 0,0,0,0 };

void Delay( uchar time ) //一次约为15us
{
// uchar t;
while(--time);
// for( t = 0; t < time; t++ );
}

void Decode()
{
uchar a, c, k;

if( !HW )
{
for( k=0; k<10; k++ )
{
Delay(30);
if ( HW == 1 ) //如果0.45ms后HW=1,说明不是引导码
{
k = 10;
break;
}
else if( k == 9 ) //如果持续了10?.45ms=4.5ms的低电平,说明是引导码
{
while( HW == 0 );
Delay(300);

for( a = 0; a < 4; a++ )
{
for( c = 0; c < 8; c++ )
{
while( HW == 0 );
Delay(60);
IRCode[a] = IRCode[a] >> 1;
if( HW == 1 )
{
IRCode[a] = IRCode[a] | 0x80;
Delay(60);
}
}
}
}

}
}

void main()
{
P0 = 0;
while(1)
{
Decode();
P0 = IRCode[2];
}
}

搞了很久,实在看不出为什么,请各位大虾帮帮忙!!


作者: kzw    时间: 2007-12-12 20:08

告一个邮箱吧,给你一个线程的代码,测试通过的。


作者: luoyongde0965    时间: 2007-12-13 15:13

大虾,给我也来一个

luoyongde0965@126.com

先谢谢了


作者: kzw    时间: 2007-12-13 16:38

已经发了,请查收。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0