導航:首頁 > 操作系統 > 單片機捕獲並轉發pwm

單片機捕獲並轉發pwm

發布時間:2023-05-25 04:18:29

A. 怎麼用單片機產生PWM波形

單片機產生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=占空比×T
3 計算出低電平時間 T2=T-T1
4 按上述時間去控制 單片機引腳高低電平的時間就可以了。

呵呵 趕快自己寫程序吧 別忘了給俺加分呀

B. 如何用單片機產生PWM

/*---------------
文件名稱: PWM.C
功能 :單片機脈沖方式產生PWM信號
----------------*/
#include <reg52.h> // 引用標准庫的頭文件
#include <absacc.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define COUNT0 XBYTE [0X0000] // 8254計數器0寄存器地址
#define COUNT1 XBYTE [0X0200] // 8254計數器1寄存器地址
#define COUNT2 XBYTE [0X0400] // 8254計數器2寄存器地址
#define COMWORD XBYTE [0X0600] // 8254控制寄存器地址

/********************************
函數名稱: SIGNAL(SIG_OUTPUT_COMPARE1A)
功能 :定時器0中斷子程序
入口參數:無
返回值 :無
********************************/
void time0_int () interrupt 1 using 1
{
TR0=0; // 關閉T0
TH0=-(20000/256);
TL0=-(20000%256); //重置20ms計數值
/*--------------用8254計數器發送第一路的PWM信號-----------*/
COMWORD=0x30; //1MHz時鍾作為計數時鍾,計數1000次後實現1ms高電平
COUNT0=0xE0;
COUNT1=0x03;
/*--------------用8254發送第二路的PWM信號----------------*/
COMWORD=0x70; //1MHz時鍾作為計數時鍾,計數2000次後實現2ms高電平
COUNT0=0xD0;
COUNT1=0x07;
/*-------------用8254發送第三路的PWM信號----------------*/
COMWORD=0xB0;//1MHz時鍾作為計數時鍾,計數3000次後實現32ms高電平
COUNT0=0xB0;
COUNT1=0x0B;
TR0=1; //啟動T0
}
//主函數
void main ()
{
EA=1; // 開CPU總中斷
ET0=1; // 開T0定時器中斷
TMOD=0x01; // 開定時器中斷
TH0=-(20000/256); //20ms定時器計數初值
TL0=-(20000%256);
/*--------------向8254控制寄存器選擇計數器0,並對其賦值0-----------------*/
COMWORD=0x30;
COUNT0=0; //賦低位位元組
COUNT0=0; //賦高位位元組
/*---------------向8254控制寄存器選擇計數器1,並對其賦值0------------------*/
COMWORD=0x70;
COUNT0=0; //賦低位位元組
COUNT0=0; //賦高位位元組
/*---------------向8254控制寄存器選擇計數器2,並對其賦值0-----------------*/
COMWORD=0xB0;
COUNT0=0; //賦低位位元組
COUNT0=0; //賦高位位元組
TR0=1; //啟動定時器0
While (1); //無限次循環
}

C. 如何用單片機捕捉PWM占空比

#define TEST_IN PA0 //要測試的信號
#define F_TEST_IN PA1 //要測試信號的反向,加一個反向門得到的
main()
{
unsigned long low_cnt,high_cnt;
while(1)
{
while(TEST_IN); //確保TEST_IN = 0;
low_cnt = 0;
high_cnt = 0;
while(!TEST_IN); //確保TEST_IN = 1;
while(TEST_IN) high_cnt++; //計算高電平數量
while(F_TEST_IN) low_cnt++; //計算低電平數量

//以下添加其他的處理代碼。

}
}
這個應該能夠保證到精度。十分浪費CPU時間就是。但是如果只有這一個任務還是OK的。

你說的用外部中斷的方法也可以。
思路1 採用timer來進行計數。遇到相應的邊沿後中斷,停計數器。然後進行相應的處理。
思路2 直接用循環來檢測,當然如果這個地方用循環檢查的話,不如就不用中斷了,直接用軟體來實現上升沿下降沿的識別。也就是我寫的程序一樣了。
提示,思路1的話明顯的會覺得有點問題。因為是硬體計數。至於精度問題,你看下程序就可以感覺出來。還有精度主要取決於檢測的始終。與中斷什麼的沒有任何關系。只是用中斷給人感覺比較實時。

你的第二個想法有點看不懂。如果說你是想用AD轉換來進行占空比的分析的話,那太笨了。根本就是自找麻煩。

D. 如何利用51單片機輸出PWM波

1、用定時器+編程
2、51系列單片機無PWM輸出功能,可以採用定時器配合軟體的方法輸出。對精度要求不高的場合,非常實用
3、思路:定義一個靜態變數,程序每次進入定時器的中斷函數中時判斷是否滿足你說要求的占空比,沒達到就繼續對變數值進行累加直到滿足條件後使輸出PWM波的那個引腳電平反轉

