基于STC89C52的红外遥控系统问题求助
时间:10-02
整理:3721RD
点击:
设计任务:将接收到的红外遥控信号显示并能转发出去;
方案:将红外接收头接P3^2(int0)然后通过一非门接到P3^3(int1);
让定时器0,定时器1分别计数,得到了红外遥控信号的高低电平的脉宽。
分别命名为temph,templ(为16数的高8位和低8位unsigned char)
并转化为16进制数在1602液晶显示出来了。38khz的载波已经用555调好。
问题:怎么根据高低电平的脉宽发射出去?
我用的方法temp=temph*256+templ;
for(j=0;j<=temp;j++)
{
**********
}
然后就发射不出去或者错误,求大神指导
方案:将红外接收头接P3^2(int0)然后通过一非门接到P3^3(int1);
让定时器0,定时器1分别计数,得到了红外遥控信号的高低电平的脉宽。
分别命名为temph,templ(为16数的高8位和低8位unsigned char)
并转化为16进制数在1602液晶显示出来了。38khz的载波已经用555调好。
问题:怎么根据高低电平的脉宽发射出去?
我用的方法temp=temph*256+templ;
for(j=0;j<=temp;j++)
{
**********
}
然后就发射不出去或者错误,求大神指导
人工置顶,在线求助
一位一位发送出去啊!
比如
uchar i,temp=0xa6;
for(i=0;i<8;i++) //一个字节有8位,故循环8次
{
if(((temp>>i)&0x01)==0x01) //从低位到高位依次发送
//发送1
else
//发送0
}
能不能不判断‘0’和‘1’,直接根据定时器测量得到的高低电平脉宽发送就是用两个for嵌套;
uchar j,i;
for(i=0;i<=68;i++)
temp=temph*256+templ;
for(j=0;j<=68;j++)
{
for(h=0;h<=temp[j];h++);
Ired=~Ired;
}
这样为什么不对呢,是不是时间需要校正啊
脉冲宽度不对吧!你都设为相同的了!
我连解码的都搞不定。