| 超级好的51单片机编程例程!工程师必看! | ||
| 单片机简介与单片机的发展历史 |
I/O
口功能实例 |
|
| 定时器实例
(1秒报警,200hz输出 200-250变化输出) |
||
| 软件滤波十六进制六位数加法(数码显示) |
求六位和中的最大值和最小值(数码显示) |
|
| 求减去最大和最小值后的值(数码显示) |
除4所得软件滤波值(数码显示) |
|
| 软件模拟一个振 |
在显示频率输出的同时显示AD值(数码显示) |
|
| 过程检定(数码显示) |
||
| 按键数显,数码管显示加一 | ||
| PWM码简介及解码原理 |
||
| 智能定时的4位电子钟(带定时控制) |
智能红外工业控制器 |
|
|
51单片机学习网热心版主单片东东,收集整理的单片机教学课程(例子程序, 特别推荐!)转载请保留连接! 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 |