精华内容
下载资源
问答
  • 单片机控制蜂鸣器演奏音阶实例
    2021-05-19 17:09:26

    单片机可以控制蜂鸣器发声音

    蜂鸣器是非常常见的发音元器,音乐卡、报警装置、电子琴、各种小家电等都会用到。单片机的PWM功能可以设置输出不同频率的信号,所以我们可以利用单片机的PWM控制三极管的通断来推动蜂鸣器发声。

    069d8c3539ea352eb2d35e05771185f3.png

    当然,如果单纯控制方波信号的通断,只可以得到单调的“嘀”、“嘀”声。想要得到美妙的音乐,我们还需要控制音调、频率的变化,还有声音的强弱。把蜂鸣器的驱动电路改进一下,用三个三极管和两个单片机的IO来控制蜂鸣器。

    BZ_PWM:用于控制蜂鸣器的发音频率

    BZ_CONTROL:用于控制蜂鸣器的供电时间

    当BZ_CONTROL为低电平时,三极管Q2、Q3是截止的,蜂鸣器没有供电,不会发声。

    当BZ_CONTROL为高电平时,三极管Q2、Q3是导通的,蜂鸣器是否发声由BZ_PWM决定。

    电路中的电容C10很关键,因为电容C10有储能的效果,BZ_CONTROL转为低电平后,蜂鸣器的供电还可以由电容C10提供,电容电量减少,音量就会逐渐减小,形成蜂鸣声渐隐的和弦音效果。

    如果想实现变调的效果,就可以通过短时间内切换发出几种不同频率的蜂鸣声来实现。

    单片机控制蜂鸣器演奏音阶实例

    以4KHz频率的蜂鸣器为例,首先我们先定义Tf、Tv、F三个参数

    Tf:驱动频率给定持续时间,单位为毫秒(ms),BZ_PWM引脚控制

    Tv:蜂鸣器供电持续时间,单位为毫秒(ms),BZ_CONTROL引脚控制

    F:单片机输出PWM频率,单位为KHz,BZ_PWM引脚控制

    单声和弦音:短暂鸣响后音量渐隐

    F=4.0,Tv=100,Tf=300,因为Tf=300ms,蜂鸣器响的时间为300ms,但蜂鸣器供电只有100ms,所以,前100ms是正常发音,后200ms为音量渐隐的效果。

    两声错误提示和弦音:二升调,按音调分2个阶段

    F=3.8,Tv=200,Tf=200

    F=4.0,Tv=200,Tf=200

    因为前300ms频率为3.8KHz,后200ms频率为4KHz,所以听起来会有升调的效果。

    开机和弦音:三升调,按音调分3个阶段

    F=3.8,Tv=200,Tf=200

    F=4.0,Tv=200,Tf=200

    F=4.2,Tv=200,Tf=1500

    因为三声频率从3.8KHz升到4KHz再到4.2KHz,频率连续升高,最后一声的Tf时间较长,还有音量渐隐的效果。

    关机和弦音:三降调,按音调分3个阶段

    F=4.2,Tv=200,Tf=200

    F=4.0,Tv=200,Tf=200

    F=3.8,Tv=200,Tf=1500

    因为三声频率从4.2KHz升到4KHz再到3.8KHz,频率连续降低,最后一声的Tf时间较长,还有音量渐隐的效果。

    另外音乐是由Do,Re,Mi,Fa,So,La,Xi,Do几个音调组成的,电子琴上的按键对应着不同的音频频率,只要通过单片机的程序控制发声的频率和时间就演奏了哦!

    更多相关内容
  • 控制脉冲形成的代码电平取反过程中含有相应的延时二控制脉冲持续时间的代码持 续的时间时候常常和音乐的拍子有相关性。 最后在主程序中运行子程序通过读rom里面的数组来达到连续播放各种不同音调的音 ...
  • C51单片机控制蜂鸣器

    千次阅读 2022-02-07 23:34:25
    单片机控制蜂鸣器发声的基本原理和方法:只需对驱动口输出驱动电平并通过放大电路放大驱动电流就能使蜂鸣器发出声音。改变引脚的频率,就可以调整蜂鸣器音调,产生各种不同的声音。 同时改变输出电平的高低电平...

    在单片机应用上,蜂鸣器可以作为报警信号或者提示信号

    单片机控制蜂鸣器发声的基本原理和方法:只需对驱动口输出驱动电平并通过放大电路放大驱动电流就能使蜂鸣器发出声音。改变引脚的频率,就可以调整蜂鸣器的音调,产生各种不同的声音。
    同时改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。
     

    开发板模块原理图

       

    以下为驱动蜂鸣器的程序:

    #include "reg52.h"                          //此文件中定义了单片机的一些特殊功能寄存器

    typedef unsigned int u16;              //对数据类型进行声明定义

    typedef unsigned char u8;

    sbit beep=P1^5;//定义蜂鸣器的引脚

    void delay(u16 i)
    {
     while(i--); 
    }

    void Beep()
    {
          beep=~beep;//进行高低电平的转换
          delay(100);//延时
    }

    void main()
    {
        while(1)
     {
         Beep();
     }
    }
    由开发板按键K1控制蜂鸣器声响,K2控制响停:

    源码如下

    #include "reg52.h"                          //此文件中定义了单片机的一些特殊功能寄存器

    typedef unsigned int u16;              //对数据类型进行声明定义

    typedef unsigned char u8;

    sbit k1=P3^1;                                   //定义按键连接                                       

    sbit k2=P3^0;

    sbit beep=P1^5;                               //定义蜂鸣器连接

    u8 start=0;

    void delay(u16 i)                              //延时函数

    {      while(i--);        }

    void sound()

    {      u8 i=100;

            while(i--)

            {      beep=~beep;

                     delay(100);             

    }

    }

    void keypros()                                  //检测按键函数

    {      if(k1==0)                                  //如果K1按下(开始)

            {      delay(1000);

                     if(k1==0)

                             start=1;           

                     while(!k1);                       //等待键释放 

        }

            if(k2==0)                              //停止

            {      delay(1000);

                     if(k2==0)

                             start=0;                    //建立开始标志

                     while(!k2);                       //等待键释放 

    }

    }

    void main()

    {      while(1)

            {      keypros();

                     if(start==1)

                             sound();

                     else

                             beep=1;                            //如果按下K2键(start=0),蜂鸣器停响

            }              

    }

    展开全文
  • 满意答案0fhk92017.12.30采纳率:53%等级:7已帮助:1961人T0HEQU30HT0LEQU31HORG0000HLJMPMAINORG000BHLJMPT0ISRORG0030HMAIN:MOVSP,#5FHMOVTMOD,#01HSETBET0SETBEALOOP:MOVDPTR,#...控制高中低音区MOVR1,#0AN...

    满意答案

    dcebd7a0de6265b6ccae5ead692f1eab.png

    0fhk9

    2017.12.30

    dcebd7a0de6265b6ccae5ead692f1eab.png

    采纳率:53%    等级:7

    已帮助:1961人

    T0HEQU 30H

    T0L EQU 31H

    ORG 0000H

    LJMP MAIN

    ORG 000BH

    LJMP T0ISR

    ORG 0030H

    MAIN:

    MOV SP,#5FH

    MOV TMOD,#01H

    SETB ET0

    SETB EA

    LOOP:

    MOV DPTR,#FREQ

    MOV A,P2;控制高中低音区

    MOV R1,#0

    ANL A,#03H

    JB ACC.0,LOOP01

    MOV R1,#14

    SJMP LOOP0

    LOOP01:

    JB ACC.1,LOOP0

    MOV R1,#28

    LOOP0:

    JB P0.0,LOOP1;控制音频1234567

    MOV A,R1

    MOVC A,@A+DPTR

    MOV T0H,A

    INC DPTR

    MOV A,R1

    MOVC A,@A+DPTR

    MOV T0L,A

    LJMP LOOP

    LOOP1:

    JB P0.1,LOOP2

    MOV A,R1

    ADD A,#2

    MOVC A,@A+DPTR

    MOV T0H,A

    INC DPTR

    MOV A,R1

    ADD A,#2

    MOVC A,@A+DPTR

    MOV T0L,A

    LJMP LOOP

    LOOP2:

    JB P0.2,LOOP3

    MOV A,R1

    ADD A,#4

    MOVC A,@A+DPTR

    MOV T0H,A

    INC DPTR

    MOV A,R1

    ADD A,#4

    MOVC A,@A+DPTR

    MOV T0L,A

    LJMP LOOP

    LOOP3:

    JB P0.3,LOOP4

    MOV A,R1

    ADD A,#6

    MOVC A,@A+DPTR

    MOV T0H,A

    INC DPTR

    MOV A,R1

    ADD A,#6

    MOVC A,@A+DPTR

    MOV T0L,A

    LJMP LOOP

    LOOP4:

    JB P0.4,LOOP5

    MOV A,R1

    ADD A,#8

    MOVC A,@A+DPTR

    MOV T0H,A

    INC DPTR

    MOV A,R1

    ADD A,#8

    MOVC A,@A+DPTR

    MOV T0L,A

    LJMP LOOP

    LOOP5:

    JB P0.5,LOOP6

    MOV A,R1

    ADD A,#10

    MOVC A,@A+DPTR

    MOV T0H,A

    INC DPTR

    MOV A,R1

    ADD A,#10

    MOVC A,@A+DPTR

    MOV T0L,A

    LJMP LOOP

    LOOP6:

    JB P0.6,LOOP7

    MOV A,R1

    ADD A,#12

    MOVC A,@A+DPTR

    MOV T0H,A

    INC DPTR

    MOV A,R1

    ADD A,#12

    MOVC A,@A+DPTR

    MOV T0L,A

    LJMP LOOP

    LOOP7:

    CLR TR0

    LJMP LOOP

    ;-----------------------------

    T0ISR:

    CLR TR0

    MOV TH0,T0H

    MOV TL0,T0L

    SETB TR0

    CPL P3.0

    RETI

    ;-----------------------------

    FREQ:

    DB 0F2H,03DH;低音1

    DB 0F3H,0BDH;低音2

    DB 0F5H,014H;低音3

    DB 0F5H,0B1H;低音4

    DB 0F6H,0D0H;低音5

    DB 0F7H,0D1H;低音6

    DB 0F8H,0B5H;低音7

    DB 0F9H,01EH;中音1

    DB 0F9H,0DEH;中音2

    DB 0FAH,08AH;中音3

    DB 0FAH,0D8H;中音4

    DB 0FBH,068H;中音5

    DB 0FBH,0E8H;中音6

    DB 0FCH,05AH;中音7

    DB 0FCH,08FH;高音1

    DB 0FCH,0EFH;高音2

    DB 0FDH,045H;高音3

    DB 0FDH,06CH;高音4

    DB 0FDH,0B4H;高音5

    DB 0FDH,0F4H;高音6

    DB 0FEH,029H;高音7

    ;-----------------------------

    END追问: 能不能不用汇编语言呢,我还没学过,看不懂,可不可以用c语言呢?谢谢

    00分享举报

    展开全文
  • 目的:让蜂鸣器发出声音,一段时间后再关闭 方法:让P2.5管脚输出一定频率的脉冲信号(高低电平)控制无源蜂鸣器。 编译软件:keil5 过程: (1)首先将 51 单片机的头文件包含进来, 然后使用 sbit 关键字来...

    目的:让蜂鸣器发出声音,一段时间后再关闭

    方法:让P2.5管脚输出一定频率的脉冲信号(高低电平)控制无源蜂鸣器。

    编译软件:keil5

    过程:

    (1)首先将 51 单片机的头文件包含进来, 然后使用 sbit 关键字来定义 P2.5 管脚,定义好后即可使用 BEEP 来替代 P2.5 口的操作。

    sbit BEEP=P2^5;

    (2)主函数直接进入 while 循环,在循环内再次套用了一 个 while 循环,只不过这里并非死循环,而是通过变量 i 值来决定何时退出,i 值初始化为 2000,即该循环会执行 2000 次,此循环内不断对 BEEP 取反,然后延时一定时间,即P2.5 间隔一定时间输出高低电平,这样就会产生脉冲信号控制蜂鸣器发出声音,当 i 值递减到 0 时则退出 while 循环,然后将 i 值清零,且将 BEEP 输出 0。

    void main()
    {
    	 u16 i=2000;
    	 
    	while(1)
    	{
    		while(i--)
    		{
    			BEEP=!BEEP;
    			delay_10us(100);
    		}
    		i=0;
    		BEEP=0;
    	}
    }

    (3)编译整体代码无误得到hex.文件

    (4)通过CH340驱动烧录hex.文件到单片机开发板

     

    (5)通过排线连接P25与J7端口观察实验现象 

    c51单片机学习笔记-无源蜂鸣器实验

     (6)补:若修改变量 i 的值可以改变蜂鸣器发声时间。 若要改变音调可以修改延时时间,但要注意频率不能太大或者太小。若要改变音量,可以修改 BEEP 输出高电平时间

    BEEP=!BEEP;
    			delay_10us(100);
    			BEEP=0;
    			delay_10us(10);
    			BEEP=1;
    			delay_10us(190);

    (7)实验现象

    c51单片机学习笔记-无源蜂鸣器实验(调整音量和时间)

    展开全文
  • 51单片机蜂鸣器代码

    2019-04-12 20:11:33
    51单片机蜂鸣器代码 用于最简单的51单片机基础知识
  • 单片机C51学习 单片机C51-蜂鸣器1 带开关控制 音调控制 定时控制
  • 单片机C51学习 单片机C51-蜂鸣器1 带开关控制 音调控制
  • C语言控制51单片机蜂鸣器播放音乐,另附单片机演奏音乐时音调和节拍的确定方法。压缩包内有两使用51单片机播放音乐的实验程序源代码,供初学者参考。
  • C51 蜂鸣器编程

    千次阅读 2021-01-29 16:26:34
    改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。 改变输出电平的高低电平占空比(改变高电平比上整个周期的时间),则可以控制蜂鸣器的声音大小 三、代码实现
  • 51单片机--蜂鸣器

    2022-03-13 16:07:23
    #include "reg52.h" typedef unsigned char u8; typedef unsigned int u16; sbit BEEP=P2^5;... //i值越大(也就是循环次数越多),蜂鸣器响的时间越久,不然可能声音滴一下就没了 while(1) { while.
  • 资源是51单片机使用蜂鸣器来播放音乐的实验例程,通过PWM信号来控制蜂鸣器,改变PWM的频率,可以改变蜂鸣器的发声音调,从而可以播放音乐。
  • 我了解到,蜂鸣器可以根据频率改变发出声音的音调,具体音符对应频率如下: 编号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 音符 低1 低2 低3 低4 低5 低6 低7 中1 中2 中3 中4 中5 中6 中7 高...
  • 51单片机蜂鸣器

    2022-01-08 11:52:09
    51单片机蜂鸣器
  • Step2Step2Step2 :【C51蜂鸣器发声实验 蜂鸣器简介 ①按驱动方式的不同。可分为有源蜂鸣器和无源蜂鸣器。 有源蜂鸣器内部有振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,从而引起磁场交变,带动振动膜片...
  • 51单片机点亮LED和使用定时器中断控制蜂鸣器发声

    千次阅读 多人点赞 2020-05-05 12:09:47
      初学51单片机第一实验一般都是以点亮LED灯开始,以下是使用Proteus仿真软件的实验效果。   实验需要仿真仪器:   示波器、LED、电压表、蜂鸣器、AT89C51 实验电路图: 实验代码: #include <reg52.h&...
  • 51单片机驱动蜂鸣器发声教程(扫盲)

    万次阅读 多人点赞 2019-03-25 14:27:44
    蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一电流放大的...
  • 《基于51单片机蜂鸣器发声的C语言程序》由会员分享,可在线阅读,更多相关《基于51单片机蜂鸣器发声的C语言程序(2页珍藏版)》请在人人文库网上搜索。1、按键发音/* 名称:按键发音说明:按下不同的按键会是SOUNDER...
  • C51按键音调

    2015-06-29 05:55:33
    C51单片机 通过定时器产生特定方波,然后按下矩阵键盘使蜂鸣器发出不同音调
  • 51单片机(二十七)—— 蜂鸣器播放音乐

    万次阅读 多人点赞 2020-03-06 10:19:07
    蜂鸣器是电路中经常使用的发声器件,我们一般使用蜂鸣器发出“嘀嘀”的声音,用它作为提示音。有没有想过用蜂鸣器还可以播放音乐呢? 本文使用蜂鸣器来播放音乐。为了深入了解此实验的原理,先介绍一下音乐的基础...
  • 对于矩阵键盘,我们通常采用行列扫描的方法实现按键检测。相较于独立按键的一对一按键检测,行列扫描法的意义在于节省更多的引脚,4*4键盘只需4*2=8信号端口,5*5键盘只需5*2=10端口。
  • 51单片机蜂鸣器为什么不响

    千次阅读 2021-12-16 15:55:58
    在初学单片机的时候,我们会去玩单片机,玩蜂鸣器。初学者玩蜂鸣器的时候会直接把蜂鸣器接上5V...2、直接接了单片机引脚,单片机引脚的输出能力不足,很难驱动蜂鸣器,一般都是接一PNP三极管来驱动蜂鸣器。 注:如
  • 1.11.3.用定时器控制蜂鸣器音调 1.11.4.蜂鸣器发出滴滴声 1.11.5.让蜂鸣器唱歌1 1.11.6.让蜂鸣器唱歌2 第二部分、章节介绍 1.11.1.蜂鸣器的原理 本节从工作原理、分类上讲解了无源蜂鸣器和有源蜂鸣器2种的...
  • 51单片机简易MP3程序 蜂鸣器播放 新手入门课程,来一曲《敢问路在何方》 Proteus仿真 AT89C51 简易电路搭建 元件 实例代码 #include <reg52.h> sbit beep = P2^3; unsigned char timer0H, timer0L, time; ...
  • C51音乐播放器_蜂鸣器

    2013-12-20 16:09:16
    基于C51的音乐播放器代码,调制蜂鸣器音调和播放速率来实现简单的音乐播放。
  • 51单片机播放音乐(一):蜂鸣器

    万次阅读 多人点赞 2018-11-20 21:38:52
    无源蜂鸣器需要自己控制输入变化的信号才能发声,最简单的就是输入方波信号了,通过单片机控制方波的频率就能发出不同音调的声音 这是发出50%占空比方波的代码: int i; while (1) { for (i =...
  • 开发板上面是压电式蜂鸣器,是无源蜂鸣器(无振荡电路),因此可以手动改变蜂鸣器的频率产生不同音色、音调,而改变高低电平占比可以改变声音大小。 硬件设计 压电式蜂鸣器需要的电压不可能由单片机的I/O口提供,...
  • 51单片机自学笔记(五)——蜂鸣器

    千次阅读 2020-08-27 22:40:10
    蜂鸣器
  • 单片机——蜂鸣器(生日快乐歌)

    万次阅读 多人点赞 2019-02-04 09:46:22
    改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。 改变输出电平的高低电平占空比,(占空比是指一周期内高电平所占的时间)则可以控制蜂鸣器的声音大小。 ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 120
精华内容 48
关键字:

c51单片机按键控制蜂鸣器单独发出四个音调