|
直流電機(jī)調(diào)速,占空比可調(diào)。小白第一次發(fā)帖
電路原理圖如下:
新建位圖圖像.jpg (122.47 KB, 下載次數(shù): 32)
下載附件
2018-12-10 20:54 上傳
單片機(jī)源程序如下:
- #include "reg51.h"
- #include "led.h"
- #include "delay.h"
- uint d=100; //占空比
- uint b=65436; //初值計(jì)時(shí)100us
- bit flag=0;
- void timer0(void) interrupt 1 //中斷部分代碼,見(jiàn)下文的釋疑
- {
- if(flag)
- {
- TH0 = b/256; //900
- TL0 = b%256;
- flag = 0;
- P2_4 = 0;
- b=65536-d;
- }
- else
- {
- TH0 = b/256; //100
- TL0 = b%256;
- flag = 1;
- P2_4 = 1;
- b=64536+d;
- }
- }
- void main()
- {
- TMOD = 0x01; //TMOD的值表示定時(shí)器工作方式選擇
- TH0 = b/256; //寫(xiě)入初始值,初始值可以決定定時(shí)多久
- TL0 = b%256;
- TF0 = 0; //計(jì)數(shù)到時(shí)TF0為1,即當(dāng)TH0 = 0xff;TL0 = 0xff;再運(yùn)行一步TF0 = 1;
- TR0 = 1; //開(kāi)始計(jì)數(shù),從這時(shí)起,每運(yùn)行一步TH0和TL0都會(huì)增加,直到TH0 = 0xff;TL0 = 0xff;
- ET0 = 1; //允許定時(shí)器0中斷
- EA=1; //開(kāi)總中斷
- while(1)
- {
- if(P3!=0xff) //按鍵對(duì)應(yīng)占空比調(diào)整
- {
- TR0 = 0;
- delay_ms(10);
- if((P3_4==0)&&(d>=100))
- {
- d=d-100; //10倍程可調(diào)減
- }
- if((P3_5==0)&&(d>=10))
- {
- d=d-10; //1倍程可調(diào)減
- }
- if(P3_6==0)
- {
- d=d+10; //1倍程可調(diào)加
- }
- if(P3_7==0)
- {
- d=d+100; //10倍程可調(diào)加
- }
- while(P3!=0xff);
- TR0 = 1;
- }
- if(d<=10) //設(shè)置占空比最大最小值
- {
- d=10;
- }
- if(d>=990)
- {
- d=990;
- }
- delay_ms(2);
- show_led_one(0,(d%100)/10); //實(shí)時(shí)顯示占空比
- delay_ms(2);
- show_led_one(1,d/100);
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
PWM.zip
(39.21 KB, 下載次數(shù): 47)
2018-12-9 21:08 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
PWM.pdf
(37.2 KB, 下載次數(shù): 26)
2018-12-10 20:51 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|