基于51单片机的pwm波产生

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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:感谢大

家的阅读,本文由我司收集整编。仅供参阅!

相关文档
最新文档