红外遥控器解码程序 - 图文(8)

2019-03-15 14:38

;-------- 下面为0~9键码判断并在实验板的5位数码管中显示键值 --------

JZPD: MOV A,1AH

IRD0: CJNE A,#00H,IRD1 ;按键\判断显示

MOV P0,#0C0H

MOV P2,#11100000B

AJMP MAIN

IRD1: CJNE A,#01H,IRD2 ;按键\判断显示

MOV P0,#0F9H

MOV P2,#11100000B

AJMP MAIN

IRD2: CJNE A,#02H,IRD3 ;按键\判断显示

MOV P0,#0A4H

MOV P2,#11100000B

AJMP MAIN

IRD3: CJNE A,#03H,IRD4 ;按键\判断显示

MOV P0,#0B0H

MOV P2,#11100000B

AJMP MAIN

IRD4: CJNE A,#04H,IRD5 ;按键\判断显示

MOV P0,#99H

MOV P2,#11100000B

AJMP MAIN

IRD5: CJNE A,#05H,IRD6 ;按键\判断显示

MOV P0,#92H

MOV P2,#11100000B

AJMP MAIN

IRD6: CJNE A,#06H,IRD7 ;按键\判断显示

MOV P0,#82H

MOV P2,#11100000B

AJMP MAIN

IRD7: CJNE A,#07H,IRD8 ;按键\判断显示

MOV P0,#0F8H

MOV P2,#11100000B

AJMP MAIN

IRD8: CJNE A,#08H,IRD9 ;按键\判断显示

MOV P0,#80H

MOV P2,#11100000B

AJMP MAIN

IRD9: CJNE A,#09H,IRDOR ;按键\判断显示

MOV P0,#90H

MOV P2,#11100000B

AJMP MAIN

IRDOR: MOV P2,#0FFH ;关闭数码管使能。\~9\以外的非数字功能按键键值不采用数码管显示,直接从P1口输出键值

AJMP MAIN

YS1: MOV R4,#19 ;延时子程序1

D1: MOV R5,#18

DJNZ R5,$

DJNZ R4,D1

RET

YS2: MOV R4,#10 ;延时子程序2

D2: MOV R5,#216

DJNZ R5,$

DJNZ R4,D2

RET

SOUND: MOV R7,#228 ;音效延时子程序

SDL1: CPL P3.7

MOV R6,#0FFH

SDL0: DJNZ R6,SDL0

DJNZ R7,SDL1

RET

很多电器都采用红外遥控,那么红外遥控的工作原理是什么呢?首先我们来看看什么是红外线。

人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~

0.46μm。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。

红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。

常用的红外遥控系统一般分发射和接收两个部分。

发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出

的是红外线而不是可见光。

目前大量使用的红外发光二极管发出的红外线波长为940nm左右,外形与普通 5发光二极管相同,只是颜色不同。

红外发光二极管一般有黑色、深蓝、透明三种颜色。

判断红外发光二极管好坏的办法与判断普通二极管一样:用万用表电阻挡量一下红外发光二极管的正、反向电阻即可。

红外发光二极管的发光效率要用专门的仪器才能精确测定,而业余条件下只能用拉距法来粗略判定。接收部分的红外接收管是一种光敏二极管。

在实际应用中要给红外接收二极管加反向偏压,它才能正常工作,亦即红外接收二极管在电路中应用时是反向运用,这样才能获得较高的灵敏度。

红外接收二极管一般有圆形和方形两种。

由于红外发光二极管的发射功率一般都较小(100mW左右),所以红外接收二极管接收到的信号比较微弱,因此就要增加高增益放大电路。

前些年常用μPC1373H、CX20106A等红外接收专用放大电路。最近几年不论是业余制作还是正式产品,大多都采用成品红外接收头。

成品红外接收头的封装大致有两种:一种采用铁皮屏蔽;一种是塑料封装。均有三只引脚,即电源正(VDD)、电源负(GND)和数据输出(VO或OUT)。

红外接收头的引脚排列因型号不同而不尽相同,可参考厂家的使用说明。成品红外接收头的优点是不需要复杂的调试和外壳屏蔽,使用起来如同一只三极管,非常方

便。但在使用时注意成品红外接收头的载波频率。

红外遥控常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的。

在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。也有一些遥控系统采用36kHz、40kHz、56kHz等,一般由发射

端晶振的振荡频率来决定。

红外遥控的特点是不影响周边环境、不干扰其它电器设备。由于其无法穿透墙壁,故不同房间的家用电器可使用通用的遥控器而不会产生相互干扰;电路调试简

单,只要按给定电路连接无误,一般不需任何调试即可投入工作;编解码容易,可进行多路遥控。

由于各生产厂家生产了大量红外遥控专用集成电路,需要时按图索骥即可。因此,现在红外遥控在家用电器、室内近距离(小于10米)遥控中得到了广泛

的应用。

多路控制的红外遥控系统多路控制的红外发射部分一般有许多按键,代表不同的控制功能。当发射端按下某一按键时,相应地在接收端有不同的输出状态。

接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般

在100ms左右。“电平”输出是指发射端按下键时,接收端对应输出端输出“有效电平”,发射端松开键时,接收端“有效电平”消失。此处的“有效脉冲”和“有效电平”,

可能是高、也可能是低,取决于相应输出脚的静态状况,如静态时为低,则“高”为有效;如静态时为高,则“低”为有效。大多数情况下“高”为有效。“自锁”输出是

指发射端每按一次某一个键,接收端对应输出端改变一次状态,即原来为高电平变为低电平,原来为低电平变为高电平。此种输出适合用作电源开关、静音控制等。

有时亦称这种输出形式为“反相”。“互锁”输出是指多个输出互相清除,在同一时间内只有一个输出有效。电视机的选台就属此种情况,其它如调光、调速、音响的

输入选择等。

“数据”输出是指把一些发射键编上号码,利用接收端的几个输出形成一个二进制数,来代表不同的按键输入。

一般情况下,接收端除了几位数据输出外,还应有一位“数据有效”输出端,以便后级适时地来取数据。这种输出形式一般用于与单片机或微机接口。除以上输

出形式外,还有“锁存”和“暂存”两种形式。所谓“锁存”输出是指对发射端每次发的信号,接收端对应输出予以“储存”,直至收到新的信号为止;“暂存”输出与上述

介绍的“电平”输出类似。

红外发送一开始发送一段13。5ms的引导码,引导码由9ms的高电平和4。5ms的低电平组成,跟着引导码是系统码,系统反码,按键码,按键反码,如果按着键不放,则遥控器则发送一段重复码,重复码由9ms的高电平,2。25ms的低电平,跟着是一个短脉冲,本程序是免费给大家,版权所有,不得用于商业目的,如需用到本程序到商业上请与本人联系jiang_xi_sheng@163.com,经本人同意后方可用于商业目的,本程序经过试用,能解大部分遥控器的编码!

1. 2. 3. 4. 5. 6. 7. 8. 9. #include \ #define NULL 0x00//数据无效 #define RESET 0X01//程序复位 #define REQUEST 0X02//请求信号 #define ACK 0x03//应答信号,在接收数据后发送ACK信号表示数据接收正确,也位请求信号的应答信号 #define NACK 0x04//应答信号,表示接收数据错误 #define BUSY 0x05//忙信号,表示正在忙 #define FREE 0x06//空闲信号,表示处于空闲状态 #define READ_IR 0x0b//读取红外 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. #define STORE_IR 0x0c//保存数据 #define READ_KEY 0x0d//读取键值 #define RECEIVE 0Xf400//接收缓冲开始地址 #define SEND 0xfa00//发送缓冲开始地址 #define IR 0x50//红外接收缓冲开始地址 #define HEAD 0xaa//数据帧头 #define TAIL 0x55//数据帧尾 #define SDA P1_7 #define SCL P1_6 unsigned char xdata *buf1; //接受数据缓冲 unsigned int buf1_length; //接收到的数据实际长度 unsigned char xdata *buf2; //发送数据缓冲 unsigned int buf2_length; //要发送的数据实际长度 bit buf1_flag; //接收标志,1表示接受到一个数据帧,0表示没有接受到数据帧或数据帧为空 bit buf2_flag; //发送标志,1表示需要发送或没发送完毕,0表示没有要发送的数据或发送完毕 unsigned char state1,state2; //用来标志接收字符的状态,state1用来表示接收状态,state2用来表示发送状态 unsigned char data *ir; union{ unsigned char a[2]; unsigned int b; unsigned char data *p1[2]; unsigned int data *p2[2]; unsigned char xdata *p3; //红外缓冲的指针 unsigned int xdata *p4; }p; //union{ // // unsigned char a[2]; // // unsigned int b; // unsigned char data *p1[2]; // unsigned int data *p2[2]; // unsigned char xdata *p3; // unsigned int xdata *p4; //地址指针 //}q; // union{ unsigned char a[2]; unsigned int b; }count; union{ unsigned char a[2]; unsigned int b; }temp; union{


红外遥控器解码程序 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:初三政治 4.4-5.2周测

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: