<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STEP FPGA驅動(dòng)無(wú)源蜂鳴器模塊

STEP FPGA驅動(dòng)無(wú)源蜂鳴器模塊

作者: 時(shí)間:2023-11-27 來(lái)源:電子森林 收藏

硬件說(shuō)明

蜂鳴器的分類(lèi):
按其結構主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類(lèi)型:

本文引用地址:http://dyxdggzs.com/article/202311/453304.htm
  • 電磁式蜂鳴器由振蕩器、電磁線(xiàn)圈、磁鐵、振動(dòng)膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過(guò)電磁線(xiàn)圈,使電磁線(xiàn)圈產(chǎn)生磁場(chǎng),振動(dòng)膜片在電磁線(xiàn)圈和磁鐵的相互作用下,周期性地振動(dòng)發(fā)聲。
  • 壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構成,當接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號,阻抗匹配器推動(dòng)壓電蜂鳴片發(fā)聲。

按是否帶有信號源分為有源蜂鳴器和無(wú)源蜂鳴器兩種類(lèi)型:

  • 有源蜂鳴器只需要在其供電端加上額定直流電壓,其內部的震蕩器就可以產(chǎn)生固定頻率的信號,驅動(dòng)蜂鳴器發(fā)出聲音。
  • 無(wú)源蜂鳴器可以理解成與喇叭一樣,需要在其供電端上加上高低不斷變化的電信號才可以驅動(dòng)發(fā)出聲音。


本章節和大家一起學(xué)習無(wú)源蜂鳴器的驅動(dòng),FPGA或單片機的GPIO口驅動(dòng)能力弱,不能直接驅動(dòng)無(wú)源蜂鳴器,常用的蜂鳴器驅動(dòng)電路如下:

蜂鳴器使用NPN三極管(9013)驅動(dòng),三極管當開(kāi)關(guān)用,當基極電壓拉高時(shí),蜂鳴器通電,當基極電壓拉低時(shí),蜂鳴器斷電,FPGA控制GPIO口給三極管的基極輸出不同頻率的脈沖信號,蜂鳴器就可以發(fā)出不同的音節。
不同音節與蜂鳴器震蕩頻率的對應關(guān)系如下:

我們使用PWM的方法(關(guān)于PWM的說(shuō)明,快速入門(mén)中的脈沖發(fā)生器章節有詳細的介紹),使用計數器對系統時(shí)鐘進(jìn)行分頻,改變計數器的計數終值從而實(shí)現調節PWM信號頻率的目的,使用PWM信號控制蜂鳴器電路。


Verilog代碼

// --------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------
// Module: Beeper
// 
// Author: Step
// 
// Description: Beeper
// --------------------------------------------------------------------
// Code Revision History :
// --------------------------------------------------------------------
// Version: |Mod. Date:   |Changes Made:
// V1.0     |2016/04/20   |Initial ver
// --------------------------------------------------------------------
module Beeper
(
input					clk_in,		//系統時(shí)鐘
input					rst_n_in,	//系統復位,低有效
input					tone_en,	//蜂鳴器使能信號
input			[4:0]	tone,		//蜂鳴器音節控制
output	reg				piano_out	//蜂鳴器控制輸出)
;
/*
無(wú)源蜂鳴器可以發(fā)出不同的音節,與蜂鳴器震動(dòng)的頻率(等于蜂鳴器控制信號的頻率)相關(guān),
為了讓蜂鳴器控制信號產(chǎn)生不同的頻率,我們使用計數器計數(分頻)實(shí)現,不同的音節控制對應不同的計數終值(分頻系數)
計數器根據計數終值計數并分頻,產(chǎn)生蜂鳴器控制信號
*/
reg [15:0] time_end;//根據不同的音節控制,選擇對應的計數終值(分頻系數)
//低音1的頻率為261.6Hz,蜂鳴器控制信號周期應為12MHz/261.6Hz = 45871.5,
//因為本設計中蜂鳴器控制信號是按計數器周期翻轉的,所以幾種終值 = 45871.5/2 = 22936
//需要計數22936個(gè),計數范圍為0 ~ (22936-1),所以time_end = 22935
always@(tone) begin
	case(tone)
		5'd1:	time_end =	16'd22935;	//L1,
		5'd2:	time_end =	16'd20428;	//L2,
		5'd3:	time_end =	16'd18203;	//L3,
		5'd4:	time_end =	16'd17181;	//L4,
		5'd5:	time_end =	16'd15305;	//L5,
		5'd6:	time_end =	16'd13635;	//L6,
		5'd7:	time_end =	16'd12147;	//L7,
		5'd8:	time_end =	16'd11464;	//M1,
		5'd9:	time_end =	16'd10215;	//M2,
		5'd10:	time_end =	16'd9100;	//M3,
		5'd11:	time_end =	16'd8589;	//M4,
		5'd12:	time_end =	16'd7652;	//M5,
		5'd13:	time_end =	16'd6817;	//M6,
		5'd14:	time_end =	16'd6073;	//M7,
		5'd15:	time_end =	16'd5740;	//H1,
		5'd16:	time_end =	16'd5107;	//H2,
		5'd17:	time_end =	16'd4549;	//H3,
		5'd18:	time_end =	16'd4294;	//H4,
		5'd19:	time_end =	16'd3825;	//H5,
		5'd20:	time_end =	16'd3408;	//H6,
		5'd21:	time_end =	16'd3036;	//H7,
		default:time_end =	16'd65535;	
	endcaseend reg [17:0] time_cnt;//當蜂鳴器使能時(shí),計數器按照計數終值(分頻系數)計數
	always@(posedge clk_in or negedge rst_n_in) begin
	if(!rst_n_in) begin
		time_cnt <= 1'b0;
	end else if(!tone_en) begin
		time_cnt <= 1'b0;
	end else if(time_cnt>=time_end) begin
		time_cnt <= 1'b0;
	end else begin
		time_cnt <= time_cnt + 1'b1;
	endend //根據計數器的周期,翻轉蜂鳴器控制信號
	always@(posedge clk_in or negedge rst_n_in) begin
	if(!rst_n_in) begin
		piano_out <= 1'b0;
	end else if(time_cnt==time_end) begin
		piano_out <= ~piano_out;	//蜂鳴器控制輸出翻轉,兩次翻轉為1Hz
	end else begin
		piano_out <= piano_out;
	end
	end 
	endmodule

小結

本節主要為大家講解了蜂鳴器的不同類(lèi)型及無(wú)源蜂鳴器的驅動(dòng)原理,需要大家掌握的同時(shí)自己創(chuàng )建工程,通過(guò)整個(gè)設計流程,生成FPGA配置文件加載測試。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>