几种驱动蜂鸣器的编程示例
如何有效编程单片机有源蜂鸣器驱动
如何有效编程单片机有源蜂鸣器驱动
蜂鸣器是很常见的设备,分为无源和有源两种。
根据项目需求选择不同类型的蜂鸣器。
最近的项目里有用到有源蜂鸣器对有源蜂鸣器。
还是老一套,把电路板画完,接着编程。
在项目中原理图如下:
如果不能保证I/O的输出性能可以根据情况增加上拉或者下拉电阻。
切入正题:在程序里面这个蜂鸣器的驱动就是个高低电平驱动。
高电平三极管导通、蜂鸣器发声,低电平三极管关断、蜂鸣器不发声。
这的确很简单,程序上最开始我是这样写的:
当然,如果单片机没有很好的I/O跳变函数也可以这样修改:
这里稍作解释:
1)。
C# 调用主板蜂鸣器四种方法
C#调用主板蜂鸣器四种方法1.Beep的报警实现//添加引用using System.Runtime.InteropServices;//引用函数[DllImport("user32.dll")]public static extern int MessageBeep(uint uType); uint beepI=0x00000030;//发出不同类型的声音的参数如下://Ok=0x00000000,//Error=0x00000010,//Question= 0x00000020,//Warning=0x00000030,//Information= 0x00000040//然后在程序中调用MessageBeep(beepI);2.调用Microsoft.ViualBase中的Beep():1.先引入命名空间:using Microsoft.VisualBasic;2.调用:Interaction.Beep();在编译时注意要引用Microsoft.VisualBasic.dll程序集,否则编译不能通过。
另外,如果是Console应用,可以用Console.WriteLine(”\a”);来代替Beep()。
3.通过主板蜂鸣器发出蜂鸣[DllImport("kernel32.dll",EntryPoint="Beep")]//第一个参数是指频率的高低,越大越高,第二个参数是指响的时间多长public static extern int Beep(int dwFreq,int dwDuration);private void button1_Click(object sender, System.EventArgs e){Beep(500,100);}4.用PlaySound(string pszSound,int hmod,int fdwSound)来播放声音[DllImport("winmm.dll")]public static extern bool PlaySound(string pszSound,int hmod,int fdwSound);public const int SND_FILENAME=0x00020000;public const int SND_ASYNC=0x0001;PlaySound("alarm8.wav",0,SND_ASYNC|SND_FILENAME);注:笔记本时直接调用的就是音箱了,如果静音也不会响。
单片机蜂鸣器控制程序和驱动电路典型设计案例
单片机蜂鸣器控制程序和驱动电路典型设计案例[前言]蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。
压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。
蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。
压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。
按照驱动方式分为有源蜂鸣器和无源蜂鸣器。
这里的有源和无源不是指电源,而是振荡源。
有源蜂鸣器内部带了振荡源,如图9-8 所示中,给了BUZZ 引脚一个低电平,蜂鸣器就会直接响。
而无源蜂鸣器内部是不带振荡源的,要让他响必须给500Hz~4.5KHz 之间的脉冲频率信号来驱动它才会响。
有源蜂鸣器往往比无源蜂鸣器贵一些,因为里边多了振荡电路,驱动发音也简单,靠电平就可以驱动,而无源蜂鸣器价格比较便宜,此外无源蜂鸣器声音频率可以控制,而音阶与频率又有确定的对应关系,因此就可以做出来do re mi fa sol la si的效果,可以用它制作出简单的音乐曲目,比如生日歌、两只老虎等等。
图9-8 蜂鸣器电路原理图我们来看一下图9-8 的电路,蜂鸣器电流依然相对较大,因此需要用三极管驱动,并且加了一个100 欧的电阻作为限流电阻。
此外还加了一个D4 二极管,这个二极管叫做续流二极管。
我们的蜂鸣器是感性器件,当三极管导通给蜂鸣器供电时,就会有导通电流流过蜂鸣器。
而我们知道,电感的一个特点就是电流不能突变,导通时电流是逐渐加大的,这点没有问题,但当关断时,经电源-三极管-蜂鸣器-地这条回路就截断了,过不了任何电流了,那么储存的电流往哪儿去呢,就是经过这个D4 和蜂鸣器自身的环路来消耗掉了,从而就避免了关断时由于电感电流造成的反向冲击。
接续关断时的电流,这就是续流二极管名称的由来。
蜂鸣器经常用于电脑、打印机、万用表这些设备上做提示音,提示音一般也很简单,就是简单发出个声音就行,我们用程序简单做了个4KHZ 频率下的发声和1KHZ 频率下的发声程序,同学们可以自己研究下程序,比较下实际效果。
蜂鸣器及范例
下面是电磁式蜂鸣器的外形图片及结构图。
程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。
二、蜂鸣器列子下面我们举几个简单的单片机驱动蜂鸣器的编程和电路设计的列子。
1、简单的蜂鸣器实验程序:本程序通过在P3.7输出一个音频范围的方波,驱动实验板上的蜂鸣器发出蜂鸣声,其中DELAY延时子程序的作用是使输出的方波频率在人耳朵听觉能力之内的20KHZ以下,如果没有这个延时程序的话,输出的频率将大大超出人耳朵的听觉能力,我们将不能听到声音。
更改延时常数,可以改变输出频率,也就可以调整蜂鸣器的音调。
大家可以在实验中更改#228为其他值,听听蜂鸣器音调的改变。
ORG 0000HAJMP MAIN ;跳转到主程序ORG 0030HMAIN: CPL P3.7 ;蜂鸣器驱动电平取反LCALL DELAY ;延时AJMP MAIN ;反复循环DELAY:MOV R7,#228 ;延时子程序,更改该延时常数可以改变蜂鸣器发出的音调DE1: DJNZ R7,DE1RETEND2、倒车警示音实验程序:我们知道各种卡车、货柜车在倒车时候,会发出倒车的蜂鸣警示提示音,同时警示黄灯也同步闪烁,提醒后面的人或车辆注意。
本实验例程就实现倒车警示功能,通过实验板上的蜂鸣器发出警示音,同时通过实验板上P1.2和P1.5上的两个黄色发光二极管来发出黄色警示灯。
ORG 0000HAJMP START ;跳转到初始化程序ORG 0033HSTART:MOV SP,#60H ;SP初始化MOV P3,#0FFH ;端口初始化MAIN: ACALL SOUND ;蜂鸣器发声ACALL YS500M ;延时AJMP MAINSOUND:MOV P1,#11011011B ;点亮2个警示黄色发光二极管MOV R2,#200 ;响200个周期SND1: CLR P3.7 ;输出低电平T1导通,蜂鸣器响ACALL YS1ms ;延时SETB P3.7 ;输出高电平T1截止,蜂鸣器不响ACALL YS1ms ;延时DJNZ R2,SND1MOV P1,#0FFH ;熄灭黄色警示灯RETYS1ms: ;1ms延时子程序MOV R0,#2YL1: MOV R1,#250 ;改变R0的数值可改变声音频率DJNZ R1,$DJNZ R0,YL1RETYS500M: ;500ms延时子程序MOV R0,#6YL2: MOV R1,#200YL3: MOV R2,#250DJNZ R2,$DJNZ R1,YL3DJNZ R0,YL2RETEND3、“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K 1按钮时候,蜂鸣器发出“叮咚”音乐声,是一个比较实用的程序。
单片机驱动蜂鸣器音乐生日快乐的播放程序
单片机驱动蜂鸣器音乐生日快乐的播放程序;音乐生日快乐的播放;P1.6是喇叭输出端口,用杜邦线连接到J42插针 B1针脚,喇叭即播放音乐numtim equ 20hgewei equ 21hshiwei equ 22hscanled equ 23horg 000hjmp startorg 00bhjmp tim0org 100hstart:; JB P3.7,$ ;检测播放按键是否按下mov tmod,#00000001bmov ie,#10000010bmov numtim,#01h start0:mov 30h,#00hnext:mov a,30hmov dptr,#tablemovc a,@a+dptrmov r2,ajz end0anl a,#0fhmov r5,amov a,r2swap aanl a,#0fhjnz singclr tr0jmp d1sing: dec amov 22h,arl amov dptr,#table1movc a,@a+dptrmov th0,amov 21h,amov a,22hrl ainc amovc a,@a+dptrmov tl0,amov 20h,asupplies and get to use, the registration of company assets, record maintenance, maintenance of effective management; 2.6 cost management: preparation of the annual administrative budget, control administrative costs, determine the scope of cost-sharing, sharing the office expenses by month; 2.7 information management: responsible for documents,materials, information and publicity, communication links, and ensure promptly, ranking officers reporting; responsible for the collation and analysis of information, provide the basis for corporate decisions; corporate culture construction, planning, editing, internal publications;2.8 vehicle management: responsible for the management, repairs and maintenance of vehicles; 2.9 legal disputes: the company responsible for the handling of disputes; 2.10 other: maintaining normal working order, and security. General Manager General Manager job description 1, 1.1 develop strategies and plans: according to company strategic planning, establish the annual management plan, reported to the Board of Directors for approval; 1.2 decomposition measures: according to the Board of Directors issued the annual management plan, annual index of decomposition, through the Organization of coordination mandate incharge of the Department Organization and implementation, ensuring comprehensive implementation of annual indicators; 1.3 inspection: convenes the General Manager Office, throughsetb tr0d1:lcall delayinc 30hjmp nextend0:clr tr0jmp start0tim0:push accpush pswmov tl0,20hmov th0,21hcpl p1.6 ;由该口输出音频数据pop pswpop accretidelay: mov r7,#02hd2: mov r4,#187d3: mov r3,#248djnz r3,$djnz r4,d3djnz r7,d2djnz r5,delayrettable1: ;音乐码表dw 64260,64400,64524,64580 dw 64684,64777,64820,64898 dw 64968,65030,65058,65110 dw 65157,65178,65217table:db 82h,01h,81h,94h,84h db 0b4h,0a4h,04hdb 82h,01h,81h,94h,84hdb 0c4h,0b4h,04hdb 82h,01h,81h,0f4h,0d4hdb 0b4h,0a4h,94hdb 0e2h,01h,0e1h,0d4h,0b4hdb 0c4h,0b4h,04hdb 82h,01h,81h,94h,84hdb 0b4h,0a4h,04hdb 82h,01h,81h,94h,84hdb 0c4h,0b4h,04h supplies and get to use, the registration of company assets, record maintenance, maintenance of effective management;2.6 cost management: preparation of the annual administrative budget, control administrative costs, determine the scope of cost-sharing, sharing the office expenses by month; 2.7 information management: responsible for documents, materials, information and publicity, communication links, and ensure promptly, ranking officers reporting; responsible for the collation and analysis of information, provide the basis for corporate decisions; corporate culture construction, planning, editing, internal publications; 2.8 vehicle management: responsible for the management, repairs and maintenance of vehicles; 2.9 legal disputes: the company responsible for the handling of disputes; 2.10 other: maintaining normal working order, and security. General Manager General Manager job description 1, 1.1 develop strategies and plans: according to company strategic planning, establish the annual management plan, reported to the Board of Directors for approval; 1.2 decomposition measures: according to the Board of Directors issued the annual management plan, annual index of decomposition, through the Organizationof coordination mandate in charge of the Department Organization and implementation, ensuring comprehensive implementation of annual indicators; 1.3 inspection: convenes the General Manager Office, through db 82h,01h,81h,0f4h,0d4hdb 0b4h,0a4h,94hdb 0e2h,01h,0e1h,0d4h,0b4hdb 0c4h,0b4h,04hdb 00TABLE2:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90Hend另外的一个C文件。
蜂鸣器程序
要求:让蜂鸣器响,频率为1KHZ1、延时子程序实现汇编: ORG 0000HSJMP STARTORG 0030HSTART : MOV P2,#11110111B //P2^3控制蜂鸣器 LCALL DELAYMOV P2,#11111111BLCALL DELAYAJMP STARTDELAY :MOV R5,#125L1:NOP //()ms us us us 5.0125211=⨯++ NOPDJNZ R5,L1RET //返回主程序ENDC 语言:#include 〈reg52.h>#define uint unsigned int //宏定义void delay(uint z ) //延时0。
5ms{uint i,j ;for(i=z ;i 〉0;i ——)for(j=55;j 〉0;j ——);}sbit beep=P2^3; //位定义void main(){while (1) //大循环{delay (1); //延时0.5msbeep=~beep; //取反}}2、用定时器1、方式2实现延时方式2最大定时:256⨯1us=0.256ms所以选择定时0。
25ms ,那么循环2次实现0。
5ms 延时 计数值0.25ms/1us=250则256-250=06H汇编: ORG 0000HSJMP STARTORG 0030HSTART:MOV P2,#11110111BLCALL DELAYMOV P2,#11111111BLCALL DELAYAJMP STARTDELAY:MOV R5,#02H //置计数循环初值2 MOV TMOD,#20H //置定时器1方式2MOV TH1,#06H //置定时器初值MOV TL1,#06HSETB TR1 //启动定时器1LP1:JBC TF1,LP2 //查询计数溢出SJMP LP1 //未溢出继续计数LP2:DJNZ R5,LP1 //未到0。
嵌入式蜂鸣器响的程序语句
嵌入式蜂鸣器响的程序语句摘要:1.嵌入式蜂鸣器的概念与作用2.嵌入式蜂鸣器响的程序语句编写方法3.实例:使用Arduino 编写嵌入式蜂鸣器响的程序4.测试与调试正文:一、嵌入式蜂鸣器的概念与作用嵌入式蜂鸣器是一种可以发出声音的电子元件,通常用于警报、提示等场景。
在各种电子设备中,嵌入式蜂鸣器被广泛应用,例如手机、电脑、汽车等。
通过编写程序控制蜂鸣器响,可以使其发出特定的声音,从而实现人机交互或设备间的通信。
二、嵌入式蜂鸣器响的程序语句编写方法要编写嵌入式蜂鸣器响的程序,首先需要了解所使用的微控制器或开发板的相关接口和寄存器。
以Arduino 为例,可以使用PWM(脉冲宽度调制)输出接口来控制蜂鸣器的响度。
以下是一个简单的示例:```c// 引入所需库#include <Wire.h>// 设置蜂鸣器引脚const int buzzerPin = 9;void setup() {// 初始化蜂鸣器引脚为输出pinMode(buzzerPin, OUTPUT);}void loop() {// 控制蜂鸣器响的程序语句digitalWrite(buzzerPin, HIGH); // 使蜂鸣器响delay(1000); // 延时1 秒digitalWrite(buzzerPin, LOW); // 使蜂鸣器停止响delay(1000); // 延时1 秒}```三、实例:使用Arduino 编写嵌入式蜂鸣器响的程序1.将蜂鸣器连接到Arduino 开发板上。
通常,蜂鸣器的正极连接到开发板的数字引脚,负极连接到地(GND)。
2.将编写好的程序上传到Arduino。
3.上传成功后,开发板会自动执行程序,蜂鸣器会按照程序设定的频率和时长响。
四、测试与调试在实际应用中,可能需要根据不同的场景和需求对蜂鸣器响的程序进行调整。
可以通过修改程序中的延时值、蜂鸣器引脚等参数来进行调试。
蜂鸣器BUZZER的驱动程序设计与原理
蜂鸣器BUZZER的驱动程序设计与原理
1.直流蜂鸣器驱动程序
直流蜂鸣器的驱动是非常简单的,只要在其两端施加额定工作电压,蜂鸣器就发声。
以NPN三极管驱动电路为例,只要在三极管的基极接入高电平,蜂鸣器就能发声。
例如:蜂鸣器每秒钟发声100mS时,三极管基极的驱动波形如下图所示。
2.交流蜂鸣器驱动程序
交流蜂鸣器的驱动相对复杂一点,要在蜂鸣器两端施加额定电压的方波。
蜂鸣器的工作频率范围通常是很窄的,这意味着一个蜂鸣器通常只能工作在其额定频率才会有良好的发声效果(包括声压和音色等)。
有些蜂鸣器的工作频率范围是比较宽的,这样就可以通过调整驱动方波的频率而使蜂鸣器发出音乐,演奏歌曲。
例如:蜂鸣器每秒钟发声100mS时,三极管基极的驱动波形如下图所示。
3.设计原理
本实例采用LPC2103的定时器1产生PWM脉冲控制8050导通与闭合,
使交流蜂鸣器两端产生方波信号,驱动蜂鸣器发声。
三个LED分别显示高、中和低音的状态。
电路原理如下图所示。
END。
Arduino 蜂鸣器
蜂鸣器模块一、相关介绍相信大家对蜂鸣器都不会陌生,我们在很多方案中都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。
这里对单片机在蜂鸣器驱动上的应用作一下描述。
二、驱动方式惯用驱动蜂鸣器的方式有两种:一种是PWM 输出口直接驱动,另一种是利用I/O 定时翻转电平产生驱动波形对蜂鸣器进行驱动。
PWM 输出口直接驱动是利用PWM 输出口本身可以输出一定的方波来直接驱动蜂鸣器。
在单片机的软件设置中有几个系统寄存器是用来设置PWM 口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM 输出,PWM 输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。
比如频率为2000Hz的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM 的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz 的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了。
而利用I/O 定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。
比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O 口每200μs 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。
三、模块使用大家看看到模块后应该明白,其实他非常方便使用,一个电源端,一个地端,还有一个就是信号输入端。
我们只要把电源、地线接好,那信号线接上IO口就行四、模块功能测试硬件要求Arduino控制器× 1USB数据线×1蜂鸣器模块× 1可调电位器(10K)× 1我们下面的测试例子主要是学会如何控制蜂鸣器的发声,和一些简单的应用,当然还有用两种不同的驱动方式驱动蜂鸣器的发声,大家可以比较下效果,一方便以后的使用。
Arduino 蜂鸣器
蜂鸣器模块一、相关介绍相信大家对蜂鸣器都不会陌生,我们在很多方案中都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。
这里对单片机在蜂鸣器驱动上的应用作一下描述。
二、驱动方式惯用驱动蜂鸣器的方式有两种:一种是PWM 输出口直接驱动,另一种是利用I/O 定时翻转电平产生驱动波形对蜂鸣器进行驱动。
PWM 输出口直接驱动是利用PWM 输出口本身可以输出一定的方波来直接驱动蜂鸣器。
在单片机的软件设置中有几个系统寄存器是用来设置PWM 口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM 输出,PWM 输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。
比如频率为2000Hz的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM 的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz 的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了。
而利用I/O 定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。
比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O 口每200μs 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。
三、模块使用大家看看到模块后应该明白,其实他非常方便使用,一个电源端,一个地端,还有一个就是信号输入端。
我们只要把电源、地线接好,那信号线接上IO口就行四、模块功能测试硬件要求Arduino控制器× 1USB数据线×1蜂鸣器模块× 1可调电位器(10K)× 1我们下面的测试例子主要是学会如何控制蜂鸣器的发声,和一些简单的应用,当然还有用两种不同的驱动方式驱动蜂鸣器的发声,大家可以比较下效果,一方便以后的使用。
蜂鸣器驱动源代码
void PACA_Init(void); //累加器初始化子程序
/**********************************全局变量声明*******************************************/
) */
PACTL=0x40; // 16位脉冲累加器A使能,事件计数模式,对输入信号下降沿计数
/*
* 0x01000000
* ||||||||__脉冲累加器输入中断允许位,1-允许;0-禁止
* |||||||___脉冲累加器A溢出中断允许位,1-允许;0-禁止
* ||||||____
* |||||_____CLK1:CLK0]时钟选择位.00表示用定时器预分频时钟PCLK作为自由运行计数器时钟TIMCLK
void Delay(unsigned int loop_times)
{
unsigned int loop_i,loop_j;
for (loop_i=0; loop_i<loop_times; loop_i++)
{
for (loop_j=0; loop_j<500;loop_j++)
{
;
}
}
}
/****************************************
#define SEG_DD DDRA //段码口方向
#define DIG_DD DDRK //位码口方向
#define SEG_NUM PORTA //段码数据
#define DIG_NUM PORTK //位码数据
用esp32驱动有源蜂鸣器的c语言代码
用esp32驱动有源蜂鸣器的c语言代码下面是一个使用ESP32驱动有源蜂鸣器的简单示例代码:```c#include <stdio.h>#include <stdlib.h>#include "esp_system.h"#include "esp_log.h"#include "driver/gpio.h"#include "freertos/FreeRTOS.h"#include "freertos/task.h"#define BEEP_PIN GPIO_NUM_5void beep_task(void *pvParameters) {gpio_pad_select_gpio(BEEP_PIN);gpio_set_direction(BEEP_PIN, GPIO_MODE_OUTPUT);while (1) {gpio_set_level(BEEP_PIN, 1); // 使蜂鸣器响vTaskDelay(500 / portTICK_RATE_MS);gpio_set_level(BEEP_PIN, 0); // 停止蜂鸣器响vTaskDelay(500 / portTICK_RATE_MS);}}void app_main() {xTaskCreate(beep_task, "beep_task", 1024 * 2, NULL, 10, NULL);}```这个示例代码中使用了ESP-IDF开发框架来驱动ESP32的GPIO控制蜂鸣器。
在代码中,定义了 `BEEP_PIN` 宏来指定使用的GPIO引脚,然后在任务中循环控制GPIO的电平来驱动蜂鸣器的鸣叫。
请注意,使用ESP32的GPIO需要在驱动代码中进行正确的引脚初始化,并且需要在project_config / sdkconfig.h配置文件中定义适当的GPIO宏。
单片机驱动蜂鸣器的程序设计
时代农机TIMES AGRICULTURAL MACHINERY2019年第2期第46卷第2期Vol.46No.22019年2月Feb.2019摘要:驱动蜂鸣器是编程中的基本程序,从中能掌握单片机产生不同频率方波的编程方法。
关键词:编程;蜂鸣器;程序设计作者简介:纪瀚涛(1997-),男,辽宁大连人,大学本科,主要研究方向:机械电子工程。
单片机驱动蜂鸣器的程序设计纪瀚涛,王伟(沈阳工学院,辽宁抚顺113122)1可编程控制器运用MCS-51单片机,使用I/O 输出音频脉冲,脉冲经放大滤波后,驱动扬声器发声。
若要产生f 的频率,则需于T 时间内(其中T=1/f ),进行吸、放各一次,换言之,磁铁产生磁性、磁铁失去磁性的时间各为T /2,成为半周期。
2驱动蜂鸣器程序的编制如图1所示,由单片机的P3.7口联接一个NPN 型的三极管,并于蜂鸣器BUZ1相连接。
当P3.1口输出信号时,蜂鸣器会产生相应频率的奉命信号。
由单片机的P3.7口输出1kHz 的信号,持续0.1s ,停止0.5s ,则蜂鸣器发出0.1s 的“哔”的声音。
要产生1kHz 的频率,则半周期为0.5ms ,P3.7所送出的信号中,0.5ms 为高电平,0.5ms 为低电平。
若0.5ms 为高电平与0.5ms 为低电平为一组信号(总共1ms ),连续送出100组,即可得到1kHz 的声音约0.1s ;停止输出0.1s 后,再送出0.5s 的信号。
2.1电路图图12.2程序#include<reg51.h>sbit buzzer=P3^7;void delay (int );void pulse_BZ (int ,int ,int );//声明蜂鸣器发声函数main (){while (1){pulse_BZ (100,1,1);//蜂鸣器发声100×(0.5ms+0.5ms )=0.1sdelay (1000);//延迟1000×0.5ms=0.5s}}void delay (int x )//0.5ms 延迟函数{int i ,j ;for (i=0;i<x ;i++)for (j=0;j<60;j++);}void pulse_BZ (int count ,int TH ,int TL )//蜂鸣器发声函数{int i ;for (i=0;i<count ;i++)//计数count 次{buzzer=1;//输出高电平delay (TH );//延迟TH ×0.5msbuzzer=0;//输出低电平delay (TL );//延迟TL×0.5ms}}3结语运用MCS-51单片机控制驱动信号使蜂鸣器发出不同音调的声音,声音的频率由延时程序控制,频率越高,音调就越高;频率越低,音调越低。
嵌入式蜂鸣器响的程序语句
嵌入式蜂鸣器响的程序语句嵌入式蜂鸣器响的程序语句取决于具体的嵌入式系统和编程语言,以下是常见的两种实现方法:1. 使用Arduino的C/C++编程语言示例:```int buzzerPin = 9; // 设置蜂鸣器连接的引脚void setup() {pinMode(buzzerPin, OUTPUT); // 设置蜂鸣器引脚为输出模式}void loop() {digitalWrite(buzzerPin, HIGH); // 将蜂鸣器引脚置高电平(发出声音)delay(1000); // 延迟1秒digitalWrite(buzzerPin, LOW); // 将蜂鸣器引脚置低电平(关闭声音)delay(1000); // 延迟1秒}```2. 使用Raspberry Pi的Python编程语言示例:```pythonimport RPi.GPIO as GPIOimport timebuzzer_pin = 18 # 设置蜂鸣器连接的引脚GPIO.setmode(GPIO.BCM) # 设置引脚编号方式为BCMGPIO.setup(buzzer_pin, GPIO.OUT) # 设置蜂鸣器引脚为输出模式while True:GPIO.output(buzzer_pin, GPIO.HIGH) # 将蜂鸣器引脚置高电平(发出声音)time.sleep(1) # 延迟1秒GPIO.output(buzzer_pin, GPIO.LOW) # 将蜂鸣器引脚置低电平(关闭声音)time.sleep(1) # 延迟1秒```请注意,具体的引脚编号方式、引脚数值等可能需要根据实际情况进行调整。
蜂鸣器类代码
蜂鸣器类代码/*标题:蜂鸣器的使⽤电路:P1.0⼝接P11*/#include "sys.h"//包含延时函数头⽂件#include <reg52.h>#include "beep1.h"sbit beez = P2^1;//位声明,P2端⼝的第⼀位为蜂鸣器所⽤void beep1() //⾮空函数+函数名{while(1) //while死循环{beez = 1; //赋⾼电平delays(100); //调⽤延时函数beez = 0; //赋低电平delays(100); //同上}}//----------------------------------------------/*if not defined的简写为ifndef,c语⾔在对程序进⾏编译时,会先根据预处理命令进⾏“预处理”。
C语⾔编译系统包括预处理,编译和链接等部分。
*/#ifndef _BEEP1_H_ //先测试函数是否被宏定义过#define _BEEP1_H_void beep1(); //如果程序没有被定义过,定义函数//并编译程序段beep1#endif//终⽌if,条件指⽰符#endif的最主要⽬的是//防⽌头⽂件的重复包含和编译。
/*标题:蜂鸣器发出不同的⾳调电路:p2.1⼝接P11*/#include <reg52.h>#include "sys.h"#include "beep2.h"sbit beez = P2^1;void beep2(){int i;while(1){for(i = 0;i<1000;i++){beez = 0;delays(100);beez = 1;delays(100);}for(i = 0;i<1000;i++){beez = 0;delays(200);beez = 1;delays(200);}for(i = 0;i<1000;i++){beez = 0;delays(50);beez = 1;delays(50);}for(i = 0;i<1000;i++){beez = 0;delays(150);beez = 1;delays(150);}}}//----------------------------------------------#ifndef _BEEP2_H_#define _BEEP2_H_void beep2();#endif/*标题:蜂鸣器播放⾳乐电路:p2.1⼝接P11*/#include <reg52.h>#include "beep3.h"#include "sys.h"//⼋⽉桂花unsigned char code music_code[] ={0x18, 0x30, 0x1C , 0x10, //格式为:频率常数、节拍常数、频率常数、节拍常数0x20, 0x40, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x10 , 0x18,0x20, 0x15, 0x20 , 0x1C,0x20, 0x20, 0x20 , 0x26,0x40, 0x20, 0x20 , 0x2B,0x20, 0x26, 0x20 , 0x20,0x20, 0x30, 0x80 , 0xFF,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x80,0x20, 0x30, 0x1C , 0x10,0x20, 0x10, 0x1C , 0x10,0x20, 0x20, 0x26 , 0x20,0x2B, 0x20, 0x30 , 0x20,0x2B, 0x40, 0x20 , 0x15,0x1F, 0x05, 0x20 , 0x10,0x1C, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x30,0x20, 0x30, 0x1C , 0x10,0x18, 0x40, 0x1C , 0x20,0x20, 0x20, 0x26 , 0x40,0x13, 0x60, 0x18 , 0x20,0x15, 0x40, 0x13 , 0x40,0x18, 0x80, 0x00};unsigned char* pin;//频率unsigned char* pai;//节拍sbit beez = P2^1;void beep3(){int i,j;play://为goto所⽤,当程序执⾏到goto play时,重回此 pin = music_code;pai = pin+1;beez = 0;while(1){if(pin == 0x00)//if条件函数{//遇到结束符goto play;}if(pai == 0xff){//遇到休⽌符,等待⼀段时间delays(200000);}for(i=0;i<(*pai)*10;i++)//for嵌套{for(j=0;j<(*pin);j++){beez = ~beez;}}pin += 2;pai += 2;}}//------------------------------------------------#ifndef _BEEP3_H_#define _BEEP3_H_void beep3();#endif。
蜂鸣器驱动程序设计
蜂鸣器驱动课程设计专业:xxxxxxxxxxxxxx 班级:xxxxxxxxx学号:xxxxxxxxx姓名:xxxx设计题目:蜂鸣器驱动程序设计2016年12月目录一.任务 (2)1.目标 (2)2.环境 (2)3.需求: (2)二.总体设计 (2)1.处理流程 (2)2.模块介绍 (3)3.模块接口设计 (3)4.各个模块设计 (3)三.PWM蜂鸣器字符设备驱动 (3)1.模块设计 (3)1. 模块介绍 (3)2. 模块结构图 (4)2.接口设计 (4)1. 数据结构设计 (4)2. 驱动程序接口 (4)3.函数设计 (4)1.初始化函数 (5)2. 字符设备打开函数 (6)3. 字符设备关闭函数 (7)4. 模块卸载函数......................................................................................... (8)5. 文件操作接口函数 (8)四. PWM蜂鸣器字符设备驱动测试 (8)1.调用系统函数ioctl实现对蜂鸣器的控制 (8)五.tiny210开发板调试 (9)六.综合设计总结与思考 (10)一.任务1.目标:编写按键蜂鸣器驱动程序函数与测试文件,实现上位机与tiny210-SDK开发板的连接,利用函数实现对蜂鸣器通过按键来启动与关闭。
2.环境:①软件环境:windows 7 系统和VMware Workstation 软件②硬件环境:tiny210 开发板,内核部分Linux-3.0.8 ,交叉编译版本arm-linux-gcc-4.5.1-v6-vfp1Linux系统介绍:Linux是一种自由开发源码的类Unix操作系统,存在这许多不同的Linux 版本,但它们都使用了Linux内核。
Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
几种驱动蜂鸣器的编程示例
以下介绍几种在S3F9454/9444下驱动蜂鸣器的编程示例,供参考
A.第一种,普通IO高低电平驱动法 ;运行环境: S3F9454,Fosc= 3.2MHz无分频 ;P2.0为蜂鸣输出端口
;本例输出频率为4KHZ,即每250US一个周期,高低电平时间分别为125US BEEP: LD BTCON,#10100011B ;看门狗禁用 DI PUSH R5 PUSH R6 ;首先配置P2.0为普通推挽输出端口 AND P2CONL,#0FEH OR P2CONL,#02H LD R6,#0FAH ;R6设置输出方波个数,本例为250个(计时62.5MS) ONE_BEEP: LD R5,#27H ;R5为频率发生计时器,本例为近似125US(4KHZ) XOR P2,#01H _LOOP: DEC R5 JR NZ,_LOOP DEC R6 JR NZ,ONE_BEEP LD BTCON,#02H ;恢复看门狗运行 EI POP R6 POP R5 RET ;----------------------------------------------------------- B.利用P2.0配置为T0定时器匹配输出方式产生 ;注: 该方式可用于带多位数码显示扫描的软件中,可有效避免因蜂鸣器 ;输出而造成的数码显示抖动闪烁 ;因定时器T0被分配作为T0匹配输出定时器,所以本例中利用看门狗定时器 ;的实时计时器BTCNT作为数码显示实时扫描计时器 ;R0为蜂鸣时间长短计时器,由主调用程序进行予设置 ;运行环境: S3F9454,Fosc= 3.2MHZ无分频 ;P2.0为蜂鸣输出端口 ;本例输出频率为4KHZ,即每250US一个周期,高低电平时间分别为125US ;----------------------- BEEP: DI PUSH R1 PUSH T 0CON PUSH T0DATA ;在蜂鸣输出前首先扫描一次数码显示 CALL LED_SCAN OR P2CONL,#03H ;set P2.0 as T0 match output/every 12 5us LD T0CON,#10001000B ;set T0 input cLOCk=Fosc/8 LD T0DATA,#32H LD BTCON,#10100011B ;DISAble Watch-dog run, ;but btcnt clk input fxx/4096= 1.280ms NEXT_BEEP: LD R1,#0AH WAIT_CNT: OR BTCON,。