单片机控制蜂鸣器概要

合集下载

c51芯片蜂鸣器电路原理

c51芯片蜂鸣器电路原理

c51芯片蜂鸣器电路原理一、概述C51芯片是一种常用的单片机芯片,广泛应用于嵌入式系统开发中。

蜂鸣器是一种常见的电子设备,通常用于发出声音信号。

在本篇文章中,我们将介绍如何使用C51芯片控制蜂鸣器,以实现各种声音输出。

二、蜂鸣器电路原理1. 蜂鸣器连接方式:蜂鸣器通常需要连接到C51芯片的I/O口,以便对其进行控制。

常见的方法是将蜂鸣器连接到单片机的PB0端口,可以通过简单的编程来实现控制。

2. 工作原理:当单片机接收到相应的控制信号时,会通过I/O口控制蜂鸣器的驱动电路,从而触发蜂鸣器发出声音。

控制信号可以是高电平或低电平,具体取决于电路设计。

3. 驱动电路:蜂鸣器的驱动电路通常包括一个三极管或继电器,用于将微弱的电信号放大,以驱动蜂鸣器发出声音。

电路的设计和元件的选择取决于蜂鸣器的功率和音量需求。

4. 时序控制:为了获得更好的声音效果,需要对蜂鸣器的驱动时序进行精确控制。

可以通过编写程序来实现不同的时序,以产生不同的声音效果。

三、编程实现在C51单片机中,可以使用汇编语言或C语言来编写程序,实现对蜂鸣器的控制。

以下是一个简单的示例程序,用于控制蜂鸣器的开关和音量:```c#include <reg51.h> // 包含C51寄存器定义的头文件void delay(unsigned int time) // 延时函数{unsigned int i, j;for(i=0; i<time; i++)for(j=0; j<1275; j++);}void main(){P1 = 0x01; // 打开蜂鸣器while(1) // 循环执行以下操作{if(flag) // 如果flag为真{P1 = 0x02; // 增加音量flag = 0; // 清空flagdelay(50); // 延时一段时间}else // 如果flag为假{P1 = 0x00; // 关闭蜂鸣器flag = 1; // 设置flag为真,以便下次循环时增加音量}}}```以上程序中,P1端口用于控制蜂鸣器的开关,音量通过改变P1端口的电平来实现。

单片机实验报告蜂鸣器

单片机实验报告蜂鸣器

一、实验目的1. 熟悉51单片机的基本结构和工作原理。

2. 掌握51单片机的I/O口编程方法。

3. 学习蜂鸣器的驱动原理和应用。

4. 通过实验,提高动手实践能力和问题解决能力。

二、实验原理蜂鸣器是一种将电信号转换为声音信号的器件,常用于产生按键音、报警音等提示信号。

根据驱动方式,蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。

1. 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。

2. 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才能发声,调整提供振荡脉冲的频率,可发出不同频率的声音。

在本次实验中,我们使用的是无源蜂鸣器。

51单片机通过控制P1.5端口的电平,产生周期性的方波信号,驱动蜂鸣器发声。

三、实验器材1. 51单片机实验板2. 蜂鸣器3. 连接线4. 电路焊接工具5. 编程软件(如Keil)四、实验步骤1. 电路连接:- 将蜂鸣器的正极连接到51单片机的P1.5端口。

- 将蜂鸣器的负极接地。

2. 程序编写:- 使用Keil软件编写程序,实现以下功能:1. 初始化P1.5端口为输出模式。

2. 通过循环,不断改变P1.5端口的电平,产生方波信号。

3. 调整方波信号的频率,控制蜂鸣器的音调。

3. 程序下载:- 将程序下载到51单片机中。

4. 实验观察:- 启动程序后,观察蜂鸣器是否发声,以及音调是否与程序设置一致。

五、实验结果与分析1. 实验结果:- 成功驱动蜂鸣器发声,音调与程序设置一致。

2. 结果分析:- 通过实验,我们掌握了51单片机的I/O口编程方法,以及蜂鸣器的驱动原理。

