1樓:
//如果是用51微控制器
//標頭檔案
#include
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef long unsigned int uint32;
uint16 time0;
uint16 pulse_width = 0x300; //脈衝寬
uint8 duty_cycle = pulse_width*(1/5);//佔空比
void delay(uint8 ms)
}///////////////////////////////////////////定時器0,控制低電平
void timer0() interrupt 1
//////////////////////////////////////////////定時器1.控制高電平
void timer1() interrupt 3
//////////////////////////////////主函式
int main(void)
else break;
}while(1);
doelse break;
}while(1); }}
2樓:匿名使用者
樓主,用什麼微控制器呀,人一些帶pwm功能的,你直接給初值就可以了,沒有pwm的,你就一個固定時間分成多少等分來實現pwm功能
3樓:我是一值魚
你說的什麼微控制器?如果是51的話,定時器0和1在模擬pwm時貌似沒有區別
區別全在於你如何程式設計
怎麼用微控制器產生pwm波形 5
4樓:匿名使用者
用定時器寫,簡單的定時時間,然後根據需要調高低電平
5樓:丶旮旯旭
void timer0() interrupt 1else io = 0;
}else
}用定時器做的
6樓:胖大海君
微控制器產生pwm波形波形的方法:
主要是採用軟體控制,控制2個時間。
具體就是由微控制器的引腳輸出pwm波形;微控制器引腳 如p1.7 控制其輸出高電平的時間t1 和輸出低電平的時間t2。
pwm波形的週期t=t1+t2
pwm波形的佔空比=(100t1/t)%
pwm波形實現的演算法:
1 根據pwm波形的頻率f,計算出pwm波形的週期t=1/f;
2 根據pwm波形的佔空比 計算出高電平時間 t1=佔空比×t3 計算出低電平時間 t2=t-t1
4 按上述時間去控制 微控制器引腳高低電平的時間就可以了。
呵呵 趕快自己寫程式吧 別忘了給俺加分呀
c51微控制器中如何用定時器中斷產生pwm
7樓:與時俱進
#include
sbit output=p1^0;//定義輸出端unsigned char num;
void main()
}void init()
void time0 interrupt 1//中斷函式
pwm和io口產生的波形有什麼區別
8樓:
你說的pwm應該是硬體pwm,由計數器和比較器組成,設定週期和佔空比後不需軟體干涉,4條以內賦值指令即可完成修改週期和佔空比,而用定時器模擬pwm時需佔用cpu時間,雖然開銷不大,但是會用到定時器中斷,在大型程式中,如果模擬該pwm的定時器中斷優先順序不高則可能導致pwm不精確;另外,設pwm精度要求為1%,則硬體pwm的週期可做到100個時鐘週期,而軟體pwm的週期將是幾十倍於硬體pwm。所以,在高速場合軟體pwm就顯的力不從心,而在低速場合兩者沒有區別,因為無論硬體pwm還是軟體pwm都必須從io口輸出
9樓:失戀好幾年
它本身就是方波只是時間間隔不同
10樓:匿名使用者
您好:都是方波,沒什麼區別。
但是pwm經常的用法是可變佔空比和可變頻率;
用微控制器的io也可以輸出pwm,只是產生pwm一般用轉用晶片(開關電源上用的較多)或者微控制器的pwm內建模組如定時器,很小直接用mcu的io口線直接輸出因為那樣太耗mcu資源了。
pwm的佔空比可變是非常容易控制開關管的導通時間,可變頻率則容易控制開關管的開關頻率,這是開關電源的基礎,其他的應用也是基於這兩點比如spwm應用,頻率固定佔空比按正弦規律變化經簡單rc濾波後可以輸出正弦波等等。
希望能幫到您。
用51微控制器定時器中斷產生兩路佔空比可調的pwm波形
11樓:匿名使用者
只需使用一個定時器,設定為模式2(自重灌),定時時間100微秒,在中斷程式中比較兩個pwm值就可以了,以下為示範:pwm++;if(pwm==100)pwm=0;if(pwm1>pwm)p1.1=0;else p1.
1=1;if(pwm2>pwm)p1.2=0;else p1.2=1;
利用微控制器設計59秒計時器,利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。
共陽共陰只是你在選com端時給其高低電平的問題無關大雅我給一段pic微控制器的程式讓你參考一下,如果你看懂的話應該能做出來了 include include 此程式實現計時秒錶功能,時鐘顯示範圍00.00 99.99秒,分辨度 0.01秒 unsigned char s0,s1,s2,s3 定義0....
VC 6 0中,請教DLL使用計時器或者執行緒實現迴圈執行某個功能的問題
include stdio.h int g ncount 0 dword stdcall addthreadproc lpvoid lparam bool apientry dllmain handle hmodule,dword ul reason for call,lpvoid lpreserv...
微控制器中的是如何使用的,微控制器 使用者如何用c語言 將按鍵輸入的值的儲存到微控制器裡
沙裡波特 這不是微控制器的知識。這是 c 語言的知識。搞微控制器的這些貨們,解釋 c 語言,會誤導你的。 定時器分的高8位和低8位是分別存在th0和tl0中的,所以th0上的1其實代表1乘以二的八次方計256,所以要設定的數65536 500除以256的商就是放在高8位裡的,剩下的餘數放入低8位就行...