微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 基于STC89C52的红外遥控系统问题求助

基于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++)
{
       **********
}
然后就发射不出去或者错误,求大神指导

人工置顶,在线求助

一位一位发送出去啊!
比如
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;
}
这样为什么不对呢,是不是时间需要校正啊

脉冲宽度不对吧!你都设为相同的了!

我连解码的都搞不定。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top