单片机音乐播放器毕业论文_第1页
单片机音乐播放器毕业论文_第2页
单片机音乐播放器毕业论文_第3页
单片机音乐播放器毕业论文_第4页
单片机音乐播放器毕业论文_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录 摘 要.1 前 言.2 第 1 章 设计综述 .3 1.1 单片机产生音调的基本原理 .3 1.2 开发环境简介 .3 1.3 设计内容与目标 .4 第 2 章 音乐播放器的功能与组成.5 2.1 音乐播放器的功能 .5 2.2 音乐播放器的组成 .5 第 3 章 系统总体设计与关键技术.7 3.1 系统总体设计 .7 3.1.1 音乐播放器的工作原理.7 3.1.2 音阶对应频率计数初值的计算.8 3.1.3 乐曲节拍的计算.8 3.1.4 乐谱在程序中的编制.9 3.2 系统中应用的关键技术 .9 第 4 章音乐播放器的硬件设计.10 4.1 单片机最小系统 .10 4.1.1 单

2、片机复位电路.10 4.1.2 单片机晶振电路.10 4.2 键盘接口电路的设计.11 4.3 led 显示接口电路的设计 .12 4.4 扬声器控制电路的设计.13 4.5 硬件原理图 .13 第 5 章 音乐播放器的软件设计.15 5.1 主控软件的设计与流程图 .15 5.2 定时中断服务子程序的设计与流程图 .16 5.3 键盘控制模块的设计与流程图 .17 5.4 演奏乐曲模块的设计与流程图 .22 第 6 章 系统的实现与调试.25 6.1 硬件系统的焊接与调试 .25 6.2 软件调试 .26 6.2.1 测试 led 显示模块.26 6.2.2 测试键盘控制模块.27 6.2.

3、3 测试 p3.0 口输出.28 6.3 调试中遇到的问题及解决 .28 第 7 章 结 论.30 参 考 文 献.34 致 谢.35 摘摘 要要 随着科技的不断发展,目前市场上出现了许许多多的音乐播放器,人们对播放器的 需求也越来越广泛,对其要求也越来越高。 本文分析了基于单片机的音乐播放器的工作原理,详细介绍了音乐播放器的功能及 其硬件设计和软件设计的方法,给出了基于 mcs-51 单片机的音乐播放器的具体实现方案 并重点讲述了其硬件实现与软件编写,实现了单片机音乐播放器对音乐的演奏。 关键词关键词 : 音乐播放器、mcs-51 单片机、led 显示器 abstract with the

4、continuous development of science and technology, the market appeared many music players, the demand of players has become increasingly extensive and increasing their demands. this paper analyzes the scm-based music players working principle, described in detail the function of music player and its

5、hardware design and software design methods, given mcs-51 single- chip based on the music player to achieve the specific program and focus on the achievement of its hardware and software development, to achieve a single chip music player for playing music. keywords : music player、mcs-51 single-chip

6、microcomputer、led 前前 言言 几千年来,各种乐器的发声无一不是依靠琴弦、簧片、哨片引起管柱振动而作为声 源的。随着现代电子工业技术的飞速发展,一种用新的声源来制造音响的新型乐器脱颖 而出,这就是目前人们熟知的电子音乐播放器1。目前市场上的音乐播放器形形色色, 例如大家所熟悉的mp3,随着电子技术的不断发展,音乐播放器的发展也会进一步发展。 目前单片机的应用渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机 的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工 业自动化过程的实时控制和数据处理,广泛使用的各种智能 ic 卡,民用豪华轿车的安全 保障

7、系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这 些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了2。 本课题即是在这种背景下,对基于 mcs51 单片机的音乐播放器的设计与实现进行了 硬件及软件的设计,并给出了一套完整的解决方案,实现了单片机音乐播放器对音乐的 演奏。 第第1 1章章 设设计计综综述述 1.11.1 单片机产生音调的基本原理单片机产生音调的基本原理 音乐播放器是利用单片机产生乐曲音符,再把乐曲音符翻译成计算机音乐语言,用 单片机进行信息处理,再通过蜂鸣器或喇叭放出音乐。 音乐的产生主要是通过单片机的 i/o 口输出高低不同的脉冲信号

8、来控制蜂鸣器发音。 要想产生音频脉冲信号,需要算出某一音频的周期(1/频率),然后将此周期除以 2,即为 半周期的时间。利用单片机定时器计时这个半个周期时间,每当计时到后就将输出脉冲 的 i/o 口反相,然后重复计时此半周期时间再对 i/o 口反相,这样就能在此 i/o 口上得 到此频率的脉冲。 通常,利用单片机的内部定时器 0,工作在方式 1 下,改变计数初值 th0 和 tl0 来产 生不同频率。 对于音乐的节拍,每个音符使用 1 个字节,字节的高 4 位代表音符的高低,低 4 位 代表音符的节拍。如果 1 拍为 0.4s,1/4 拍为 0.1s,只要设定延迟时间就可求得节拍的 时间。假设

