返回主页 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 进入论坛

关于新版遥控器的使用说明:

新版遥控器和原说明上的遥控器相比,所采用芯片均为ht6221芯片,一共32个有效键,增加了4个按键位,键位值于原遥控器有所改动,并且已经丝印在遥控器的面板上,方便用户使用。如下表所示:

00010000

10H

00000011

03H

00000001

01H

00000110

06H

00001001

09H

00011101

1DH

00011111

1FH

00001101

0DH

00011001

19H

00011011

1BH

00010001

11H

00010101

15H

00010111

17H

00010010

12H

00010110

16H

01001100

4CH

01000000

40H

01001000

48H

00000100

04H

00000000

00H

00000010

02H

00000101

05H

01010100

54H

01001101

4DH

00001010

0AH

00011110

1EH

00001110

0EH

00011010

1AH

00011100

1CH

00010100

14H

00001111

0FH

00001100

0CH

以下为新版遥控程序的例子程序

;倚天版遥控器控制显示0123456789
;********************************************************************************
;* (程序转载请著明出处 ,未声明可适应本站腾龙/isp开发套件/倚天版开发套件        *
;*  E-mail:sxj1974@163.com (51c51 test web)  51单片机学习网,自学单片机的网站         *
;* tel:13714407535 石学军 www.51c51.com www.8951.com 51单片机学习网系列自学单片机例程
*   
;********************************************************************************

org 00h
ORG 30H
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
START:


JB P3.7,$ ;等待遥控信号出现
SB:
MOV R4,#8 ;8毫秒为高电平错误
SBA:
MOV R5,#250
SBB:
JB P3.7,SXB1
DJNZ R5,SBB
DJNZ R4,SBA
MOV R4,#2
JMP SBC
SXB1:
MOV R5,#5
SXB2: ;去掉20US的尖峰干扰信号
JNB P3.7,SBB
DJNZ R5,SXB2
JMP START
SBC:
MOV R5,#250
SB1:
JB P3.7,SB2 ;2MS内不为高电平错误(监测9MS的低电平引导码)
DJNZ R5,SB1
DJNZ R4,SBC
JMP START
SB2: ;去掉20US的尖峰干扰信号
MOV R5,#5
SB2_A:
JNB P3.7,SB1
DJNZ R5,SB2_A
MOV R4,#3
SB2_1:
MOV R5,#250
SB3: ;监测4.5MS高电平,如3MS内出现低电平错误
JNB P3.7,SXC
DJNZ R5,SB3
DJNZ R4,SB2_1
MOV R4,#2
JMP SB3_1
SXC: ;去掉20US的尖峰干扰信号
MOV R5,#5
SXC1:
JB P3.7,SB3
DJNZ R5,SXC1
JMP START
SB3_1: ;监测4.5MS高电平,如5MS内不为低电平错误
MOV R5,#250
SB3_2:
JNB P3.7,SB4
DJNZ R5,SB3_2
DJNZ R4,SB3_1
JMP START
SB4: ;去掉20US的尖峰干扰信号
MOV R5,#5
SB4_1:
JB P3.7,SB3_2
DJNZ R5,SB4_1
MOV R1,#1AH ;设定1AH为起始RAM区
MOV R2,#4
PP: MOV R3,#8
JJJJ:
MOV R5,#250
JJJJ2: ;1MS内不为低电平错误
JB P3.7,JJJJ3
DJNZ R5,JJJJ2
JMP START
JJJJ3:
LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,P3.7 ;将P3.7引脚此时的电平状态0或1存入C中
JNC UUU ;如果为0就跳转到UUU
MOV R5,#250
JJJJ4:
JNB P3.7,UUU
NOP
DJNZ R5,JJJJ4
JMP START
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,换成下一个RAM
DJNZ R2,PP ;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中
;以下对代码是否正确和定义进行识别
MOV A,1AH ;比较高8位地址码
XRL A,#00000000B ;判断1AH的值是否等于00000000,相等的话A为0
JNZ EXIT ;如果不相等说明解码失败退出解码程序
MOV A,1BH ;比较低8位地址
XRL A,#11111111B ;再判断高8位地址是否正确
JNZ EXIT ;如果不相等说明解码失败退出解码程序
LCALL YS3
MOV A,1CH ;比较数据码和数据反码是否正确?
CPL A
XRL A,1DH ;将1CH的值取反后和1DH比较 不同则无效丢弃,核对数据是否准确
JNZ EXIT ;如果不相等说明解码失败退出解码程序
LCALL YS3
CLR P2.6 ;选中数码管
CLR P3.3 ;解码成功喇叭响?
AJMP BIJIAO
;判断在118毫秒内是否有连发码
AA: MOV R1,#25
XX: ACALL YS2
JNB P3.7,HH ;跳转到判断连发代码是否正确的程序段
DJNZ R1,XX
EXIT: ;对所有端口清零

AJMP START
;连发码判断程序段-----------
HH: MOV R6,#4
S: ACALL YS1 ;调用882微秒延时子程序
JB P3.7,EXIT ;延时882微秒后判断P3.7脚是否出现高电平如果有就退出解码程序
DJNZ R6, S ;重复4次,目的是确认连发码的低电平信号波形
JNB P3.7, $ ;等待高电?
LCALL YS3
AJMP AA

BIJIAO: MOV A,1CH ;按键数值判断执
mov p1,a
CJNE A,#10h,TT1
MOV P0,#7EH ;数码管显示1
TT1: CJNE A,#03h,T2
MOV P0,#0A2H ;数码管显示2
T2: CJNE A,#01h,T3
MOV P0,#62H ;数码管显示3
T3: CJNE A,#06h,T4
MOV P0,#74H ;数码管显示4
T4: CJNE A,#09h,T5
MOV P0,#61H ;数码管显示5
T5: CJNE A,#1dh,T6
MOV P0,#21H ;数码管显示6
T6: CJNE A,#1fh,T7
MOV P0,#7AH ;数码管显示7
T7: CJNE A,#0dh,T8
MOV P0,#20H ;数码管显示8
T8: CJNE A,#19h,t9
MOV P0,#60H ;数码管显示9
T9: CJNE A,#1bh,t10
MOV P0,#28H ;数码管显示0
T10: CJNE A,#11h,t11
MOV P0,#30H ;数码管显示A
T11: CJNE A,#15h,t12
MOV P0,#25H ;数码管显示b
T12: CJNE A,#17h,t13
MOV P0,#0a9H ;数码管显示C
T13: CJNE A,#12h,t14
MOV P0,#26H ;数码管显示d
T14: CJNE A,#16h,t15
MOV P0,#0a1H ;数码管显示E
T15: CJNE A,#4ch,t16
MOV P0,#0b1H ;数码管显示f

t16: AJMP AA
YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 ;延时子程序2,精确延时4740微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3: MOV R4,#2 ;延时程序3,精确延时1000微秒
D3:MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
END

读者如有更好的应用程序请到本站论坛讨论.