久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

歡迎(ying)來到高(gao)端IT就業培訓專(zhuan)家(jia)——華清遠見教育科技集團(tuan)

400-611-6270

當前位置:IT培訓 > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > PWM占空比原理是什么,幾個實例帶你進一步了解
PWM占空比原理是什么,幾個實例帶你進一步了解
時(shi)間:2018-04-23作(zuo)者:華清遠見(jian)

PWM : 即脈(mo)沖(chong)寬度調制(zhi)(Pulse Width Modulation)。脈(mo)沖(chong)寬度調制(zhi)是利用(yong)微處(chu)理器(qi)的(de)數字(zi)輸出來對模擬電(dian)路進行控制(zhi)的(de)一種(zhong)非常有效的(de)技術(shu)(shu),廣(guang)泛應(ying)(ying)用(yong)在從測(ce)量、通信到(dao)功率控制(zhi)與變換及嵌入式(shi)領域的(de)許多領域中。PWM控制(zhi)技術(shu)(shu)以其(qi)控制(zhi)簡單,靈活(huo)和動態響(xiang)應(ying)(ying)好的(de)優點而成為電(dian)力電(dian)子(zi)技術(shu)(shu)最廣(guang)泛應(ying)(ying)用(yong)的(de)控制(zhi)方式(shi),也(ye)是人們研究(jiu)的(de)熱點。

在(zai)(zai)電(dian)(dian)(dian)(dian)力電(dian)(dian)(dian)(dian)子技術中,對于很多變(bian)量的(de)(de)控制(zhi),我(wo)們(men)可(ke)(ke)以采取模(mo)(mo)擬的(de)(de)方(fang)式,也可(ke)(ke)以采用數字的(de)(de)方(fang)式進(jin)行處(chu)理。例(li)如,在(zai)(zai)簡(jian)單的(de)(de)模(mo)(mo)擬收(shou)(shou)音機(ji)中,音量旋鈕(niu)被(bei)連接到一個(ge)可(ke)(ke)變(bian)電(dian)(dian)(dian)(dian)阻。擰動旋鈕(niu)時,電(dian)(dian)(dian)(dian)阻值變(bian)大或(huo)變(bian)小;流經這個(ge)電(dian)(dian)(dian)(dian)阻的(de)(de)電(dian)(dian)(dian)(dian)流也隨之增加或(huo)減少,從而改變(bian)了驅動揚聲器的(de)(de)電(dian)(dian)(dian)(dian)流值,是(shi)音量響(xiang)應變(bian)大或(huo)變(bian)小。與(yu)收(shou)(shou)音機(ji)一樣,模(mo)(mo)擬電(dian)(dian)(dian)(dian)路的(de)(de)輸出與(yu)輸入成線性比例(li)。盡(jin)管模(mo)(mo)擬控制(zhi)看起(qi)來(lai)可(ke)(ke)能簡(jian)單而直觀(guan),但它并不(bu)總是(shi)經濟的(de)(de)或(huo)可(ke)(ke)行的(de)(de)。其(qi)功耗(hao)、一些(xie)物理的(de)(de)擾(rao)動都可(ke)(ke)能對我(wo)們(men)的(de)(de)設備(bei)造成干擾(rao)。而通過數字方(fang)式控制(zhi)模(mo)(mo)擬電(dian)(dian)(dian)(dian)路,可(ke)(ke)以大幅度降低系統(tong)的(de)(de)成本和功耗(hao)。

同樣的(de),在(zai)(zai)嵌入式領域(yu)中,PWM也多有用途。現(xian)在(zai)(zai)的(de)單片機中,大多有PWM模塊,也稱之為(wei)PWM定(ding)時(shi)(shi)(shi)器。實際應用過程中,會(hui)根據某物理量對(dui)于不(bu)同參量的(de)敏(min)(min)感(gan)度不(bu)同而使(shi)用不(bu)同的(de)處理方式。舉兩(liang)個簡單的(de)小例子。如:處理led時(shi)(shi)(shi),led燈(deng)的(de)亮(liang)度是(shi)電(dian)壓(ya)敏(min)(min)感(gan)的(de),使(shi)用PWM時(shi)(shi)(shi),就會(hui)通過調節(jie)其占空比(一(yi)個脈(mo)沖周期內高電(dian)平(ping)在(zai)(zai)整個周期占的(de)比例),從而控(kong)制電(dian)壓(ya)值,來干預led燈(deng)的(de)亮(liang)度。在(zai)(zai)處理蜂鳴(ming)器時(shi)(shi)(shi),由于其對(dui)頻(pin)率(lv)是(shi)敏(min)(min)感(gan)的(de),頻(pin)率(lv)越高音(yin)調越高,因此,使(shi)用PWM進(jin)行調節(jie)時(shi)(shi)(shi),我們(men)通過修改PWM的(de)頻(pin)率(lv),來調節(jie)蜂鳴(ming)器的(de)音(yin)調。

