1樓:14一縷暖陽
#include
#define uchar unsigned char
#define uint unsigned int
void port_init (void);
void pca_init (void);
bit pca_flag;
uint pwm=0;
void main (void)
pca0md &=0x40; /關閉看門狗。
oscicn |=0x03; /雹坦逗輪/使用內部12m晶振。
port_init ()埠初始化。
pca_init ()pca初始設為16位脈寬。
ea=1;while (1)
void port_init (void)
p0skip = 0xff; /源指桐/跳過p0口。
p1skip = 0x03; /跳過。
xbr1 = 0x42; /將pca輸出配置到腳。
p1mdout |=0x04; /配置為推輓輸出。
void pca_init (void)
unsigned int cex0_compare_value ;
pca0cn = 0x00; /stop counter; clear all flags
pca0md = 0x08; /use sysclk as time base
pca0cpm0 = 0xc2; /module 0 = 16-bit pwm mode and
configure initial pwm duty cycle = 60%
cex0_compare_value = 65536 - 65536 *
pca0cpl0 = cex0_compare_value & 0x00ff);
pca0cph0 = cex0_compare_value & 0xff00)>>8;
cr = 1;
佔空比為60% pwm=65536-65536*;
在這改變佔空比就能改變輸出pwm
怎麼讓微控制器(c8051f340)產生一定佔空比的pwm波形
2樓:藏在水中的人
在這個程式中 佔空比=(65536-pwm)/65536要讓佔空比為60% pwm=65536-65536*;
只要下面程式 就可以產生pwm了不需要中斷的void pca0_init (void)
c8051f410如何用pca產生4路pwm波,誰有程式,求賜教。我的郵箱[email protected]
3樓:網友
一般是通過計數來控制,仔細看一下晶元關於pwm的使用,重點在原理和暫存器的使用。
c8051f330能否用pca計數方式輸出佔空比和頻率都能連續調節的pwm?怎麼實現?
4樓:網友
那就是佔空比的設定問題,你把相應的暫存器設定好了就行,還有就是你用定時器溢位做時鐘源就好了,就可以按你的要求得到你要的頻率了。記住那個時鐘源的配置暫存器要設定正確。
你要是看下資料手冊就更好一點,那個計數器你弄懂了就好弄一點?》@
關於c8051f912 的pca產生16位pwm的演算法
5樓:網友
用pca的16位pwm必須計滿65536個系統週期(系統時鐘不分頻,最大25m)才能產生乙個週期的pwm,所以頻率很低,想要頻率更高的只能降低pwm精度,在精度要求不高的情況下可以使用8位pwm,如果你既想pwm精度比8位高又要頻率大點還有一種方法,使用普通定時器的模式0,13位定時器模式,使用軟體方式產生pwm,其他的不使用外接晶元沒辦法。
還有就是可以考慮換一款晶元,比如c8051f120通過pll主頻可以達到100m,或者直接換stm32,**比c8051f的還便宜點呢。
用stc微控制器的pca做定時器,輸出pwm
6樓:網友
cmod = 0x00 ;pca空閒時執行,時鐘fosc/12,遮蔽溢位中斷。
ccon = 0x40 ;pca計數器啟動,清零各個中斷請求標誌位。
ccapm0 = 0x49 ;pca模組0設定為軟體定時器比較捕捉功能。
epcalvd = 1 ;pca比較中斷允許。
pca模組中斷服務程式(輸出控制)
if(ccf0 = 1)
ccf0 = 0x00;//pca模組0中斷標誌,由硬體置位,必須由軟體清0
ccon = 0x40;//pca計數器允許計數,清0各個中斷請求標誌位。
xhout = !xhout;//自定義的輸出高低電平標誌。
if (xhout==1)
pwmout = 1;//置位pwm輸出管腳。
ccap0l = ccap0l + mc1l;//脈衝1低位。
ccap0h = ccap0h + mc1h;//脈衝1高位。
else pwmout = 0;//復位pwm輸出管腳。
ccap0l = ccap0l + mc0l;//脈衝0低位。
ccap0h = ccap0h + mc0h;//脈衝0高位。
你看哪個簡單。
7樓:每每
放入忒讓人發貨人投入費用投入。
微控制器c8051f340如何接收從別的微控制器傳送過來的pwm波,並進行佔空比分析?
8樓:網友
基本上,只要對所接收訊號的高低電平分別計時,兩者的和就是週期,然後就能計算佔空比了。
一般來說,計時所用的點數要非常密集,才能得到較為精確的結果。換言之,計時越精確,結果越精確。
例如,同樣是1ms的脈寬,你用1us和10us來計時,兩者所得到的結果,誤差的區別就非常大了。
9樓:
需要知道佔空比,執行傳引數就可以了啊,通過乙個普通io,模擬iic或者spi就可以將引數傳過來,8051要直接識別佔空比很難,也可以使用微分電路,將其轉換成直流訊號,然後ad取樣,間接判斷佔空比。
10樓:
這個問題我遇到過,可以這麼解決,用cap捕獲單元,不佔用微控制器定時器,在中斷程式中計時高低電平,計算佔空比即可,非常簡單。
C如何用FORM1顯示FORM2,然後將FORM2中的TEXTBOX中的值返回給FORM
form1 裡面建個label1 和乙個button1解決方案資源管理器 新增個新建項 windows窗體 叫form2裡面放個 textbox1和乙個button1下面是 form1裡面 button1 click事件 private void button1 click object sende...
如何用c語言表示數的小數次方,如何用c語言表示乙個數的小數次方
用pow 即可 例 求16的平方根,輸出4,double型 include main include include int main 在c語言中怎樣表示乙個數的 n 次方 c語言中計算乙個數的n次方可以用庫函式pow來實現。函式原型 double pow double x,double y 舉例如...
C語言的UI,如何用c語言設計介面?
1.可以自己編寫介面,十分麻煩要畫線,按鈕陰影,自己設計響應事件。vc提供的mfc是windows的,linux的話能可以用qt 與mfc類似的類庫 2.不是的,別的平台也可以,只是要注意相容性.3.學到什麼程度看你自己要幹什麼,如果要找工作,那麼先c c 然後如果你要linux就學 unix c ...