基于51单片机的pwm波产生
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机的pwm波产生
利用定时器的中断来实现PWM 调制。如果我们设定脉冲的周期为1000 毫
秒;每20 毫秒产生一次中断,则知道要中断50 次。那么我们可以这样编写程
序TH0=0XFF; TL0=0XEC;这是定时器0 产生一次中断的时间,即20 毫秒产生
一次中断。我们再定义一个计数的变量NUM,让NUM 从0 开始加到50,程
序如下void Timer0Interrupt(void) interrupt 1{ TH0 = 0x0FE; TL0 = 0x0C;NUM++;
if(NUM==33) { NUM=0; } if(NUMPWM)P1=0xff;} 其中的PWM 为0 到50 的数
值,这样通过控制PWM 的值让小于PWM 的NUM 值里所产生的中断全为低
电平,大于PWM 的为高电平,这样通过控制计数就实现了PWM。所有程序
如下#include #define uint unsigned int #define uchar unsigned char sbit k1=P3 ; sbit k2=P3;sbit beep=P2;uchar PWM=10; //用来控制脉宽uchar NUM;//中断
次数变量void delay(uint t) { uchar j; while(t--)for(j=0;jPWM)P1=0xff;}tips:感谢大
家的阅读,本文由我司收集整编。仅供参阅!