51单片机输出PWM波形怎么改?一条代码帮你解决

51单片机是可以输出PWM的,比较的麻烦。此时需要用到内部定时器来实现,可用两个定时器实现,也可以用一个定时器实现。


用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比


下面重点介绍用一个定时器的实现PWM的方法。以周期为1ms(1kHZ)为例,要产生其它频率的PWM波,程序中只需作简单修改即可。用一个定时器时(如定时器T0),首先要确定PWM的周期T和占空比D,确定了这些以后,就可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n。


因为这里我们是产生周期为1ms(1kHZ)的PWM,所以可设置中断的时间基准为0.01ms,,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:


1、当time>=100时,time清零(此语句保证频率为1kHZ);

2、当time>n时(n应该在0-100之间变化开),让单片相应的I/O口输出低电平;

3、当time<=n时,让单片相应的I/O口输出高电平,此时占空比就为%n。


下面程序产生30%占空比的pwm:

代码示例

  1. #include<reg51.h>

  2. #define uint unsigned int

  3. #define uchar unsigned char


  4. sbit PWM=P2^0;//  P2.0输出pwm

  5. uchar time;  // 定义占空比的变量


  6. void main()

  7. {

  8.    TMOD=0x01;//定时器0工作方式1

  9.    TH0=0xff;//(65536-10)/256;//赋初值定时

  10.    TL0=0xf7;//(65536-10)%256;//0.01ms

  11.    EA=1;//开总中断

  12.    ET0=1;//开定时器0中断

  13.    TR0=1;//启动定时器0

  14.    while(1)

  15.    {          

  16.    }          

  17. }


  18. void tim0() interrupt 1

  19. {

  20.    TR0=0;//赋初值时,关闭定时器

  21.    TH0=0xff;//(65536-10)/256;//赋初值定时

  22.    TL0=0xf7;//(65536-10)%256;//0.01ms

  23.    TR0=1;//打开定时器


  24.    time++;

  25.    if(time>=100)  //1khz

  26.      time=0;  

  27.    if(time<=30)   //占空比%30,可改

  28.      PWM=1;  

  29.    else PWM=0;

  30. }


最后的到波形,在示波器上显示如下图所示:



如果想修改占空比,直接在程序里面修改下面这句即可。


if(time<=30)//占空比%30,可改占空比


当然我们可以加入其它的手段来动态改变占空比,比如按键,上位机等。



END


热门下载:


经典教材!看哈佛学子如何学好电子?

芯片半导体资料网上最全资料库!资料总数500+

51单片机全套学习资料

千呼万唤!十天学会单片机(100个实例+完整版PPT),速来下载!

238G编程资料:Android、C+、java、python、PLCC语言… 从入门初阶到高阶汇总!

资料集:信号系统压箱底的都搬来了!

华为学电子!红宝书合集打包下载

资料下载:工程师升职加薪必看的宝典

Python从小白到大牛!必读13本优秀的电子书

电子工程师攻破模电 免费送你“看得懂用得上”的武功秘籍

100本嵌入式经典书籍+10套linux视频教程 ,价值1万元!

电子工程师闯荡江湖必读的九本书,让你学得透!干得好!

5GB,225页半导体演讲报告+228份半导体行业资料(精华版)

80集STM32视频教程,让你彻底学懂!

FPGA全套学习资料汇总:进阶资料、100多个案例分析、开发板、视频讲解….

10GBPCB经典技术资料大汇总

下载:电子维修妙招660例,维修工程师宝典!

980元的书籍免费送:《新型开关电源优化设计与实例详解全书》

    已同步到看一看