好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

数字音乐盒的设计与实现.docx

27页
  • 卖家[上传人]:第***
  • 文档编号:55665903
  • 上传时间:2018-10-03
  • 文档格式:DOCX
  • 文档大小:1.25MB
  • / 27 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 课课 程程 设设 计计 报报 告告 课程设计名称:微机系统综合课程设计微机系统综合课程设计 课程设计题目:数字音乐盒的设计与实现数字音乐盒的设计与实现 I 1 1 总体设计方案 1.1 题目介绍与要求题目介绍与要求 本次课程设计的任务是运用伟福 Lab8000 试验箱和 keil 软件设计并实现一个 数字音乐盒,要求采用 I/O 产生一定频率的方波,从而驱动蜂鸣器发出不同的音 调,演奏乐曲;并且需要采用七段数码管显示当前播放的歌曲序号和播放时间; 还得通过数字键盘直接选择乐曲,控制选择上一曲和下一曲音乐,具有暂停和播 放控制功能 1.2 设计思路设计思路 1.2.1 音调的产生音调的产生 频率的高低决定了音调的高低音乐的十二平均率规定:每两个八度音(如 简谱中的中音 1 和高音 1)之间的频率相差一倍在两个八度音之间又分为十二 个半音另外,音名 A(简谱中的低音 6)的频率为 440Hz,音名 B 到 C 之间、E 到 F 之间为半音,其余为全音由此可以计算出简谱中从低音 1 到高音 1 之间每 个音名对应的频率,所有不同频率的信号都是从同一个基准频率分频得到的 要产生音频脉冲,只要算出某一音频的周期(1/频率) ,然后将此周期除以 2,即为半周期的时间。

      利用定时器计时这半个周期时间,每当计时到后就将输 出脉冲的 I/O 反相,然后重复计时此半周期时间再对 I/O 反相,就可在 I/O 脚上 得到此频率的脉冲 利用 51 单片机的内部定时器使其工作在计数器模式 MODE1 下,改变计数值 TH0 及 TL0 以产生不同频率的方法 此外结束符和休止符可以分别用代码 00H 和 FFH 来表示,若查表结果为 00H,则表示曲子终了;若查表结果为 FFH,则产生相应的停顿效果 例如频率为 523Hz,其周期 T=1/523=1912us,因此只要令计数器计时 956us/1us=956,在每次技术 956 次时将 I/O 反相,就可得到中音 DO(523Hz) 计数脉冲值与频率的关系公式如下: 2 𝑁 = 𝐹𝑖/2/𝐹𝑟 N:计算值;Fi:内部计时一次为 1us,故其频率为 1MHz; 其计数值的求法如下: 初值𝑇 = 65536 ‒ 𝑁 C 调各音符频率与计数值 T 的对照表如表 1.1 所示 表表 1.11.1 C C 调各音符频率与计数值调各音符频率与计数值 T T 的对照表的对照表 低音频率N参数中音频率N参数高音频率N参数 Do2621908229Do523956115Do10465757 Do#2771805217 Do﹟ 554903108 Do﹟ 11095454 Re32941701204Re587852102Re11755151 Re﹟ 3111608193 Re﹟ 62280497 Re﹟ 12454848 Mi3301515182Mi65975991Mi13184545 Fa3491433172Fa69871686Fa13974343 Fa﹟ 3701351162 Fa﹟ 74067681 Fa﹟ 14804141 So3921276153So78463877So15683838 So﹟ 4151205145 So﹟ 83160272 So﹟ 16613636 La4401136136La88056868La17603434 La﹟ 4641078129 La﹟ 93253664 La﹟ 18653232 Si4941012121Si98850661Si19763030 1.2.2 节拍的产生节拍的产生 构成音乐需要节拍,让音乐具有旋律,而且可以调节各个音的快慢度。

      若 1 拍实 0.5s,则 1/4 拍为 0.125s至于 1 有多长时间,可以按照设计者来决定, 只要好听就行音持续时间的长短即时值,一般用拍数表示休止符表示暂停发 音 一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就 可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐节拍与节拍码 对照表如表 1.2 所示 3 表表 1.21.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 位代表音符的 节拍如果 1 拍为 0.4 秒,1/4 拍为 0.1 秒,只要设定延迟时间就可求得节拍的时 间假设 1/4 拍的延迟时间为 1,则 1 拍的延迟时间应为 4,以此类推。

      所以只要 求得 1/4 拍的延迟时间,其余的节拍就是它的倍数表 1.3 所示 表表 1.31/4 和和 1/8 节拍的时间设定节拍的时间设定 曲调值DELAY曲调值DELAY 调 4/4125 毫秒调 4/462 毫秒 调 3/4187 毫秒调 3/494 毫秒 调 2/4250 毫秒调 2/4125 毫秒 4 2 硬件电路设计 2.1 系统原理系统原理 数字音乐盒的核心主要分为三个方面,分别是七段数码管、键盘和蜂鸣器 用定时器中断的方式来控制蜂鸣器和扫描 4*4 键盘,在程序中用显示函数让数码 管显示,需要显示出歌曲序号和播放时间,并且能用键盘控制播放的音乐原理 框图如图 2.1 所示 8051单片机 P1.1 蜂鸣器 键盘行列驱动4 x 4键盘 七段数码管显示 定时器中断 驱动 图图 2.1 系统原理框图系统原理框图 2.2 单片机单片机 8051 单片机是在课堂上学习的单片机型号,也是这次课程设计的核心器件, 它是 8 位的单片机,具有品种全、兼容性强、性能价格比高等特点8051 单片机 具有很多的 I/O 口,其中 P2.4、P2.5、P2.6 连接 74LS138 译码器,而译码器则可 以控制片选信号和位选信号;P0 的八个 I/O 口要与译码器 74HC374 相连,然后在 与键盘连接,从而能确认数码管的段选信号,此次课程设计的位选码为 0x8002。

      段选码是 0x8004;P1.1 口则控制的是蜂鸣器单片机电路图如图 2.2 所示 5 图图 2.2 单片机电路图单片机电路图 2.3 主要电路器件主要电路器件 2.3.1 蜂鸣器蜂鸣器 蜂鸣器是整个电路中重要的输出部分之一,没有了蜂鸣器就不会响起悦耳的 音乐,本次课程设计,运用了单片机 I/O 口中的 P1.1 口,当程序中的 play 变量等 于 1 时,蜂鸣器响,反之,若 play 等于 0,则停止响声端口输出的方波经放大 滤波后,驱动蜂鸣器发声,蜂鸣器的电路图如图 2.3 所示 图图 2.3 蜂鸣器电路图蜂鸣器电路图 6 2.3.2 键盘键盘 Lab8000 实验箱内的键盘是 4*6 的键盘,但是这次课程设计只用到了前四列, 所以也就只扫描了四列按键,键盘的主要功能就是用户的输入,也是实现程序现 象的重要部分,当用户想播放哪首歌曲就在键盘中输入哪个按键实验箱内的键 盘还连接了一个 ULN2003 芯片,这个芯片的特点是电流增益高、工作电压高、 温度范围宽、带负载能力强等特点,适应于要求高速大功率驱动的系统键盘的电 路图如图 2.4 所示 图图 2.4 键盘电路图键盘电路图 2.3.3 数码管数码管 此次课程设计运用了六的数码管,第一个显示了歌曲的序号,第二个是空位, 第三和第四个显示了分钟的计时,第五和第六个显示了秒钟的计时。

      数码管的主 要作用就是显示出当前程序运行时的现象,数码管的位选位与 ULN2003 相连后 7 再接到键盘上,段选位则是连到 74HC374 译码器上,实验箱的数码管为共阴极, 显示方式为动态显示由电路图得知,位选信号为 1 时有效数码管示意图如图 2.5 所示 图图 2.5 数码管示意图数码管示意图 沈阳航空航天大学课程设计报告 8 3 程序设计 3.1 系统功能系统功能 该软件具有多种功能,系统功能图如图 3.1 所示 数字音乐盒 用户控制乐谱转码数据显示音乐计时 上 一 首 音 乐 暂 停 / 播 放 下 一 首 音 乐 选 择 歌 曲 序 号 图图 3.13.1 系统功能图系统功能图 3.2 主要函数介绍主要函数介绍 3.2.1 总体流程总体流程 程序的第一步是变量的初始化,定义了 flag、time、sec 等变量,并且设置了 各个音调对应的十六进制码,然后开中断,对定时器进行模式的选择和初值的计 算,接着调用 LED 显示函数使数码管按照程序设计的方式运行,其中扫描键盘 是用定时器中断的方法,设置每隔 3ms 中断一次,即扫描一次键盘流程图如图 3.2 所示 沈阳航空航天大学课程设计报告 9 开始 初始化变量 开中断,初始化定时器T1 设置T1为方式1,并计算初值 开定时器T1 数码管初始化 调用数码管显示函数 是否播放音乐 播放音乐 T F 结束 图图 3.23.2 总体流程图总体流程图 3.2.2 数码管显示函数数码管显示函数 数码管的显示在这里用的是动态显示方法,并且通过电路图得知,为了让 74HC138 芯片和 74HC573 芯片有效,计算出段控制口和位控制口分别为 0x8004 和 0x8002。

      流程图如图 3.3 所示 沈阳航空航天大学课程设计报告 10 数码管显示函数 从最左边的数码 管开始显示 数码管是否显示完毕 关闭所有八段码 将数据存入缓冲区 显示一位八段码 调用延迟函数Delay4 显示下一位 按照位选码显示 数码管清零 返回 F T 图图 3.33.3 数码管显示函数流程图数码管显示函数流程图 3.2.3 键盘扫描键盘扫描 扫描键盘主要用的是 unsigned char GetKey()函数,而且还是用定时器中断 的方法,设置每隔 3 毫秒中断一次,在一秒中大约会产生中断 333 次,就是说在 一秒钟扫描键盘 333 次 在扫描键盘的过程中,先是扫描哪一个的按键别按下,把第几列记录下来后, 沈阳航空航天大学课程设计报告 11 再扫描是哪一行的按键,记录是哪一行;最后根据公式“键值 = 列 x 4 + 行” , 就能计算出是哪一个按键被按下如图 3.4 所示 开始 变量初始化 扫描键盘列 键盘列移位 输出行信号 是否有键按下 是否全部扫描完成 计算键值 在数码管中显示 返回 T T F F 图图 3.43.4 键盘扫描函数流程图键盘扫描函数流程图 3.2.4 计时函数计时函数 为了对歌曲进行计时,所以设计了一个计时函数 jishi() 。

      分钟和秒钟分别 用两个数码管来显示,当歌曲响起时开始计时,若秒钟个位加到 10 时,则十位 加一,并且个位清零;秒钟的十位加到 5 时,分钟个位加一,并且将秒钟清零, 分钟的十位同理,最后通过缓冲区在数码管中显示计时函数如图 3.5 所示 沈阳航空航天大学课程设计报告 12 计时函数 是否播放音乐 秒钟个位加1 秒钟个位是否等于10 秒钟个位清零 秒钟十位加一 秒钟十位是否等于6 秒钟十位清零 分钟个位加一 分钟个位是否等于9 分钟十位加一 将时间数据存入 缓冲区 返回 F F F F T T T T 图图 3.53.5 计时函数流程图计时函数流程图 3.2.5 音乐函数音乐函数 音乐函数 song()是使蜂鸣器响起音乐的核心,一共有六首歌曲,分别用 0x01——0x06 控制着六首歌曲,通过用 switch 语句控制判断选择的是哪首歌曲, 选择歌曲的序号后,调用相对应的并且储存了用十六进制数表示歌曲的数组,若 沈阳航空航天大学课程设计报告 13 在键盘中选择了 1,就会调用 tiger[],则蜂鸣器就会按照 tiger 数组中存储的 十六进制码产生的频率响起音乐,播放结束后就会继续。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.