用单片机解码红外遥控器
[10-10 20:38:44] 来源:http://www.88dzw.com 微机|单片机 阅读:8179次
文章摘要: 二、单片机遥控接收电路 红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法。如CXA20106,此种方法电路复杂,现在一般不采用。较好的接收方法是用一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路做在一起,只有三个引脚.分别是 5V电源、地、信号输出。常用的一体化接收头的外形及引脚见图3和图4。红外接收头的信号输出接单片机的INTO或INTl脚.典型电路如图5所示.图中增加了一只PNP型三极管对输出信号进行放大。 三、遥控信号的解码算法及程序编制 平时。遥控器无键按下。红外发射二极管不发出信号,遥控接收头输出信号1。有键按下时.O和1编码的高电平经遥控头倒相后会输出
用单片机解码红外遥控器,标签:电路设计,http://www.88dzw.com二、单片机遥控接收电路
红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法。如CXA20106,此种方法电路复杂,现在一般不采用。较好的接收方法是用一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路做在一起,只有三个引脚.分别是 5V电源、地、信号输出。常用的一体化接收头的外形及引脚见图3和图4。红外接收头的信号输
出接单片机的INTO或INTl脚.典型电路如图5所示.图中增加了一只PNP型三极管对输出信号进行放大。
三、遥控信号的解码算法及程序编制
平时。遥控器无键按下。红外发射二极管不发出信号,遥控接收头输出信号1。有键按下时.O和1编码的高电平经遥控头倒相后会输出信号O.由于与单片机的中断脚相连,将会引起单片机中断(单片机预先设定为下降沿产生中断)。单片机在中断时使用定时器0或定时器1开始计时.到下一个脉冲到来时,即再次产生中断时,先将计时值取出。清零计时值后再开始计时.通过判断每次中断与上一次中断之间的时间间隔。便可知接收到的是引导码还是 O和1。如果计时值为9ms。接收到的是引导码,如果计时值等于1.12ms,接收到的是编码O。如果计时值等于2 25ms.接收到的是编码1。在判断时间时,应考虑一定的误差值。因为不同的遥控器由于晶振参数等原因,发射及接收到的时间也会有很小的误差。
以接收TC9012-p.htm" target="_blank" title="TC9012货源和PDF资料">TC9012遥控器编码为例,解码方法如下:
(1)设外部中断0(或者1)为下降沿中断,定时器0(或者1)为16位计时器.初始值均为O。
(2)第一次进入遥控中断后,开始计时。
(3)从第二次进入遥控中断起,先停止计时。并将计时值保存后,再重新计时。如果计时值等于前导码的时间,设立前导码标志。准备接收下面的一帧遥控数据,如果计时值不等于前导码的时间,但前面已接收到前导码,则判断是遥控数据的O还是1。
(4)继续接收下面的地址码、数据码、数据反码。
(5)当接收到32位数据时,说明一帧数据接收完毕。此时可停止定时器的计时,并判断本次接收是否有效.如果两次地址码相同且等于本系统的地址,数据码与数据反码之和等于0FFH,则接收的本帧数据码有效。否则丢弃本次接收到的数据。
(6)接收完毕,初始化本次接收的数据,准备下一次遥控接收。
示例程序如下: E1INT:
PUSHACC
PUSH PSW
CLRTR1
MOV RM—TLEN,TH1 、
MOVTH1,#00H
MOV TL1,#00H
SETBTR1
MOV A,RMJLEN
JNZ LBL—RM—DAT—BIT
MOV RM—ADDR.#00H
MOV RM—RADDR,#00H
MOV RM—DAT,#00H
MOV RM—RDAT,#00H
MOV RM—BIT_CNT,#00H
CLR RM—OK
CLR RM—GUIDE
POPPSW
POPACC
RET1 I BI RM DAT BIT:
MOV A,RM_TLEN
CJNE A,#23H,LBL—RM_ADDR_DAT
SETB RM—GUIDE
SJMP LBLE1 INT-RET
LBLRM_ADDR_DAT;
JNB RM—GUIDE,LBL—RM—ERROR
CJNE A,#04H,LBL_RM_ONE
CLR C
SJMP LBL_RM—SHIFT
LBLRM—ONE:
CJNE A。#08H。LBL—RM—ERROR
SETB C
LBL_RM_SHIFT:
MOV A,RM—RDAT
RRC A
MOV RM—RDAT.A
MOV A,RM—DAT
RRC A
MOV RM—DAT,A
MOV A,RM—RADDR
RRC A
MOV RM RADDR.A
MOV A。RM—-ADDR
RRC A
MOV RM—.ADDR.A
LBL—RM—END:
INC RM—BIT—CNT
MOV A,RM_BIT_CNT
CJNE A,#32,LBLE1 INT_RET
CLRTR1
MOV TH1,#00H
MOVTL1,#00H
MOV HOUR.RM—ADDR
MOV MINUTE,RM—DAT
MOV RM—_ADDR,#00H
MOV RM—RADDR,#00H
MOV RM—DAT,#00H
MOV RM—RDAT,#00H
MOV RM一8IT_CNT,#00H
CLR RM—GUIDE
SEITB RM—OK
SJMP LBL—E1 INT—RET LBL—RM—ERROR:
CLRTR1
MOV TH1,#0OH
MOVTL1,#00H
MOV RM—_ADDR,#00H
MOV RM—RADDR,#00H
MOV RM—DAT,#00H
- 上一篇:AMD462 CPU 图
《用单片机解码红外遥控器》相关文章
- › 利用单片机来控制LED点阵
- › 用单片机构成的波形发生器电路
- › 用单片机控制的光谱数据采集系统
- › 用单片机制作一个数字电压表
- › 用单片机控制黑白电视机选台
- › 基于利用单片机构成高精度PWM式12位D/A方法
- 在百度中搜索相关文章:用单片机解码红外遥控器
- 在谷歌中搜索相关文章:用单片机解码红外遥控器
- 在soso中搜索相关文章:用单片机解码红外遥控器
- 在搜狗中搜索相关文章:用单片机解码红外遥控器