1、图书分类号:密 级:毕 业 设 计 (论 文 )基于单片机的 MP3 播放器设计学 生 姓 名 汤 明学 院 名 称 信 电 工 程 学 院专 业 名 称 电 子 信 息 工 程指 导 教 师 陈 豹2012 年 5 月 10 日徐 州 工 程 学 院 毕 业 设 计 (论 文 )I摘要因为单片机编写的 MP3 播放器具有执行效率高、频率输出稳定、易于修改、高可靠性、高性价比、低电压、低功耗等,使单片机近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、数据采集系统、智能化仪器仪表、及通讯设备、日常消费类产品、玩具等 1 。利用单片机设计的 MP3 播放器具有硬件电路简单,软件运行可靠等特
2、点。本文介绍了一种以 AT89S52 单片机为控制核心的 MP3。该设计采用 2*16 个点阵液晶模块LCD1602 作为显示界面,蜂鸣器作为发声元件,并利用定时器进行中断控制。本文分析了基于单片机的 MP3 播放器的工作原理,详细介绍了 MP3 播放器的功能及其硬件设计和软件设计的方法,给出了基于 MCS-51 单片机的 MP3 播放器的具体实现方案并重点讲述了其硬件实现与软件编写,实现了单片机 MP3 播放器对音乐的演奏。关键词:MP3 播放器;AT89S52;LCD1602徐 州 工 程 学 院 毕 业 设 计 (论 文 )II目 录摘要 I1 绪论 12 设计综述 22.1 单片机工作
3、原理 .22.1.1 单片机概述 .22.1.2 单片机的应用领域及发展趋势 .22.2 单片机产生音调的方法 32.3 KEIL 开发系统 .42.4 PROTEUS 的操作 .83 硬件设计 93.1 总体方案设计 .93.2 单片机最小系统电路 93.2.1 AT89S52 芯片性能介绍 93.2.2 电源电路 .133.2.3 时钟振荡电路 .133.3 键盘扫描模块 143.4 显示模块 153.5 播放模块 164 系统软件设计 .184.1 编程原理及流程图 .185 调试与仿真结果 .225.1 软件调试 225.1.1 测试 LED 显示模块 .225.1.2 测试键盘控制模
4、块 .235.1.3 测试 P3.0 口输出 .235.2 调试中遇到的问题及解决 245.3 仿真结果 25结束语 .26致 谢 .27参考文献 .28附录 .29附录 1 源程序 .29徐 州 工 程 学 院 毕 业 设 计 (论 文 )11 绪论几千年来,各种乐器的发声无一不是依靠琴弦、簧片、哨片引起管柱振动而作为声源的。随着现代电子工业技术的飞速发展,一种用新的声源来制造音响的新型乐器脱颖而出,这就是目前人们熟知的电子 MP3 播放器。目前市场上的 MP3 播放器形形色色,例如大家所熟悉的 MP3,随着电子技术的不断发展,MP3 播放器的发展也会进一步发展。目前单片机的应用渗透到我们生
5、活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC 卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。本课题即是在这种背景下,对基于 MCS51 单片机的 MP3 播放器的设计与实现进行了硬件及软件的设计,并给出了一套完整的解决方案,实现了单片机MP3 播放器对音乐的演奏。基于单片机的 MP3 播放器可应用于 MP3,MP4,扩音器等很多方面,并可作为很
6、多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括“Do“、“Re“、“Me“-等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。基于这个思想,我设计了一款特殊的“MP3 播放器“,本播放器可实现播放、暂停、选曲等功能。由于时间及条件限制,本设计实现了一种简单的 MP3 播放器,其核心器件采用 AT89S52 单片机,本播放器具有电路简单,功能强大,易于拓展等特点。在此基础上,可以添加按键,LED 显示屏等模块,实现切换歌曲,歌名显示,动感音乐屏等功能 2。徐 州 工 程 学 院 毕 业 设 计 (论 文 )
7、22 设计综述2.1 单片机工作原理2.1.1 单片机概述单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU 随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在
8、系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、有效的解决方案。2.1.2 单片机的应用领域及发展趋势单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分为如下几个范畴:一、在智能仪器仪表的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化
9、、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计、示波器、各种分析仪) 。二、在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。三、在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线徐 州 工 程 学 院 毕 业 设 计 (论 文 )3的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。 四、在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在
10、计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。单片机的发展趋势现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从 8 位、16 位到 32 位,数不胜数,应有尽有,有与主流 C51 系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:一、微型单片化现在常规的单片机普遍都是将中央处理器(CPU) 、
11、随机存取数据存储(RAM) 、只读程序存储器(ROM) 、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如 A/D 转换器、PMW(脉宽调制电路) 、WDT(看门狗) 、有些单片机将 LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中 SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向
12、发展。二、低功耗 CMOS 化MCS-51 系列的 8031 推出时的功耗达 630mW,而现在的单片机普遍都 100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了 CMOS(互补金属氧化物半导体工艺) 。像 80C51 就采用了 HMOS(即高密度金属氧化物半导体工艺)和 CHMOS(互补高密度金属氧化物半导体工艺) 。CMOS 虽然功耗低,但由于其物理特征决定其工作速度不够高,而 CHMOS 则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。2.2 单片机产生音调的方法徐 州 工 程
13、学 院 毕 业 设 计 (论 文 )4MP3 播放器是利用单片机产生乐曲音符,再把乐曲音符翻译成计算机音乐语言,用单片机进行信息处理,再通过蜂鸣器或喇叭放出音乐。音乐的产生主要是通过单片机的 I/O 口输出高低不同的脉冲信号来控制蜂鸣器发音。要想产生音频脉冲信号,需要算出某一音频的周期(1/频率),然后将此周期除以 2,即为半周期的时间。利用单片机定时器计时这个半个周期时间,每当计时到后就将输出脉冲的 I/O 口反相,然后重复计时此半周期时间再对 I/O 口反相,这样就能在此 I/O 口上得到此频率的脉冲。通常,利用单片机的内部定时器 0,工作在方式 1 下,改变计数初值 TH0和 TL0 来
14、产生不同频率。对于音乐的节拍,每个音符使用 1 个字节,字节的高 4 位代表音符的高低,低 4 位代表音符的节拍。如果 1 拍为 0.4S,1/4 拍为 0.1S,只要设定延迟时间就可求得节拍的时间。假设 1/4 拍为 1DELAY,那么 1 拍应为 4DELAY,以此类推。所以只要求得 1/4 拍的 DELAY,其余的节拍就是它的倍数。总而言之,一首乐曲是由音阶和节拍两大要素构成。一首乐曲演奏的原理是:不同音阶分别对应不同的频率,发出不同的音调,而节拍则控制发出音调时间的长短;若将乐曲的音调连续发出,并使其按相应的节拍变化,即可演奏一首乐曲。根据这一特点,我们采用单片机辅以相应的接口来设计
15、MP3 播放器。2.3 KEIL 开发系统使用 Keil 软件建立一个工程:Keil 是目前进行 51 单片机开发最常用的编译软件。关于 Keil 的使用,有很多的资料介绍,这里只介绍其整个编译过程。在 Keil 里,每一个完整的程序,都是以一个工程的形式建立的。一个工程里可以有一个或多个*.c 文件和*.h 文件,但只可以有一个 main()函数。一般的做法是将包含 main()函数的 C 文件加入到工程中,其他文件以#include 头文件的形式加到这个 C 文件里。这样,在编译的时候,其他的文件会被自动的导入到工程里来。打开 Keil 软件后,出现(图 2-3-1)所示界面。当然,如果
16、Keil 在上次关闭时有打开的工程,再一次打开时它会自动加载上一次的工程文件。徐 州 工 程 学 院 毕 业 设 计 (论 文 )5图 2-3-1 Keil 软件主界面首先点击 Project-New Project(Project-Open Project为打开一个已经存在的工程) ,如图 2-3-2 所示。图 2-3-2 Keil 软件打开新工程界面点开后,在出现的对话框中选择工程存在路径,单击“保存”后,出现(如图 2-3-3 所示)界面。在此界面上选择电路板上所用的单片机型号:Atmel AT89S51(或者是 AT89S52,视开发板上具体型号而定) ,单击“确定” 。徐 州 工 程
17、 学 院 毕 业 设 计 (论 文 )6图 2-3-3 选择电路板上所用的单片机型号设置完成后,软件会提示“是否将 8051 上电初始化程序添加入工程?”如图 2-3-4 所示,这个一般选择“否” 。 (关于 STARTUP.A51 的相关内容可查阅相应资料)图 2-3-4 是否将 8051 上电初始化程序添加入工程这样,就建立了一个空的 51 工程。接下来的事,就是在这个工程里面加入自己的程序代码。点击 ,或者File-New,便建立了一个空的文本框。现在,就可以开始在里面输入你的代码了。保存时注意:如果是用 C 语言写的程序,则将文本保存成*.c,如果是用汇编写的程序,则将文本存成*.as
18、m。到目前为步,我们已经建立了一个工程,也写了一个程序代码。但现在还不能开始编译。因为还没有将程序代码添加到工程里面去。下一步就是将写完的程序添加到工程里面,如图 2-3-5 所示,在左边徐 州 工 程 学 院 毕 业 设 计 (论 文 )7Project Workspace 里的 Source Group 1 上右击,选择 Add Files to Group Source Group 1。在打开的对话框中,选择刚存的文件路径和对应的文件名。图 2-3-5 添加文件到工程中下一步,就开始编译刚输入进去的代码。点击工具栏中的 按钮。接着,Keil 会打出下面的提示:Build target T
19、arget 1assembling led.asm.linking.Program Size: data=8.0 xdata=0 code=100“first“ - 0 Error(s), 0 Warning(s).其中“first“ - 0 Error(s), 0 Warning(s).”说明现在的工程编译通过,0 个错误和 0 个警告。建立工程的时候,默认是不生成 HEX 文件的,得在编译做如下设置:单击 ,或者在 Project Workspace 里 Target 1 上右击,选择“Options for Target Target 1”。出现如图 2-3-6 所示对话框,选择“Out
20、put”按图示,将箭头所指的多选框勾上,点“确定” 。现在再点击 重新编译,系统提示:“creating hex file from “first“.”。便会在工程所在文件夹里生成 HEX 文件。徐 州 工 程 学 院 毕 业 设 计 (论 文 )8图 2-3-6 生成 HEX 文件2.4 PROTEUS 的操作1.硬件电路图的接法操作 3(1)放置选择(删除)元器件(2)移动元器件(3)缩放视图(4)连接导线(5)仿真,调试2. 单片机系统 PROTEUS 设计与仿真过程 4Proteus 强大的单片机系统设计与仿真功能,使它可成为单片机系统应用开发和改进手段之一。全部过程都是在计算机上通过
21、 Proteus 来完成的。其过程一般也可分为三步:(1)在 ISIS 平台上进行单片机系统电路设计、选择元器件、接插件、连接电路和电气检测等。简称 Proteus 电路设计。(2)在 Keil 平台上进行单片机系统程序设计、编辑、汇编编译、代码级调试,最后生成目标代码文件(*.hex) 。简称 Proteus 源程序设计和生成目标代码文件。(3)在 ISIS 平台上将目标代码文件加载到单片机系统中,并实现单片机系统的实时交互、协同仿真。它在相当程度上反映了实际单片机系统的运行情况。徐 州 工 程 学 院 毕 业 设 计 (论 文 )9简称 Proteus 仿真。3 硬件设计3.1 总体方案设
22、计以 AT89S52 为核心,通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。要产生音频脉冲,只需算出某一音频的周期(1/音频) ,然后取半周期的时间定时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 I/O 反相,然后重复计时此半周期时间再对 I/O 口反相,就可在 I/O 脚上得到此频率的脉冲。当键盘有键按下时,判断键值,启动计数器 T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时在 LCD 显示歌曲序号和歌曲名称 5。总体如图 3-1 所示:图 3-1 总体方案图3.2 单片机最小系统电路3.2.1 AT89S52 芯片性能介绍AT89S52 是低电压,高性
23、能 CMOS 八位单片机,片内含 8K 字节的可反复擦写的只读程序存储器和 256 字节的随机存取数据存储器,器件采用 ATMEL 公司的高密度、非易失存储技术生产与标准 MCS-51 指令系统及 8052 产品引脚兼容,片内置通用八位中央处理器和 Flash 存储单元,功能强大适合于许多较复杂控制应用场合 6。AT89S52 主要性能参数: 与 MCS-51 产品指令和引脚完全兼容AT89S52键盘扫描模块液晶显示模块蜂鸣器发声模块徐 州 工 程 学 院 毕 业 设 计 (论 文 )10 8K 字节可重复擦写 Flash 闪速存储器 1000 次擦写周期 全静态操作:0Hz33MHz 三级加
24、密程序存储器 2568 字节内部 RAM 32 个可编程 I/O 口线 3 个 16 位定时/计数器 8 个中断源 全双工可编程串行 UART 通道 低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 快速编程周期 灵活 ISP 编程(字节和模式)芯片如图 3-2-1 所示:图 3-2-1 AT89S52 引脚图功能特性概述:AT89S52 提供以下标准功能:8K 字节 Flash 闪速存储器,256 字节内部RAM,32 个 I/O 口线,3 个 16 位定时/计数器。一个 6 向量两级中断结构,一个徐 州 工 程 学 院 毕 业 设 计 (论 文 )11全双工串行
25、通信口,片内振荡器及时钟电路。同时 AT89S52 可降至 0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。而本毕业设计中用到了, AT89S52 的各个口, P1 口接 RZ-1602 液晶显示电路,P2 口接按键,P3 口接晶振,蜂鸣器,工作指示灯,复位等电路。AT89S52 使一个功能强大的芯片,各个口由以下功能 7:P0 口是一组 8 位漏极开路型双向 I/O 口,即地址/数据总线复用口。作为输出口用
26、时,每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路,对端口 P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。P1 口是一个带内部上拉电阻的 8 位双向 I/O 口,P1 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路,对端口写“1” ,通过内部的上拉电阻把端口拉到高电平,1 不同之处是,P1.0 和 P1.1 还可分别作为定时/计数器 2 的外部计数输入(P1.0/T2)和输入(P1 此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出
27、一个电流。IL 与 AT89S5.1/T2EX) 。表 3-2-1 P1.0 和 P1.1 的第二功能表引脚号 功能特性P1.0 T2(定时/计数器 2 外部计数脉冲输入),时钟输出P1.1 T2EX(定时/计数 2 捕获/重装载触发和方向控制)P2 口是一个带有内部上拉电阻的 8 位双向 I/O,P2 的输出缓冲级可驱动吸(收或输出电流 4 个 TTL 逻辑门电路。对端口 P2 写“1” ,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I )。IL 在访问外部程序存储器或 16 位地址的外部数据存储器(例如执
28、行 MOVX DPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行 MOVX RI 指令)时,P2 口输出 P2 锁存器的内容。Flash 编程或校验时,P2 亦接收高位徐 州 工 程 学 院 毕 业 设 计 (论 文 )12地址和一些控制信号。P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对 P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的 P3 口将用上拉电阻输出电流。P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能。
29、表 3-2-2 P3 口第二功能表端口引脚 第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 (外中断 0)P3.3 (外中断 1 )P3.4 T0(定时 /计数器 0)P3.5 T1(定时 /计数器 1)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通 )RST:复位输入,当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。一般情况下,ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于
30、定时目的。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当 AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次 PSEN信号。徐 州 工 程 学 院 毕 业 设 计 (论 文 )13EA/VPP:外部访问允许。欲使 CPU 仅访问外部
31、程序存储器(地址为 0000HFFFFH) ,EA 端必须保持低电平。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。如 EA 端为高电平,CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2: 振荡器反相放大器的输出。 3.2.2 电源电路系统直流 9V 或者 12V 电池供电,由一片 LM7805 将 9V/12V 电源稳压在 5V上。5V 电源给所有芯片和电路供电。在电源电路中我们使用了两个滤
32、波电容,使用滤波电容主要目的是为了消除电源波动对系统的干扰,提高系统的抗干扰能力,其中 104 电容是用来滤高频杂波干扰,220uF 电容是用来滤低频杂波干扰。如图 3-2-2 所示:R1300C2104C3104Vin1GND2Vout 3U17805C1220C4220D2LED321123654S1图 3-2-2 电源电路图3.2.3 时钟振荡电路AT89S52 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1和 XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自激振荡器。片外石英晶体或者陶瓷谐振器及电容 C1、C2
33、接在放大器的反馈回路中构成并联振荡电路。这里我们采用电容 30pF,晶振采用 12MHZ。电路图如图 3-2-3 所示:徐 州 工 程 学 院 毕 业 设 计 (论 文 )14图3-2-3 时钟振荡电路3.2.4 复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。复位电路采用 RC 充电电路组成上电复位单片机电路,当系统上电时,在上电初期,电容 C 充电,使复位脚持续高电平,当 C 充电到达一定程度复位脚电位会慢慢变低,最后被电阻 R 完全拉低,高
34、电平复位的时间由充电的时间决定,充电时间又由 R 与 C 的阻值和容值之积决定。一旦单片机复位脚拉低后就一直都低电平,只有下电后再上电才重新开始复位过程。电路图如图 3-2-4 所示:EA/VP31X119 X218RESET9RD17 WR16INT012 INT113T014 T115P10/T1 P11/T2P123 P134P145 P156P167 P178P00 39P01 38P02 37P03 36P04 35P05 34P06 33P07 32P20 21P21 22P22 23P23 24P24 25P25 26P26 27P27 28PSEN 29ALE/P30TXD 1
35、1RXD 10U1AT89S52+5V10KR14.7UC1图 3-2-4 复位电路徐 州 工 程 学 院 毕 业 设 计 (论 文 )153.3 键盘扫描模块本方案采用独立式按键接口设计,各按键相互独立,每个按键单独占用一根I/O 口线,每根 I/O 口线的按键工作状态不会影响其他 I/O 口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下。键盘工作方式采用定时扫描方式,采用定时器 T0 定时,通过读取输出数据,识别按键工作状态。键盘按键所用开关为机械弹性开关,利用了机械触点的合断作用。由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动。抖动时
36、间的长短由按键的机械特性决定,一般为 10100ms。电平信号的波动,有可能令 CPU 误解为多次按键操作,从而引起误处理。为了确保 CPU 对一次按键动作只确认一次按键,必须消除抖动的影响。按键的消抖通常有软件和硬件两种消除方法。如果按键较多,硬件消抖将无法胜任,常采用软件消抖。本设计虽然按键少但还是采用常规的软件延时的方法:在第一次检测到有键按下时,执行一段延时子程序后,再确认电平是否仍保持闭电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。判断键盘程序流程如图 3-3 所示:有键按下?开始去键盘抖动同一键按下?根据键值执行功能功能循环YESNOYESNO
37、徐 州 工 程 学 院 毕 业 设 计 (论 文 )16图 3-3 键盘判断程序流程图3.4 显示模块常见的基于单片机设计的 MP3 播放器基本不能显示歌曲。该音乐播放系统设计上增加液晶显示器,可为使用者提供曲目信息。由于 LED 数码管只能显示数字而无法显示其他中英文字符,并对成本及功能考虑,因此从设计的成本及功能的角度考虑,采用 LCD-1602 显示模块,它可以显示每首曲目的英文名字。LCD-1602 驱动电路简单,可以由单片机直接输出命令驱动。LCD 各引脚功能如图表 3-4 所示:表3-4 LCD 引脚功能编号 符号 引脚说明 编号 符号 引脚说明1 VSS 电源地 9 D2 双向数
38、据口2 VDD 电源正极 10 D3 双向数据口3 VL 对比度调节 11 D4 双向数据口4 RS 数据/命令选择 12 D5 双向数据口5 R/W 读/写选择 13 D6 双向数据口6 E 模块使能端 14 D7 双向数据口7 D0 双向数据口 15 BLK 背光源地08 D1 双向数据口 16 BLA 背光源正极VDD:电源正极,4.55.5V,通常使用 5V 电压。VL:LCD 对比度调节端,电压调节范围为 05V。接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影” ,因此通常使用一个10K 的电位器来调整对比度,或者直接串接一个电阻到地。RS:MCU 写入数据或
39、者指令选择端。MCU 要写入指令时,使 RS 为低电平;MCU 要写入数据时,使 RS 为高电平。R/W:读写控制端。R/W 为高电平时,读取数据;R/W 为低电平时,写入数据。E:LCD 模块使能信号控制端。写数据时,需要下降沿触发模块。D0D7:8 位三态双向数据总线。如果 MCU 的 I/O 口资源紧张的话,该模块也可只使用 4 位数据线 D4D7 接口传送数据。本充电器就是采用 4 位数据传送方式。BLA: LED 背光正极。需要背光时,BLA 串接一个限流电阻接 VDD,BLK 接徐 州 工 程 学 院 毕 业 设 计 (论 文 )17地,实测该模块的背光电流为 50mA 左右。BL
40、K: LED 背光地端。3.5 播放模块通过蜂鸣器实现发声,当三极管基级由单片机控制变成高电平时,V1 导通并工作在饱和区,由于集电极和发射极之间的电压差几乎等于 0,故相当于蜂鸣器的另一个脚接地,蜂鸣器会发出蜂鸣声。当三极管基级由单片机控制变成高低电平时,V1 不导通并工作在截止区,那么蜂鸣器的另一个脚接到高电平,蜂鸣器不发出蜂鸣声。可以通过改变三极管基级的开关频率来控制蜂鸣器发出各种不同频率的声音。另外,蜂鸣器需要三极管驱动,而不能由单片机口线直接驱动,因为蜂鸣器的工作电流比较大(大概 100mA) ,故单片机口线不能承受。EA/VP31X119X218RESET9RD17WR16INT0
41、12INT113T014T115P10/T1P11/T2P123P134P145P156P167P178P00 39P01 38P02 37P03 36P04 35P05 34P06 33P07 32P20 21P21 22P22 23P23 24P24 25P25 26P26 27P27 28PSEN 29ALE/P 30TXD 11RXD 10U1AT89S52UBUZZER9015PNP+5VR1330图 3-5 蜂鸣器发声模块图徐 州 工 程 学 院 毕 业 设 计 (论 文 )184 系统软件设计4.1 编程原理及流程图音乐发声设计原理 8:(1)总体原理: 一首乐曲是由多个音符构成
42、的。每个音符都对应着一个确定的频率,乐曲中不同的音符,实质就是不同频率的声音;另外每个音符会根据乐曲的要求设定一个确定的节拍。可以控制单片机产生不同频率不同节拍的脉冲信号,由蜂鸣器发出就产生了美妙和谐的乐曲。 (2) 单片机产生不同频率脉冲信号的原理: 1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率) ,然后将此周期除以 2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的 I/O 反相,然后重复计时此半周期的时间再对 I/O 反相,就可以在 I/O 脚上得到此频率的脉冲。 2)利用单片机内部定时器使其工作在计数器模式 MODE1 下,改变计数值TH0 及 T
43、L0 以产生不同频率的方法如下: 例如,频率为 523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数 956 次时就将 I/O 反接,就可得到中音 DO(532Hz) 。计数脉冲值与频率的关系公式如下: N=Fi/2/Fr 其中 N 表示计数值;Fi 表示内部计时一次为 1uS,故其频率为 1MHz;Fr 表示要产生的频率。 徐 州 工 程 学 院 毕 业 设 计 (论 文 )193)其计数值的求法如下: T=65536-N=65536-Fi/2/Fr 计算举例: 设 K=65536,F=1000000=Fi=1MHz,求低音 DO(261H
44、z) 、中音 DO(523Hz) 、 高音 DO(1046Hz)的计数值。 T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr 低音 DO 的 T=65536-500000/262=63628 中音 DO 的 T=65536-500000/523=64580 高音 DO 的 T=65536-500000/1047=650594) 每个音符使用 1 个字节,字节高 4 位代表音符高低,低 4 位代表音符 节拍。假设 1/4 节拍为 1DELAY,则 1 拍应为 4DELAY,以此类推。只要求得 1/4拍的 DELAY 时间,其余节
45、拍则为它的倍数,本设计取 4/4 调值,延时时间为125ms,其中节拍码与实际节拍对照表 4-1-1。表 4-1-1 简谱对应的频率、简谱码和计数初值表简谱 发音 频率(Hz) 计数初值 简谱码5 低音 SO 392 64260 16 低音 LA 440 64400 27 低音 SI 494 64524 31 中音 DO 523 64580 42 中音 RE 587 64684 53 中音 MI 659 64777 64 中音 FA 698 64820 75 中音 SO 784 64898 86 中音 LA 880 64968 97 中音 SI 988 65030 A1 高音 DO 1046
46、65058 B2 高音 RE 1175 65110 C3 高音 MI 1318 65157 D4 高音 FA 1397 65178 E5 高音 SO 1568 65217 F不发音 0表 4-1-2 节拍码与实际节拍对照表 节拍码 实际节拍 节拍码 实际节拍 节拍码 实际节拍1 1/4 拍 5 1 又 1/4 拍 C 3拍徐 州 工 程 学 院 毕 业 设 计 (论 文 )202 2/4 拍 6 1 又 1/2 拍 F 3 又3/4 拍3 3/4 拍 8 2 拍4 1 拍 A 2 又 1/2 拍建立音乐步骤:1)先把乐谱的音符找出,然后由上表建立 T 值表的顺序。 2)把 T 值表构成一个编码
47、表,构成发音符的计数值放在计数初值编码表里。3)简谱码(音符)为高位,节拍为(节拍数)为低 4 位,音符节拍码放在程序 的简谱编码表里。建立编码表具体如下:1)定时值为十六进制 4 位数,拆分为两组,如 5 对应的定时值为 FD80H,拆分FDH 和 80H 两组.前者装入定时器的高位 TH0,后组装入定时器的低位 TL0。2)在程序中使用定时器 T0 方式 1 来产生来产生歌谱中各音符对应频率的音频脉冲,由 P3.7 输出,经三极管将信号放大后驱动蜂鸣器发出不同音节的声音。3)程序中的节拍控制是通过调用延时子程序 DELAY 的次数来实现,1 拍为500ms,即需要调用 4 次 DELAY;
48、3/4 拍需要调用 3 次 DELAY;2/4 拍需要调用 2次 DELAY。 4)节拍的控制码在表 TABLE 中位于音符码的后面。5)当一个音符的发音时间到时,再查下一个音符的定时常数和延时常数。依此进行下去,就可演奏出悦耳动听的乐曲。程序流程图如图 4-1 所示: 徐 州 工 程 学 院 毕 业 设 计 (论 文 )21图 4-1 主程序流程图如图 4-2 所示,开始播放自定义音乐程序时,指针指向乐谱第一个字节,将第一字节拆分为高低字节,其高字节即为音符中音高对应定时器定时常数,低字节即为音符中节拍对应的 1/4 节拍的次数,同时启动中断定时器 0 工作在方式 1,由定时器定时常数得到相
49、应音高,通过延时子程序设定 1/4 节拍的时间,由节拍次数得到节拍,再读取下一个乐谱字节,循环下去则演奏出美妙和谐的乐曲 9。开始程序指向乐谱第一个字节拆分字节的高低字节由高字节得音高对应定时器定时常数由低字节得到节拍对应节拍次数启动定时器 0延时节拍时间关闭定时器 0读取下一个乐谱字节字节是 00H 吗?程序循环YESNO徐 州 工 程 学 院 毕 业 设 计 (论 文 )22图 4-2 音乐播放子程序流程图5 调试与仿真结果5.1 软件调试结构化软件的调试一般可以将重点放在分模块调试上,通调是最后一环。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,借助于软件仿真器即可;后者一般需要仿真系统的支持。在本次设计中利用的是 KEIL C51