- 在程序编写过程中,我们学习了方波信号的生成方法,以及如何调整方波信号的频率。

六、实验总结本次实验成功地实现了51单片机控制蜂鸣器发声的功能,达到了预期的实验目的。

通过本次实验,我们提高了以下能力:1. 对51单片机的基本结构和工作原理有了更深入的了解。

2. 掌握了51单片机的I/O口编程方法。

3. 学习了蜂鸣器的驱动原理和应用。

单片机蜂鸣器电路原理

单片机蜂鸣器电路原理

单片机蜂鸣器电路原理咱先来说说蜂鸣器是个啥。

蜂鸣器呀,就像是一个小小的音乐精灵,能发出各种声音。

它有两种类型哦,一种是有源蜂鸣器,一种是无源蜂鸣器。

有源蜂鸣器呢,就像是一个自带电池的小喇叭(哈哈,当然不是真的带电池啦,就是个比喻),只要给它通上电,它就能自己欢快地唱歌啦,发出固定频率的声音。

无源蜂鸣器就有点像个小懒虫,你得给它特定频率的信号,它才肯发出声音,就像你得给它个特定的指令,它才知道要怎么唱歌。

那单片机和蜂鸣器是怎么凑到一块儿的呢?单片机就像是一个超级大脑,它可以控制很多东西,蜂鸣器就是它控制的小跟班之一。

在电路里,单片机要给蜂鸣器发送信号。

比如说,对于无源蜂鸣器,单片机要通过一个引脚来发送方波信号。

这个方波信号的频率就决定了蜂鸣器发出声音的高低。

就像你唱歌的时候,高音和低音是不一样的频率,蜂鸣器也是这样。

如果单片机发送的频率高,蜂鸣器就发出比较尖锐的声音;频率低呢,声音就比较低沉。

咱们再看看电路连接的部分。

一般来说,会有一个限流电阻。

这个限流电阻可重要啦,就像是一个交通警察,控制着电流的大小。

如果没有这个限流电阻,电流就可能像脱缰的野马,一下子冲进蜂鸣器里,把蜂鸣器给弄坏了。

而且,电路的连接方式也有讲究呢。

要确保连接正确,就像拼图一样,每一块都要放在正确的位置。

如果接错了,蜂鸣器可能就不响了,或者发出一些奇怪的声音,就像一个人唱歌跑调跑得十万八千里。

还有哦,电源的选择也很关键。

电源就像是蜂鸣器的能量源泉。

如果电源电压不合适,蜂鸣器也不能好好工作。

就像你人要是没吃饱饭,就没力气干活一样,蜂鸣器没有合适的电源,也没力气发出好听的声音。

当我们在程序里控制蜂鸣器的时候,那更是像在指挥一场小音乐会。

我们可以让蜂鸣器发出简单的滴滴声,就像在给我们发送简单的信号,比如说报警或者提示。

也可以通过巧妙的编程,让蜂鸣器演奏出一小段旋律呢。

想象一下,一个小小的单片机和蜂鸣器组合,就能演奏出像小星星这样的简单曲子,是不是超级酷?这就像是我们用魔法棒(其实就是代码啦)指挥着蜂鸣器这个小音乐家。

单片机实验报告蜂鸣器

单片机实验报告蜂鸣器

单片机实验报告蜂鸣器单片机实验报告:蜂鸣器引言:单片机是现代电子技术中的重要组成部分,其广泛应用于各个领域。

蜂鸣器作为一种常见的声音输出设备,在单片机实验中也被广泛使用。

本文将介绍蜂鸣器的原理、实验过程以及实验结果,并对实验中遇到的问题进行分析和解决。

一、蜂鸣器的原理蜂鸣器是一种能够产生声音的装置,其原理基于压电效应。

压电材料在受到外力作用时会产生电荷,而当外力消失时,压电材料则会产生相反方向的电荷。

利用这种特性,蜂鸣器可以通过施加电压来使压电材料振动,从而产生声音。

二、实验过程1. 准备工作:首先,我们需要准备一块单片机开发板、一个蜂鸣器和相关电路连接线。