9、 1/4 拍为 1delay,那么 1 拍应为 4delay,以此类推。所以只要求得 1/4 拍的 delay,其余的节拍就是它的倍数。 总而言之,一首乐曲是由音阶和节拍两大要素构成。一首乐曲演奏的原理是:不同 音阶分别对应不同的频率,发出不同的音调,而节拍则控制发出音调时间的长短;若将 乐曲的音调连续发出,并使其按相应的节拍变化,即可演奏一首乐曲。根据这一特点, 我们采用单片机辅以相应的接口来设计音乐播放器3。 1.21.2 开发环境简介开发环境简介 随着单片机的不断发展,以c为主流的单片机高级语言也不断被更多的单片机爱好者 和工程师所喜爱。使用c语言肯定要使用到c编译器,以便把写好的c程序

10、编译为机器码, 这样单片机才能执行编写好的程序。keil uvision2是众多单片机应用开发软件中优秀的 软件之一,它支持众多不同公司的mcs-51架构的芯片,它集编辑,编译,仿真等于一体, 同时还支持,plm,汇编和c 语言的程序设计,它的界面和常用的微软vc+的界面相似, 界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能4。 本系统采用的开发环境为 keil uvision2,软件开发环境主界面见图 1-1。 图 1-1 keil uvision2 集成开发环境主界面 1.31.3 设计内容与目标设计内容与目标 本设计以 at89c51 单片机为核心。通过对其定时器的设定来实

11、现音乐的播放,通过 对键盘的设置可以实现人机对话,借助键盘可以向计算机系统输入程序,置数、送操作 命令、控制程序的执行走向等,并最终通过 led 显示器显示出播放的乐曲。 重点研究内容有: 单片机最小系统的设计与实现 键盘电路的设计与控制 扬声器控制电路的设计与实现 led 显示器的驱动及显示 定时初值的计算 软件模块的设计与编写 第第2 2章章 音乐播放器的功能与组成音乐播放器的功能与组成 2.12.1 音乐播放器的功能音乐播放器的功能 基于单片机的定时和控制装置在许多行业中有着广泛的应用,而音乐播放器是 其应用之一。在基于单片机的音乐播放器电路中,除了基本的单片机系统和外围电 路外,还需要

12、外部的控制和显示装置。在本设计中,输入装置是按键开关,由于控 制音乐播放器的运行模式,显示装置是 led 七段数码管5。 此次设计的音乐播放器要求具有以下功能: 音乐播放器按照从头到尾的顺序自动播放预先设定的 14 共 4 首乐曲,全部乐曲 播放完毕则停止。 音乐播放器按照从头到尾的顺序自动循环播放预先设定的全部乐曲。 选定某一乐曲,随即输入选定乐曲的序列号(14),即按下 14 数字键之一,音 乐播放器对选定的某一乐曲开始循环播放。 选定某一乐曲,随即输入选定乐曲的序列号(14),即按下 14 数字键之一,音 乐播放器就从选定的某一乐曲开始播放,按照顺序自动播放到最后一首乐曲,乐曲播放 完毕

13、则停止。 当用户按下暂停键时,音乐播放器打断正在播放的某一乐曲,用户再次按下暂停 键时,该乐曲继续播放。 当用户按下复位键时,音乐播放器终止正在播放的某一乐曲。 2.22.2 音乐播放器的组成音乐播放器的组成 根据系统音乐播放器的功能要求,一个完整的音乐播放器电路相当于一个简单的单 片机系统,该系统由按键开关、单片机、led 显示电路、扬声器控制电路 4 个方面构成。 51 单片机。51 单片机为整个系统的核心部分,是带动整个系统工作的重要部件。 键盘输入。键盘输入用来控制输入指令,发出指令至单片机,使单片机按照指令 工作。 扬声器。扬声器作为输出部分按照键盘给单片机的指令发出乐曲。 led

14、显示电路。led 显示器也作为输出部分,按照键盘给单片机的指令,显示正在 演奏的乐曲。 音乐播放器的系统组成框图如图 2-1 所示: 图 2-1 音乐播放器的系统组成框图 cpu at89c51 键盘输入扬声器 led 显示电路 第第3 3章章 系统总体设计与关键技术系统总体设计与关键技术 3.13.1 系统总体设计系统总体设计 根据系统的功能与组成,进行系统分析,系统除 cpu 核心部分外还需要与键盘连接 以接收输入指令,连接 led 显示器将要演奏的乐曲序号显示出来,通过连接扬声器使其 发出音乐。系统总体结构如图 3-1 所示。 图 3-1 系统总体结构框图 3.1.13.1.1 音乐播放

