资源描述:
《红外解码程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、红外解码程序 本篇介绍红外解码的原理和程序的写法。 下面来看一下,红外线是如何编码的。 下面来具体说一下,解码的原理,每按一下遥控器的一个按键,遥控器就会发出32个“0”“1”代码(当然是通过高低电平的占空比来判断是0还是1的),具体是0,1是如何编码的上面图片中有介绍,和一个引导码,引导码的作用是告诉处理器,接下来将要开始发送代码,我们在编写程序时,当检测到引导码时,就应该准备接受数据了。32位代码中的前16位是用户识别码,不同的遥控器不相同,防止互相干扰的,后16是8为数据码,和8位数据反码。 接
2、下来开始介绍如何解码程序的编写。 程序中用到了两个中断,一个是定时器中断,一个是外部中断。定时器中断用来准确计时,判断接受的代码是0还是1,外部中断用来准确确定定电平到来的时刻,然后开始计时。/*********************************************************函数功能:红外解码,用八位数码管显示红外线的按键码,便于红外控制测试环境:hot 51学习板编译环境:keil4整理人:张家越 QQ:整理时间:2011-04-03******************************
3、******************************/#include#define uchar unsigned char#define uint unsigned intuchar code seg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5E,0x79,0x71 }; //0-f的段选码unsigned char code seg_we[]={0,1,2,3,4,5,6,
4、7};uchar irtime,startflag,bitnum,irreceok;uchar irdata[33];uchar irprosok;uchar display[8];uchar ircode[8] ;sbit led1=P0^1;sbit led2=P0^2;/************************************************************************函数功能:延时函数,在数码管显示时使用,不需要很精确***************************************
5、**********************************/ void delay_50us(uint t){ uchar j; for(;t>0;t--) for(j=19;j>0;j--);}/**************************************************************************函数的功能:定时器0的初始化**************************************************************************/ void ti
6、mer0init(){ TMOD=0x02; //设置定时器工作在方式2 TH0=0x00; // TL0=0x00; //设置定时器的初值 ET0=1; //开定时器中断 TR0=1; // 打开定时器 EA=1; //开总中断 }/************************************************************************外部中断1的初始化**********************************************************
7、*************/ void int1init(){ IT1=1; //设置触发方式为上升沿 EX1=1; //开外部中断1 EA=1; //开总中断 }/**********************************************************************定时器0的功能函数,每中断一次irtime++,用于计时***********************************************************************/ voi
8、d timer0() interrupt 1{ irtime++; //定时器中断一次irtime++,用于计时 } /***