历史上的今天
返回首页

历史上的今天

今天是:2025年03月23日(星期日)

正在发生

2020年03月23日 | 单片机——蜂鸣器(生日快乐歌)

2020-03-23 来源:eefocus

基础知识


改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。


改变输出电平的高低电平占空比,(占空比是指一个周期内高电平所占的时间)则可以控制蜂鸣器的声音大小。


单片机采用的是无源蜂鸣器,需要产生一定的脉冲才能够让蜂鸣器发声,这是蜂鸣器发声的主要原理。(原理图如下)


p15端口是蜂鸣器电压的输入端口,根据不同单片机原理图不一样,此端口也不一样,一定要看清楚。

在这里插入图片描述

程序代码


1.简单驱动


#include"reg52.h"


typedef unsigned char u8;

typedef unsigned int u16;


sbit  beep=P1^5;


void delay(u16 i)

{

    while(i--);

}

void main()

{   

while(1) 

{

     beep=~beep;   //p1.5端口电压取反,因此产生了脉冲

delay(10);     //改变延迟时间可以改变频率

}

}


2.生日快乐歌


#include


#define uint unsigned int 

#define uchar unsigned char


sbit beep = P1^5;


uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,

212,212,106,126,159,169,190,119,119,126,159,142,159,0};

uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,

9,3,12,12,12,12,12,9,3,12,12,12,24,0};


//延时函数

void DelayMS(uint x)

{

     uchar t;

     while(x--) for(t=0;t<120;t++);

}


//控制音频、节拍函数

void PlayMusic()

