看看我的红外捕捉学习遥控器,有问题请教
下面是我写的一个测试程序,测试的遥控器是SAA3010(资料上说是使用RC-5编码)。多少现在我按同一个键,比喻数字键“1”,串口得到48个数据,并且么此按数字“1”或者其他相同按键,得到的着48个数据都不一样。
所以就有了下面的问题。
1,SAA3310的数据格式如下,应该是32位。怎么串口会收到48个数据呢?.
SAA3010是使用RC-5编码,有2位起始位、1位控制位、系统码占5位、指令码占6位,
一帧数据共占14位。在第一次按下遥控按键后芯片要经过16位的防抖动时间和2位的扫描时
间才会发送第一帧数据。
2,为什么按同一个键,每次串口收到的数据不一样呢?
3,程序中putchar(pulse_clocks);//串口发送脉冲宽度*/ ,这里发送的宽度是实际时间吗?
请教大家,谢谢了,由于手上没有示波器,另外对于学习型的遥控器,接受和发送思路的理解还有点问题。
谢谢,下面是我写的接收的测试程序,我想用数组IR[]将所有高低电平的时间宽度保存下来。
#include <mega16.h>
#include <stdio.h> // 使用CVAVR的标准 Input/Output 函数
#include <delay.h> // 使用CVAVR的延时函数
#define ICP1 PIND.6 //脉冲输入由ICP1(Pind.6)输入
sfrw ICR1=0x26; //补充定义16位寄存器ICR1地址为0X26(mega16.h中未定义)
unsigned char ov_counter;
unsigned int ICP_new,ICP_old;
unsigned long pulse_clocks;
unsigned int IR;
interrupt void timer1_ovf_isr(void) // T/C1溢出中断
{
ov_counter++; //记录溢出次数
}
interrupt void timer1_capt_isr(void) // T/C1捕捉中断
{ unsigned char i=0;
ICP_old = ICR1;
TCCR1B = TCCR1B ^ 0x40; //改变触发方向
pulse_clocks = (unsigned long)ICP_old - (unsigned long)ICP_new + (unsigned long)ov_counter * 0x10000 / 500;//计算脉冲宽度ms
IR=pulse_clocks;//只记录脉冲维持的宽度,单位MS
if(i==79)i=0;
ICP_new=ICP_old ;
putchar(pulse_clocks);//串口发送脉冲宽度*/ 请问这里发送的宽度是实际时间吗?
}
void main(void)
{ unsigned char j;
UCSRA=0x00; // USART initialization
UCSRB=0x18; // Communication Parameters: 8 Data, 1 Stop, No Parity
UCSRC=0x86; // USART Receiver: On,USART Transmitter: On
UBRRH=0x00; // USART Mode: Asynchronous ,USART Baud Rate: 9600
UBRRL=0x19;
//TCCR1B=0x42;//初始化T/C1,1/8分频,上升沿触发捕捉
TCCR1B=0x02; //初始化T/C1,1/8分频,下降沿触发
TIMSK=0x24; //允许T/C1溢出和捕捉中断
#asm("sei")
while (1)
{};
} 传个代码和示波器抓的的波形给你 这是以前做着玩的 用的是定时器解码 没有采用ICP功能
点击此处下载 ourdev_426101.rar(文件大小:892K) (原文件名:infrared remote control.rar) 谢谢,SAA3010用51解出来了,我现在想用AVR来学习红外码 出现上面的问题是不是我程序....
晚上再找找原因, 还是有问题,郁闷。继续调试,路过的大哥给点帮助了 再顶一下 没有人做过吗? 我做过,不过不是用AVR写的,用的是台湾仿PIC芯片(成本二元左右).接收也不用接收头,是用电路接收的.若用AVR,那成本太高了. 记号希望楼主能做出来 应该是时间问题,我做过实验,不同的遥控器竟然接收的的编码不一样,但是都可以控制同样的电视机。我纳闷了很久的时间,后来测量才知道晶振的频率不一样,于是将两个遥控器的晶振都更换成新买的同一批次的晶振,哈哈,遥控器同步了,接收到的编码都是一样的了。
遥控解码,没有别的技巧,就是要精确控制时间,也就是你的接收和你的发射要时序相同,相差不能太大了。否则。。。。。。 jh mark mark
页:
[1]