按下键时蜂鸣器发出声音c语言,学习日记——蜂鸣器开关实例
一、功能簡介
1、蜂鳴器基本工作原理
蜂鳴器的發聲原理由振動裝置和諧振裝置組成。FPGA輸出高電平就發出響聲,FPGA輸出低電平就停止發聲。蜂鳴器是一種最簡單的發聲元器件,它的應用也非常廣泛,大都是作為報警或發聲提醒裝置。
2、蜂鳴器分類
按構造方式:
電磁式蜂鳴器:主要是利用通電導體會產生磁場的特性用一個固定的永久磁鐵與通電導體產生磁力推動固定在線圈上的鼓膜由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產生的音頻信號電流通過電磁線圈,使電磁線圈產生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發聲。
壓電式蜂鳴器:壓電式蜂鳴器用的是壓電材料,即當受到外力導致壓電材料發生形變時壓電材料會產生電荷同樣,當通電時壓電材料也會發生形變。壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成,多諧振蕩器由晶體管或集成電路構成。接通電源后(1.5~15V直流工作電壓)多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發聲。
按驅動方式:
有源蜂鳴器:這里的“源”不是指電源。而是指震蕩源。 有源蜂鳴器內部帶震蕩源,所以一通電就會叫。
無源蜂鳴器:無源蜂鳴器內部不帶震蕩源,所以如果用直流信號無法令其鳴叫。必須用2K~5K的方波去驅動它。 有源蜂鳴器往往比無源的貴,就是因為里面含有震蕩電路。
按封裝方式:
DIP BUZZER(插針蜂鳴器)
SMD BUZZER(貼片式蜂鳴器)
按電流方式
直流蜂鳴器
交流蜂鳴器
3、電路分析
在下面的電路圖中,展示了單片機中的蜂鳴器工作方式,通過調整P23口的高低電平,來實現三極管的開關作用,之所以通過三極管的發射極引導電流進入集電極,而不是用P23直接加到蜂鳴器上,是因為單片機的功率很小,雖然可以輸出很高的電壓,但是是無法驅動這種功率器件的。當P23口輸出高電平(5V)時,VCC即電源也是5V,此時三極管沒有導通,所以蜂鳴器無反應,當輸出低電平時,發射極電壓遠大于基極,電流從發射極流入集電極,蜂鳴器震動。
下面這個電路是 SP6 板上蜂鳴器的電路原理圖,BEEP 網絡連接到 FPGA 的 IO 上, 當 BEEP = 1 時,三極管 Q1 的BE 導通,則 CE 也導通,那么 U4 的 2 端直接接地,因此在它 兩端有 5V 的電壓,那么蜂鳴器就發聲了。同理,BEEP = 0時,Q1 截止,U4 的 2 端相當于開路,則蜂鳴器不會發出聲音。
我們將蜂鳴器和FPGA連接,當I/O口輸出為1的時候,蜂鳴器發聲,當I/O輸出為0的時候,蜂鳴器不發聲,為了實現此流程,我們必須使FPGA的I/O口輸出一個占空比為50%的PWM的信號,讓蜂鳴器間歇性地發出聲響。如果頻率高,則聲音就尖銳急促。如果頻率低,則聲音就低沉平緩。
二、例程說明
我們通過一個撥碼開關做控制,讓撥碼開關的 ON 或 OFF 狀態相應的去控制蜂鳴器的發聲與不發聲。撥碼開關 SW3的電路如下圖所示。撥碼開關與FPGA 相連接的 SW0 信號的電平值取決于撥碼開關當前的位置,若它連接了 2-3腳,那么 SW0就是高電平狀態,若它連接了 3-4腳,就是低電平狀態。
實物圖如下所示:
綜上所述,當撥碼開關處于ON狀態時,SW0輸出低電平;當撥碼開關處于OFF狀態時,SW0輸出高電平。
三、代碼解析
module cy4(
input ext_clk_25m, //外部輸入 25MHz 時鐘信號
input ext_rst_n, //外部輸入復位信號,低電平有效
input[0:0] switch, //撥碼開關 SW3 輸入,ON -- 低電平;OFF -- 高電平
output reg beep //蜂鳴器控制信號,1--響,0--不響
);
//-------------------------------------
//蜂鳴器發聲控制
always @ (posedge ext_clk_25m or negedge ext_rst_n)
if(!ext_rst_n) beep <= 1'b0;
else if(!switch[0]) beep <= 1'b1; //蜂鳴器響
else beep <= 1'b0; //蜂鳴器不響
endmodule
module:模塊名稱為cy4,包含四個輸入輸出
input:后加輸入信號ext_clk_25m為外部輸入 25MHz 時鐘信號
input:ext_rst_n為外部輸入復位信號,低電平有效。當輸入復位信號ext_rst_n為低電平時,即復位狀態。無論輸入時鐘ext_clk_25m是否運行,輸出信號始終保持低電平。輸入復位信號ext_rst_n為高電平時,即退出復位。
input[0:0] switch:input [:] ;撥碼開關的名稱為switch此處有一位。
output后加輸出信號reg beep為蜂鳴器控制信號。高電平的時候響,低電平的時候不響。
這段這段代碼中,當復位信號為低電平的時候,也就是復位按鍵被按下的
時候,beep 信號為低電平,即蜂鳴器不發聲。而當 ext_rst_n 為高電平的時候,也就是系統正常運行時,蜂鳴器控制信號 beep 的高低電平狀態則由撥碼開關switch[0]決定,即由撥碼開關 SW3 的狀態決定。當 SW3 處于 ON 狀態(低電平)時,蜂鳴器發聲;當 SW3 處于 OFF狀態(高電平)時,蜂鳴器不發聲。
四、打開工程
1、可以根據我之前的博客,重新新建工程,并且編寫代碼。
2、若有已有工程,我們可以有兩種方式打開工程
(1)在文件夾中找到我們需要的文件,雙擊該文件直接啟動Quartus II,打開該工程。
(2)首先打開Quartus II,點擊左上角的Fire然后點擊Open Project菜單命令。
找到我們需要的文件,然后點擊打開即可。
打開工程之后,我們可以在Quartus II,Project Navigator窗口雙擊查看工程源代碼。
五、下載配置操作
1、開啟 Programmer 界面
連接好 USB Blaster 下載線。給 SF-CY4 開發板上電,同時打開我們所需要的工程(雙擊cy4.qpf)。如圖所示,點擊菜單欄的 Programmer 按鈕,進入下載配置頁面
進入下載頁面如圖所示。確認“Mode”選項為“JTAG”,確認 File 列下的下載文件名稱為“output_files/cy4.sof”,勾選“Program/Configure”。
2、識別 USB-Blaster
確認 Quartus II 是否識別了 USB Blaster 下載線。若沒有識別,則點擊上圖左上角 的“Hardware Setup…”。 如圖所示,在彈出的 Hardware Setup 頁面里,選擇當前硬件為 USB Blaster,然后close。如果當前硬件里面沒有USB Blaster選項,首先確認硬件上是否已經把USB Blaster和 PC連接好,然后再嘗試多次拔插一下看看,或者重新啟動 Quartus II 軟件看看。
如果始終找不到可以按一下驅動是否安裝完成。參考博客https://blog.csdn.net/weixin_30548917/article/details/97838665
3、執行在線下載操作
最后,前面的所有操作都完成后,直接點擊右側的 Start 按鈕就可以啟動下載操作,觀察左上角的 Process 是否會從 0 到 100%完成下載。
下載完成后,我們波動撥碼開關,可以聽到,當我們的開關處于ON狀態時,可以聽到蜂鳴器發出聲音,當開關處于OFF狀態時,蜂鳴器不發聲。
參考連接
https://www.bilibili.com/video/BV1J741187Dt?p=9
https://blog.csdn.net/weixin_30548917/article/details/97838665
總結
以上是生活随笔為你收集整理的按下键时蜂鸣器发出声音c语言,学习日记——蜂鸣器开关实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】基于Python的百度迁
- 下一篇: 单片机 架构 程序 经验总结_单片机“死