4、具體詳見http://wenku..com/link?url=u82FHU5L--ZvMAabY2JKxCEajqxn_f5GPMl5GQRgrnji3hAGRBq11e

E. 用51單片機進行pwm實現(具有發送端和接收端)

設DAC地址為8000H。
PWM: MOV R7,#00H ;初始化R7為0
PUSH ACC ;把占空比存到A,保護占空比
MOV DPTR,#8000H ;指向DAC埠
PWM_HI: MOV A,#00H ;高電壓脈寬
MOVX @DPTR,A
POP ACC ;獲得ACC中的占空比
PUSH ACC
INC R7
CJNE A,R7,PWM_HI ;高脈寬未到,則繼續循環
PWM_LOW:MOV A,#0FFH
MOVX @DPTR,A ;輸出低脈寬
INC R7
CJNE R7,#0FFH,PWM_LOW ;達到255,即滿一周期,返回
POP ACC
RET

or

ORG OOOOH
MOV A,#00H
WW: MOV P0,A
INC A
LCALL DELAY
CJNE A,#0FFH,WW
WW1: DEC A
MOV P0,A
LCALL DELAY
CJNE A,#00H,WW1
SJMP WW
DELAY: MOV RO,#05H
DEL1: MOV R1,#05H
DEL2: NOP
DJNZ R1,DEL2
DJNZ R0,DEL1
RET
END

F. 單片機pwm是啥原理

1.pwm
脈沖寬度調制(pwm),是英文「pulse
width
molation」的縮寫,簡稱脈寬調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。
2.單片機中的pwm
指的是此單片機有部分i/o口具有輸出pwm信號的功能。
比如說部分單片機的i/o口可以輸出時鍾信號,時鍾信號的脈寬和占空皮可調,可以根據實際需要調整寄存器位來設定。
3.基本思想就是利用單片機具有的pwm埠,在不改變pwm方波周期的前提下,通過軟體的方法調整單片機的pwm控制寄存器來調整pwm的占空比,從而控制充電電流。以此來調整亮度

G. 51單片機AD采樣後如何轉換成PWM

不是很明野友派白你為什麼要把數據轉換成PWM信號輸出告鎮,如果你想這么做的話,可以直接用串口頌賀把單片機讀到的數據輸出

H. pwm控制的原理是什麼單片機如何實現pwm控制的求簡單解釋,一定採納

PWM是脈寬調制(PULSE WIDTH MODULATION)的簡稱,是開關電源的一種形式。PWM的控制需看你用何種集成電路。開關電源的集成電路有很多種,如TOP221,TL494,UC3842,UC3846,UC3875,SG3525等。開關電源又分反激式開關電源和正激式開關電源。它一般由集成電路的某個引腳,通過外部信號反饋來控制。

I. 單片機PWM捕捉模式是什麼意思

PWM,是脈沖寬度調制的意思,主要參數有三個,整個脈沖的寬度,高電平的寬度,占空比。這里假設高電平有效。
占空比 = 高電平的寬度 / 整個脈沖的寬度。PWM捕捉,就是同時捕捉PWM的整個脈沖的寬度以及高電平的寬度,進而可以計算得出占空比。
典型的做法,在脈沖上升沿和下降沿都執行捕捉。上升沿復位並啟動定時器,下降沿捕捉定時器內容作為高電平寬度,下一個上升沿捕捉定時器內容作為整個脈沖的寬度,同時復位並重啟定時器以進行下一輪捕捉。

J. 單片機怎麼發出PWM信號

如果單片機有PWM的話,就直接使用PWM信號輸出,只要設置要對應的pwm周期和占空比就可以了。如果沒有PWM,可以用IO模擬一個PWM信號。如果PWM要求頻率比較快的話,你要算一下單片機的速度是否夠快。

閱讀全文

與單片機捕獲並轉發pwm相關的資料

熱點內容
單片機編程取反 瀏覽:894
51單片機課程設計課題 瀏覽:897
手機淘寶登錄怎麼加密碼 瀏覽:484
linux快捷方式圖標 瀏覽:37
陽光車險的app叫什麼名字 瀏覽:461
購買單片機的器件時需要給商家啥 瀏覽:534
並行編譯技術的發展 瀏覽:549
阿里雲伺服器安裝管理 瀏覽:550
java手機開發教程 瀏覽:674
我的世界怎麼刪除伺服器數據 瀏覽:671
linux內存子系統 瀏覽:972
加密思維幣 瀏覽:690
魅族訪客文件夾 瀏覽:52
添加的文件夾怎麼找 瀏覽:617
程序員涉黃 瀏覽:700
maven編譯resources下的js 瀏覽:521
ubuntu文件移動命令 瀏覽:229
安卓i怎麼查找蘋果手機 瀏覽:951
雲伺服器宕機概率 瀏覽:232
在線買葯用什麼app知乎 瀏覽:815