红外遥控器的基本原理Word文档格式.docx

上传人:b****3 文档编号:15997873 上传时间:2022-11-17 格式:DOCX 页数:10 大小:28.62KB
下载 相关 举报
红外遥控器的基本原理Word文档格式.docx_第1页
第1页 / 共10页
红外遥控器的基本原理Word文档格式.docx_第2页
第2页 / 共10页
红外遥控器的基本原理Word文档格式.docx_第3页
第3页 / 共10页
红外遥控器的基本原理Word文档格式.docx_第4页
第4页 / 共10页
红外遥控器的基本原理Word文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

红外遥控器的基本原理Word文档格式.docx

《红外遥控器的基本原理Word文档格式.docx》由会员分享,可在线阅读,更多相关《红外遥控器的基本原理Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

红外遥控器的基本原理Word文档格式.docx

所以,有了一体化接收头,人们不再制作接收放大电路,这样红外接收电路不仅简单而且可靠性大大提高。

红外遥控器的协议

∙  鉴于家用电器的品种多样化和用户的使用特点,生产厂家对红外遥控器进行了严格的规范编码,这些编码各不相同,从而形成不同的编码方式,统一称为红外遥控器编码传输协议。

了解这些编码协议的原理,不仅对学习和应用红外遥控器是必备的知识,同时也对学习射频(一般大于300MHz)无线遥控器的工作原理有很大的帮助。

  到目前为止,笔者从外刊收集到的红外遥控协议已多达十种,如:

RC5、SIRCS、SONy、RECS80、Denon、NEC、Motorola、Japanese、SAMSWNG和Daewoo等。

我国家用电器的红外遥控器的生产厂家,其编码方式多数是按上述的各种协议进行编码的,而用得较多的有NEC协议。

红外遥控器的结构特征

∙  红外遥控发射器由键盘矩阵、遥控专用集成电路、激励器和红外发光二极管组成。

遥控专用集成电路(采用AT89S52单片机)是发射系统的核心部分,其内部由振荡电路、定时电路、扫描信号发生器、键输入编码器、指令译码器、用户码转换器、数码调制电路及缓冲放大器等组成。

它能产生键位扫描脉冲信号,并能译出按键的键码,再经遥控指令编码器得到某键位的遥控指令(遥控编码脉冲),由38KHZ的载波进行脉冲幅度调制,载有遥控指令的调制信号激励红外二极管发出红外遥控信号。

  在红外接收器中,光电转换器件(一般是光电二极管或光电三极管,我们这里用的是PIN光电二极管)将接收到的红外光指令信号转换成相应的电信号。

此时的信号非常微弱而且干扰特别大,为了实现对信号准确的检测和转换,除了高性能的红外光电转换器件,还应合理地选择并设计性能良好的电路形式。

最常用的光电转换器件是光电二极管,当光电二极管PN结的光敏面受到光照射后,PN结的半导体材料吸收光能,并将光能转换为电能。

当光电二极管上加有反向电压时,二极管中的反向电流将随入射光照强度的变化而变化,光的辐照强度越大,其反向电流越大。

也就是说,光电二级管的反向电流随入射的光脉冲作同频率的变化。

红外遥控器的应用

∙  红外遥控器由于受遥控距离、角度等影响,使用效果不是很好,如采用调频或调幅发射接收编码,则可提高遥控距离,并且没有角度影响。

红外遥控发射和接收模块可以用在室内红外遥控中,它不影响周边环境、不干扰其它电器设备。

由于其无法穿透墙壁,所以不同房间的家用电器可使用通用遥控器而不会产生相互干扰;

电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入工作;

编解码容易,可进行多路遥控。

现在红外遥控在家用电器、室内近距离遥控中得到了广泛的应用。

另外模块还可以用在其他红外遥控系统中,应用前景十分广阔。

 

51单片机设计的红外线遥控器电路图

及工作原理

你家里是否有一个电视机遥控器或者空调机遥控器呢?

你是否也想让它遥控其他的电器甚至让它遥控您的电脑呢?

那好,跟我一起做这个“红外遥控解码器”。

该小制作所需要的元件很少:

单片机TA89C2051一只,RS232接口电平与TTL电平转换心片MAX232CPE一只,红外接收管一只,晶振11.0592MHz,电解电容10uF4只,10uF一只,电阻1K1个,300欧姆左右1个,瓷片电容30P2个。

发光二极管8个。

价钱不足20元。

电路图及原理:

主控制单元是单片机AT89C2051,中断口INT0跟红外接受管U1相连,接收红外信号的脉冲,8个发光二极管作为显示解码输出(也可以用来扩展接其他控制电路),U3是跟电脑串行口RS232相连时的电平转换心片,9、10脚分别与单片机的1、2脚相连,(1脚为串行接收,2脚为串行发送),MAX232CPE的7、8脚分别接电脑串行口的2(接收)脚、3(发送脚)。

