51单片机红外遥控解码程序 .docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《51单片机红外遥控解码程序 .docx》由会员分享,可在线阅读,更多相关《51单片机红外遥控解码程序 .docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结51 单片机红外遥控解码程序类别:单片机 /DSP阅读: 1182编者按:以下是网友编写的遥控解码程序!一种用延时等待的解码方法,比较简单懂得,但缺 点是占用 CPU 运行时间,其次种方法用定时器和外中断的解码方法,初学不易懂得,但优点也很明显,其次种方法假如能解决连发解码就比较完善,更完善的红外遥控解码程序,请参考本站TOPAV-2021 ,TOP51-2005 所配程序。解码方法一。/单片机接收红外解读程序 。硬件结构: 8951, P0 口数码管段码, P2.0-P2.3 为位, P1 为 8 个 LED。P3.2 为红外接收头, P2.7 蜂鸣器,晶振 12M。适用 U
2、PD6121 6122 芯片接收。ORG 0000HAJMP MAIN。转入主程序ORG 0003H 。外部中断 P3.2 脚 INT0 入口的址AJMP INT 。转入外部中断服务子程序解码程序)。以下为主程序进行CPU 中断方式设置MAIN: SETB EA。打开 CPU 总中断恳求SETB IT0 。设定 INT0 的触发方式为脉冲下降沿触发SETB EX0 。打开 INT0 中断恳求AJMP $。以下为进入P3.2 脚外部中断子程序,也就是解码程序INT: CLR EA。临时关闭 CPU 的全部中断恳求MOV R6,#10SB: ACALL YS1。调用 882 微秒延时子程序JB P
3、3.2,EXIT 。延时 882 微秒后判定 P3.2 脚是否显现高。 电平假如有就退出解码程序DJNZ R6, SB 。重复 10 次,目的是检测在 8820 微秒内可编辑资料 - - - 欢迎下载精品名师归纳总结。假如显现高电平就退出解码程序。以上完成对遥控信号的9000 微秒的初始低电平信号的识别。JNB P3.2, $ 。等待高电平躲开 9 毫秒低电平引导脉冲ACALL YS2。延时 4.74 毫秒躲开 4.5 毫秒的结果码MOV R1,#1AH。设定 1AH 为起始 RAM 区MOV R2,#4。PP: MOV R3,#8JJJJ: JNB P3.2,$ 。等待的址码第一位的高电平信
4、号LCALL YS1。高电平开头后用 882 微秒的时间尺去判定信。号此时的高低电平状态MOV C,P3.2 。将 P3.2 引脚此时的电平状态0 或 1 存入 C 中JNC UUU 。假如为 0 就跳转到 UUU LCALL YS3。UUU: MOV A,R1。将 R1 中的址的给 A RRC A 。将 C 中的值 0 或 1 移入 A 中的最低位MOV R1,A。将 A 中的数临时存放在 R1 中DJNZ R3,JJJJ 。接收的址码的高 8 位INC R1 。对 R1 中的值加 1,换下一个 RAMDJNZ R2,PP 。接收完 16 位的址码和 8 位数据码和 8 位数据反。 码,存放
5、在 1AH/1BH/1CH/1DH的 RAM 中MOV A,1CH。比较数据码和数据反码是否正确. CPL AXRL A,1DH。将 1CH 的值取反后和 1DH 比较 不同就无效丢弃,核对数据是否精确JNZ EXITMOV DPTR,#TAB。表头的址送指针可编辑资料 - - - 欢迎下载精品名师归纳总结MOV A,1DHANL A,#0FH。相与,得到低四位码MOVC A,A+DPTRMOV 1EH,A。查表得表码存入 1EH MOV A,1DHSWAP A ANL A,#0FHMOVC A,A+DPTRMOV 1FH,A。查表得高四位码存入1F MOV R7,#20HDISP:MOV P
6、0,1FH 。送数码管显示CLR P2.1 ACALL YS2 SETB P2.1 MOV P0,1EHCLR P2.2 ACALL YS2 SETB P2.2MOV P1,1DH 。将按键的键值通过P1 口的 8 个 LED 显示出来 . CLR P2.7 。蜂鸣器鸣响嘀嘀嘀的声音,表示解码胜利LCALL YS2SETB P2.7 。蜂鸣器停止DJNZ R7,DISPEXIT: SETB EA。答应中断RETI 。退出解码子程序YS1: MOV R4,#20。延时子程序 1,精确延时 882 微秒D1: MOV R5,#20可编辑资料 - - - 欢迎下载精品名师归纳总结DJNZ R5,$
7、DJNZ R4,D1 RETYS2: MOV R4,#10。延时子程序 2,精确延时 4740 微秒D2: MOV R5,#235DJNZ R5,$ DJNZ R4,D2 RETYS3: MOV R4,#2 。延时程序 3,精确延时 1000 微秒D3:MOV R5,#248DJNZ R5,$ DJNZ R4,D3 RETTAB: DB 0C0H,0DEH,0A2H,8AH,9CH,89H,81H,0DAH,80H,88H,90H,85H,0E1H,86H,0A1H,0B1H。数据表, 0-9-A-FEND解码方法二你的解码程序和我现在用的解码程序大体是一样的,我自己实际做了一下,发觉按下遥控
8、 器,接收到红外信号后,数码管闪的厉害。我用的是6 位动态数码管。不知道你有没有遇到这样的情形?分析解码程序,感觉是中断的时间太长了,数码管当然会闪了。假如把数码管用定时器刷新的话,又存在定时中断和外中断的优先级问题,好难解决啊。我初步有个想法。就是用定时器运算两次外中断间隔的时间。以此来确定是连发码,数据“ 0,”数据 “ 1。”不知道这个想法可否行的通。这几天没有时间试,由于广州有个电子产品交易会,我要赶着做样机。过了几天我有空了在认真的做一遍。把结果告知大家。不用连续解码,只需在中断时读取定时器的时间,然后判定是0 或者 1 就可以了,实际测试已经 OK 了,感谢两位的热心帮忙。为了这个
9、程序,弄了两天的时间,饭都吃不好,现在弄通了,感觉真的很好。我现在用 6 个数码管显示遥控器的用户码,用户反码,按键码,无论怎么按遥控器,数码管都不会闪的。楼上的,我是这样解决闪耀问题的,用显示子程序运算出适当次数代替延时YS1 YS2 YS3子程序。=可编辑资料 - - - 欢迎下载精品名师归纳总结=。红外解码程序。晶体 :11.0592M。日期 :2005-10-14。功能 :将 6122 发射 IC 发射的红外码解码,储存在CODE1-CODE4 中, 并用 6 个数码管显示用户码, 用户反码,按键码。=ORG 0000H AJMP MAIN ORG 0003H AJMP REMOT O
10、RG 000BH AJMP TIME0。IR BIT P3.2CODE1 EQU 30H 。遥控用户码CODE2 EQU 31H 。遥控用户反码CODE3 EQU 32H 。按键码CODE4 EQU 33H 。按键反码TIME1_REMOT EQU 34H。每次接收的码 BIT 数TIME2_REMOT EQU 35H。答应重码次数TIME3_REMOT EQU 36H。按键数目存放。DIG1 BIT P2.1 。第一位数码管选通DIG2 BIT P2.5 。其次位数码管选通DIG3 BIT P2.0 。第三位数码管选通DIG4 BIT P2.4 。第四位数码管选通可编辑资料 - - - 欢迎
11、下载精品名师归纳总结DIG5 BIT P2.6 。第五位数码管选通DIG6 BIT P2.3 。第六位数码管选通。D1 EQU 40H D2 EQU 41H D3 EQU 42H D4 EQU 43H D5 EQU 44H D6 EQU 45H ORG 0030H。=初始化 =MAIN:SETB EA 。开总中断MOV TMOD,#1H。定时器 0 工作于方式 1 SETB ET0 。启动定时器0SETB TR0MOV TH0,#0。预置数 0 MOV TL0,#0SETB EX0 。开外中断 0 SETB IT0MOV TIME1_REMOT,#32。接收的码一共32BIT:4*8 CLR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51单片机红外遥控解码程序 51 单片机 红外 遥控 解码 程序
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内