① 單片機中的 pwm輸出 和 定時/計數器 的區別
PWM就是脈沖寬度調制的英文縮寫,方波高電平時間跟周期的比例叫占空比,例如1秒高電平1秒低電平的PWM波占空比是50%,意思就是這個控制器輸出的脈沖寬度是可以調節的
或者說在開關電源中,輸出電壓的調節功能是通過脈沖寬度調制的原理實現的,所以PWM不能直接說是調節輸出電壓,只是通過PWM功能間接實現了調壓的功能。
定時/計數器是提供定時計數用,它是獨立開來的,也就是說當定時/計數器工作的時候不會影響單片機的PC資源。這就是他的優點,你用軟體的話是可以定時/計數,但是它是用每條指令的機器周期,讓PC一直執行這些個指令,不能去做別的事情得到的延時,明顯 浪費了PC資源。
② STC單片機輸出PWM信號,頻率要25KHz,請大神指教,怎麼實現,或者直接給我一個程序,謝謝!
void PWM_init (void){//PWM初始化函數
CMOD=0x02; //設置PCA定時器,計數頻率為晶振頻率/2 當為12Mhz時,PWM輸出頻率約23.4Khz
//CMOD=0x00; //設置PCA定時器,計數頻率為晶振頻率/12 當為12Mhz時,PWM輸出頻率約3.9Khz
//CMOD=0x04; //設置PCA定時器,計數頻率為定時器0的溢出率,如果讓定時器0設為16位計數模式,其溢出頻率可以在很大范圍內調節,從而以產生很高或很低的PWM頻率
CL=0x00;
CH=0x00;
CCAPM1=0x42; //PWM1設置PCA工作方式為PWM方式(0100 0010)
CCAP1L=0x00; //設置PWM1初始值與CCAP0H相同
CCAP1H=0x00; // PWM1初始時為0
CR=1; //啟動PCA定時器
}
實際上要產生低頻率的PWM波,不用其硬體PWM功能完全可以
用定時器中斷方式即可實現
讓定時器 200us中斷一次(中斷不算頻繁呀) ,設一變數a,每次中斷a加1,100次就是20ms,,另設一變數b,數值在1-100之間,每次中斷比較a和 b的大小,如果a<b,則引腳 輸出高電平,否則為低電平,這樣通過改變b的值,就可實現頻率為50HZ,占空比1-100%可調的PWM方波
③ 如何利用51單片機輸出PWM波
用兩個定時器的方法是用定時器T0來控制頻率,定時器T1來控制占空比。大致的的編程思路是這樣的:T0定時器中斷讓一個I0口輸出高電平,在這個定時器T0的中斷當中起動定時器T1,而這個T1是讓IO口輸出低電平,這樣改變定時器T0的初值就可以改變頻率,改變定時器T1的初值就可以改變占空比。
用一個定時器時(如定時器T0),首先你要確定PWM的周期T和占空比D,確定了這些以後,你可以用定時器產生一個時間基準t,比如定時器溢出n次的時間是PWM的高電平的時間,則D*T=n*t,類似的可以求出PWM低電平時間需要多少個時間基準n'。
因為這里我們是產生周期為1ms(1000HZ)的PWM,所以可設置中斷的時間基準為0.01ms,,然後中斷100次即為1ms。在中斷子程序內,可設置一個變數如time,在中斷子程序內,有三條重要的語句:1、當time>=100時,time清零(此語句保證頻率為1000HZ),2、當time>n時(n應該在0-100之間變化開),讓單片相應的I/O口輸出高電平,當time<n時,讓單片相應的I/O口輸出低電平,此時占空比就為%n。
④ 單片機中的pwm輸出和定時/計數器的區別是什麼
這個我來,首先
1.定時計數器就是一個定時器到達時間就溢出,中斷標志位置一,下面的交給主程序處理
而pwm這是一種喊尺波形調制方式,說的一般是通過控制方波的占空比來達到精確控制外圍器件的目的。
一個是單片機內部鄭源高的概念,一個是電路中常用的概念
通過定時計數器可以用單片機產生pwm波,這是他們的關系
2.pwm就是方波信號,也就是所謂的脈沖。
3.pwm就是連續的脈沖。指示占空比可能不同
4.你說的單裂彎片機中自帶的pwm輸出,那時內部通過控制寄存器進行的pwm輸出
你必須說出那種單片機,使用的什麼方式的pwm,才能有確切的公式。
還不明白的話加qq 1320249827