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提供下載:
|