2. 连接电路:将单片机的IO口与蜂鸣器连接,注意正确连接正负极。

一般情况下,蜂鸣器的正极连接到单片机的IO口,负极连接到GND。

3. 编写程序:使用单片机开发工具,编写一个简单的程序来控制蜂鸣器。

例如,我们可以通过控制IO口的高低电平来控制蜂鸣器的开关状态。

4. 烧录程序:将编写好的程序烧录到单片机中。

5. 实验测试:将单片机开发板连接到电源,观察蜂鸣器是否发出声音。

可以通过改变程序中IO口的电平来控制蜂鸣器的开关状态,从而产生不同的声音。

三、实验结果经过实验,我们成功地控制了蜂鸣器的开关状态,并产生了不同的声音效果。

通过改变程序中IO口电平的高低,我们可以调节蜂鸣器的频率和音调。

此外,我们还可以通过控制IO口的输出时间来调节蜂鸣器发声的时长。

四、问题分析与解决在实验过程中,我们可能会遇到一些问题,例如蜂鸣器无法发声或声音不稳定等。

这些问题可能是由以下原因引起的:1. 连接错误:检查蜂鸣器的正负极是否正确连接到单片机的IO口和GND。

确保连接线没有松动或接触不良。

2. 程序错误:检查程序中的代码是否正确,特别是IO口的控制部分。

确保程序正确地控制了蜂鸣器的开关状态。

3. 电源问题:检查单片机开发板的电源是否正常。

如果电源电压不稳定,可能会导致蜂鸣器无法正常工作。

单片机控制蜂鸣器变化音调

单片机控制蜂鸣器变化音调

单片机驱动蜂鸣器
作者:jdzj868 来源:机电之家下载站 录入:jdzj868
蜂鸣器使用在很多的场合,他一般用来发出报警或者提示的声音,是一种常用的电子器件,这里我给大家 简单的介绍一下用单片机驱动蜂鸣器的方法, 蜂鸣器有二种 1.本身带有驱动电路, 分 5v,9v,12v 超电压使用, 声音沙哑失真。2.象 call 机,喇叭一样,用软件驱动。频率控制音调,时间控制音量大小,第一种蜂鸣器 一般都有一个固定的频率参数也就是他他发出的声音是的一声。第 2 种就不同了用单片机驱动第 2 种蜂鸣器后还可以使他演奏出美妙的音乐,我们只需 要用简单的程序就可以控制单蜂鸣器所奏的频率,也就控制了音调。
c51 程序实例: 单片机驱动蜂鸣器演奏中华人民共和国国歌的前 4 节的 c51 程序: #include <REG52.h>
sbit BUZ=P2^6; //蜂鸣器接单片机的p2.6 电路很简单。 unsigned int hzs[]={131,147,165,175,196,220,247,262,294,330,349,392,440,494,523,587,659,698,784,880,988,1047,1175,131 9,1397,1568,1760,1976};//标准音调频率 char dots[]={8,28,10,12,12,13,28,28,12,28,10,28,8,12,12,12,10,28,28,8,28,5,5,5,5,5,5,8,'#'};//频率控制数组 void delay(unsigned int u) //延时 { while(u--); } void play_hz(unsigned int u) { unsigned int i=u; while(i--){ BUZ=0; BUZ=1; delay(18432/u-24);

单片机《蜂鸣器》实验报告

单片机《蜂鸣器》实验报告

单片机《蜂鸣器》实验报告单片机《蜂鸣器》实验报告一、实验目的本次实验旨在通过单片机的控制,实现对蜂鸣器的驱动和发声控制,进一步了解蜂鸣器的工作原理及应用。

二、实验原理蜂鸣器是一种电子发声器件,常用于发出警告、提示或声音信号。

其工作原理是利用电磁感应原理,在蜂鸣器线圈中通入电流时,会产生磁场,该磁场与蜂鸣器内部的一块磁铁产生相互作用力,使蜂鸣器内部的膜片发生振动,从而发出声音。

