网站大量收购独家精品文档,联系QQ:2885784924

红外线接收控制器的制作.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
红外线接收控制器的制作 在生活中,我们常用到红外线控制各类电器,如彩电、空调、电风扇等,为我们带来较多的方便,但有时我们仍感到不方便。如看完电视后,用遥控器只能关掉电视主电源,电视仍处于待机状态,使用者还得走到电视跟前,按下电视电源开关方能放心。若想看电视,还得动身开电视,显得很麻烦,尤其是冬天躺在床上看电视,上上下下,深感不便。本文以利用红外遥控器来遥控风扇的制作方法为例(可任选一只红外线遥控器,能调速,软件稍作改变,可增加定时功能等),来介绍红外线接收控制器的制作方法,如果制作电视交流电源的开、关控制器,可与电视共用一只遥控器,制作也较简单些。 制作思路 ????? 红外遥控发射器是利用红外线作载体传送信息的,发射周期不等的经过调制后串行码,该串行码一般由引导码、用户识别码、操作码组成。经红外接收头解码后得到一串周期不等的矩形波,如示意图1。 ????? 不同型号的遥控发射器的波形宽度不同,即周期T1、T2……不同,在不知手头遥控发射器的波形周期的情况下,首先要制作一个检测红外线周期的工具。根据测得的周期规律来制作红外线接收控制器。 制作方法 ????? 检测红外周期的器件制作,见图2。 ???? 当红外接收头没有接收到发射器发送来的红外线,其输出端输出高电平(约+5V)。当接收到红外线,输出端电平变低,送到单片机AT89C2051的外部中断1口即INT1,使其发生中断而进入中断服务:启动定时器1并开始计数,相当于在图1的A点,1个周期后即C点,单片机第二次中断,关定时器1,记下周期T1(实际上只记下TH1的数值,TL1的值可以丢弃),然后清TH1、TL1,再启动定时器1重新计数,第二个周期完后,同样会引起单片机发生中断,再记下周期T2……,如此记下40-50个周期(一般红外编码为4字节,即32BIT,之前还有引导码,又因接收到的红外数据不一定是从引导码开始,要分析一次完整的串行码,应尽可能多记下红外矩形波周期数),接收完后,通过按轻触开关将各记下的各周期的TH1在数码管显示出来以作分析(每按一次轻触开关,显示下一个周期数)。 编程方法 #define CNT 50//预测50个红外线周期 DATA Byte value_h[CNT];//记录周期的变量(数组) DATA Byte count=0;//接收到的周期数 code Byte arr[][2]={0x90,0x6f,?? //0,尽可能按键0、键1……的先后顺序放,以符合习惯 ???????? 0x00,0xff,?? //1 ???????? 0x10,0xef,?? //9 ???????? 0xd0,0x2f??? //power 13 ????? }; /*在接收红外线的外部中断1函数中编写如下的键码转换语句:*/ DATA Byte arrtmp[4];????? DATA Byte Keytmp;?? //转换后的键值寄存变量 DATA Byte Keyval=NOKEY;?? bit KeyOk;// 键值转换完成与否的标志 bit d_Ok;//接收到一个完整的键码标志 void int1(void) interrupt 2 { ?? if(TH1==TL1TL1==0)?? //判断是否是第一次接收到红外数据 ??? {?? ??? TR1=1; ?? } ?? else ?? { ??? TR1=0;?? ??? value_h[count]=TH1;????? ??? TH1=TL1=0; ??? TR1=1;?? ??? count++; ???????? if(count==CNT) ??????? { ??????????? EX1=0;?? ??????????? count=0;??????? ???????? }?? ??? } } /*假设接收到的TH的数值为:30,50,?? 04,08,08,08,?? 04,04,04,04, 04,08,08,08,?? 04,04,04,04, 08,04,04,08,?? 04,04,04,04,04,?? 04,08,08,04, 08,08,08,08,3f,50----稍作分析可知,表示高低电平的有效数为:04,08。若 将04定作低电平,08定作高电平,舍弃其他数据,得到4字节数据即01101111。转为十六进制后得:70h,70h,90h,6fh,至此得 到遥控发射器刚才按下的键值码,用同样的方法可以测得其他键键值码。假设有: 70h,70h,0x90,0x6f,???? //0键70h,70h,?? 0x00,0xff,?? //1键 70h,70h, 0xd0,0x2f???? //power 键

文档评论(0)

14576 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档