欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    红外遥控解码原理.doc

    • 资源ID:28510516       资源大小:26KB        全文页数:5页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    红外遥控解码原理.doc

    精品文档,仅供学习与交流,如有侵权请联系网站删除第五讲 红外遥控一、红外接收头外形及与单片机连接电路(a) (b)图1图1(a)为红外接收头HX1838的外形图,它有三个引脚,其中1为接收端2为地端3为电源端。其与单片机连接电路图见(b)所示,红外接收头的接收引脚与单片机的P3.2相连。二、红外遥控简介红外遥控是一种比较廉价的近距离遥控方式。它由发射模块和接收模块两部分组成,编码格式有脉冲宽度调制和脉冲相位调制两大类。本节我们不考虑发射模块而只研究接收端的解码。本例我们以比较容易的脉冲宽度调制来介绍解码原理。三、发射端数据的编码当我们按下遥控器后,遥控器发出一帧数据。这一帧数据由前导码、用户码高8位、用户码低8位、数据码、数据反码组成。其中前导码为9ms高电平接着4.5ms低电平,标志数据帧的开始;用户码(共16位)为红外接收器识别遥控器的身份的标志,不同的遥控器一般用户码不同,以防止不同电器设备之间遥控码的干扰;数据码为红外接收器识别遥控器上不同的按键的标志,对同一遥控器来说,按不同的键所发出的二进制编码具有相同的用户码,不同的数据码,如图1所示.数据反码用于信息正确接收校验。图1红外遥控解码精简设计。孙卫锋,,郑秀娥。山东理工大学学报(自然科学版) 第20卷第6期 2006年 26291、16位用户码,8位数据码和8位数据反码中的数据位定义以脉宽0.56ms间隔0.565ms周期1.125ms表示二进制“0”,以脉宽0.56ms间隔1.69ms周期2.25ms表示二进制“1”,其波形分别如图2(a)和(b)所示。 (a) (b)图22、重复码以9ms高电平,2.25ms低电平,再0.56ms高电平定义为重复码,持续按键时,该键编码连续发送,首帧为数据帧,其后为重复码,周期为108us,如图3所示。图3四、接收端的解码原理解码就是将HX1838输出的脉冲还原为二进制的“0”和“1”,得到二进制“0”,“1”序列,进而分析所含的用户码和数据码。当HX1838在遥控有效距离内,接收到红外遥控脉冲信号后,由内部转换成电压信号并经放大、长时控制、干扰抑制、带通滤波并整形后输出遥控代码脉冲.脉冲的形式为遥控器发射脉冲的倒像.图4表明了遥控发射码与HX1838解码输出码之间的波形关系.一定要注意,单片机接收端与发射端的信号是倒像关系,发射端引导码是9ms高电平,2.25ms低电平,在单片机接收端就变成了9ms低电平和2.25ms高电平,发射端发射位0,则单片机接收端为高电平。五、应用实例应用红外接收头HX1838接收红外信号并送LCD1602显示遥控器按键编码。#include<reg52.h> #include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit IR=P32; sbit RS=P26;sbit RW=P27;sbit E=P25;uchar IRcom6; uint LowTime,HighTime; #define delay_4_nop() _nop_();_nop_();_nop_();_nop_();/*延时*/void delay(uchar i) uchar k,j; for(k=0;k<i;k+) for(j=0;j<255;j+); /*LCD1602*/bit Lcd_R_Busy()bit s;RW=1;delay_4_nop();RS=0;delay_4_nop();E=1;delay_4_nop();s=(P0&0x80);delay_4_nop();E=0;delay_4_nop();return(s);void Lcd_W_Cmd(uchar com)while(Lcd_R_Busy()!=0);RW=0;delay_4_nop();RS=0;delay_4_nop();E=1;delay_4_nop();P0=com;delay_4_nop();E=0;delay_4_nop();void Lcd_W_Dat(uchar dat)while(Lcd_R_Busy()!=0);RW=0;delay_4_nop();RS=1;delay_4_nop();E=1;delay_4_nop();P0=dat;delay_4_nop();E=0;delay_4_nop();void Lcd_Init()Lcd_W_Cmd(0x3c);Lcd_W_Cmd(0x0c);Lcd_W_Cmd(0x01);Lcd_W_Cmd(0x06);Lcd_W_Cmd(0x80);/1602显示字符串/row为行,column为列void showstring(uchar row, uchar column, uchar str)uchar i=0;row &= 0x01; /保证行不超过1 column &= 0x0f; /保证列不超过15if(row=0) Lcd_W_Cmd(0x80|column);if(row=1) Lcd_W_Cmd(0xc0|column);delay(250); while(stri != '0') Lcd_W_Dat(stri);delay(2); i+;/1602显示字符/row为行,column为列,2行(0,1),16列(015)void showchar(uchar row, uchar column, uchar dat) row &= 0x01; /保证行不超过1 column &= 0x0f; /保证列不超过15if(row=0) Lcd_W_Cmd(0x80|column);if(row=1) Lcd_W_Cmd(0xc0|column);Lcd_W_Dat(dat);/*红外部分*/*函数功能:对4个字节的用户码和键数据码进行解码说明:解码正确,返回1,否则返回0*/bit DeCode(void) uchar i,j; uchar temp=0; for(i=0;i<4;i+) for(j=0;j<8;j+) /j=2 temp=temp>>1; /0101 0000 TH0=0; TL0=0; TR0=1; while(IR=0); TR0=0; LowTime=TH0*256+TL0; /3000 TH0=0; TL0=0; TR0=1; while(IR=1); TR0=0; HighTime=TH0*256+TL0; /560 if(LowTime<390)|(LowTime>680) return 0; if(HighTime>450)&&(HighTime<670) /0 temp=temp&0x7f; if(HighTime>1400)&&(HighTime<1890) temp=temp|0x80; IRcomi=temp; if(IRcom2=IRcom3) IRcom5=IRcom2&0x0f;IRcom4=IRcom2>>4;if(IRcom4>9) IRcom4=IRcom4+0x37;else IRcom4=IRcom4+0x30;if(IRcom5>9) IRcom5=IRcom5+0x37;else IRcom5=IRcom5+0x30; return 1; /红外感应处理程序,接收端信号,如果要转成发射端,自己练习转一下,懒了void Function(void)uchar cdis1="Red control"uchar cdis2="IR-CODE: H"Lcd_Init();/lcd初始化函数showstring(0, 0,cdis1);showstring(1, 0, cdis2);showchar(1, 8, IRcom4);showchar(1, 9, IRcom5);/*函数功能:红外线触发的外中断处理函数*/void Int0(void) interrupt 0 using 0 EX0=0; /关INT0中断 TH0=0; TL0=0; TR0=1; while(IR=0); TR0=0; LowTime=TH0*256+TL0; TH0=0; TL0=0; TR0=1; while(IR=1); TR0=0; HighTime=TH0*256+TL0; if(LowTime>8400)&&(LowTime<9600)&&(HighTime>3900)&&(HighTime<5100) if(DeCode()=1) /*DeCode函数用于接收红外信号的数据位并且判断接收是否正确*/ Function(); EX0=1; /*主函数*/void main()TMOD = 0X01;TR0 = 0; /关定时器T0EX0 = 1; /开外部中断int0IT0 = 1; /外部中断下降沿触发EA = 1; while(1) ; 【精品文档】第 5 页

    注意事项

    本文(红外遥控解码原理.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开