15、器的工作原理音乐播放器的工作原理 音乐播放器可利用单片机的定时器构成电子振荡器来发声。振荡器是电子乐曲播放 器的声源,专门用来制造音响,也称信号发生器,其作用相当于常规乐器的琴弦、簧片、 哨片。振荡器在音乐播放器的应用中有两个特点,可产生声音的频率与不同波形的振荡。 通过对单片机的定时器设置不同的定时初值,可发出音乐的不同音阶,通过调整振荡波 形与泛音的分布,可产生和变换各种音色。 在我们所设计的音乐播放器中,是通过单片机的定时器,产生不同频率的方波信号, 而没有调整振荡波形,因此音乐播放器发出的声音,是矩形波产生的音响,纯粹的矩形 波声音类似于单簧管的音色。 一首乐曲演奏的原理是:一首乐曲是

16、由音阶和节拍两大要素构成,不同音阶分别对 应不同的频率,发出不同的音调,而节拍则控制发出音调时间的长短;若将乐曲的音调 连续发出,并使其按相应的节拍变化,即可演奏一首乐曲。根据这一特点,我们采用单 片机辅以相应的接口来设计音乐播放器。 晶振、复位电路 单片机 键盘输入控制 led 显示电路 扬声器 3.1.23.1.2 音阶对应频率计数初值的计算音阶对应频率计数初值的计算 单片机的振荡频率为fosc12mhz ,通过定时器 t0 溢出后对 p3.0 口取反产生方波, 故定时器溢出时间为 1/2f 。 由: , 则定时初值为: nosc n ff x 2 112 )2( 1616 2 24 os

17、c n n f x f 以音阶“1”为例:f523 hz,则 t1/f 定时初值: 6 1616 12 10 226458044 2424 523 osc n n f xfch f 用同一方法可求出其它音阶所对应的频率定时初值,将其制表放在程序中,通过查 表向定时器 t0 装入所要求的定时初值,即可产生某一音阶所对应的频率的方波信号。c 调的音阶及其频率、在单片机中的定时初值对应如下: 音 名 c d e f g a b 简谱音阶 1 2 3 4 5 6 7 频率/ hz 262 294 330 349 392 440 494 定时初值 63628 63835 64021 64103 6426

18、0 64400 64524 表中序号 1 2 3 4 5 6 7 音 名 c d e f g a b 简谱音阶 1 2 3 4 5 6 7 频率/ hz 523 587 659 698 784 880 988 定时初值(hex) 64580 64684 64777 64820 64898 64968 65030 表中序号 8 9 10 11 12 13 14 音 名 c d e f g a b 简谱音阶 1 2 3 4 5 6 7 频率/ hz 1046 1175 1318 1397 1568 1760 1967 定时初值(hex) 65058 65110 65157 65178 65217

19、65252 65283 表中序号 15 16 17 18 19 20 21 3.1.33.1.3 乐曲节拍的计算乐曲节拍的计算 取乐曲节拍的长度为 0.4s ,即 1 拍0.4s ,由定时器 t1 控制延时。设置定时器 t1 的定时中断 t50ms ,采用定时方式 1。 由: ,则定时初值 x3c0bht f x osc 12 )2( 16 因此 1 拍0.4s8*50ms,即通过定时器 t1 的定时中断 8 次,产生 8*50ms 的定时, 就可以满足 1 节拍的定时要求。以此类推,通过定时中断 n 次,可产生 n*50ms 的定时以 满足 1/4 拍、1/2 拍、1 拍、2 拍等不同节拍的

20、定时要求。由此可知,节拍值只能是整数 值。不同节拍在单片机中的中断次数(音长)对应如下: 节 拍 1/8 1/4 1/2 3/4 1 3/2 2 3 4 时间长度 0.05s 0.1s 0.2s 0.3s 0.4s 0.6s 0.8s 1.2s 1.6s 音长(dec) 1 2 4 6 8 12 16 24 32 音长(hex) 01h 02h 04h 06h 08h 0ch 10h 18h 20h 3.1.43.1.4 乐谱在程序中的编制乐谱在程序中的编制 将乐谱转换为代码,应包含乐曲的总长度、音阶、音长(节拍)等信息。 具体设计如下: (1) 将音阶代码组成一个字节,节拍代码组成一个字节,

21、按照:音阶代码,节拍代 码,音阶代码,节拍代码 的顺序,将一个乐谱转换为一定长度的代码数据表。 (2) 在程序执行时顺序查此表,取出音阶代码,并根据音阶代码查频率表,以得到 该音阶对应的频率,随后将对应的定时初值送定时器 t0,使定时器 t0 产生该音阶对应的 频率,并通过 p3.0 口输出,驱动外接扬声器发声。 (3) 取出节拍代码 n,由定时器 t1 控制延时,通过定时中断 n 次,产生 n*50ms 的定 时。 t0、t1 启动后,根据乐谱表,某一个音阶发出相应频率的声音,并持续相应的节拍, 连续起来,我们就可以听到一个完整乐曲的演奏。 3.23.2 系统中应用的关键技术系统中应用的关键

22、技术 基于单片机的音乐播放器在设计时需要解决以下 4 个方面的问题: 有关单片机中定时器的使用。 利用键盘控制实现对单片机的控制。 led 显示模块的驱动和编制。 扬声器控制电路,用于发出不同频率的音调。 第第4 4章章音乐播放器的硬件设计音乐播放器的硬件设计 一个完整的音乐播放器电路相当于一个简单的单片机系统,该系统由按键开关、 单片机、晶振和复位电路、led 显示电路、扬声器控制电路 5 个方面构成。其中, 除了单片机是集成的 ic 芯片,而其他 4 个部分则需根据应用要求而设计。 4.14.1 单片机最小系统单片机最小系统 单片机芯片,配以必要的外部器件就能构成单片机最小系统。单片机具有

23、较强的外 部扩展、通信能力,能方便地扩展至应用系统所要求的规模。 当使用带 rom 或 eprom 的 mcs51 系列单片机时,只要一个芯片即可构成一个单片机 的最小系统。选用 80c51 或 8051 或 at89c51 单片机作为主机,它们都具有 4k 片内 rom,128 字节片内 ram,片外 rom 寻址范围达 64k,片外 ram 寻址范围达 64k,2 个 16 位 计数器,5 个中断源,4 个并行口,1 个串行口。简易自动乐曲播放器采用单片机最小系 统足以满足系统设计要求,同时要设计单片机最小系统的晶振和复位电路。 4.1.14.1.1 单片机复位电路单片机复位电路 复位是单

24、片机的初始化操作,其作用是使 cpu 中的各个部件都处于一个确定的 初始状态,并从这个状态开始工作。当 8051 的 ale 及 两脚输出高电平,rst 引脚 高电平时,单片机复位。 8051 单片机的复位电路有上电复位和手动按钮复位两种形式,rst/vpd 端的高 电平直接由上电瞬间产生高电平则为上电复位;若通过按钮产生高电平复位信号称 为手动按钮复位。图 4-1 为兼有上电复位与按钮复位的电路。图中,上电瞬间 rst 端的电位与 vcc 相同,随着电容充电电流的减小,+5v 立即加到了 rst/vpd 端,该 高电平使 8051 复位。若运行过程中,需要程序从头开始执行,这只需按图 4-1

25、 中 的按钮即可。按下按钮则直接把+5v 加到了 rst/vpd 端从而复位,这称为手动复位。 在实际应用系统中,有些外围芯片也需要复位,如果这些复位端的复位电平要求与 单片机的要求一致,则可以与之相连。 4.1.24.1.2 单片机晶振电路单片机晶振电路 晶振是给单片机提供工作信号脉冲的,这个脉冲就是单片机的工作速度。比如 12m 晶 振,单片机工作速度就是每秒 12m。当然,单片机的工作频率是有范围的,不能太大, 一般 24m 就不上去了,不然不稳定 。图 4-2 为晶振电路。 图 4-1 复位电路 图 4-2 晶振电路 4.24.2键盘接口电路的设计键盘接口电路的设计 单片机应用系统中的

26、人机对话通道是用户为了对应用系统进行干预以及了解应用系 统运行状态所设置的通道。主要有键盘、显示器等通道接口。 在单片机应用系统中,为了控制系统的工作状态以及向系统中输入数据,应用系统 设置键盘,用于系统复位,功能转换以及数字输入。键盘的设置可以实现人机对话,借 助键盘可以向计算机系统输入程序、置数、送操作命令、控制程序的执行走向等。 在本次设计中键盘由 p1 口输入, 按键设置:14 四个数字键,af 六个功能键。 数字键(14): 用于输入 14 共 4 首乐曲的序列号。 功能键(af): a 键:乐曲从 14 按顺序播放 b 键:乐曲从 14 循环播放 c 键:循环播放某一乐曲 d 键:

27、从某一乐曲开始播放至最后一首乐曲 e 键:暂停/播放 f 键:停止播放 各功能键(af)的意义与操作: a 键:乐曲从 14 按顺序播放。 当用户按下 a 键后,led 显示器清屏,简易自动乐曲播放器按照从头到尾的顺序自动 播放预先设定的 14 共 4 首乐曲,全部乐曲播放完毕则停止。 b 键:乐曲从 14 循环播放。 当用户按下 b 键后,led 显示器清屏,简易自动乐曲播放器按照从头到尾的顺序自动 循环播放预先设定的全部乐曲。 c 键:循环播放某一乐曲 当用户按下 c 键后,并选定某一乐曲,随即输入选定乐曲的序列号(14),即按下 14 数字键之一,简易自动乐曲播放器对选定的某一乐曲循环播

28、放。 d 键:从某一乐曲开始播放至最后一首乐曲 当用户按下 d 键后,并选定某一乐曲,随即输入选定乐曲的序列号(14),即按下 14 数字键之一,简易自动乐曲播放器就从选定的某一乐曲开始播放,直到乐曲播放完 毕则停止。 e 键:暂停/播放。 当用户按下 e 键时,简易自动乐曲播放器打断正在播放的某一乐曲,用户再次按下 e 键时,该乐曲继续播放。 f 键:停止播放。 当用户按下 f 键时,简易自动乐曲播放器终止正在播放的某一乐曲。 本设计中按键作为输入部分,由 p1 口输入。 4.34.3ledled 显示接口电路的设计显示接口电路的设计 在单片机应用系统中,使用的显示器主要有 led 显示器(

29、发光二极管显示器) 。这种 显示器成本低廉,配置灵活,与单片机接口方便。在本系统的设计中采用 led 显示器。 led 显示器由 8 位 led 数码管组成,用于显示系统在各种不同条件下的状态。 用单片机驱动 led 数码管有很多方法,按显示方式分,有静态显示和动态显示,按 译码方式分为硬件译码和软件译码。 静态显示是显示驱动电路具有输出锁存功能,单片机将要显示的数据送出后不再控 制 led,直到下次显示时再传送一次新的显示数据。静态显示的数据稳定,占用 cpu 时间 少。 动态显示要 cpu 时刻对显示器件进行数据刷新,显示数据会有闪烁,占用的 cpu 时 间多。 这两种显示方式各有利弊:静

30、态显示虽然数据显示稳定,占用很少的 cpu 时间,但 每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多;动态显示虽然闪烁, 占用的 cpu 时间多,但使用的硬件少,能节省线路板空间。 在本设计中由于显示部分比较简单,所以选用了静态显示方式,led 显示器由 74ls373 来驱动,为了扩展外部存储器需一块 74ls373(地址锁存器) 。 led 发光器件一般常用的有两类:数码管和点阵。常用的数码管一般为 8 字型数码管, 分为 a、b、c、d、e、f、g、dp 八段,其中 dp 为小数点。数码管常用的有 10 根管脚, 每一段有一根管脚,另外两根管脚为一个数码管的公共端,两根之间相连

31、通。 数码管从电路上来看可分为共阴和共阳两种,在本设计中用了共阳的 led。 4.44.4扬声器控制电路扬声器控制电路的设计的设计 扬声器控制电路用于发出不同频率的音调,是在 p3.0 口加一反相器再连接到喇叭这 样就可够成。 4.54.5 硬件原理图硬件原理图 通过以上分析,本次设计的音乐播放器的电路原理图如图 4-4 所示。 图 4-4 音乐播放器的原理图 开机加电 显示等待提示状态 f 读取键盘 是否有键输入? n 是否是a键? y 是否是 b 键? n 是否是d键? n y a 键子程序 y b 键子程序 关闭定时器 t0、t1 置定时器 t0、t1 工作方式 y d 键子程序 是否是

32、 c 键? c 键子程序 n y 第第5 5章章 音乐播放器的软件设计音乐播放器的软件设计 软件设计的重点在于定时中断的设计、键盘控制、显示的实现、乐曲的演奏等方面。 5.15.1 主控软件的设计主控软件的设计与流程图与流程图 主模块是系统软件的框架。本系统的主模块的程序框图可用图 5-1 来表示。主控模 块用于控制系统的工作。该模块先初始化,接着接受到复位信号后读取键盘信号,再调 用各键子程序。 图 5-1 主控模块的流程图 主控程序主要源程序代码如下: start: mov sp, #60h mov tmod, #11h mov ie, #8ah 中断入口 产生周期方波 启动定时器 t0

33、查频率表重装音频初值 中断返回 关闭定时器 t0 mov ip, #08h ;t1 中断优先于 t0 中断 mov th1, #3ch mov tl1, #0bh;以上为系统初始化,t=50ms w1: mov p2, #10001110b ;等待提示f lcallgetkey cjne a, #0ffh, w1 mov a, b cjne a, #0ah, w2 lcall key_a ;输入键是a,转 key_a sjmpw1 w2: cjnea, #0bh, w3 lcall key_b ;输入键是b,转 key_b w3: cjnea, #0ch, w4 lcall key_c ;输入

34、键是c,转 key_c w4: cjnea, #0dh, w5 lcall key_d sjmpw1 ;输入键是d,转 key_d 5.25.2 定时中断服务子程序定时中断服务子程序的设计与流程图的设计与流程图 定时器 t0 用于产生不同频率的音阶,如图 5-2 为定时器 t0 的中断服务子程序。而 定时器 t1 控制延时来实现不同的节拍,定时时间设定为 50ms,图 5-3 为定时器 t1 的中 断服务子程序。 图 5-2 定时器 t0 的中断服务流程图 中断入口 装入定时常数=3c0bh 启动定时器 t1 节拍数减 1 中断返回 关闭定时器 t1 图 5-3 定时器 t1 中断服务流程图

35、其程序如下所示 int_t0: clr tr0 ;定时器 0 中断子程序 mov tl0, 20h mov th0, 21h cpl p3.0 setb tr0 reti int_t1: clr tr1 ;定时器 1 中断子程序 clr tr0 lcallkey_e mov th1, #3ch mov tl1, #0bh djnz 60h, out mov 60h, #20 out:setbtr1 reti 5.35.3 键盘控制模块键盘控制模块的设计与流程图的设计与流程图 键盘控制模块分为 6 个功能键和读 4 个数字键。下面分别介绍各个键的流程图和程 序: 入口 系统复位 系统返回 入口

36、led 显示 e tr0、tr1 取反 系统返回 e键被按下? n y f 键子模块 f 键是用于实现系统复位 图 5-4 f 键流程图 e 键子模块 e 键用于实现对乐曲的暂停和播放 图 5-5 e 键子程序流程图 按下 e 键的主要源程序代码如下 key_e: jbp3.1, l2 ;中断键盘检测 lcalldelay2 ;消除抖动 jb p3.1, l2 ;如果是高电平就跳到 l2 jnb p3.1, $ ;如果仍然是低电平就执行中断程序 mov p2, #10000110b ;让 led 显示 e l3: jb p3.1, $ ;检测低电平,直到低电平时才跳出该指令 lcalldela

37、y2 jb p3.1, l3 jnb p3.1, $ ;如果再来一个高电平才跳出中断 mov p2,r5 入口 led显示器清屏 调 a键子程序 系统返回 l2: setb tr0 ret a 键子模块 当用户按下 a 键后,led 显示器清屏,简易自动乐曲播放器按照从头到尾的顺序自动 播放预先设定的 14 共 4 首乐曲,全部乐曲播放完毕则停止。 入口 led 显示器清屏 调 music1 music4 子程序 即按顺序自动播放 4 首乐 曲,并显示相应的序号 系统返回 图 5-6 a 键子程序流程图 a 键主要源程序代码如下: key_a: lcallmusic1 ;乐曲我和你 lcall

38、music2 ;乐曲万水千山总是情 lcallmusic3 ;乐曲送别 lcallmusic4 ;乐曲北京欢迎您 ret b 键子模块 当用户按下 b 键后,led 显示器清屏,简易自动乐曲播放器按照从头到尾的顺序自动 循环播放预先设定的全部乐曲。 入口 led 显示器清屏 数字键按下? n y y 系统返回 是否是4? 是否是3? 是否是2? 是否是1? 乐曲 4 music 4并显示 乐曲 3 music 3并显示 乐曲 2 music 2并显示 乐曲 1 music 1并显示 y y y n n n n 图 5-7 b 键子程序流程图 b 键主要源程序代码如下: key_b: ;b 键子

39、程序(从 14 循环播放) t11:lcallkey_a sjmpt11 ret d 键子模块 当用户按下 d 键后,并选定某一乐曲,随即输入选定乐曲的序列号(14),即按下 14 数字键之一,简易自动乐曲播放器就从选定的某一乐曲开始播放。 图 5-8 d 键子程序流程图 d 键源程序代码如下: 入口 系统返回 显示输入数据 保存输入数据 读取键盘 有键输入? y 置合法输入标志 ff y 抖动? n n key_d: ;d 键子程序(从某一乐曲开始播放,播放完后停止) t2: lcallgetword cjnea, #0ffh, t2 mov a, b cjnea, #00h, b1 sjm

40、pc0 b1: cjnea, #01h, b2 sjmpc1 b2: cjnea, #02h, c3 sjmpc2 c0: lcallmusic1 ;乐曲我和你 c1: lcallmusic2 ;乐曲 万水千山总是情 c2: lcallmusic3 ;乐曲送别 c3: lcallmusic4 ;乐曲北京欢迎您 ret 读数字键 读取正在播放乐曲的序号,读取键盘后消去键盘抖动接着显示和保存数据。 图 5-9 getword 子程序(读数字键 0)流程图 读数字键主要源程序代码如下: getword: ;读音乐序号子程序 s1: jb p1.4, s2 ;读 1 键 lcalldelay2 jb

41、p1.4, s1 jnb p1.4, $ mov p2, #11111001b ;显示 1 mov r5, #11111001b mov a, #0ffh mov b, #00h ret 5.45.4 演奏乐曲模块演奏乐曲模块的设计与流程图的设计与流程图 (1) 将音阶代码组成一个字节,节拍代码组成一个字节,按照:音阶代码,节拍代 码,音阶代码,节拍代码 的顺序,将一个乐谱转换为一定长度的代码数据表。 (2) 在程序执行时顺序查此表,取出音阶代码,并根据音阶代码查频率表,以得到 该音阶对应的频率,随后将对应的定时初值送定时器 t0,使定时器 t0 产生该音阶对应的 频率,并通过 p3.0 口输

42、出,驱动外接扬声器发声。 (3) 取出节拍代码 n,由定时器 t1 控制延时,通过定时中断 n 次,产生 n*50ms 的定 时。 演奏乐曲的流程图如图 5-10 所示。 入口 定时器 t1 装入定时常数 3c0bh 由音阶值查音频表重装音频初值 开中断 由乐谱表取音阶值 由乐谱表取节拍值 启动定时器 t0、t1 发音定时没到则等待 返 回 图 5-10 演奏乐曲的流程图 演奏乐曲主要源程序代码如下: music: mov r3,#00h;音乐解码器 next20: mov a, r3 mov dph, 52h mov dpl, 53h movca, a+dptr mov r2, a jz s

43、top anl a, #0fh mov r1, a mov a, r2 swap a anl a, #0fh jnz sing clr tr0 jmp w11 入口 调 music 子程序 查乐谱表 table10 关闭定时器 t0、t1 返 回 乐曲演奏结束? n y e 键是否按下? e 键是否按下? n y 停止播放乐曲 y n 具体的在这里任选一首乐曲(我和你)说明乐曲的播放。演奏一首乐曲的流程图 如图 5-11 所示。 图 5-11 一首乐曲的流程图 乐曲我和你主要源程序如下: music1: ;第一首我和你 mov p2, #11111001b;显示 1 mov r5, #1111

44、1001b mov 52h, #high table10 mov 53h, #low table10 lcall music ret 第第6 6章章 系统的实现与调试系统的实现与调试 系统焊接与调试分为硬件的焊接调试与软件的调试。硬件的焊接与调试侧重于原理 设计的正确性验证和焊接工艺;软件的调试则侧重于子模块的功能验证和模块与模块的 接口配合。下面结合本设计实例加以讨论。 6.16.1 硬件系统的焊接与调试硬件系统的焊接与调试 硬件焊接前首先要仔细核对硬件系统设计原理的正确性,包括参数选用的正确性与 原理的正确性。确认正确后在通用实验板直接焊接实际电路来进行实物调试和验证。 调试分为断电调试和

45、上电调试。 第一步:断电调试第一步:断电调试 为安全起见,首先必须进行断电调试。断电调试的内容至少包括短路检测和原理正 确性确认。 (1)短路检测 系统电路焊接完成后,必须进行短路检测。检测方法很简单,选用合适的万用表欧 姆挡(例如,20k 挡或 200k 挡) ,用红黑表笔接电路板的+5v 电源的+、-极,如果存在充 放电现象(即电阻指示从大到小再到大或从小到大) ,最后电阻稳定在一个适当的位置 (一般为几千欧姆) ,则基本可排除系统短路现象。如果无充放电现象或电阻值稳定在很 小的位置(例如几欧姆) ,则说明系统中可能存在短路故障,不能通电试验,必须对系统 进行彻底排查,直至解决。 (2)原

46、理正确性确认 关于这个问题,不同的电路有不同的工作原理,因此,必须针对具体电路进行具体 分析。这里按照图 4-4,检查各个器件的引脚是否连接正确。 第二步:通电调试第二步:通电调试 1) 系统时钟是否起振 凡是微处理器系统,正常运行的必要条件是系统时钟稳定正常。在实际工作中,因 为各种原因导致系统时钟不正常而出现系统无法正常运行的情况也时有出现,因此系统 时钟是否起振应是通电检查的首要一环。检查方法如下: (1)逻辑笔法。利用逻辑笔看时钟引脚 18、19,应出现脉冲跳变现象(即高低电平和 脉冲指示灯同时闪亮) ,否则,说明时钟没有起振。 (2)数字万用表法。用数值万用表的直流电压挡(20v)

