标题: 51单片机脉冲控制buck电路Proteus仿真图与源程序 [打印本页]

作者: 会飞的鱼cc    时间: 2022-4-22 17:36
标题: 51单片机脉冲控制buck电路Proteus仿真图与源程序
原理图:
以下两张图原理一样,只是位置不一样,方便你排版

仿真结果:
示波器显示脉冲



仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
电压表显示输入输出电压:



单片机源程序如下:
  1. #include<reg51.h>

  2. sbit PWM=P2^0;                                               // 定义P2.0输出pwm脉冲
  3. unsigned char DutyCount = 0;  // 定义占空比的计数变量
  4. unsigned char Duty = 50;                        // 定义占空比,初始值为50%,可调
  5. void main()
  6. {
  7.         // 初始化定时器0 , 0.001ms  1Mhz
  8.         TMOD=0x01;        //定时器0工作方式1
  9.         TH0=0xff;         //定时器高八位赋初值 :(65536-12)/256;
  10.         TL0=0xf4;         //定时器低八位赋初值 :(65536-12)%256
  11.         EA=1;                                //开总中断
  12.         ET0=1;                        //开定时器0中断
  13.         TR0=1;                        //启动定时器0
  14.         while(1)
  15.         {                        
  16.                 ;//nothing to do!!!
  17.         }                        
  18. }

  19. void tim0() interrupt 1   //定时器0中断服务函数
  20. {
  21.         
  22.         TR0=0;                                                                        //赋初值时,暂时关闭定时器
  23.         TH0=0xff;                                                         //定时器高八位赋初值 :(65536-12)/256;
  24.         TL0=0xf4;                                                         //定时器低八位赋初值 :(65536-12)%256
  25.         TR0=1;                                                                        //打开定时器
  26.         
  27.         DutyCount++;                                                //计数器自加
  28.         
  29.         if(DutyCount>=100)                   //10khz
  30.         {
  31.                 DutyCount=0;   
  32.         }
  33.         if(DutyCount<=Duty)     //占空比%50,可改
  34.         {
  35.                 PWM=1;  
  36.         }else
  37.         {
  38.                 PWM=0;
  39.         }
  40.         
  41. }
复制代码

Keil5代码与Proteus8.8仿真下载: 仿真程序.7z (274.25 KB, 下载次数: 72)






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