打印

最简单的红外线遥控解码程序

[复制链接]
7478|43
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
比尔盖茨|  楼主 | 2007-11-30 12:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//该程序可以将遥控码通过1602液晶显示出来
//不要的朋友可以将其部分删除即可

//版权所有比尔单片机 
//更多资料详见Http://www.brmcu.com
//著作:billxiong
//E-mail:billxiong008@163.com
//QQ:417152902

#include <reg51.h>
#include "1602lcd.h"

#define c(x) (x*110592/120000) 

sbit Ir_Pin=P3^2;        
unsigned char Ir_Buf[4]; //Save decode result

code const uchar NumCode[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

unsigned int Ir_Get_Low(void);
unsigned int Ir_Get_High(void);
void IR_Process(void);
void IntSys(void);

void main(void)
{
 Init1602();
 IntSys();
 ShowMessage(1,1,13,"www.brmcu.com");
 ShowMessage(0,2,5,"code:");
 while(1)
 {
  IR_Process();
 }
}

void IntSys(void)
{
 TMOD=0x21;
 EA=1;
 ET0=1;
 TR0=0;
}

unsigned int Ir_Get_Low(void)
{
TL0=0;
TH0=0;
TR0=1;
while(!Ir_Pin && (TH0&0x80)==0);                
TR0=0;           
return TH0*256+TL0;
}

unsigned int Ir_Get_High(void)
{
TL0=0;
TH0=0;
TR0=1;
while(Ir_Pin && (TH0&0x80)==0);
TR0=0;
return TH0*256+TL0;
}

void IR_Process(void)
{
 unsigned int temp;
char i,j;
do{
   restart:
   while(Ir_Pin);
   temp=Ir_Get_Low();
   if(temp<c(8500) || temp>c(9500)) continue;//引导脉冲低电平9000
   temp=Ir_Get_High();
   if(temp<c(4000) || temp>c(5000)) continue;//引导脉冲高电平4500
   for(i=0;i<4;i++) //4个字节
   {
    for(j=0;j<8;j++) //每个字节8位
    {
     temp=Ir_Get_Low();
     if(temp<c(200) || temp>c(800)) goto restart;
     temp=Ir_Get_High();
     if(temp<c(200) || temp>c(2000)) goto restart;
     Ir_Buf>>=1;
     if(temp>c(1120)) Ir_Buf|=0x80;
    }
   }
   ShowMessage(5,2,1,&NumCode[Ir_Buf[0]>>4]);
   ShowMessage(6,2,1,&NumCode[Ir_Buf[0]&0xF]);
   ShowMessage(8,2,1,&NumCode[Ir_Buf[1]>>4]);
   ShowMessage(9,2,1,&NumCode[Ir_Buf[1]&0xF]);
   ShowMessage(11,2,1,&NumCode[Ir_Buf[2]>>4]);
   ShowMessage(12,2,1,&NumCode[Ir_Buf[2]&0xF]);
   ShowMessage(14,2,1,&NumCode[Ir_Buf[3]>>4]);
   ShowMessage(15,2,1,&NumCode[Ir_Buf[3]&0xF]);
  }while(1);
}


相关帖子

沙发
xwj| | 2007-11-30 12:50 | 只看该作者

死查询方式,不入流的设计

使用特权

评论回复
板凳
比尔盖茨|  楼主 | 2007-11-30 13:10 | 只看该作者

最简单的红外线遥控解码程序

非查询方式,上面的楼主理解错了 

使用特权

评论回复
地板
yewuyi| | 2007-11-30 13:19 | 只看该作者

同意洗碗机观点

使用特权

评论回复
5
ldyeah| | 2007-11-30 14:28 | 只看该作者

哈哈

 yewuyi 发表于 2007-11-30 13:19 侃单片机 ←返回版面    

4楼: 同意洗碗机观点 


洗碗机??
哈哈~~~~

使用特权

评论回复
6
xxdcq| | 2007-12-1 11:12 | 只看该作者

呵呵!

这个只能解NEC格式的红外编码格式
看看我们的红外码识别模块可以解任何格式的红外码!
真正万能解码!

http://www.yofeng.com/IrCtrR.asp
http://www.yofeng.com/串口输出的红外码识别模块.asp

使用特权

评论回复
7
huangqi412| | 2007-12-1 17:55 | 只看该作者

洗碗机?显微镜呢

使用特权

评论回复
8
john_light| | 2007-12-1 18:02 | 只看该作者

当老徐成为热点

徐静蕾也要让个两分半

新闻界

使用特权

评论回复
9
happystar| | 2007-12-1 19:17 | 只看该作者

晕!

怎么又跑出来个“洗碗机”XWJ,这么捉弄小跳鸟大虾!
不平啊

使用特权

评论回复
10
computer00| | 2007-12-1 19:23 | 只看该作者

while(Ir_Pin);这种不是死查询是啥呀?

使用特权

评论回复
11
huangqi412| | 2007-12-1 19:48 | 只看该作者

6f的没有公开一点资料,没办法学,,

 xxdcq 发表于 2007-12-1 11:12 侃单片机 ←返回版面    

6楼: 呵呵! 

这个只能解NEC格式的红外编码格式
看看我们的红外码识别模块可以解任何格式的红外码!
真正万能解码!
 
 

使用特权

评论回复
12
王紫豪| | 2007-12-2 06:23 | 只看该作者

性玩具。。哼哼,这个牛x吧

使用特权

评论回复
13
dld2| | 2007-12-2 09:14 | 只看该作者

小五金?

使用特权

评论回复
14
zjh006| | 2007-12-2 10:46 | 只看该作者

6楼是不是有点夸张,可以解任何格式的红外码??

严重怀疑。

使用特权

评论回复
15
zjh006| | 2007-12-2 10:52 | 只看该作者

刚刚看了6楼的原理图

不说别的,我就想问问6楼,无载波格式你的红外码识别模块恐怕无能为力吧?

使用特权

评论回复
16
xwj| | 2007-12-2 10:54 | 只看该作者

呵呵,我来个FSK方式的你也学不了的

使用特权

评论回复
17
xxdcq| | 2007-12-3 11:14 | 只看该作者

to zjh006

你要不要看看我们的产品就知道了!
没有什么不可能的!
我们做到了!

使用特权

评论回复
18
xxdcq| | 2007-12-3 11:16 | 只看该作者

另外还有一个消息!

我们已经开发成功了可以学习载波的红外遥控学习模块!
载波频率在 20k-100kHz之间都可以学

使用特权

评论回复
19
zjh006| | 2007-12-3 16:47 | 只看该作者

我看了你的原理图

你用的是一体化的接收头,不要说无载波的你学习不了,38k载波以外的都会有问题。

使用特权

评论回复
20
xxdcq| | 2007-12-4 08:30 | 只看该作者

呵呵!

无载波的能作红外遥控码?
最多1-2米
无载波的可以有线方式直接送进模块就可以解码

38k是现在常用的载波,市面上的遥控器绝大部分是38k的

而且我们现在也开发出了可以识别载波频率的模块

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

36

帖子

1

粉丝