5584|15

7172

帖子

195

TA的资源

五彩晶圆(高级)

楼主
 

谁给个红外程序参考下 [复制链接]

有个学妹  这周要交毕业设计 现在他的毕业设计已经被我分解成 简单的几句话

就是 1838红外接收  发光二极管红外发射

按一个按键  红外接收后 一个灯亮

不过我对红外不了解,最近又比较忙

谁给个类似的程序我改改,没时间深入了

谢谢啦

此帖出自51单片机论坛

最新回复

要是没得型号。。。最好用示波器打一下!!!!  详情 回复 发表于 2011-6-2 17:18
点赞 关注(1)
 

回复
举报

6

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
/*    晶振:11.0569MHz              */
#include
#define uchar unsigned char
uchar data    IRcode[4];   //定义一个4字节的数组用来存储代码
uchar     CodeTemp;   //编码字节缓存变量
uchar     i,j,k;    //延时用的循环变量
sbit     IRsignal=P3^2;   //HS0038接收头OUT端直接连P3.2(INT0)
sbit jdq=P3^7;
/**************************延时0.9ms子程序**********************/
void Delay0_9ms(void)
{uchar j,k;
     for(j=18;j>0;j--)
       for(k=20;k>0;k--) ;
}
/***************************延时1ms子程序**********************/
void Delay1ms(void)
{uchar i,j;
   for(i=2;i>0;i--)
      for(j=230;j>0;j--) ;
}
/***************************延时4.5ms子程序**********************/
void Delay4_5ms(void)
{uchar i,j;
     for(i=10;i>0;i--)
      for(j=225;j>0;j--) ;
}
/**************************** 延时子程序 ************************/
void Delay(void)
{uchar i,j,k;
for(i=200;i>0;i--)  
   for(j=200;j>0;j--)
      for(k=3;k>0;k--) ;
}
/************************中断0解码服务子程序**********************/
void int0(void) interrupt 0 using 2      
{
EA=0;
for(k=0;k<10;k++)
   {Delay0_9ms();
    if (IRsignal==1)         //如果0.9ms后IRsignal=1,说明不是引导码
   {k=10;break;}
    else if(k==9)           //如果持续了10×0.9ms=9ms的低电平,说明是引导码
      {while(IRsignal==0);
         Delay4_5ms();        //跳过持续4.5ms的高电平

      for(i=0;i<4;i++)       //分别读取4个字节
         {for(j=1;j<=8;j++)      //每个字节8个bit的判断
                { while(IRsignal==0);       //等待上升沿
                  Delay0_9ms();      //从上升沿那一时刻开始延时0.9ms,再判断IRsignal
                  if(IRsignal==1)     //如果IRsignal是"1",则向右移入一位"1"
                    {Delay1ms();
                   CodeTemp=CodeTemp|0x80;
                   if(j<8) CodeTemp=CodeTemp>>1;
                  }
                  else
      if(j<8)CodeTemp=CodeTemp>>1;//如果IRsignal是"0",则向右移一位,自动补"0"
                 }
              IRcode=CodeTemp;
              CodeTemp=0;
         }

             SBUF=IRcode[2];
                P0=~IRcode[2];
  while(!TI);       //等待一个字节发送完毕
     TI=0;
   Delay();
       }
   }
EA=1;
}
/***********************串口初始化程序*********************/
void initUart(void)
{  
TMOD|=0x20;
SCON=0x50;
PCON|=0x00;
TH1=0xfd;     //9600bps @ 11.0592MHz
TL1=0xfd;
TR1=1;
}
/**************************主程序*************************/
void main()
{ initUart();
IT0=1;    //INT0为负边沿触发, (1:负边沿触发,0:低电平触发)
EX0=1;    //外部中断INT0开, (1:开,      0:关    )
EA=1;    //开所有中断
CodeTemp=0;    //初始化红外编码字节缓存变量
Delay();
while(1);
}
此帖出自51单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复

452

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
恩,这个程序我也用过,只要调对延时,是可以用的,我把它移植到过avr和其他芯片都可以用
此帖出自51单片机论坛
 
个人签名人生苦短,何必为声名所累,放开自己心态,去追求自己想要的梦想去吧!http://pytech-inc.taobao.com/
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

4
 
红外解码这玩意儿主要是延时,延时只要做好了,比较简单,要精确延时的话可以用计数器,不过好像没必要,我用这个延时解码也很正常
此帖出自51单片机论坛
 
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

5
 

回复 4楼 kakasha 的帖子

灰常感谢啊
此帖出自51单片机论坛
 
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

6
 

回复 板凳 梦之旅 的帖子

请问下 不同的红外接收头区别大么 我的是1838吧 好像
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

140

TA的资源

版主

7
 
多数一体化红外接收头的输出都是兼容的。
此帖出自51单片机论坛
 
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

8
 

回复 7楼 chunyang 的帖子

谢谢老师
此帖出自51单片机论坛
 
 
 

回复

452

帖子

0

TA的资源

五彩晶圆(初级)

9
 
只有有些引脚排列不同,这个要注意一下
此帖出自51单片机论坛
 
个人签名人生苦短,何必为声名所累,放开自己心态,去追求自己想要的梦想去吧!http://pytech-inc.taobao.com/
 
 

回复

452

帖子

0

TA的资源

五彩晶圆(初级)

10
 
红外传输协议是先传一个起始信号,然后传32位数据,头16位是识别码,为了方便,一般滤掉,后16位是数据,前8位是有效数据,后面8位是校验码,然后结合上面程序,大家应该就可以理解了,呵呵
此帖出自51单片机论坛
 
个人签名人生苦短,何必为声名所累,放开自己心态,去追求自己想要的梦想去吧!http://pytech-inc.taobao.com/
 
 

回复

452

帖子

0

TA的资源

五彩晶圆(初级)

11
 
发送和接收都是38k的频率,把数据加到38k载波频率上,所以通过适当延时就可以接收或者发送信号
此帖出自51单片机论坛
 
个人签名人生苦短,何必为声名所累,放开自己心态,去追求自己想要的梦想去吧!http://pytech-inc.taobao.com/
 
 

回复

452

帖子

0

TA的资源

五彩晶圆(初级)

12
 
这个用串口和中断都可以实现,用串口主要利用串口协议,仅供大家学习,欢迎讨论,呵呵
此帖出自51单片机论坛
 
个人签名人生苦短,何必为声名所累,放开自己心态,去追求自己想要的梦想去吧!http://pytech-inc.taobao.com/
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

13
 

回复 11楼 梦之旅 的帖子

如何加载到38KHZ呢
此帖出自51单片机论坛
 
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

14
 
还有个问题 我的不是遥控器   就是学习板上那种 焊在一起的光电二极管 和 接收芯片 我在想 我通过光电二极管发射一个38KHZ的脉冲  接收器 能完整接收到这个脉冲么  我接收器接的是外部中断  我通过示波器 发现 接收器端毫无反应
此帖出自51单片机论坛
 
 
 

回复

186

帖子

0

TA的资源

纯净的硅(中级)

15
 
是啊,我通常是用一个定时器一个外部中断,不过占用中断资源太多了,以后扩展其他的就
显得不太够用了,如果用精确延时来实现那么就可以节省一个定时器资源了,何乐而不为呢?
此帖出自51单片机论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

16
 
要是没得型号。。。最好用示波器打一下!!!!
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表