首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

红外解码的问题

红外解码的问题

我用的是家里的电视遥控器所以就不知道是什么发射器了,于是我费劲周折终于测出:引导码中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];
}
}

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

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

在交流中前进,共同实现nios的应用。

大虾,给我也来一个

luoyongde0965@126.com

先谢谢了

已经发了,请查收。
在交流中前进,共同实现nios的应用。
返回列表