标题: 单片机占空比可调模拟 proteus仿真及程序 [打印本页]

作者: 51黑ff    时间: 2016-10-10 15:09
标题: 单片机占空比可调模拟 proteus仿真及程序
51单片机占空比可调模拟的仿真原理图:

单片机源程序:
  1. /********************************************************************
  2.                             天马电子
  3. *********************************************************************/
  4. #include<reg52.h>  

  5. #define uchar unsigned char           //宏定义无符号字符型
  6. #define uint  unsigned  int           //宏定义无符号整型

  7. uchar b;                //中断值
  8. uchar N=0;                //占空比计数值
  9. uchar X=50;                //占空比初始值百分比

  10. uchar z=0;

  11. uchar key_up;
  12. uchar key_down;

  13. /************************************************************************
  14.                                                         按键初始化
  15. *************************************************************************/
  16. sbit P2_0=P2^0;//占空比加
  17. sbit P2_1=P2^1;//占空比减

  18. sbit PWM=P3^7;//控制PWM的占空比输出

  19. /************************************************************************
  20.                                                         调速按键扫描函数
  21. *************************************************************************/

  22. void get_key(void)//按键扫描函数

  23. {
  24. while(P2_0==0)//按键加计数标志
  25. {key_up=1;
  26. }
  27. while(P2_1==0)//按键减计数标志
  28. {key_down=1;
  29. }
  30. }

  31. /************************************************************************
  32.                                                         定时器中断执行函数
  33. *************************************************************************/
  34. void timer0( ) interrupt 1 //定时器0工作方式1
  35. {

  36. TH0=(65536-1)/256;          //重装计数初值
  37. TL0=(65536-1)%256;          //重装计数初值
  38. b++;
  39. get_key();
  40. if (key_up==1)
  41.        {
  42.            if(X!=100)//判断是否计数到100
  43.               {
  44.                X++;//加一
  45.                key_up=0;
  46.                            }
  47.         }
  48. if (key_down==1)
  49.        {
  50.             if(X!=0)//判断是否计数到0
  51.               {
  52.                    X--;//减一
  53.                key_down=0;
  54.                }
  55.         }
  56. }
  57. /************************************************************************
  58.                                                         程序主函数
  59. *************************************************************************/
  60. void main()
  61. {
  62. TMOD=0X01;                          //定时器中断0
  63. TH0=(65536-2)/256;          //定时时间高八位初值
  64. TL0=(65536-2)%256;          //定时时间低八位初值
  65. EA=1;                                  //开CPU中断
  66. ET0=1;                                  //开T/C0中断
  67. TR0=1;
  68. /****************************PWM处理部分*********************************************/
  69.    while(1)
  70.     {
  71.           PWM=1;
  72.       while(1)
  73.       {
  74.         b=0;
  75.         while(!b);
  76.            if (N==X)
  77.                PWM=0;
  78.             if(N==100)break;
  79.                N++;
  80. /*************************************************************************************/                       

  81.               }
  82.              N=0;
  83.      }

  84. }
  85. /******************************程序结束************************************************/
复制代码


占空比可调模拟仿真程序.rar (57.81 KB, 下载次数: 60)



作者: 161215    时间: 2016-12-28 21:23
学习中
作者: 友人帐    时间: 2017-6-26 10:48
不能下载 我和伤心
作者: 1002607130    时间: 2017-6-27 10:54
有用,然而我下载不了
作者: 电子发烧友    时间: 2017-11-27 14:41
谢谢分享            
作者: 懒惰的家伙    时间: 2019-7-5 23:04
感谢分享,学习中




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1