日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]在講PWM之前,大家先做以下5個(gè)實(shí)驗(yàn)。1、LED1循環(huán)亮300ms,滅700ms;2、LED1循環(huán)亮30ms,滅70ms;3、LED1循環(huán)亮3ms,滅7ms;4、循環(huán)以下步驟1)LED1循環(huán)亮3ms,滅7ms;執(zhí)行一百次;2)LED1循環(huán)亮8ms,滅2ms;執(zhí)行一百

在講PWM之前,大家先做以下5個(gè)實(shí)驗(yàn)。

1、LED1循環(huán)亮300ms,滅700ms;

2、LED1循環(huán)亮30ms,滅70ms;

3、LED1循環(huán)亮3ms,滅7ms;

4、循環(huán)以下步驟

1)LED1循環(huán)亮3ms,滅7ms;執(zhí)行一百次;

2)LED1循環(huán)亮8ms,滅2ms;執(zhí)行一百次;

5、循環(huán)以下步驟

1)LED1循環(huán)亮1ms,滅9ms;LED2循環(huán)亮3ms,滅7ms;LED3循環(huán)亮5ms,滅5ms;以上3燈閃爍動(dòng)作共用同個(gè)10ms周期,執(zhí)行一百次;

2)LED1循環(huán)亮5ms,滅5ms;LED2循環(huán)亮7ms,滅3ms;LED3循環(huán)亮9ms,滅1ms;以上3燈閃爍動(dòng)作共用同個(gè)10ms周期,執(zhí)行一百次;

第1、2個(gè)實(shí)驗(yàn),可以明顯看出LED亮滅的持續(xù)時(shí)間,而在第3個(gè)實(shí)驗(yàn)中,看不出亮滅的轉(zhuǎn)換,只能看到燈是一直亮著的,但是要比常亮的狀態(tài)暗了很多。如果在第3個(gè)實(shí)驗(yàn)基礎(chǔ)上修改亮滅持續(xù)時(shí)間,可以改變LED的亮度。前3個(gè)實(shí)驗(yàn),應(yīng)該可以很輕松完成。第4個(gè)實(shí)驗(yàn),用for結(jié)構(gòu)可以能完成。第5個(gè)實(shí)驗(yàn),用現(xiàn)在已學(xué)的知識(shí),就不是那么容易完成了。但是使用今天所要學(xué)的PWM功能,以上功能將很容易實(shí)現(xiàn)。

PWM全稱Pulse Width Modulation,中文即脈沖寬度調(diào)制,PWM的功能簡(jiǎn)單來講,就是可以使引腳輸出一定脈沖周期和脈沖寬度的方波脈沖信號(hào),或者說占空比可變的方波脈沖信號(hào),如下圖所示。



脈沖寬度是兩個(gè)相鄰的脈沖之間的時(shí)間間隔,脈沖寬度是脈沖周期中高電平時(shí)間。

STM8S105K4有3個(gè)PWM模塊,8路16位PWM通道。PC1、PC2、PC3、PC4是PWM1模塊的1、2、3、4通道。PD4、PD3是PWM2模塊的1、2通道。PD2、PD0是PWM3模塊的1、2通道。

一、庫函數(shù)

1、打開DAHUME MINI.stw文件;

2、在STVD左側(cè)Workspace窗口Source Files目錄下找到main.c,雙擊打開;

3、setup();函數(shù)代碼如下;

void setup(void)

{

delay(10);

CLOCK(_16MHz);

PWM1_init(10, 100);

}

void PWM1_init(unsigned int period_ms, unsigned int range);是設(shè)置PWM1模塊參數(shù)的函數(shù)。參數(shù)period_ms表示脈沖周期,單位是毫秒。參數(shù)range表示分辨率,即占空比可調(diào)的級(jí)數(shù),范圍是0~65535。設(shè)置了PWM1模塊后,其4個(gè)通道都是PWM的工作模式,不可做IO口使用。

PWM1_init(10, 100);設(shè)置PWM1的脈沖周期為10ms,100級(jí)分辨率,單位脈沖寬度為100us。

void PWM2_init(unsigned int period_ms, unsigned int range);函數(shù)對(duì)應(yīng)PWM2模塊設(shè)置。

void PWM3_init(unsigned int period_ms, unsigned int range);函數(shù)對(duì)應(yīng)PWM3模塊設(shè)置。

4、主函數(shù)代碼如下;

main()

{

setup();

while (1)

{

PWM1(1, 30);

delay(500);

PWM1(1, 80);

delay(500);

}

}

void PWM1(char channel, unsigned int duty);是設(shè)置PWM1某通道的脈沖寬度。參數(shù)channel表示通道號(hào)。參數(shù)duty表示一個(gè)脈沖周期里的單位脈沖寬度的個(gè)數(shù)。參數(shù)duty要小于等于參數(shù)range。

脈沖寬度=單位脈沖寬度*duty

PWM1模塊的脈沖周期是10ms,占空比為30%,則PC1引腳輸出的平均電壓為5V×30%,即1.5V,LED1以30%的亮度點(diǎn)亮。

本例程所實(shí)現(xiàn)效果是LED1以30%的亮度亮0.5s,以80%的亮度亮0.5s,循環(huán)執(zhí)行。

PWM功能除了可以控制LED的亮度,還可以實(shí)現(xiàn)呼吸燈功能??刂浦绷麟姍C(jī)是PWM的重要應(yīng)用。

在設(shè)置PWM1模塊時(shí),根據(jù)單位脈沖寬度時(shí)間范圍是1/16us~4096us設(shè)定脈沖周期和分辨率參數(shù)。

在設(shè)置PWM2、PWM3模塊時(shí),根據(jù)單位脈沖寬度時(shí)間范圍是1/16us*2^n,n=0~15設(shè)定脈沖周期和分辨率參數(shù)。

二、練習(xí)

1、完成上述第5個(gè)實(shí)驗(yàn);

2、設(shè)置PWM1模塊脈沖周期10ms,分辨率100級(jí),通道1的占空比每20ms從0%遞增到100%,再每20ms從100%遞減到0%。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