51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机源码 > 详细内容
最简51单片机红外遥控解码程序(C)
发布时间:2009/6/4  阅读次数:1416  字体大小: 【】 【】【

作者:未知     来源:网络


           用单片机进行红外遥控解码,对大多数初学者来说是很麻烦的一个问题。从书中和网上找到的一些这方面的程序,运行往往是无法通过。即使能用的程序也是显得复杂而长。
            下面介绍本人自编的红外遥控解码的C51程序,自认为是可能是史上最简的。此程序是针对uPD6121系列的遥控器的取码程序,解码值在Im[2]中,当IrOK=1时解码有效。

/*     51单片机红外遥控解码程序     */
/*           适用uPD6121系列                       */
/*         周正华 2008.4.11编                 */
/*       http://hi.baidu.com/52_diy     */

#include <reg52.h>

#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<Imax)) m=0;                   //找到启始码
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;
}
}

  

  

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号