在本实验中,我们将通过单片机控制蜂鸣器的驱动信号,使其发出不同的声音,从而实现单片机对蜂鸣器的控制。

三、实验步骤1、准备实验器材:单片机开发板、蜂鸣器模块、杜邦线等。

2、将蜂鸣器模块连接至单片机开发板的某个数字引脚上。

3、通过单片机编程软件编写控制程序,实现对蜂鸣器的控制。

4、将编写好的程序下载到单片机开发板中,并进行调试。

5、通过单片机控制蜂鸣器发出不同的声音,观察其工作情况。

四、实验结果与分析1、实验结果通过本次实验,我们成功实现了单片机对蜂鸣器的控制,可以通过编写不同的程序,使蜂鸣器发出不同的声音。

以下是实验中蜂鸣器发出的声音及其对应的程序代码:(1) 发出“滴”的一声(2) 发出“嘟嘟”的警告声2、结果分析通过实验结果可以看出,通过单片机对蜂鸣器进行控制,可以实现发出不同声音的效果。

在第一个实验中,我们通过设置引脚的高低电平及延时时间,使蜂鸣器发出一声“滴”的声音。

在第二个实验中,我们通过一个无限循环,使蜂鸣器发出“嘟嘟”的警告声。

五、结论与展望通过本次实验,我们深入了解了蜂鸣器的工作原理及应用,并成功实现了单片机对蜂鸣器的控制。

实验结果表明,我们可以根据实际需要编写不同的程序,实现对蜂鸣器的灵活控制。

展望未来,我们可以进一步研究蜂鸣器的其他应用场景,例如在智能家居、机器人等领域中的应用。

我们也可以通过其他方式对蜂鸣器进行控制,例如通过传感器采集信号或者通过无线网络进行远程控制等。

单片机课程设计报告蜂鸣器

单片机课程设计报告蜂鸣器

单片机课程设计报告蜂鸣器河南师范大学新联学院单片机课程设计报告课程单片机原理及接口技术设计题目蜂鸣器演奏歌曲年级专业级计算机科学与技术学号 11学生姓名李指导教师莹6 月 15 日蜂鸣器演奏歌曲实验报告一、要求完成驱动蜂鸣器歌曲演奏的实验二、目的1、学习KEIL软件的使用方法;2、掌握BST-V51单片机学习板设计蜂鸣器音乐的发生;3、掌握设计中各模块的功能,能够填入并演奏曲子;4、学习乐谱的基本知识,掌握其演奏的原理。

三、分析1、基本原理简述声音是经过振动产生的。

单片机对某一引脚以一定的频率循环置1置0,该引脚便产生一定频率的方波,方波经过放大,作用于一定的物理实件(蜂鸣器),就产生了一定频率的声音。

若改变输出方波的频率,产生的声音随之改变。

经过控制输出方波的时间长短,声音的长短也可以得到控制,因此,根据乐谱,以类似的音及同样的节拍,单片机就能够产生电子音乐。

音乐的播放选择能够经过按键的输入得以实现。

为简便起见,以一定的频率方波产生的音在其每个周期内高低幅值得时间各占一半。

因此,输出引脚在每个方波周期内要动作两次:一次升高,一次降低。

即输出引脚的频率是原音频率的两倍。

2、单片机产生不同频率脉冲信号的原理(1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就能够在I/O脚上得到此频率的脉冲。

(2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法如下:例如,频率为523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。

计数脉冲值与频率的关系公式如下: N=Fi/2/Fr(N:计数值,Fi:内部计时一次为1uS,故其频率为1MHz,Fr:要产生的频率)(3)其计数值的求法如下:T=65536-N=65536-Fi/2/Fr计算举例:设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。

51单片机项目教程项目 5 蜂鸣器实验

51单片机项目教程项目 5  蜂鸣器实验

图5- 9蜂鸣器实物结果
当SM0、SM1=01时,串行口设为方式1的双机串行通信。TXD脚和 RXD脚分别用于发送和接收数据。
5.2技术准备
方式1发送时,数据位由TXD端输出,发送一帧信息为10位:1位起始 位0,8位数据位(先低位)和1位停止位1。当CPU执行一条数据写 SBUF的指令,就启动发送。发送开始时,内部发送控制信号变为有 效,将起始位向TXD脚(P3.0)输出,此后每经过一个TX时钟周期, 便产生一个移位脉冲,并由TXD引脚输出一个数据位。8位数据位全部 发送完毕后,中断标志位TI置1。 方式1接收时(REN = 1),数据从RXD(P3.1)引脚输入。当检测到 起始位的负跳变,则开始接收。当一帧数据接收完毕后,同时满足以 下两个条件,接收才有效。 (1)RI = 0,即上一帧数据接收完成时,RI = 1发出的中断请求已被 响应,SBUF中的数据已被取走,说明“接收SBUF”已空。 (2)SM2 = 0或收到的停止位 = 1(方式1时,停止位已进入RB8), 则将接收到的数据装入SBUF和RB8(装入的是停止位),且中断标 志RI置“1”。
5.2技术准备
5.2.2 了解实验板蜂鸣器电路
图5- 3蜂鸣器电路
5.2技术准备
5.2.3 蜂鸣器驱动电路
蜂鸣器驱动电路如图5-4所示。
图5- 4蜂鸣器驱动电路
5.2技术准备
5.2.4串行口的结构
单片机串口结构如图5-5所示。有两个物理上独立的接收、发送缓冲器 SBUF(属于特殊功能寄存器),可同时发送、接收数据。控制寄存器共 有两个:特殊功能寄存器SCON和PCON。发送和接收引脚分别是TXD (P3.0)和RXD(P3.1)。
SM0 0 0 1 1 SM1 0 1 0 1 工作 方式 0 1 2 3 功能简介 移位寄存器 8位UART 9位UART 9位UART 比特率 OSC/12 可变 OSC/32或 OSC/64 可变
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机控制蜂鸣器20年月日目录绪论 (1)1、硬件设计 (2)1.1 总体设计图 (2)1.2 简易结构框图 (2)1.3各部分硬件设计及功能 (3)1.3.1 蜂鸣器发声电路:(如图1.3.1) (3)1.3.2 电源稳压电路: (4)1.4 元件清单 (4)2、软件设计 (5)2.1设计思想 (5)2.2 程序流程图 (5)2.3 音调、节拍以及编码的确定方法 (6)2.3.1音调的确定 (6)2.3.2 节拍的确定 (8)2.3.3 编码 (9)3、电路仿真与分析 (10)4、电路板焊接、调试 (11)4.1 焊接 (11)4.2 调试 (12)5、讨论及进一步研究建议 (12)6、心得 (12)7、单片机音乐播放器程序实例(卡农) (13)绪论蜂鸣器播放音乐电路设计对于单片机初学者来说是一个简单易实现的课题。

通过编写程序使单片机产生一定频率的方波信号,方波信号进入蜂鸣器便产生我们熟知的音调。

我们用定时/计数器使单片机产生方波,利用定时/计数器使输出管脚在一定周期内反复翻转,达到所需频率,而我们给定时/计数器的初始值就是我们的音符—半周期数据表,通过我们播放的音乐的乐谱,来对数据表进行调用。

我们用延时子程序来表示节拍,不同的节拍代表不同的延时。

完成此次设计之后完全可以进行扩展,例如增加按键以及LED灯光效果,制成一个简易的音乐盒,给人以视觉听觉等全方位的享受。

1、硬件设计1.1 总体设计图1.2 简易结构框图1.3各部分硬件设计及功能1.3.1 蜂鸣器发声电路:(如图1.3.1)图1.3.1如图所示,蜂鸣器发声电路是播放音乐电路的主要执行电路,它由一个蜂鸣器,一个三极管和一个电位器组成。

蜂鸣器负责发声,三极管将电流放大,而电位器则控制流过蜂鸣器电流的大小,来达到控制音量的目的。

1.3.2 电源稳压电路:我们采用DC005电源供电,供电电压为5V。

稳压电路用来达到稳定输入电压的目的,它由一个整流二极管,两个电容和一个三端稳压器组成。

二极管和电容组成整流电路,将交流整流成直流,而三端稳压器则用来稳定电压。

1.4 元件清单2、软件设计2.1设计思想将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,选择需要的声响时间,即可完成一个音符的播放。

该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符。

中间可根据需要将音符和音符之间插入时间延时,以产生需要的节拍,用01H或02H、03H 等等,具体根据歌曲的实际需要设置。

根据需要也可循环不停地播放整个乐曲。

利用INTO在中断中是属于最高优先级的特点,外部端口P3.2接中断0即可完成中断造成的歌曲选择——下一首的播放。

另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。

声音输出接一个三极管,利用通断放大声音。

2.2 程序流程图2.3 音调、节拍以及编码的确定方法一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。

2.3.1音调的确定不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。

把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。

两个音之间的距离有两个“半音”,就叫“全音”。

在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音。

通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。

﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。

例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266 Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍。

知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。

那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例:A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272μs由上图可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136μs这个时间t也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

设振荡器频率为f0,则定时器的予置初值由下式来确定:t = 12 *(TALL – THL)/ f0式中TALL = 216 = 65536,THL为定时器待确定的计数初值。

因此定时器的高低计数器的初值为:TH = THL / 256 = ( TALL – t* f0/12) / 256TL = THL % 256 = ( TALL – t* f0/12) %256 将t=1136μs代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高A在单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值为:TH440Hz = (65536 – 1136 * 12/12) /256 = FBHTL440Hz = (65536 – 1136 * 12/12)%256 = 90H根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。

C调各音符频率与计数值T的对照表如表4.1所示。

表2.3.1 C调各音符频率与计数值T的对照表低音频率T 参数中音频率T 参数高音频率T 参数Do 262 1908 229 Do 523 956 115 Do 1046 57 57 Do﹟277 1805 217 Do﹟554 903 108 Do﹟1109 54 54 Re 294 1701 204 Re 587 852 102 Re 1175 51 51 Re﹟311 1608 193 Re﹟622 804 97 Re﹟1245 48 48 Mi 330 1515 182 Mi 659 759 91 Mi 1318 45 45 Fa 349 1433 172 Fa 698 716 86 Fa 1397 43 43 Fa﹟370 1351 162 Fa﹟740 676 81 Fa﹟1480 41 41 So 392 1276 153 So 784 638 77 So 1568 38 38 So﹟415 1205 145 So﹟831 602 72 So﹟1661 36 36 La 440 1136 136 La 880 568 68 La 1760 34 34 La﹟464 1078 129 La﹟932 536 64 La﹟1865 32 32Si 494 1012 121 Si 988 506 61 Si 1976 30 302.3.2 节拍的确定若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。

“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。

若1拍实0.5s,则1/4 拍为0.125s。

至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。

音持续时间的长短即时值,一般用拍数表示。

休止符表示暂停发音。

一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。

了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。

对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。

因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。

表2.3.2节拍与节拍码对照节拍码节拍数节拍码节拍数1 1/4拍 1 1/8拍2 2/4拍 2 1/4拍3 3/4拍 3 3/8拍4 1拍 4 2/1拍5 1又1/4拍 5 5/8拍6 1又1/2拍 6 3/4拍8 2拍8 1拍A 2又1/2拍 A 1又1/4拍C 3拍 C 1又1/2拍F 3又3/4拍每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,图5.2为节拍码的对照。

如果1拍为0.4秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。

假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。

所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如图5.3为1/4和1/8节拍的时间设定。

表2.3.2 1/4和1/8节拍的时间设定曲调值DELAY 曲调值DELAY调4/4 125毫秒调4/4 62毫秒调3/4 187毫秒调3/4 94毫秒调2/4 250毫秒调2/4 125毫秒2.3.3 编码do re mi fa so la si分别编码为1~7,重音do编为8,重音re编为9,停顿编为0。

播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。

音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。

以0xff作为曲谱的结束标志。

举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18。

举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22歌曲播放的设计。

先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。

程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。

相关文档
最新文档