51單片機(jī)定時(shí)器產(chǎn)生PWM,控制三極管驅(qū)動(dòng)電路進(jìn)而控制mosfet的開通,進(jìn)行buck電路的仿真,軟件proteus8.6
附件有proteus工程和51單片機(jī)程序。
原理圖: 以下兩張圖原理一樣,只是位置不一樣,方便你排版
單片機(jī)脈沖控制buck電路仿真.pdsprj
仿真結(jié)果: 示波器顯示脈沖
電壓表顯示輸入輸出電壓
單片機(jī)源程序如下:
- #include<reg51.h>
-
- sbit PWM=P2^0; // 定義P2.0輸出pwm脈沖
- unsigned char DutyCount = 0; // 定義占空比的計(jì)數(shù)變量
- unsigned char Duty = 50; // 定義占空比,初始值為50%,可調(diào)
- void main()
- {
- // 初始化定時(shí)器0 , 0.001ms 1Mhz
- TMOD=0x01; //定時(shí)器0工作方式1
- TH0=0xff; //定時(shí)器高八位賦初值 :(65536-12)/256;
- TL0=0xf4; //定時(shí)器低八位賦初值 :(65536-12)%256
- EA=1; //開總中斷
- ET0=1; //開定時(shí)器0中斷
- TR0=1; //啟動(dòng)定時(shí)器0
- while(1)
- {
- ;//nothing to do!!!
- }
- }
-
- void tim0() interrupt 1 //定時(shí)器0中斷服務(wù)函數(shù)
- {
-
- TR0=0; //賦初值時(shí),暫時(shí)關(guān)閉定時(shí)器
- TH0=0xff; //定時(shí)器高八位賦初值 :(65536-12)/256;
- TL0=0xf4; //定時(shí)器低八位賦初值 :(65536-12)%256
- TR0=1; //打開定時(shí)器
-
- DutyCount++; //計(jì)數(shù)器自加
-
- if(DutyCount>=100) //10khz
- {
- DutyCount=0;
- }
- if(DutyCount<=Duty) //占空比%50,可改
- {
- PWM=1;
- }else
- {
- PWM=0;
- }
-
- }
-
復(fù)制代碼
所有資料51hei提供下載:
|