什么是pwm pwm的基本原理及其应用( 二 )


许多微控制器内部都包含有pwm 控制器 。例如,microchip 公司的pic16c67 内含两个pwm 控制器,每一个都可以选择接通时间和周期 。占空比是接通时间与周期之比;调制频率为周期的倒数 。执行pwm 操作之前,这种微处理器要求在软件中完成以下工作:

* 设置提供调制方波的片上定时器/计数器的周期

* 在pwm 控制寄存器中设置接通时间

* 设置pwm 输出的方向,这个输出是一个通用i/o 管脚

* 启动定时器

* 使能pwm 控制器

5软件编程产生pwm

51单片机内部没有pwm控制器,需要通过软件编程来实现,程序如下 。

k1 equ p1.0
k2 equ p1.1

org 0000h
ajmp main
org 0040h

main:
mov sp,#60h
mov r1,#3
mov r2,#4
mov r3,#0
mov th0,#0ffh
mov tl0,#9ch
mov th1,#3ch
mov tl1,#0b0h
mov tmod,#11h;16位定时器/计数器
mov ie,#8fh
setb it0
setb it1
setb tr0
setb tr1
loop:
mov a,r1
jb k2,s1
call delay
jb k2,s1
cjne a,#9,pwminc
call led
sjmp loop
pwminc:
inc r1
sjmp loop
s1:
jb k1,s2
call delay
jb k1,s2
cjne a,#1,pwmdec
call led
sjmp loop
pwmdec:
dec r1
s2: sjmp loop

org 000bh
ajmp time0
org 0100h
time0:
mov a,#9
subb a,r2
jnc done
inc r2
sjmp loop1
done: mov r2,#1
loop1: clr c
mov a,r2
subb a,r1
jnc loop2
setb p1.6
sjmp out1
loop2: clr p1.6
out1: reti

org 0003h
ljmp in0
org 1000h
in0:
inc r3
reti

led:
cpl p1.2
ret

delay:
mov r7,#100
de: mov r6,#100
djnz r6,$
djnz r7,de
ret

end

推荐阅读