大家好,今天小编关注到一个比较有意思的话题,就是关于基于单片机的电子琴设计的问题,于是小编就整理了3个相关介绍基于单片机的电子琴设计的解答,让我们一起看看吧。
基于AT89s52单片机的8键电子琴设计的c语言程序怎么编啊(蜂鸣器)?
蜂鸣器出不同音调的声音是由于震动的频率不同,你可以先定义八个不同的函数分别是八个音(通过定时或循环达到)然后将按键分别与对应的音调函数对应,按哪个按键即某一个I/O口电平发生变化时就调用相应音调的函数使蜂鸣器发出该种音调(注意设置响声的时间)当另一个按键按时就调用另一个音调对应的函数,一个简易的电子琴就可以做出来了。当然了,具体程序用C语言编不是特别难,也不是特容易
电路一上电蜂鸣器就一直响怎么办?
蜂鸣器有两种,一种是无源的,一种是有源的。无源的就类似一个扬声器俗称喇叭,需要接入脉动或交流电才能响。有源的内部有振荡电路,必须接入直流电,才能响,而且发出的声音频率不会变化。
你的电路图是一个简易电子琴,通过按键改变555的振荡频率,会发出不同的音调。所以推断你的是无源蜂鸣器,电容起耦合作用。你把蜂鸣器换成喇叭,或耳机也可以用。
原因有两个: 1、电路接触不良。
2、电压达不到。
解决方法: 一个是改变硬件,使蜂鸣器在控制的IO口为低电平时响,并改动程序的相应部分。
另一个比较简单,在main主程序的BZ=0后加上一小段延时,把单片机上电复位的时间给错过去
单片机控制扬声器演奏音阶的原理是什么?
人类的耳朵可以听到20Hz到20KHz频率的声音,不同频率的声音,我们听起来的感觉是不一样的。当然人类对2KHz~4KHz频率的声音感觉是最敏感的,只要控制好音调和频率的变化就可以形成美妙的音乐。
单片机可以控制蜂鸣器发声音
蜂鸣器是非常常见的发音元器,音乐卡、报警装置、电子琴、各种小家电等都会用到。单片机的PWM功能可以设置输出不同频率的信号,所以我们可以利用单片机的PWM控制三极管的通断来推动蜂鸣器发声。
当然,如果单纯控制方波信号的通断,只可以得到单调的“嘀”、“嘀”声。想要得到美妙的音乐,我们还需要控制音调、频率的变化,还有声音的强弱。把蜂鸣器的驱动电路改进一下,用三个三极管和两个单片机的IO来控制蜂鸣器。
- BZ PWM:用于控制蜂鸣器的发音频率
- BZ CONTROL:用于控制蜂鸣器的供电时间
- 当BZ CONTROL为低电平时,三极管Q2、Q3是截止的,蜂鸣器没有供电,不会发声。
- 当BZ CONTROL为高电平时,三极管Q2、Q3是导通的,蜂鸣器是否发声由BZ PWM决定。
- 电路中的电容C10很关键,因为电容C10有储能的效果,BZ CONTROL转为低电平后,蜂鸣器的供电还可以由电容C10提供,电容电量减少,音量就会逐渐减小,形成蜂鸣声渐隐的和弦音效果。
- 如果想实现变调的效果,就可以通过短时间内切换发出几种不同频率的蜂鸣声来实现。
单片机控制蜂鸣器演奏音阶实例
以2.7KHz频率的蜂鸣器为例,首先我们先定义T1、T2、Fy三个参数
- T1:驱动频率给定持续时间,单位为毫秒(ms),BZ PWM引脚控制
- T2:蜂鸣器供电持续时间,单位为毫秒(ms),BZ CONTROL引脚控制
- Fy:单片机输出PWM频率,单位为KHz,BZ PWM引脚控制
单声和弦音:短暂鸣响后音量渐隐
- Fy=2.7,T2=200,T1=400,因为T1=400ms,蜂鸣器响的时间为400ms,但蜂鸣器供电只有200ms,所以,前200ms是正常发音,后200ms为音量渐隐的效果。
两声错误提示和弦音:二升调,按音调分2个阶段
- Fy=2.5,T2=100,T1=100
- Fy=2.7,T2=100,T1=100
因为前100ms频率为2.5KHz,后100ms频率为2.7KHz,所以听起来会有升调的效果。
开机和弦音:三升调,按音调分3个阶段
- Fy=2.5,T2=100,T1=100
- Fy=2.7,T2=100,T1=100
- Fy=2.9,T2=100,T1=1000
因为三声频率从2.5KHz升到2.7KHz再到2.9KHz,频率连续升高,最后一声的T1时间较长,还有音量渐隐的效果。
关机和弦音:三降调,按音调分3个阶段
- Fy=2.9,T2=100,T1=100
- Fy=2.7,T2=100,T1=100
- Fy=2.5,T2=100,T1=1000
因为三声频率从2.9KHz升到2.7KHz再到2.5KHz,频率连续降低,最后一声的Tf时间较长,还有音量渐隐的效果。
另外音乐是由Do,Re,Mi,Fa,So,La,Xi,Do几个音调组成的,电子琴上的按键对应着不同的音频频率,只要通过单片机的程序控制发声的频率和时间就演奏了哦!
欢迎关注@电子产品设计方案,一起享受分享与学习的乐趣!关注我,成为朋友,一起交流一起学习
- 记得点赞和评论哦!非常感谢!
正好今天给在微头条里的朋友们分享了一个用单片机实现模拟电子琴的小制作,在这个小制作里除了给大家介绍了“mini”模拟电子琴所需的硬件外,还主要介绍了用单片机为控制核心如何控制蜂鸣器演奏音节的基本方法,下面就和朋友们聊聊这方面的事情。
实现这个电路的硬件是非常简单的,硬件主要运用了STC89C52RC单片机为核心的主控芯片,外设有8个按键,和一个复位按键以及蜂鸣器作为喇叭在这里我就不多说了。主要是由STC89C52单片机的的P1口8个按键控制Do,Re,Mi,Fa,So,La,Xi,Do的各个音符,然后由P0口的一位数码管显示出来,同时位于P3.3口的蜂鸣器发出声音。
现在我主要简单介绍单片机如何控制蜂鸣器演奏音阶的方法,我们都知道单片机具有强大的控制功能和灵活的编程实现特性,我们可以利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏要表达的音符。
例如一首音乐是许多不同的音阶组成的,而每个音阶是对应着不同的频率的,这样我们就可以利用不同的频率的组合,构成我们想演奏的那首曲目。这些要求对于单片机来产生不同的频率来说是“小菜一碟”,其实现的方法是利用单片机的定时/计数器T0来产生这样的方波频率信号,所以我们只要把一首歌曲的音阶对应频率关系编写正确就可以达到我们想要的曲目。然后通过微动按键就得到了所要的发音效果。
单片机控制扬声器演奏音阶的原理是:通过软件程序控制产生音频脉冲,只要算出某一音频的周期,再将周期除以2就是半周期的时间。我们利用定时器记时半周期时间,当记时终止后就将P2.5口反转一下,然后记时再反转。这样就能在P2.5口上得到此频率的脉冲。在编写程序时我们要用到STC89C52单片机的内部定时器,使其工作计数器模式下就可以改变计数值TH0及TL0以产生不同频率的方法,从而产生不同音阶。
以上就是我对这个问题的看法,欢迎朋友们参与讨论。敬请关注电子及工控技术,欢迎大家点赞
作为一名从事嵌入式开发多年的工程师,我来回答您的问题。
什么是音阶?
音阶就是旋律,就是声音的高低音调变化。就是音律。
单片机控制扬声器演奏音阶的原理,根据其方案的不同,实现的原理也将不一样。
第一种方案实现原理:
选用无源蜂鸣器,这里为什么不适用有源蜂鸣器呢?原因是有源蜂鸣器内部电容极片已经固定,发出的音阶不会变化,对它进行操作IO操作,无法改变有源蜂鸣器的音阶。
无源蜂鸣片采用PWM控制才能发声,并随着PWM频率增大,发出声音的音阶也会随着变化。
目前有一些简单的报警装置,就是采用单片机,控制PWM输出,并不断变化输出的频率,达到演奏的效果。
优缺点:
设计简单,成本低廉,音质很差,只能实现少数几种音阶,产品应用场景不多。
第二种方案实现原理
使用语音芯片,提前将各种音乐录制到芯片当中,如果需要演奏出来的音乐总时间比较短的话,一般是SOP8的封装,价格一般几毛钱,再加一个喇叭,利用单片机控制语音芯片的引脚时序,就能播放出音乐出来了,目前的普通小玩具的设计原理就是这样的。
优缺点:
开发设计较为简单,成本较为低廉,音质尚可,能实现固定的多种声音和音乐,但无法进行更新音律,产品应用有些限制。
第三种实现方案的原理
单片机通过SPI等接口读取存储外设中的音频文件,再通过I2S接口将音频数据流,发送给音频芯片,音频芯片外接功放芯片驱动喇叭播放出美妙的音乐。常见的MP3,插卡音箱都是类似的实现原理。
优缺点:
不管是软件开发过程,还是硬件设计,PCB布板走线,都十分复杂,而且电子IC多,外围电阻电容也增加很多,成本相对高,但音质效果好,音阶变化多样,音乐可以进行更新。
我是科技电小二,嵌入式开发工作多年,我会持续输出嵌入式开发,电子产品设计方案构思,欢迎大家支持,点赞,转发,和关注我,谢谢大家
到此,以上就是小编对于基于单片机的电子琴设计的问题就介绍到这了,希望介绍关于基于单片机的电子琴设计的3点解答对大家有用。