一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
楼主: 261307853

小白求一1602显示的红外线解码程

[复制链接]
 楼主| 发表于 2014-5-11 23:30 来自手机 | 显示全部楼层
nonoge 发表于 2014-5-11 22:18 static/image/common/back.gif

我的测出来开头的2字节用户码也是CC 1D  你上面发的 CC 1D 和33 B8这二个是反码关系? 1D和B8是反码?

是的,我的cc1d开头是正码,33b8是反码
回复

使用道具 举报

 楼主| 发表于 2014-5-11 23:31 来自手机 | 显示全部楼层
xixi2006 发表于 2014-5-11 22:34 static/image/common/back.gif
开关  FF 00  1D CC
禁音  FE 01  1D CC
1      EE 11
2      ED 12
3      EC 13
4      EB 14
5      E

多谢~~~~~~~~
回复

使用道具 举报

 楼主| 发表于 2014-5-11 23:39 来自手机 | 显示全部楼层
xixi2006 发表于 2014-5-11 22:35 static/image/common/back.gif
眼有点花,不知道对不对。

你是用什么读的????
回复

使用道具 举报

发表于 2014-5-12 02:04 | 显示全部楼层
已有遥控器,什么方式能快速解码?
回复

使用道具 举报

发表于 2014-5-12 08:44 | 显示全部楼层
nonoge 发表于 2014-5-11 20:52
中九遥控器是NEC协议吧,昨晚逻辑分析仪刚抓了下波形 9MS+4.5MS引导码  用户码低八位 用户码高八位  按键码 ...

我也在做毕业设计用到这个,参考下这段语句

#include"reg51.h"
#include"2-16.h"
#include"address.h"
uchar data psCount; //定时器计数器
uchar data i;
uchar data j;
uchar data temp;
uchar data dp[4]; //用来保存红外遥控的码值
uchar data dp2[12];//用来显示红外遥控的码值

sbit HW = P3^7;

void delay(unsigned int y);

void main()
{
//初始化
initlcd();
dp[0] = 0x0;
dp[1] = 0x0;
dp[2] = 0x0;
dp[3] = 0x0;

TMOD = 0x11; // 定时器0, 1工作模式1, 16位定时方式

TH1 = 0xfe; //定时500uS
TL1 = 0x33;

TCON = 0x01;
IE = 0x80;
TR1 = 1;
while(1)
{
//报文头
ET1 = 0;
psCount = 0;
while(HW == 1); //初始状态下,红外输出脚一直是高电平,等待遥控按键
ET1 = 1;
while(HW == 0);
if( psCount > 17)//0.5* 17 = 8.5ms约为9.0ms
{
ET1 = 0;
psCount = 0;
ET1 = 1;
while(HW == 1);
if(psCount > 5) //超过0.5*5 = 2.5毫米,检查一下遥控命令是不是连发,不是则执行下面的程序
{
ET1 = 0;
psCount = 0;
dp[0] = 0x0;
dp[1] = 0x0;
dp[2] = 0x0;
dp[3] = 0x0;
//数据
for(i = 0 ; i < 4; i++)
{
for(j = 0; j < 8; j++)
{
while(HW == 0);
ET1 = 0;
psCount = 0;
ET1 = 1;
while(HW == 1);
if(psCount > 2)//根据波形长度判定码值为0或1
temp = 0;
else
temp = 1;
dp |= (temp<<j);//保存键值
}

}

}
}
//停止位
while(HW == 1);
//数据显示
delay(20);
dp2[0] = dp[0]/100 + 0x30;
dp2[1] = dp[0]%100/10 + 0x30;
dp2[2] = dp[0]%10 + 0x30;
dp2[3] = dp[1]/100 + 0x30;
dp2[4] = dp[1]%100/10 + 0x30;
dp2[5] = dp[1]%10 + 0x30;
dp2[6] = dp[2]/100 + 0x30;
dp2[7] = dp[2]%100/10 + 0x30;
dp2[8] = dp[2]%10 + 0x30;
dp2[9] = dp[3]/100 + 0x30;
dp2[10] = dp[3]%100/10 + 0x30;
dp2[11] = dp[3]%10 + 0x30;
printf(dp2,12);
delay(20);
}
}

//延时子程序
void delay(unsigned int y)
{
uchar x;
for(;y!=0;y--)for(x=200;x!=0;x--);
}

//定时器1中断
void timer1() interrupt 3
{


psCount++;

TH1 = 0xfe; //定时500uS
TL1 = 0x33;

}


回复

使用道具 举报

发表于 2014-5-12 08:47 | 显示全部楼层
本帖最后由 静夜思月晖 于 2014-5-12 08:49 编辑

看看这个
  
0
  
0XEF
频道+
0XFA
1
0XEE
频道-
0XF9
2
0XED
音量+
0XF7
3
0XEC
音量-
0XF8
4
0XEB
电源开关
0XFF
5
0XEA
静音
0XFE
6
0XE9
菜单
0XFD
7
0XE8
返回
0XFC
8
0XE7
确认
0XFB
9
0XE6
 
 
我解码的某卫星接收机遥控键码,NEC
一个全码.jpg
电源ON处理.jpg
回复

使用道具 举报

发表于 2014-5-12 09:30 | 显示全部楼层
本帖最后由 s2z0g0 于 2014-5-13 18:56 编辑

16楼的方法最直接,用那种USB saleae逻辑分析仪 24M采样8通道就可以,我有NEC的红外分析插件,有需要的话PM或留EMAIL地址。有兄弟需求插件,还是传到这里吧
NEC IR 插件.rar (34.29 KB, 下载次数: 1010)



回复

使用道具 举报

发表于 2014-5-12 09:38 | 显示全部楼层
没有遥控器需要做个摸拟遥控器发射的程序有么?
回复

使用道具 举报

发表于 2014-5-12 10:02 | 显示全部楼层
这个看上去好高级啊
回复

使用道具 举报

 楼主| 发表于 2014-5-12 11:33 来自手机 | 显示全部楼层
静夜思月晖 发表于 2014-5-12 08:47 static/image/common/back.gif
本帖最后由 静夜思月晖 于 2014-5-12 08:49 编辑

看看这个  0  0XEF频道+0XFA10XEE频道-0XF920XED音量+0XF730XEC音量-0XF840XEB电源开

多谢分享,假如我要用到’开关’键,写到程序中怎么写?“0xff”?
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-22 07:50 , Processed in 0.047509 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表