具體的原理(li)可以參照《嵌入式Linux應用開發完全(quan)手冊》。以下奉送個小實例(li)供大(da)家參考:

實例:通過調節占空(kong)比(用(yong)按(an)鍵實現),來改變電壓(ya)值(zhi)的大(da)小,從而控制led燈的亮度。

///////////main.c//////////

#include "common.h"

#include "led.h"

#include "key.h"

/* 增(zeng)大占(zhan)空比 */

void add_cb(void *arg)

{

*(int *)arg += 100;

if (*(int *)arg > 1000){

*(int *)arg = 1000;

}

}

/* 減小占空比 */

void dec_cb(void *arg)

{

*(int *)arg -= 100;

if (*(int *)arg < 0)

*(int *)arg = 0;

}

int main(void)

{

int i = 0;

int cmp = 0;

key_t k2, k3;

led_t led5;

/* 初始化按(an)鍵、LED */

key_init(&k2, 0x11000c20, 0x11000c24, 1); /* gpx1_1 */

key_init(&k3, 0x11000c20, 0x11000c24, 2); /* gpx1_2 */

led_init(&led5, 0x114001E0, 0x114001E4, 5); /* gpf3_5 */

while(1){

key_query(&k2, dec_cb, &cmp); // k2減小cmp比較值(zhi),減小占(zhan)空比

key_query(&k3, add_cb, &cmp); // k3增大cmp值,增大占空(kong)比

/* 輸出(chu)一次PWM信(xin)號 */

for (i = 0; i < 1000; i ++){

if(i < cmp)

led_on(&led5);

else

led_off(&led5);

}

}

return 0;

}

///////////led.c///////////

#include "led.h"

#define __REG(x) (*(volatile unsigned int *)(x))

/* LED的(de)方法 */

void led_init(struct led *led, int con, int dat, int pin) //初始化LED對象(xiang)

{

led->con = con;

led->dat = dat;

led->pin = pin;

/* 把相(xiang)應pin引腳(jiao)設(she)置為輸出模式 */

__REG(con) = __REG(con) & ~(0xF<<(pin*4)) | (0x1<<(pin*4));

}

//打(da)開LED

void led_on(struct led *led)

{

__REG(led->dat) |= (1

}

void led_off(struct led *led) //關(guan)閉LED

{

__REG(led->dat) &= ~(1

}

void led_toggle(struct led *led) //LED狀態取(qu)反

{

__REG(led->dat) ^= (1

}

//////////key.c////////////

#include "key.h"

#define __REG(x) (*(volatile unsigned int *)(x))

void key_init(key_t *key, unsigned int con, unsigned int dat, unsigned int pin)

{

key->con = con;

key->dat = dat;

key->pin = pin;

/* 把CON寄存器(qi)的相應位清零,

* 表(biao)示設置相應引(yin)腳為輸入模(mo)式 */

__REG(key->;con) &= ~(0xF<<(pin * 4));

}

/* 判斷按鍵是否按下 */

int key_query(key_t *key, void (*callback)(void *), void *arg)

{

if ((__REG(key-&gt;dat) & (1<<(key->pin))) == 0){

mdelay(50); /* 消除按鍵抖動 */

if ((__REG(key->dat) & (1<<(key->pin))) == 0){

callback(arg); /* 執行回調函數 */

while ((__REG(key->;dat) & (1<<(key->pin))) == 0);

return 1;

}

}

return 0;

}


發表評論

全國咨詢電(dian)話:400-611-6270,雙休日及節假日請致電(dian)值班手機:15010390966

在線咨詢: 曹(cao)老(lao)師(shi)(shi)QQ(3337544669), 徐老(lao)師(shi)(shi)QQ(1462495461), 劉老(lao)師(shi)(shi) QQ(3108687497)

企業(ye)培訓洽(qia)(qia)談專(zhuan)線(xian):010-82600901,院(yuan)校合作洽(qia)(qia)談專(zhuan)線(xian):010-82600350,在(zai)線(xian)咨詢(xun):QQ(248856300)

Copyright 2004-2018 華(hua)清遠見(jian)教育科技(ji)集團 版權所有 ,京ICP備16055225號(hao),京公(gong)海網(wang)安(an)備11010802025203號(hao)

有位老師(shi)想和(he)您聊一聊