47、,分别测量 18、19 脚的电压, 其中读数应在 2.5v 左右。 (3)示波器法。波形应为 6mhz 的脉冲方波。 2)复位电路是否正常 复位不正常也会导致系统不工作,例如,9 脚(复位脚)如果始终为高,则系统始终处于 复位状态;如果始终为低电平(不能产生复位所需的高电平脉冲),则系统也可能无法正常 工作.检查的重点是相关电路是否正确。 6.26.2 软件调试软件调试 结构化软件的调试一般可以将重点放在分模块调试上,通调是最后一环。软件调试可 以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,借助于软件仿真器即可; 后者一般需要仿真系统的支持。在本次设计中利用的是 keil c51 软

48、件仿真器,其评估版 本可以免费获取,只是有 2kb 代码限制。 基于 mcs51 的音乐播放器的设计与实现的调试,主要集中在对扬声器的输出音乐 部分的调试以及键盘控制和 led 显示部分的调试上。在编写完整的音乐播放器程序前, 可以先按照如下的顺序分别调试各个功能模块的程序。 6.2.16.2.1 测试测试ledled显示模块显示模块 (1)调试目的 使用 p2 口作为输出口实现 led 的显示,从而检测 p2 口及 led 显示模块是否正常工 作。 (2)调试程序 main: mov tmod, #10h ;定时器 t1 工作在方式 1 mov th1, #3ch mov tl1, #0b0

