0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【RTT大賽作品連載】 PWM操作蜂鳴器

閑來無事玩單片機(jī)呀 ? 2021-12-06 08:36 ? 次閱讀

蜂鳴器是一個(gè)比較常見的電子器件,主要作用是喲關(guān)于報(bào)警,提醒。

蜂鳴器有兩中類型,一種是無源蜂鳴器,沒有驅(qū)動源,需要使用PWM控制蜂鳴器響,可以通過修改PWM的占空比或者頻率來達(dá)到調(diào)整蜂鳴器聲音音調(diào)的目的;還有一種是有源蜂鳴器,有驅(qū)動源,上電接高電平就會響。

本文就將以AB32VG1作為主控,RT-thread作為操作系統(tǒng)來操作無源蜂鳴器。

一、創(chuàng)建工程

使用RT-Thread Studio來創(chuàng)建工程。

1. 新增加兩個(gè)文件app_beep.c和app_beep.h

poYBAGGsPhuAZr4CAAA2gKRcqmE599.png

2. 打開RT-Thread Settings,使能PWM2

pYYBAGGsPkyAR116AABbqQMsVs8663.png

二、電路連接

蜂鳴器驅(qū)動引腳連接:PE0 → Beep驅(qū)動引腳

三、無源蜂鳴器操作原理

無源蜂鳴器需要自己提供驅(qū)動源,也就是PWM信號,通過控制PWM驅(qū)動頻率可以控制蜂鳴器輸出音符。

本程序通過period來控制PWM頻率,頻率為1MHz/period KHz

人耳能夠聽到的聲音頻率為20Hz~20KHz,所以操作20KHz頻率是聽不見的。

驅(qū)動程序控制PWM循環(huán)輸出1KHz~20KHz,當(dāng)聲音越接近20KHz,我們能聽到的聲音越小,占空比為50%,相對而言聲音最大。占空比大小可以自己調(diào)節(jié)輸出聲音的大小。

四、操作代碼

1. 創(chuàng)建Beep線程

static int Pwm_Thread_Init(void)
{
    rt_thread_t beep_thread;

    beep_thread = rt_thread_create("Beep_thread",
                                    PWM_Thread_Entry,
                                    RT_NULL,
                                    512,
                                    10,
                                    10);

    rt_thread_startup(beep_thread);

    return 0;
}

2. 初始化PWM,初始化函數(shù)在main中while循環(huán)之前調(diào)用

#define PWM_DEV_NAME        "lpwm2" /* PWM 設(shè)備名稱 */
#define PWM_DEV_CHANNEL     1 /* PWM 通道 */
#define PWM_PERIOD          (1000000u) // 1000000u
struct rt_device_pwm *pwm_dev; /* PWM 設(shè)備句柄 */
rt_uint32_t period, pulse;

void Pwm_Init(void)
{
    period = PWM_PERIOD; /* 周期 = 1M/period kHz */
    pulse = 0; /* PWM 脈沖寬度值(0 - period) */
    pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
    RT_ASSERT(pwm_dev != RT_NULL);

    /* 設(shè)置 PWM 周期和脈沖寬度 */
    rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, 0);
    /* 使能設(shè)備 */
    rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);

    Pwm_Thread_Init();
}

3. PWM Beep驅(qū)動函數(shù)

static void PWM_Thread_Entry(void *para)
{
    uint8_t i = 1;
    while(1)
    {
        period = (uint32_t)(1000000/i);
        rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, period-1);
        i++;
        if(i > 20)
            i = 1;
        rt_thread_mdelay(1000);
    }
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5059

    瀏覽量

    212223
  • 蜂鳴器
    +關(guān)注

    關(guān)注

    12

    文章

    887

    瀏覽量

    45692
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    501

    瀏覽量

    19580
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1239

    瀏覽量

    39442