晶振采用11.0592MHz,这样才能使得通讯的波特率达到9600b/s,电脑一般默认值是9600b/s、8位数据位、1位停止位、无校验位。

电路就这么简单了,现在分析具体的编程过程吧。

如图所示,panasonic遥控器的波形是这样的(经过反复测试的结果)。

开始位是以3.6ms低电平然后是3.6ms高电平,然后数据表示形式是0.9ms低电平0.9ms高电平周期为1.8ms表示“0”,0.9ms低电平2.4ms高电平周期为3.3ms表示“1”,编写程序时,以大于3.4ms小于3.8ms高电平为起始位,以大于2.2ms小于2.7ms高电平表示“1”,大于0.84ms小于1.11ms高电平表示“0”。

因此,我们主要用单片机测量高电平的长短来确定是“1”还是“0”即可。

定时器0的工作方式设置为方式1:

movtmod,#09h,这样设置定时器0即是把GATE置1,16位计数器,最大计数值为2的16次方个机器周期,此方式由外中断INT0控制,即INT0为高时才允许计数器计数。

比如:

jnbp3.2,$

jbp3.2,$

clrtr0

这3条指令就可以测量一个高电平,接下来读取计数值TH0,TL0就可以分辨是起始位还是“1”或“0”。

在确定码表之前,您可以使用P0口的8个发光二极管来显示编码,16位编码分两次显示:

movp0,keydata

acalldelay_1s;

//1ms延时子程序

movp0,keydata+1

ljmpmain

根据P0相继的两次显示的编码,记录每个按键的编码,形成编码表,即遥控器编码的解码完毕。

码表确定之后,以后接收到遥控器的编码之后,就与码表比较,找到匹配的码项,并把该码项对应的顺序号输出到P0口,同时也把顺序号向串行口输出到电脑,电脑接收该数据后由串口软件决定如何处理。

程序不长,下面是完整的程序和注释:

(先看流程图)

keydataequ30h;

//该地址和31H地址用来存放遥控器按键编码。

org00h

main:

movkeydata,#0;

//清零

movtmod,#09h;

//设置定时0方式1,GATE=1

movr7,#0;

//计数器,用来计数是否满8位

movr6,#0;

//计数器,用来计数是否满2字节(解16位编码)

jbp3.2,$;

//是否为低电平

again:

;

//如果为低,继续往下面执行

movtl0,#0;

//清零TL0

movth0,#0;

//清零TH0

setbtr0;

//开启定时器0

jnbp3.2,$;

//等待高电平到来

//高电平到来,此时开始计数

clrtr0;

//高电平结束,停止计数

mova,th0;

//读取th0值,TL0忽略不计

clrc;

//

subba,#12;

jcagain;

//th0<

12则转,即小于3.4ms,你可以算一下这个时间

mova,#14;

subba,th0;

//和14比较,如果TH0>

14则大于3.8ms

//大于3.8ms,从新再检测

nextbit:

//起始位找到了,然后下一位

//启动定时器

//等待高电平

//读取计数值,TL0忽略不计

subba,#8;

//th0和8比较

jcnext;

;

//若<

2.2ms则转,再判断是否大于0.84ms

mova,#10;

//再跟10比较

//若>

2.7ms,则放弃,从新检测

mova,keydata;

//符合大于2.2ms小于2.7ms,即为“1”

setbc;

//C=1

rrca;

//把1移位进A

movkeydata,a;

//保存

incr7;

//计数器加1

cjner7,#8,nextbit;

//是否满8位

incr6;

//计数加1

cjner6,#2,last8;

//是否满两字节

sjmpseach;

//不满两字节,再新采集

last8:

//满1字节,再接下来第二字节

movkeydata+1,a;

//把第一字节编码数据保存到31h里

//计数器R7清零

sjmpnextbit;

//继续采集数据

next:

//小于2.2ms时转到这里

//读取计数值TH0

swapa;

//高4位与低4位对换

movr1,a;

//保存到R1

anltl0,#0f0h;

//取TL0高4位,低4位忽略不计

mova,tl0;

adda,r1;

subba,#30;

//以上几行是把TH0的低4位和TL0的高4位合并为1字节作为计数值

jcnextbit;

//判断是否<

0.84ms,是则放弃,继续采集

mova,r1;

//否

cjnea,#64,continue;

//跟64比较

continue:

jncnextbit;

//a>

64表示采样值>

1.11ms放弃

//否则,符合位“0”

//C=0

//把零右移进A

cjner6,#2,last_8;

//是第一字节已经满

last_8:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1