49、h;t=50ms start: mov r1,#00h ;计数显示初始化 mov dptr,#tab disp: mov a,r1 movc a,a+dptr ;查表得显示的字型码 mov p2,a ;数码管显示 0 acall delay1s ;延时 1s inc r1 ;计数值加 1 cjne r1,#10,disp ;秒值不到 10,继续显示;否则清 0 mov r1,#00h ;计数值清 0 sjmp disp tab: db 0c0h,0f9h,0a4h ;0,1,2 db 0b0h,99h,92h ;3,4,5 db 82h,0f8h,80h ;6,7,8 db 90h ;9 de

50、lay1s: ;延时子程序 mov r3,#14h ;置 50ms 计数循环初值 setbtr1 ;启动 t1 lp1: jbc tf1,lp2 ;查询计数溢出 sjmp lp1 ;未到 50ms 继续计数 lp2: mov th1,#3ch ;重新置定时器初值 mov tl1,#0b0h djnz r3,lp1 ;未到 1s 继续循环 ret ;返回主程序 (3)调试结果 led 数码管从 0 到 9 自动循环显示,表明硬件与软件正确。 6.2.26.2.2 测试键盘控制模块测试键盘控制模块 (1)调试目的 通过键盘的控制可使 led 数码管显示相应的内容。 (2)调试程序 getkey:

