51单片机定时器产生PWM,控制三极管驱动电路进而控制mosfet的开通,进行buck电路的仿真,软件proteus8.6
附件有proteus工程和51单片机程序。
原理图: 以下两张图原理一样,只是位置不一样,方便你排版
单片机脉冲控制buck电路仿真.pdsprj
仿真结果: 示波器显示脉冲
电压表显示输入输出电压
单片机源程序如下:
- #include<reg51.h>
-
- sbit PWM=P2^0; // 定义P2.0输出pwm脉冲
- unsigned char DutyCount = 0; // 定义占空比的计数变量
- unsigned char Duty = 50; // 定义占空比,初始值为50%,可调
- void main()
- {
- // 初始化定时器0 , 0.001ms 1Mhz
- TMOD=0x01; //定时器0工作方式1
- TH0=0xff; //定时器高八位赋初值 :(65536-12)/256;
- TL0=0xf4; //定时器低八位赋初值 :(65536-12)%256
- EA=1; //开总中断
- ET0=1; //开定时器0中断
- TR0=1; //启动定时器0
- while(1)
- {
- ;//nothing to do!!!
- }
- }
-
- void tim0() interrupt 1 //定时器0中断服务函数
- {
-
- TR0=0; //赋初值时,暂时关闭定时器
- TH0=0xff; //定时器高八位赋初值 :(65536-12)/256;
- TL0=0xf4; //定时器低八位赋初值 :(65536-12)%256
- TR0=1; //打开定时器
-
- DutyCount++; //计数器自加
-
- if(DutyCount>=100) //10khz
- {
- DutyCount=0;
- }
- if(DutyCount<=Duty) //占空比%50,可改
- {
- PWM=1;
- }else
- {
- PWM=0;
- }
-
- }
-
复制代码
所有资料51hei提供下载:
|