单片机课程设计报告利用蜂鸣器播放音乐

  • 格式:doc
  • 大小:491.00 KB
  • 文档页数:18

下载文档原格式

  / 18
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计:嵌入式系统应用

题目名称:利用蜂鸣器实现音乐播放功能

姓名:

学号:

班级:

完成时间:

1设计的任务

设计内容:动手焊接一个51单片机

设计目标:利用单片机上的蜂鸣器实现音乐播放功能

2 设计的过程

2.1 基本结构

1.STC89C52RC

在本次的试验中采用了STC89C52RC单片机,STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期,工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机),工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz,用户应用程序空间为8K 字节。

(STC89C52RC引脚图)

STC89C52RC单片机的工作模式:

(1)典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序(2)空闲模式:典型功耗2mA

(3)正常工作模式:典型功耗4Ma~7mA

(4)唤醒,适用于水表、气表等电池供电系统及便携设备

2.蜂鸣器及其工作原理:

蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

本实验采用的是电磁式蜂鸣器。

蜂鸣器按其是否带有信号源又分为有源和无源两种类型。有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音。无源蜂鸣器可以理解成与喇叭一

样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音。

本实验采用的是有源蜂鸣器。

(蜂鸣器与单片机连接电路图)

2.2 软件设计过程

1.蜂鸣器发声原理

本实验由于采用有源蜂鸣器,只需将引脚端口P3^4清零,蜂鸣器即可发声;P3^4置位,蜂鸣器停止发声。采用置1置0的方法只

能使蜂鸣器发声或停止发声,想要使蜂鸣器发出声音,必须对蜂鸣

器发出声音的音频和节拍进行控制。

(音乐基础

音调:

不同音高的乐音是用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)的一倍。

节拍:

节拍是让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若1拍实0.5s,则1/4 拍为0.125s。至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。

1)控制发声频率

要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O 反相,就可在I/O脚上得到此频率的脉冲。利用STC89C52RC的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0从而

产生不同频率。此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为0x00,则表示曲子终了;若查表结果为0xff,则产生相应的停顿效果。

以标准音高A为例,A的频率是440Hz,周期T=1/440=2272us。

在占空比为50%的情况下,导通时间=断开时间=半周期

t=2272us/2=1136us,利用P3^4端口的位操作,经过不断地反相变换即可得到标准音高A的音频脉冲。端口导通时间与断开时的时间利用定时器实现。具体的方法是将单片机定时器的中断触发时间设为半周期t,这样每隔半周期端口反相,输出连续的对应音高的频率。

设晶振的频率为f0,中断触发时间(半周期)为t,定时器工作在模式1时计数器的初值为THL,高8位为THL,低8位为TL。时钟周期即为1/f0,定时器每一次累加用去一个机器周期,一个机器周期包含12个时钟周期,即定时器每次加一所用时间是12/f0。定时器在模式1下计时采用16位数,最大计数为2^16-1(65535),再次加一(65536)溢出触发中断。根据以上分析可得如下关系:

音频对应定时器初值的高8位TH=THL/(2^8)=(65536-t*f/12)/256;

音频对应定时器初值的低8位TL=THL%(2^8)=(65536-t*f/12)%256; 附:八度12音阶定时器初值表(只含自然音)

低音音名频率Hz 晶振

12MHz

晶振

11.059

2MHz

中音音

频率Hz 晶振

12MHz

晶振

11.059

2MHz

高音音

频率Hz 晶振

12MHz

晶振

11.059

2MHz

Do 262 0xF885 0xF91B Do 523 0xFC4

3 0xFC8

E

Do 1046 0xFE21 0xFE47

Re 294 0xF95

A 0xF9DF Re 587 0xFCA

D

0xFCE

D

Re 1175 0xFE56 0xFE76

Mi 330 0xFA10xFA8Mi 659 0xFD00xFD4Mi 1318 0xFE85 0xFEA