📄 pwm.txt
字号:
11.2 PWM码简介及解码原理
PWM 码是一种脉宽调制码,它的组成为9MS 高电
平和4MS 低电平引导脉冲,16 位系统识别码,8 位数据
正码和8 位数据反码。我们要解的就数据码。一个PWM
码的0是由一个0.58ms的低电平和一个0.58ms的高电平
87
组成,1 是由一个0.58ms 的低电平地和一个1.58ms 的高
电平组成。解码原理是这样的。首先通过延时来丢开引导
码,然后通过解码丢掉16 位系统识别码,最后解系统正
码和反码。解开后将正码取反看是否与反码相同,如果相
同,即解开保存其值。解码0 或1是这样的。在低电平的
时候等待,直到为高了后,用一个0.882ms 的延时去量,
量完后,如果为低了,证明前面是一个0.58ms 低电平和一
个0.58ms 高电平地组成,即保存一个0.如果为高,则证
明是由一个0.58ms 低电平地和一个1.58ms 高电平组成,
即保存一个1 .为1则再调一个延时,让它延到低电平。
等待到高电平后重复上述过程解码。
11.3 遥控器解码
程序介绍:通过上述的解码原理,利用单片机的中断
口来测PWM码的宽度,通过本实验仪配备的遥控,单片
机解码在数码管上显示(图20)。实际应用例如:红外遥
控。
图20
程序实例(disvcd.asm):
ORG 0000H
AJMP MAIN
ORG 0013H
AJMP INT
ORG 0030H
MAIN:
88
SETB EA ;开所有中断
SETB IT1
SETB EX1;
MOV 33H,#00H
TIN:
;显示/////////////////////////////////////////
MOV A,33H
ANL A,#0FH
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D4: JNB TI,D4
CLR TI
MOV A,33H
ANL A,#0F0H
SWAP A
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D5: JNB TI,D5
CLR TI
ACALL YS1
AJMP TIN
;/////////////////////////////////////////////
INT: ;中断解码
CLR EA ;关所有中断
MOV R6,#10
SB: ACALL YS1 ;延时882m
89
JB P3.3,EXIT ;为高退出
DJNZ R6,SB ;延时9ms
JNB P3.3,$ ;避开9ms高电平引导
脉冲
ACALL YS2 ;避开4ms低电平引导脉冲
MOV R7,#16 ;忽略16位系统码
JJJJA: JNB P3.3,$
LCALL YS1
MOV C,P3.3
JNC UUUA
LCALL YS3 ;延时1ms
UUUA: DJNZ R7,JJJJA
;解系统正码和反码,取反后比较相等保存//////////
MOV R1,#1AH
MOV R2,#2
PP: MOV R3,#8
JJJJ: JNB P3.3,$
LCALL YS1
MOV C,P3.3
JNC UUU
LCALL YS3
UUU: MOV A,@R1
RRC A
MOV @R1,A
DJNZ R3,JJJJ
INC R1
DJNZ R2,PP
MOV A,1AH
90
CPL A
CJNE A,1BH,EXIT
;/////////////////////////////////////////////
MOV 33H,1AH
EXIT: SETB EA
RETI
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
SETTAB:
DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,
0FEH,0F6H
DB 0EEH,3EH,9CH,7AH,9EH,8EH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -