51CTO提醒您,请勿滥发广告!


用电位器通过STC12C2052AD单片机片内AD和PWM控制电机无极变速

http://51CTO提醒您,请勿滥发广告!/bbs/forum.php?mod=viewthread&tid=40873&fromuid=59827

(出处: 单片机论坛)


  1. /********************************************************

  2.         功能  :用电位器通过STC12C2052AD片内AD和PWM控制电机转速

  3.         单片机;STC12C2052AD

  4.         晶振  :12M

  5.         作者  :苏义江

  6.         时间  :2015-12-4

  7. ********************************************************/

  8. #include<STC12C2052AD.H> //头文件

  9. #include <intrins.h>    //51基本运算(包括_nop_空函数) 

  10. #define uchar unsigned char

  11. #define uint unsigned int

  12. uint M;


  13. /****************************************************

  14. 函数名:PWM初始化函数

  15. 调  用:PWM_init();

  16. 参  数:无

  17. 返回值:无

  18. 结  果:将PCA初始化为PWM模式,初始占空比为0

  19. 备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可

  20. /********************************************************/

  21. void PWM_init (void)

  22. {

  23.         CMOD=0x02; //设置PCA定时器

  24.           CL=0x00; 

  25.           CH=0x00;

  26.         CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)

  27.         CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同

  28.           CCAP0H=0x00; // PWM0初始时为0

  29.         CCAPM1=0x42; //PWM1设置PCA工作方式为PWM方式(使用时删除//)

  30.         CCAP1L=0x00; //设置PWM1初始值与CCAP0H相同

  31.           CCAP1H=0x00; // PWM1初始时为0

  32.         //CCAPM2=0x42; //PWM2设置PCA工作方式为PWM方式

  33.         //CCAP2L=0x00; //设置PWM2初始值与CCAP0H相同

  34.           //CCAP2H=0x00; // PWM2初始时为0

  35.         //CCAPM3=0x42; //PWM3设置PCA工作方式为PWM方式

  36.         //CCAP3L=0x00; //设置PWM3初始值与CCAP0H相同

  37.           //CCAP3H=0x00; // PWM3初始时为0

  38.           CR=1; //启动PCA定时器

  39. }

  40. /**********************************************************/

  41. void delay(uint z)

  42. {

  43.         uint x,y;

  44.         for(x=z;x>0;x--)

  45.         for(y=420;y>0;y--);

  46. }

  47. /******************************************************

  48. 函数名:PWM0占空比设置函数

  49. 调  用:PWM0_set();

  50. 参  数:0x00~0xFF(亦可用0~255)

  51. 返回值:无

  52. 结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平