收藏 人收藏

    評論

    相關(guān)推薦

    RTT大賽作品連載】 AB32VG1上手

    AB32VG1上手操作,修改例程運(yùn)行中的問題,成功點(diǎn)亮RGB。
    的頭像 發(fā)表于 10-28 18:31 ?7593次閱讀
    【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】 AB32VG1上手

    RTT大賽作品連載】AB32VG1評估板到貨控制彩燈測試

    RTT大賽作品連載】AB32VG1評估板到貨控制彩燈測試篇;接下來看看在如何AB32VG1評估板控制彩燈! 在RT-ThreadStudio新建項(xiàng)目到對應(yīng)開發(fā)配置及下載及驗(yàn)證測試!
    的頭像 發(fā)表于 11-07 19:39 ?5068次閱讀
    【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】AB32VG1評估板到貨控制彩燈測試

    RTT大賽作品連載】CH32V103開發(fā)板資料及上電首測

    簡介 ? 參加論壇舉辦的rtt大賽也有幾天了,我選用的是CH32V103的板子,第一步就是收集板卡的相關(guān)資料了。 CH32V103是 沁恒微電子設(shè)計(jì)的一款RSIC-V的單片機(jī),使用了RSIC-V3A
    的頭像 發(fā)表于 11-15 08:45 ?8373次閱讀
    【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】CH32V103開發(fā)板資料及上電首測

    RTT大賽作品連載】AB32VG1評估板 音樂播放器

    RTT大賽作品連載】AB32VG1評估板 音樂播放器
    的頭像 發(fā)表于 11-12 21:11 ?6108次閱讀
    【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】AB32VG1評估板 音樂播放器

    RTT大賽作品連載】中科藍(lán)訊AB32VG1開發(fā)板開箱篇

    介紹電路原理圖分析接口說明,AB32VG1開發(fā)板是以中科藍(lán)訊(Bluetrum)公司推出的基于RISC-V架構(gòu)的高配置芯片AB5301A為核心所組成的?!?b class='flag-5'>RTT大賽作品連載】中科藍(lán)訊A
    的頭像 發(fā)表于 11-13 10:01 ?1w次閱讀
    【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】中科藍(lán)訊AB32VG1開發(fā)板開箱篇

    RTT大賽作品連載】 OLED顯示中文

    使用AB32VG1操作OLED顯示文字信息,包括漢字取模方式介紹,漢字顯示函數(shù)編寫.
    的頭像 發(fā)表于 12-06 09:25 ?8611次閱讀
    【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】 OLED顯示中文

    RTT大賽作品連載】 OLED顯示圖片

    使用AB32VG1驅(qū)動IIC顯示圖片。
    的頭像 發(fā)表于 12-06 09:17 ?6712次閱讀
    【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】 OLED顯示圖片

    RTT大賽作品連載】linkboy面向WCH移植(1)

    本文主要講解如何讓linkboy支持WCH32開發(fā)板進(jìn)行圖形化編程,主要是基于RT-Thread操作系統(tǒng)進(jìn)行vos移植。
    的頭像 發(fā)表于 12-18 22:10 ?6459次閱讀
    【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】linkboy面向WCH移植(1)

    【星核計(jì)劃】上傳FPGA大賽作品,領(lǐng)取電子發(fā)燒友專屬上傳福利!

    -FPGA大賽,本次大賽獎(jiǎng)勵(lì)豐厚,不僅有獎(jiǎng)金,還有電子發(fā)燒友論壇為參賽者準(zhǔn)備的上傳福利,按照下面規(guī)則上傳參賽作品即可獲得,還在等什么,快來參加吧??!作品上傳地址:【FPGA開發(fā)者項(xiàng)目
    發(fā)表于 05-21 15:01

    【文章連載】RT-Thread創(chuàng)新應(yīng)用大賽文章匯總

    作品集將會持續(xù)更新,歡迎大家訂閱關(guān)注~ 凡是在本貼參與回復(fù)者將獲得10積分(在不連續(xù)樓層評論均可獲得)專欄作者:RT-thread【RTT大賽作品
    發(fā)表于 10-11 15:13

    【有獎(jiǎng)活動】RT-Thread創(chuàng)新應(yīng)用大賽作品連載征文

    禮品:https://jifen.elecfans.com/index.html?文章標(biāo)題格式:【RTT大賽作品連載】+自擬內(nèi)容?文章作品
    發(fā)表于 10-21 18:49

    【參與有獎(jiǎng)】激揚(yáng)代碼,千元現(xiàn)金!RT-Thread主題征文大賽

    、通俗易懂-作品言之有物、內(nèi)容有一定實(shí)用性2)作品的數(shù)量—30分-發(fā)布優(yōu)質(zhì)原創(chuàng)作品數(shù)量越多,得分越高-專題類、連載類、合集類作品享受加分2.
    發(fā)表于 05-27 17:51

    國際程序設(shè)計(jì)大賽作品欣賞

    國際程序設(shè)計(jì)大賽作品欣賞,非常漂亮的程序
    發(fā)表于 08-18 17:26 ?0次下載

    全國虛擬儀器設(shè)計(jì)大賽獲獎(jiǎng)作品

    全國虛擬儀器設(shè)計(jì)大賽獲獎(jiǎng)作品
    發(fā)表于 10-16 09:07 ?44次下載
    全國虛擬儀器設(shè)計(jì)<b class='flag-5'>大賽</b>獲獎(jiǎng)<b class='flag-5'>作品</b>集

    2019年電子大賽優(yōu)秀作品匯總賞析

    2019年電子大賽優(yōu)秀作品匯總賞析
    發(fā)表于 07-22 11:32 ?65次下載