{

     uint i=0,j,k;

     while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)

 {   

     for(j=0;j   {

         beep=~beep;

         for(k=0;k   }

    DelayMS(10);

    i++;

 }

}


void main()

{

    beep=0;

    while(1)

    {

        PlayMusic(); //播放生日快乐

        DelayMS(500); //播放完后暂停一段时间

    }

}

推荐阅读

史海拾趣

Emulation Technology Inc公司的发展小趣事

作为一家在电子行业具有影响力的企业,Emulation始终关注社会责任和可持续发展。公司积极参与各种公益活动,为当地社区的发展做出了贡献。同时,Emulation还注重环保和节能,致力于推动绿色电子产品的设计和生产。这些举措不仅提升了公司的社会形象,还为公司的长期发展奠定了坚实的基础。

DBM Optix公司的发展小趣事

在竞争激烈的电子行业中,DBM Optix深知只有不断创新才能保持领先地位。因此,公司始终将研发作为核心竞争力之一,持续投入大量资金用于新技术、新产品的开发。通过与高校、研究机构等合作,DBM Optix不断引入新技术、新材料,并将其应用于产品中,从而不断提升产品的性能和品质。这些创新举措使得DBM Optix在光学通信领域始终保持领先地位。

Delus Corp公司的发展小趣事

Delus Corp公司非常重视人才培养和团队建设。公司积极引进高素质人才,并为员工提供良好的培训和发展机会。公司建立了完善的激励机制和绩效考核体系,激发员工的工作积极性和创造力。同时,公司还注重团队建设和文化建设,营造了一个积极向上、团结协作的工作氛围。这些措施的实施,使得公司拥有一支高素质、专业化的团队,为公司的发展提供了有力的人才保障。

Engelking Elektronik GmbH公司的发展小趣事

随着国内市场的饱和,Engelking Elektronik开始寻求海外市场的发展。公司制定了详细的国际化战略,包括参加国际电子展会、拓展海外销售渠道以及建立海外生产基地等。通过不断努力,Engelking Elektronik成功进入了欧洲、北美和亚洲等多个国家和地区的市场。同时,公司还积极适应不同地区的文化和市场需求,提供定制化的产品和服务。

Everspin公司的发展小趣事

Everspin与众多知名企业和机构建立了合作伙伴关系,如戴尔电脑、Koyo Electronics Industries等。这些合作伙伴的认可和支持不仅为Everspin带来了更多的商业机会,也进一步提升了其在行业中的影响力。同时,Everspin还积极与客户沟通合作,根据客户需求提供定制化的解决方案,赢得了客户的广泛赞誉。

Connection One公司的发展小趣事

面对日益激烈的市场竞争,Connection One公司不断推陈出新,研发出一系列创新产品。这些产品不仅性能卓越,而且设计新颖,深受消费者喜爱。公司因此赢得了大量忠实客户,业绩持续攀升。

问答坊 | AI 解惑

电动汽车充电器电路拓扑的设计考虑1

摘要:对电动汽车车载电池的充电器进行了讨论。根据SAEJ?1773对感应耦合器设计标准的规定,及不同的充电模式,给出了多种备选设计方案,并针对不同的充电模式、充电等级,给出了最适合的电路拓扑方案。     关键词:电动汽车;充电 ...…

查看全部问答>

波分复用器的区别

粗波分复用(Coarse wavelength division multiplexing,CWDM)是是一种利用光复用器将在不同光纤中传输的波长复用到一根光纤中传输的技术,它的通道比密集波分复用(dense wavelength division multiplexing,DWDM)少,但比标准波分复用(wavelength d ...…

查看全部问答>

2812的CPU-Timer

想请教一下,2407是不是没有CPU Timer? 2812已经有了通用计数器GP,为什么还需要CPU Timer? 2812的Timer主要是做什么用的呢? 是不是PSC减至0后,TIM才会减1 ? 如果没有用DSP-BIOS,2812的CPU-Timer2是否就能自行使用? 新手接触,问题太 ...…

查看全部问答>

timch1ch2被用来输入pwm捕获占空比,那么ch2

比如 PA6--CH1/IN6  PA7 --CH2/IN7   现在我要捕获pwm的占空比  也就是要用到pwm模式  用到了两个输入口i   不过按照st的资料 ch2是内部连接的 那么   我还能PA7做模拟输入 ...…

查看全部问答>

AD5620的VHDL控制程序

--基于AD56XX的VHDL控制程序--设计者 eeleaderlibrary ieee;use ieee.std_logic_1164.all; use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity Wr_Ad56XX is  port   (   clk: in std_logic;------20M ...…

查看全部问答>

全数字TI方案电源---eeprom读写

eeprom读写时序,测试读与写子程序功能,能正常完成单字节(8bit)读写,有兴趣的可以看看测试的时序图,欢迎批评…

查看全部问答>

什么原因?关于锂电池寿命问题!

     现在很多设备仪器都在用可充电锂电池组(锂电池组加装有电池保护板),为了防水的原因,电池组的封装固定后,电池组做防水处理一般用胶水固定,问题是:有的设备和仪器使用几个月后出现不能充电了,什么原因?当然电池供 ...…

查看全部问答>

环境影响有这么大吗?

我做了个激光器功率的PID电路,周围有人走动就会有影响,没人的时候没有变化。因为是光纤激光器,光路也没有空间部分不会因为震动影响光路部分,那这个飘动就是电路部分了,但是在不理解怎么会有这么大的影响,人一走动就变化,快成生命探测器了。 ...…

查看全部问答>

ARM能在8位MCU延续霸主地位吗!?

最近在富士通半导体微博上看到一则消息:“富士通发布基于Cortex M0+的FM0+系列MCU,与以前的Cortex-M0内核相比,Cortex-M0+内核的处理性能提高了10%,而功耗只有2/3。 FM0+系列的目标是保持70μA/MHz的工作电流和0.7μA的待机电流(RTC模式)将 ...…

查看全部问答>

【求助帖】关于V7的DDR3问题

最近在调V7 485t的DDR3,用的ISE14.4,MIG1.8 ,生成的IP核无论仿真还是板测,其中的app_rdy这个信号始终为低电平,数据手册说原因有两个,一是正在读或者写,二是phy还没有复位好。上电复位后app_rdy信号应该为高的,但是从来都是低电平。 …

查看全部问答>