📄 红外线遥控器解码程序 汇编语言 经典说明.htm
字号:
src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><BR><BR>
<TABLE style="TABLE-LAYOUT: fixed" cellSpacing=0 cellPadding=0
width="95%" border=0>
<TBODY>
<TR>
<TD align=middle><IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/06.gif"
border=0></TD></TR></TBODY></TABLE><BR>积分 402<BR>发贴
75<BR>性别 男 <BR>注册 2004-9-8<BR>来自 理工学院 电子02912班<BR>状态 离线
</SPAN></TD>
<TD height="100%">
<TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word"
height="100%" cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top><SPAN class=bold><SPAN
class=smalltxt></SPAN></SPAN>ORG 0000H <BR>AJMP
MAIN<BR>ORG 0003H ;外部中断INT0入口地址 <BR>AJMP INT
;转中断服务子程序<BR>MAIN: MOV SP,#40H <BR>MOV P1,#00H<BR>SETB
EA ;开CPU中断<BR>SETB IT0 ;设定INT0触发方式<BR>SETB EX0
;INT0请求中断<BR><BR>DSP: MOV R2,#9 ;将遥控器键值转化成A(0~9)<BR>MOV
DPTR,#TAB1<BR>VV: MOV A,R2<BR>MOVC A,@A+DPTR<BR>XRL
A,1CH<BR>JZ ABC<BR>DJNZ R2,VV<BR>ABC: MOV
A,R2<BR><BR>MOV DPTR,#TAB ;将A的值通过数码管显示出来 <BR>MOVC
A,@A+DPTR <BR>RX1: MOV P1,A <BR>CLR P0.1 <BR>AJMP
DSP<BR><BR>INT: CLR EA <BR>MOV R6,#10<BR>SB: ACALL
YS1<BR>JB P3.2,EXIT<BR>DJNZ R6, SB<BR>JNB P3.2, $
;等待高电平避开9毫秒低电平引导脉冲<BR>ACALL YS2 ;延时4。74毫秒判断是否连发<BR>JB
P3.2,EXIT<BR>CPL P0.0<BR><BR>MOV R1,#1AH
;将32位代码分别放在1AH/1BH/1CH/1DH中<BR>MOV R2,#4 <BR>PP: MOV
R3,#8<BR>JJJJ: JNB P3.2,$<BR>LCALL YS1<BR>MOV
C,P3.2<BR>JNC UUU<BR>JB P3.2,$<BR>UUU: MOV A,@R1<BR>RRC
A<BR>MOV @R1,A<BR>DJNZ R3,JJJJ<BR>INC R1<BR>DJNZ R2,PP
<BR><BR>MOV P2,1CH<BR>MOV A,1AH ;进行代码识别 <BR>XRL A,#0
;判断1AH的值是否等于00000000<BR>JNZ EXI ;如果不同则无效将1CH清零<BR>CLR
P0.1 <BR>MOV A,1BH<BR>XRL A,#11110111B
;再判断高8位地址是否正确<BR>JNZ EXI<BR>MOV A,1CH<BR>CPL A<BR>XRL
A,1DH ;将1CH的值取反后和1DH比较 不同则无效丢弃核对数据是否准确<BR>JNZ EXI
<BR>AJMP EXIT<BR>EXI: MOV 1CH,#0<BR>EXIT: SETB EA
;允许中断<BR>RETI <BR><BR>YS1: MOV R4,#20 ;精确延时882微秒<BR>D1:
MOV R5,#20<BR>DJNZ R5,$<BR>DJNZ R4,D1 <BR>RET<BR>YS2:
MOV R4,#10 ;精确延时4740微秒<BR>D2: MOV R5,#235<BR>DJNZ
R5,$<BR>DJNZ R4,D2 <BR>RET<BR>TAB: DB
60H,7DH,0D0H,58H,4DH <BR>DB
4AH,42H,7CH,40H,48H<BR>TAB1<IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/biggrin.gif"
align=absMiddle border=0>B 0CH,09H,1DH,1FH,0DH <BR>DB
19H,1BH,11H,15H,17H<BR>END<BR>;TAB LED数码管显示表
TAB1遥控器键值表</TD></TR></TBODY></TABLE></TD></TR>
<TR bgColor=#ffffff>
<TD vAlign=center>
<TABLE class=smalltxt cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD><IMG src="红外线遥控器解码程序 汇编语言 经典说明.files/lastpost.gif"
align=absMiddle> 2005-1-14 19:37</TD>
<TD align=right><SPAN class=bold
align="right">#2</SPAN></TD></TR></TBODY></TABLE></TD>
<TD vAlign=center>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR class=smalltxt>
<TD align=left><A
href="http://freeweb.nyist.net/~xuyuan/luntan/viewpro.php?username=sina3228&sid=5VUbJ06d"><IMG
alt=查看资料 src="红外线遥控器解码程序 汇编语言 经典说明.files/profile.gif"
border=0></A> <A
href="mailto:sina3228@163.com"><IMG alt=发送邮件
src="红外线遥控器解码程序 汇编语言 经典说明.files/email.gif"
border=0></A> <A
href="http://freeweb.nyist.net/~xuyuan/luntan/search.php?srchuname=sina3228&srchfid=all&srchfrom=0&searchsubmit=yes&sid=5VUbJ06d"><IMG
alt=搜索该用户的全部帖子 src="红外线遥控器解码程序 汇编语言 经典说明.files/find.gif"
border=0></A> <A
href="http://freeweb.nyist.net/~xuyuan/luntan/pm.php?action=send&username=sina3228&sid=5VUbJ06d"
target=_blank><IMG alt=发短消息
src="红外线遥控器解码程序 汇编语言 经典说明.files/pm.gif"
border=0></A> <A
href="http://search.tencent.com/cgi-bin/friend/user_show_info?ln=15149327"
target=_blank><IMG alt=OICQ
src="红外线遥控器解码程序 汇编语言 经典说明.files/oicq.gif"
border=0></A> </TD>
<TD align=right> <A
href="http://freeweb.nyist.net/~xuyuan/luntan/post.php?action=edit&fid=6&tid=383&pid=2052&page=1&sid=5VUbJ06d"><IMG
alt=编辑帖子 src="红外线遥控器解码程序 汇编语言 经典说明.files/edit.gif"
border=0></A> <A
href="http://freeweb.nyist.net/~xuyuan/luntan/post.php?action=reply&fid=6&tid=383&repquote=2052&sid=5VUbJ06d"><IMG
alt=引用回复 src="红外线遥控器解码程序 汇编语言 经典说明.files/quote.gif"
border=0></A>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></A><A
name=pid2053>
<TABLE cellSpacing=0 cellPadding=0 width="98%" align=center border=0>
<TBODY>
<TR>
<TD bgColor=#000000>
<TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word"
cellSpacing=1 cellPadding=4 width="100%" border=0>
<TBODY>
<TR bgColor=#f8f8f8>
<TD vAlign=top width="21%"><SPAN class=bold
?>sina3228</SPAN><BR><SPAN class=smalltxt>支柱会员<BR><IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><BR><BR>
<TABLE style="TABLE-LAYOUT: fixed" cellSpacing=0 cellPadding=0
width="95%" border=0>
<TBODY>
<TR>
<TD align=middle><IMG
src="红外线遥控器解码程序 汇编语言 经典说明.files/06.gif"
border=0></TD></TR></TBODY></TABLE><BR>积分 402<BR>发贴
75<BR>性别 男 <BR>注册 2004-9-8<BR>来自 理工学院 电子02912班<BR>状态 离线
</SPAN></TD>
<TD height="100%">
<TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word"
height="100%" cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top><SPAN class=bold><SPAN
class=smalltxt></SPAN></SPAN>红外线遥控器解码程序<BR><BR>这里我们以红外线遥控编码芯片为uPD6121G(或者是
HT622、7461等芯片)为例来说明用单片机实现红外遥控解码的详细过程,站长琢磨这个解码程序花了相当多的精力,期间几经修改逐步完善,后来还用它开发了几个小产品,希望能对网友学习单片机有所帮助。
<BR> <BR><BR>红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。<BR><BR>1
红外遥控系统<BR><BR>通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。<BR><BR><IMG
onmouseover="if(this.alt) this.style.cursor='hand';"
onclick="if(this.alt) window.open('http://www.xie-gang.com/21a.gif');"
src="红外线遥控器解码程序 汇编语言 经典说明.files/21a.gif"
onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}"
border=0><BR>2
遥控发射器及其编码<BR><BR>遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:<BR><BR>采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。<BR><BR><IMG
onmouseover="if(this.alt) this.style.cursor='hand';"
onclick="if(this.alt) window.open('http://www.xie-gang.com/21b.gif');"
src="红外线遥控器解码程序 汇编语言 经典说明.files/21b.gif"
onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}"
border=0><BR>上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示。<BR><BR><IMG
onmouseover="if(this.alt) this.style.cursor='hand';"
onclick="if(this.alt) window.open('http://www.xie-gang.com/21c.gif');"
src="红外线遥控器解码程序 汇编语言 经典说明.files/21c.gif"
onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}"
border=0><BR>UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。<BR><BR>遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,图4为发射波形图。<BR><BR>当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。<BR><BR>代码格式(以接收代码为准,接收代码与发射代码反向)<BR>①位定义
<BR><BR><IMG
onmouseover="if(this.alt) this.style.cursor='hand';"
onclick="if(this.alt) window.open('http://www.xie-gang.com/hw/Image4.gif');"
src="红外线遥控器解码程序 汇编语言 经典说明.files/Image4.gif"
onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}"
border=0> <BR><IMG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -