医疗电子技术网|技术阅读
登录|注册

您现在的位置是:医疗电子技术网 > 技术阅读 > 利用51单片机输出pwm

利用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:



  • #include<reg51.h>  

  • #define uint unsigned int  

  • #define uchar unsigned char  

  •   

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

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

  •   

  • void main()  

  • {  

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

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

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

  •     EA=1;//开总中断  

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

  •     TR0=1;//启动定时器0   

  •     while(1)  

  •     {             

  •     }             

  • }  

  •   

  • void tim0() interrupt 1  

  • {  

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

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

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

  •     TR0=1;//打开定时器  

  •   

  •     time++;  

  •     if(time>=100)  <span style="font-family:'KaiTi_GB2312';">//1khz</span>  

  •       time=0;     

  •     if(time<=30)   <span style="font-family:'KaiTi_GB2312';">//占空比%30,可改</span>  

  •       PWM=1;    

  •     else PWM=0;  

  • }  


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

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

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

    请注明出处: https://blog.csdn.net/dmfylb/article/details/72465762

    本文转自网络,版权归原作者,如果您觉得不好,请联系我们删除!

    广告

    关于立创商城

    立创商城(WWW.SZLCSC.COM)成立于2011年,致力于为客户提供一站式电子元器件线上采购服务,成交量全国领先。拥有10000多平方米现代化元器件仓库,现货库存超100000种,集团电子全产业链自营服务涵盖:在线EDA(LCEDA)+行业领先的PCB打样/中小批量+元器件商城+钢网制造+SMT贴片+电子设计教育及方案。作为一家品种齐全、自营库存、质量有保障的电子元器件垂直商城,立创商城所有元器件均从原厂或代理商正规渠道采购,保证原装正品,为您提供专业的一站式元器件采购服务。