按下键时蜂鸣器发出声音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语言,学习日记——蜂鸣器开关实例相关推荐
- 学习日记——蜂鸣器开关实例(FPGA)
一.功能简介 1.蜂鸣器基本工作原理 蜂鸣器的发声原理由振动装置和谐振装置组成.FPGA输出高电平就发出响声,FPGA输出低电平就停止发声.蜂鸣器是一种最简单的发声元器件,它的应用也非常广泛,大都是作 ...
- 解决Vmware虚拟机下运行Linux电脑发出声音
在Vmware虚拟机下运行Linux,电脑会发出嘟嘟的声音,总结为以下两种问题: 1.启动Vmware打开Linux和关闭Linux发出声音 在Vmware虚拟机上安装了Linux系统,每次打开和关闭 ...
- 电感发出声音怎么解决_开关电源有“声音”可以这样解决-电源啸叫解决方案...
测试开关电源或在实验中有听到类似产品打高压不良的漏电声响或高压拉弧的声音不请自来:其声响或大或小,或时有时无;其韵律或深沉或刺耳,或变化无常者皆有. 音频噪声一般指开关电源自身在工作的过程中产生的,能 ...
- 认识蜂鸣器和声音奥秘
1.编程知识点(循环逻辑.变量) 2.模块知识点(蜂鸣器模块) 3.科学知识点(声音的奥秘) 环境:网络及手机/电脑 准备:小龟小车主控板 第一节:认识蜂鸣器和声音频率(约15分钟) [课程内容] 1 ...
- oracle change schema,使用pt-online-schema-change修改主键时注意
使用 pt-online-schema-change 做在线ddl最添加普通索引.列,修改列类型.添加默认值等使用比较常规,但涉及到要修改的是主键时就有点棘手.在我修改线上实例过程中,有这样的需求,不 ...
- java点击按钮发出声音_java – 按下按钮时播放声音-android
我有这个代码 package com.tct.soundTouch; import android.app.Activity; import android.media.MediaPlayer; im ...
- 【单片机】【让蜂鸣器发声】认识蜂鸣器,让蜂鸣器发出你想要的声音
单片机中的蜂鸣器 1. 三极管 三极管是一种控制电流的半导体器件,作用是把微弱信号放大成幅度值较大的电信号(射频方法),也用作无触点开关(用作开关).放大的原理参考:三极管原理-导通条件_坚持努力,冲 ...
- 第八章 让开发板发出声音:蜂鸣器驱动读后感
蜂鸣器是s3c6410开发板上带的一个硬件设备,可以通过向寄存器写入特定的值来控制蜂鸣器发出尖叫声. 在前面的章节编写了两个完整的linux驱动:word_count驱动和led驱动,两个有一共同点就 ...
- 发布一个jquery插件--在Web下输入密码时提示大写锁定键(2012-05-03 10:20最后修改)...
功能介绍: 在Web下输入密码时提示大写锁定键,封装成jq插件方便有需要的同学! 使用: $("#txtPWD").capsLockTip(); 截图预览: 代码(2012-05- ...
- [转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法
[转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法 参考文章: (1)[转] linux下shell ...
最新文章
- 使用freemarker插入多行数据到word中
- Ubuntu下设置电信拨号上网(10.04版)
- android studio常用适配器,从ListView(Android Studio)的自定义适配器中的U...
- YaaS,we can!
- 受JAAS保护的JAX-RS端点
- Oracle数据库基础1-数据类型与约束
- linux 基础 VIM 编辑器
- WebPlotDigitizer使用教程
- word参考文献乱码问题
- 批量识别PDF文件(图片类型)中的文字
- 杨辉三角c语言实验收获体会,实验感想与心得体会简短
- 提升数据驱动能力的意义
- 离开公司你什么都不是
- 微信小程序生成海报并保存到本地(附带二维码生成)
- docker-compose安装kafka
- 片上网络之论文随便看看
- saltstack学习视频—老男孩—超详细—网盘下载
- 打印机简体打出繁体处理方法
- 兴趣图谱必将重塑社交网络及电子商务
- 中国剩余定理拓展中国剩余定理