苹果遥控器+51系列单片机=红外控制STUDER录音机
本帖最后由 zzrs 于 2012-2-18 12:40 编辑本人曾在论坛发文详解用计算机实现控制STUDER录音机与大家共享使用心得,下面我再与大家分享红外遥控STUDER录音机的方法。
说明:
1、STUDER录音机控制代码在《用计算机控制开盘机》一文中已有描述,在此不在赘述;
2、阅读此文需要了解8051系列或兼容单片机电路原理和指令系统和汇编语言程序设计,在此不作更多解释;
一、基本思路
使用现有的红外遥控器发送指令-->单片机系统通过红外接收并分析遥控指令-->单片机将遥控指令转换成STUDER录音机控制指令并通过串行口发送给STUDER录音机-->STUDER录音机执行相应动作。
二、红外遥控器
我找了几款红外遥控器,但大多不好看,感觉无论如何都配不上我们心仪的STUDER录音机,后来发现苹果的遥控器小巧、精致、时尚,虽然与STUDER伟岸的身驱对比强烈,但它们骨子里都有高贵的气质,还真是门当户对,因此决定就先用“她”与STUDER配对了(虽有乔太守乱点鸳鸯谱之嫌,但本人还是乐此不彼)。
好了,为了使用这个娇小的美女,我们首先要知道苹果的遥控器各键发出的指令代码。如何得到这些指令代码确实不容易,因为APPLE公司不公布,不要紧,我已经用电路分析得到这此东西,下面送给你。
在我的示例中将这些键定义为STUDER相应的控制功能,对应关系如下:
三、红外编码
红外遥控编码国际上有一套通用的方案,即一个指令由32位组成,即一次按键,红外发射管向外串行送出32位指令。
前16位为设备码,主要用于设备选择,不同设备先此码应不同,以防止误控。
后16位为控制码,主要用于实施具体的控制。
这16位中高8位和低8位互为反码,以提高可靠度。
以播放为例,其编码如下:
00000000 00000000 01011100 00000000
你会说:这串编码不符合规定。没错,它的确不符合通用规定,这恰恰是使用苹果遥控特殊的地方,请你记住了:设备码为全零,且低8位与高8位不是互为反码。
四、单片机系统
这里采用了应用广泛、价格低廉的51系列单片机,原型机为INTEL8051,但有大量的其他厂家兼容机,全部通用。在此我用了AT89S52,这是一个8位微处理器,主频可达33M,片内4K程序存储器、125B随机存储器,四组8位接口,内置串行信功能。先上图给大家。
电路很简单,功能如下:
1、一个AT89S52单片机作为核心;
2、一个TL1838为红外接收头直接串行输出数据信号;
3、单片机的P3.1(TXD)串行输出控制信号到MAX232转换电路,将TTL电平(5V)转换成RS232电平(12V),以适应外部RS232串口设备的要求;
4、一个9针D型插座用于连接STUDER录音机,连接对应关系请参阅《用计算机控制开盘机》一文。
关于供电,你可从STUDER录音机的RS232串口取出一个25V电压,用7805之类的稳压模块给此电路供电。
五、控制软件
控制软件用汇编语言写,源程序如下:
ORG 00H
LJMP MAIN
ORG 30H
MAIN:
MOV 20H,#00H;设置串口工作方式,速率9600,(11.0592M晶体)
MOV TMOD,#22H;22H
MOV SCON,#40H;40H
MOV TH1,#0FAH;F3H
MOV PCON,#80H
SETB TR1
START:
JB P3.7,$ ;遥控信号处理
SB:
MOV R4,#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:
JNB P3.7,SBB
DJNZ R5,SXB2
JMP START
SBC:
MOV R5,#250
SB1:
JB P3.7,SB2
DJNZ R5,SB1
DJNZ R4,SBC
JMP START
SB2:
MOV R5,#5
SB2_A:
JNB P3.7,SB1
DJNZ R5,SB2_A
MOV R4,#3
SB2_1:
MOV R5,#250
SB3:
JNB P3.7,SXC
DJNZ R5,SB3
DJNZ R4,SB2_1
MOV R4,#2
JMP SB3_1
SXC:
MOV R5,#5
SXC1:
JB P3.7,SB3
DJNZ R5,SXC1
JMP START
SB3_1:
MOV R5,#250
SB3_2:
JNB P3.7,SB4
DJNZ R5,SB3_2
DJNZ R4,SB3_1
JMP START
SB4:
MOV R5,#5
SB4_1:
JB P3.7,SB3_2
DJNZ R5,SB4_1
MOV R1,#1AH
MOV R2,#4
PP:MOV R3,#8
JJJJ:
MOV R5,#250
JJJJ2:
JB P3.7,JJJJ3
DJNZ R5,JJJJ2
JMP START
JJJJ3:
LCALL YS1
MOV C,P3.7
JNC UUU
MOV R5,#250
JJJJ4:
JNB P3.7,UUU
NOP
DJNZ R5,JJJJ4
JMP START
UUU: MOV A,@R1
RRC A
MOV @R1,A
DJNZ R3,JJJJ
INC R1
DJNZ R2,PP
MOV A,1AH
XRL A,#11101110B
JNZ EXIT
MOV A,1BH
XRL A,#10000111B
JNZ EXIT
LCALL YS3
MOV A,1DH
CJNE A,#10111100B,EXIT
LCALL YS3
CLR P2.6
AJMP BIJIAO
AA:
MOV R1,#25
XX:
ACALL YS2
JNB P3.7,HH
DJNZ R1,XX
EXIT:
AJMP START
HH:
MOV R6,#4
S:
ACALL YS1
JB P3.7,EXIT
DJNZ R6, S
JNB P3.7, $
LCALL YS3
AJMP AA
BIJIAO:
MOV A,1CH
CJNE A,#03H,N1
MOV P0,#7EH
;处理STUDERV录音机控制码
N1:
CJNE A,#5FH,N2 ;播放键
MOV DPTR,#REP
ACALL SENDA
ACALL YS4
MOV DPTR,#PLY
ACALL SENDA
N2:
CJNE A,#5CH,N3;停止键
MOV DPTR,#STP
ACALL SENDA
N3:
CJNE A,#06H,N4 ;快进键
MOV DPTR,#FWD
ACALL SENDA
N4:
CJNE A,#09H,N5;快倒键
MOV DPTR,#RWD
ACALL SENDA
N5:
CJNE A,#0AH,N6;置零键
MOV DPTR,#RTM
ACALL SENDA
N6:
CJNE A,#0CH,N7;定位到零键
MOV DPTR,#LZA
ACALL SENDA
N7:
AJMP AA
SENDA:
CLR A
MOVC A,@A+DPTR
CJNE A,#'$',SENDB
AJMP SENDC
SENDB:
MOV SBUF,A
JNB TI,$
CLR TI
INC DPTR
AJMP SENDA
SENDC:
RET
PLY:db "PLY ",0dh,0ah,'$'
STP:db "STP ",0dh,0ah,'$'
FWD:db "FWD ",0dh,0ah,'$'
RWD:db "RWD ",0dh,0ah,'$'
RTM:db "RTM ",0dh,0ah,'$'
LZA:db "LZA ",0dh,0ah,'$'
REP:db "REP F ",0dh,0ah,'$'
YS1:
MOV R4,#20
D1:
MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2:
MOV R4,#10
D2:
MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3:
MOV R4,#2
D3:
MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
YS4:
MOV R4,#200
D4:
MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
END
有了上面的软硬件,你可以舒服地控制你心爱的STUDER录音机了。
是不是很惬意,嗯!
我准备试试{:4_214:} 红灯记肯定没问题。 最终的样子,有点简陋哈!
这个很厉害,楼主令人佩服{:4_219:} zzrs 发表于 2012-2-18 16:54 static/image/common/back.gif
最终的样子,有点简陋哈!
做个外壳,标上“STUDER”{:4_213:} 怎能長他人志氣?自己設計的就要站出來標示自己的創作,讓別人引頸為盼!!!{:4_213:}{:4_213:}{:4_213:}{:4_247:} 洋为中用,真棒!我得试验下
厉害.......{:4_219:} 其实也是不想破坏原机器的整体性,要不然就直接装录音机里面了,电源也好取。 {:4_213:}{:4_213:}{:4_219:} 有创新,值得学习{:4_219:} 還有這一篇,找時間深入瞭解。 楼主计算机功底扎实啊,学习了。楼主是否熟悉过去计算机用的1/4吋525M的磁带机,是SCSI接口的的。 zzrs 发表于 2012-2-18 16:54
最终的样子,有点简陋哈!
这进度怎样?
页:
[1]