51、;读 a 键盘子程序 sa: jb p1.0, sb ;读 a lcalldelay2 jb p1.0, sa jnb p1.0, $ mov p2, #10001000b;显示 a mov r5, #10001000b mov a, #0ffh mov b, #0ah ret (3)调试结果 键盘按下后 led 显示相应的内容,表明软硬件正确。 6.2.36.2.3 测试测试p3.0p3.0口输出口输出 (1)调试目的 使用 p3.0 口做输出口使扬声器工作 (2)调试程序 start: mov sp, #60h mov tmod, #11h mov ie, #8ah mov ip, #08

52、h ;t1 中断优先于 t0 中断 mov th1, #3ch mov tl1, #0b0h;以上为系统初始化,t=50ms here:sjmp here int_t0: clr tr0 mov tl0, 20h mov th0, 21h cpl p3.0 setbtr0 reti (3)调试结果 扬声器有声音发出,扬声器正常工作。 6.36.3 调试中遇到的问题及解决调试中遇到的问题及解决 (1)编程前要画流程图,这样会使思路清晰。 (2)编程时要注意,在程序开始时,要写入各定时器中断的入口地址。 (3)有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现 是因为程序中有的指

53、令书写得不规范导致的,例如有的 ret 返回指令一定要按正确格式 书写。 (4)程序中的跳转指令的运用很重要,为保险起见,都用 ljmp,我们就遇到过跳转指 令用错程序无法正常运行的现象。 (5)编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便 于查找或更改。 (6)开始时候没有将单片机的第 31 号引脚接到高电平,结果使音乐播放器的播放 性能不稳定(有时候能工作,有时候却工作不了) ,当接一高电平以后,播放器能正常工 作了。 (7)开始没有考虑键盘的消抖,造成的按键工作紊乱,具体的现象是:按 1 次键却 被要机器认为是按了 1 次或多次,这就使播放器有时候可以正常工作,有时候却不可以。 给键盘程序加了消抖呼程序以后,按键就工作正常了。 (8)两个定时器同时工作,存在中断时序问题,刚

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论