红外解码程序.doc

红外解码程序.doc

ID:59135955

大小:151.50 KB

页数:6页

时间:2020-09-12

红外解码程序.doc_第1页
红外解码程序.doc_第2页
红外解码程序.doc_第3页
红外解码程序.doc_第4页
红外解码程序.doc_第5页
资源描述:

《红外解码程序.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++,用于计时 } /***

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。