最简单的51单片机红外遥控解码程序

2012-03-28 11:39:40来源: 互联网

单片机进行红外遥控解码,对大多数初学者来说是很麻烦的一个问题。下面介绍本人自编的红外遥控解码的C51程序,自认为是可能是史上最简的。此程序是针对uPD6121系列的遥控器的取码程序,解码值在Im[2]中,当IrOK=1时解码有效。

  /* 51单片机红外遥控解码程序 */

  /* 适用uPD6121系列 */

  #include

  #define DIGPORT P2

  #define WORDPORT P0

  unsigned char code LED_num[]={0x3f,0x18,0x76,0x7c,0x59,0x6d,0x6f,0x38,0x7f,0x7d};

  #define Imax 14000 //此处为晶振为11.0592时的取值,

  #define Imin 8000 //如用其它频率的晶振时,

  #define Inum 1450 //要改变相应的取值。

  unsigned char Im[]={0x00,0x00,0x00,0x00};

  unsigned long m,Tc;

  unsigned char i,IrOK;

  void DelayMy(unsigned int t){

  while(--t);

  }

  void Display_LED(unsigned long num)

  {

  unsigned int ii;

  unsigned int jj=0;

  unsigned long aa,bb;

  unsigned int xx[8]={0,0,0,0,0,0,0,0};

  do {

  bb=num/10;

  aa=num-bb*10;

  xx[jj]=aa;

  num=bb;jj++;

  }

  while(num>0);

  DIGPORT=0x80;

  for(ii=0;ii<8;ii++) {

  WORDPORT=LED_num[xx[ii]];

  DelayMy(60);

  DIGPORT=DIGPORT>>1;

  };

  WORDPORT=0;

  }

  //外部中断解码程序

  void intersvr1(void) interrupt 2 using 1

  {

  Tc=TH0*256+TL0; //提取中断时间间隔时长

  TH0=0; TL0=0; //定时中断重新置零

  if((Tc>Imin)&&(Tc

  if(Tc>Inum) Im[m/8]=Im[m/8]>>1|0x80; else Im[m/8]=Im[m/8]>>1; //取码

  if(m==32) if((Im[2]|0x01)==~Im[3]) IrOK=1; else IrOK=0; //取码完成后判断读码是否正确

  m++; //准备读下一码

  }

  /*演示主程序*/

  void main(void)

  {

  m=0;

  EA=1;

  IT1=1;EX1=1;

  TMOD=0x11;

  TH0=0;TL0=0;

  TR0=1;ET0=1;

  for(;;){

  DelayMy(100);

  if(IrOK==1) for(i=0;i<400;i++) Display_LED(Im[2]);

  IrOK=0;

  }

  }

关键字:51单片机  红外遥控  解码程序

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2012/0328/article_15496.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
51单片机
红外遥控
解码程序

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved