课程设计简易单片机音乐播放器
音乐播放器单片机课程设计

一.概述 (2)二.系统总体方案设计 (3)三.硬件设计 (6)3.1 89C51单片机 (6)图3-1和3-2 (7)3.2 I/O并行口直接驱动LED显示 (7)四.软件设计 (10)4.1.软件设计 (10)五.系统调试与仿真 (12)5.1软件仿真阶段 (12)5.2系统的仿真调试阶段 (12)5.3硬件安装调试 (12)六.总结 (14)参考文献 (15)附录A:音乐播放器电路设计图 (16)附录B:程序清单 (17)一.概述本课题要求以单片机为核心设计一个音乐播放器,完成多曲选择播放控制、停止控制、省电模式控制等功能。
音乐播放器利用单片机的定时器产生乐谱的各种频率方波,信号经过放大后由喇叭发出声音,选取某段音乐使单片机连续播放。
设计3个按键:播放/停止、下一曲、上一曲;4位LED显示器,用来显示所选曲目,该显示器在播放期间为了节省电源,设计为关闭状态,当一歌曲演奏结束,或选曲时显示器才显示曲目信息。
总体的设计思路是这样的。
二.系统总体方案设计本课题要求以单片机为核心设计一个简易音乐播放器,具有自动播放乐曲的功能。
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,音阶对应频率关系图1-1:图2-1本设计用89C51单片机为核心,利用8段数码管显示器.采用动态显示输出,声音输出用蜂鸣器来实现。
采用8段数码管显示器进行动态显示需要占用4根I/O线,蜂鸣器占用1根I/O线,89C51单片机有足够的线,不用扩展I/O口。
用一片单片机即可满足本设计的输入输出。
系统框图如图1-2所示:图2-2通过对音乐播放器主体部分的电路进行模仿设计,达到播放器固有的基本功能,设定按钮K1、 K2和K3。
按钮K1打开并自动播放乐曲1;按钮K2打开并自动播放乐曲2;按钮K3为手动控制音乐停止的按键。
根据设计要求该播放器能实现音键的控制。
除此之外还实现了存储并读出几首音乐的功能。
单片机音乐播放器课程设计

单片机音乐播放器课程设计一、课程目标知识目标:1. 理解单片机的基础知识,掌握其内部结构与工作原理;2. 学会使用C语言编写单片机程序,实现音乐播放器的功能;3. 了解音乐播放器的基本组成部分,如音符产生、音调控制等;4. 掌握音乐理论知识,能将简单的乐谱转换为单片机程序。
技能目标:1. 能够运用所学知识,设计并实现一个具有基础音乐播放功能的单片机系统;2. 熟练使用编程软件进行单片机程序编写、调试与优化;3. 学会使用相关工具和仪器,进行电路搭建、测试与故障排查。
情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发创新精神;2. 培养学生的团队协作能力,学会与他人共同解决问题;3. 增强学生的自信心,敢于面对挑战,勇于克服困难;4. 培养学生的责任心,关注环境保护,养成良好的操作习惯。
课程性质:本课程为实践性较强的课程,以项目为导向,结合单片机原理与应用,培养学生的动手能力和创新能力。
学生特点:本课程针对高中年级学生,学生具备一定的物理、数学基础,对电子制作有一定兴趣,但编程能力参差不齐。
教学要求:教师需结合学生特点,采用循序渐进的教学方法,注重理论与实践相结合,关注个体差异,提高学生的实践操作能力。
在教学过程中,注重引导学生思考,激发学生的学习兴趣,培养其创新精神。
通过课程学习,使学生能够独立完成一个简单的单片机音乐播放器设计。
二、教学内容1. 单片机基础知识:介绍单片机的内部结构、工作原理、性能特点,引导学生了解并掌握单片机的基本概念。
教材章节:第一章 单片机概述2. C语言编程基础:讲解C语言的基本语法、数据类型、运算符、控制结构等,为学生编写单片机程序奠定基础。
教材章节:第二章 C语言基础3. 单片机程序设计与调试:学习如何使用编程软件进行程序编写、调试与优化,掌握单片机程序的开发流程。
教材章节:第三章 单片机程序设计与调试4. 音频信号处理:介绍音频信号的基本知识,如音符、音调、节拍等,学习如何将乐谱转换为单片机程序。
单片机课程设计-音乐播放器

《单片机应用程序设计》课程设计题目:音乐播放器信息科学与工程学院 测控技术与仪器051班200524562008年7月作 者 姓 名: 指 导 教 师:学 院 名 称: 班 级 名 称: 学号:课程设计(论文)任务书课程设计(论文)题目:音乐播发器基本内容:通过单片机的编程设计,配合多个按键和LCD, 实现多种播放功能的音乐播放器。
课程设计(论文)专题部分:题目:音乐播放器基本内容:通过单片机设计多种功能的音乐播放器学生接受课程设计(论文)题目日期第19周指导教师签字:2008年7月摘要近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入。
同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片往是作为一个核心部件来使用,智能仪器就是以单片机为核心开发的一系列产品。
随着科技的发展,智能仪器和单片机被各个领域所重视,工业方面、冶金方面都存在着许多控制难题,为了提高工作效率这就需要智能仪器和单片机技术的快速发展。
为此为提高本科主的设讣创新能力开设了智能仪器和单片机的课程设讣。
本设汁的LI的是培养理论联系实际的学习方法以及独立解决匸程实际问题的能力。
主要内容是利用89C51单片机及其他一些器件来构成音乐播放器。
从而实现按键控制播放音乐的效果。
关键词:单片机,音乐,RT12864, ATMEL89c51o目录•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 41.1课程设计目的 (5)1.2课程设计任务 (5)1.3课程设计要求 (5)1.4课程设计的意义 (5)第二章设计原理及总体方案选择 (6)2.1基本原理简述 (6)2.2关于音乐的原理知识 (7)第三章音乐播放器硬件电路的设计和调试 (9)3.1硬件原理电路的设计 (9)3.1. 1时钟与复位模块 (9)3.1. 2按键选择模块 (9)3.1. 3音频发生及放大器模块 (9)3.1. 4 LCD显示模块 (10)3.1.5电路原理图 (10)3.2 ATMEL 89C51 简介 (11)3.2. 1 AT89C51 单片机 (11)3.2.2引脚介绍 (11)第四章软件编程设计与综合测试 (12)4.1编程思路简述 (12)4.2编程方案的设计 (13)4. 2. 1软件功能选择 (13)4. 2. 2 程序流程图 (13)4. 2. 3程序清单 (15)参考文献 (22)心得体会 (23)第一章绪论1・1课程设计目的应用单片机,利用它的原理组成一个音乐播放器。
单片机课程设计-基于STC89C52RC单片机的音乐播放器设计

单⽚机课程设计-基于STC89C52RC单⽚机的⾳乐播放器设计基于STC89C52RC单⽚机的⾳乐播放器设计⼀、设计要实现的功能(1)利⽤I/O⼝产⽣⼀定频率的⽅波,驱动蜂鸣器,发出不同的⾳调,从⽽演奏歌曲(总共九⾸)。
(2)采⽤共阳七段数码管显⽰当前播放歌曲的序号。
(3)可以通过按键实现暂停、继续、上⼀⾸、下⼀⾸以及复位等基本操作。
⼆、设计所需基础知识储备1.要产⽣⾳频脉冲,只要计算某⼀⾳频的周期,然后将此周期处以2,即为半周期的时间。
利⽤定时器记时这个个半周期时间,每当记时到后就输出脉冲的I/O反相,然后重复记时此半周期的时间再对I/O 反相,就可在I/O脚上得到此频率的脉冲。
2.利⽤8051的内部定时器使其⼯作在计数器模式MODE1下,改变计数值TH0及TL0以产⽣不同频率的⽅法,例如频率为523HZ,其周期T=1/523=1912us,因此只要令计数器记时956us/1us=956,在每次计数956次时将I/O反相,就可得到中⾳DO(523HZ)。
计数脉冲值与频率的关系公式如下:N=Fi/2/Fr,其中N是计数值,Fi是8051内部频率,⼀般⽤的是1MHZ(因为8051内部记时⼀次时间为1us),Fr为要产⽣的频率。
3.计数初值的求法如下:T=65536-N=65536-Fi/2/Fr例如:求低⾳DO(261HZ)中⾳DO(523HZ)⾼⾳DO(1046HZ)的计数值。
T=65536-N=65536- Fi/2/Fr=65536-1000000/2/Fr=65536-50000/Fr低⾳DO的T=65536-50000/262=63267中⾳DO的T=65536-50000/523=64580⾼⾳DO的T=65536-50000/1047=65059三、硬件设计本次设计⽤到的主要器件有STC89C52,七段共阳数码管,⽆源蜂鸣器(详细列表在后⾯列出)。
硬件原理图也在后⾯列出。
四、功能说明(1)硬件电路中P1.0⼝为⾳频输出端⼝。
单片机音乐播放课程设计

单片机音乐播放课程设计一、课程目标知识目标:1. 学生能理解单片机的原理和基本结构,掌握音乐播放器的设计流程。
2. 学生能掌握音乐播放器编程的基本语法和逻辑,如音符的时长、音调控制等。
3. 学生能了解并运用数字信号处理基本概念,如采样、量化等,解释音乐播放过程。
技能目标:1. 学生能运用单片机开发环境进行音乐播放器的程序编写、调试与下载。
2. 学生能通过实验和项目实践,掌握音乐播放器硬件与软件的协同设计方法。
3. 学生能够独立或合作完成音乐播放器的制作,展示作品并进行简单的故障排查。
情感态度价值观目标:1. 学生培养对电子技术和编程的兴趣,激发创新意识和探索精神。
2. 学生通过实践,培养问题解决能力和团队协作能力,增强自信心。
3. 学生通过创作音乐播放器,体会技术对生活的影响,培养社会责任感。
课程性质分析:本课程为实践性强的单片机应用课程,结合了电子技术、编程和音乐知识,旨在培养学生的动手能力、创新思维和综合应用能力。
学生特点分析:假设学生为高中生,具有一定的物理电子知识基础,对编程有一定了解,对音乐有基本的感知能力。
教学要求:课程需注重理论与实践相结合,鼓励学生主动探索和动手实践,强调过程评价和成果评价相结合,确保学生达到预定的学习目标。
二、教学内容1. 单片机基础知识:介绍单片机的组成、工作原理,重点讲解AT89C51单片机的内部结构、引脚功能及其编程特性。
相关教材章节:第一章单片机概述。
2. 音乐播放器原理:讲解音乐播放器的基本原理,包括音符的生成、音调控制、节拍控制等。
相关教材章节:第三章数字信号处理基础。
3. 编程语言与开发环境:学习单片机编程语言(如C语言),熟悉Keil、Proteus等开发工具的使用。
相关教材章节:第二章单片机编程语言与开发环境。
4. 硬件电路设计:学习音乐播放器硬件电路的设计,包括单片机、音频放大器、扬声器等元件的选型和连接。
相关教材章节:第四章单片机外围电路设计。
单片机音乐播放器课程设计

摘要本文将介绍一种以89C51型单片机为基础元件设计的自动音乐播放器。
在当今这个科技高速发展的时代,生活节奏的加快,人们长期处于工作、学习压力过大的状态,对于调节心理压力而言音乐对于每一个人都十分重要,由此音乐播放器在国内已经开始普及。
校园里的上下课的铃声,宿舍内早晨的起床号声音,都由以前枯燥刺耳的铃音转变成了好听的音乐,公路、广场中的计时装置也逐渐开始采用音乐来充当铃声。
此装置不仅为人们日常生活的计时提供了方便,同时也为目前快节奏的生活带来了乐趣。
本文是应用MCS-51单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用C 语言进行程序设计。
通过控制单片机内部的定时器来产生不同频率的方波,驱动蜂鸣器发出不同音调的音乐,再利用延迟来控制发音时间的长短。
把乐谱转化成相应的定时常数就可以从发音设备中演奏出悦耳动听的音乐。
这种控制电路结构简单,可读性高,应用性强;软件程序适应范围广,对于不同的音乐只需要改变相应的定时常数即可。
关键词:单片机;音乐播放器;C语言。
目录绪论 (1)第1章音乐盒的设计总体方案 (2)第2章硬件电路设计 (3)2.1 总体设计框图 (3)2.2 时钟电路 (3)2.3 复位电路 (3)2.4 选曲按键电路 (3)2.5 音频发生及放大电路 (4)第3章软件程序设计 (5)3.1单片机发声概述 (5)3.2 程序流程图 (6)3.3 音乐的产生 (7)第4章 KEIL仿真软件的应用 (8)第5章调试与故障分析 (9)5.1 软件程序调试 (9)5.2 硬件电路调试 (9)总结 (10)致谢 (11)参考文献 (12)附录1:原理图 (13)附录2:源程序 (14)绪论单片机,更确切地说应称为作微控制器,是20世纪70年代中期发展起来的一种面向控制的大规模集成电路模块,其特点是功能强、体积小、可靠性高、价格低廉。
它一面世便在工业控制、数据采集、智能仪表化、机电一体化、家用电器等领域得到了广泛应用,极大地提高了这些领域的技术水平和自动化程度。
单片机音乐播放器应用 实现简单的音乐播放功能

单片机音乐播放器应用实现简单的音乐播放功能单片机音乐播放器应用音乐是人们生活中不可或缺的一部分,而在现代科技的不断发展下,单片机音乐播放器应用已经成为许多人追求的目标。
本文将介绍如何实现一个简单的单片机音乐播放器功能,让您能够轻松享受音乐的魅力。
一、硬件准备在开始之前,我们需要准备一些硬件设备,以确保音乐播放器能够正常工作。
首先,我们需要一块单片机开发板,例如STC89C52,这是一款常用的单片机开发板;其次,我们需要一个音频解码模块,例如DFPlayer Mini,他可以轻松解码并播放存储卡上的音乐文件;最后,我们还需要一个音箱或者耳机,用于输出音乐。
二、软件编程1. 搭建开发环境首先,我们需要安装MIDE-51集成开发环境,它是STC89C52单片机所使用的开发工具。
安装完成后,可以通过打开MIDE-51来创建一个新的工程。
2. 编写代码首先,我们需要在代码中包含一些必要的库文件,以便使用一些功能函数。
例如,我们可以通过以下代码片段引入DFPlayer Mini音频库文件:```c#include <DFPlayer_Mini_Mp3.h>```接下来,我们可以通过定义一些常量或变量来控制音乐的播放,例如:```cconst int playButton = 2; // 播放按钮连接到单片机的2号引脚const int nextButton = 3; // 下一首按钮连接到单片机的3号引脚const int previousButton = 4; // 上一首按钮连接到单片机的4号引脚```然后,我们可以在主循环中不断检测按钮的状态,并根据按钮的状态来控制音乐的播放:```cvoid loop() {if (digitalRead(playButton) == HIGH) { // 如果播放按钮被按下DFPlayer_Mini_Mp3.play(); // 播放音乐}if (digitalRead(nextButton) == HIGH) { // 如果下一首按钮被按下 DFPlayer_Mini_Mp3.next(); // 播放下一首音乐}if (digitalRead(previousButton) == HIGH) { // 如果上一首按钮被按下DFPlayer_Mini_Mp3.previous(); // 播放上一首音乐}}```通过上述代码,我们可以实现简单的音乐播放功能。
基于51单片机音乐播放器设计

基于51单片机音乐播放器设计音乐播放器是一种可以播放音频文件的设备,广泛应用于日常生活中。
本文将基于51单片机设计一个简单的音乐播放器。
一、设计目标本音乐播放器设计的主要目标是实现以下功能:1.支持播放多种格式的音频文件,如MP3、WAV等;2.支持音量调节和音频文件选择功能;3.具备简单的界面和易于理解的操作方式;4.能够适应不同的音频文件大小和音乐时长。
二、硬件设计2. 存储器:选择外接Flash存储器作为音频文件的存放介质,具备较大的存储容量和较高的读写速度,能够满足音频文件的多样性需求。
3.音频解码芯片:选择支持MP3和WAV格式音频解码的芯片,能够将音频文件翻译成能够被音频输出部分播放的信号。
4.音频输出部分:选择合适的音频输出部分,如耳机接口或喇叭接口,将解码后的音频信号输出为声音。
三、软件设计1.系统初始化:在开机时进行系统初始化,包括对主控芯片、存储器和音频解码芯片的初始化。
2.文件系统管理:设计一个简单的文件系统,能够以目录结构的形式管理存储器中的音频文件。
3.音频解码:根据选择的音频文件格式,进行相应的解码操作,将解码后的音频数据传输给音频输出部分。
4.播放控制:实现音量调节和音频文件选择功能,能够暂停、播放、停止等操作。
5.用户界面:设计一个简单直观的用户界面,通过按键或显示屏等方式进行操作反馈和信息显示。
四、系统流程1.开机初始化:对主控芯片、存储器和音频解码芯片进行初始化。
2.文件系统管理:读取存储器中的文件目录,生成文件列表供用户选择。
3.用户操作:用户通过按键或其他方式进行音量调节和音频文件选择操作。
4.音频解码:根据用户选择的音频文件,进行相应的解码操作。
5.播放控制:根据用户的操作,进行音频的暂停、播放、停止等操作。
6.操作反馈:在用户界面上显示操作反馈和信息。
五、总结本文基于51单片机设计了一个简单的音乐播放器,实现了支持多种格式音频文件的播放、音量调节和文件选择功能,并提供了简单的用户界面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计题目:基于单片机音乐演奏曲Title: instrumental music based on single chip姓名:学号:系别:专业:年级:指导教师:2012年5 月25 日摘要单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本设计以At89c2051为核心,主要由电源电路、复位电路、音频放大电路、时钟电路和数码管电路和蜂鸣器电路构成单片机奏乐附加时钟的一个小系统。
电路中I/O口采用分时复用的借口技术,使AT89c2051单片机的引脚资源得以充分利用,本系统的电路简单,实现的功能强大,所用芯片比较便宜,性价比较高。
关键词:At89c2051,数码管,单片机奏乐,分时复用目录摘要 ........................................................... - 1 -1.引言 (3)2.系统整体结构 (4)2.1系统总设计 (4)2.2实现的功能 (4)2.3主要芯片介绍 (4)2.3.1 AT89c2051芯片介绍 (4)3.系统硬件设计 (5)3.1键盘输入模块 (5)3.2时钟模块 (5)3.3显示模块 (6)3.4复位电路 (6)3.5蜂鸣器电路设计 (7)4.系统软件设计 (7)4.1系统主程序流程图系 (7)4.2 部分子程序流程图 (8)结束语 (10)参考文献 (10)致谢 (11)附录 (11)1.引言随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的自动控制系统开始进入了人们的生活,以单片机为核心的各种系统也越来越多。
同时也标志了自动控制领域成为了数字化时代的一员。
它实用性强,功能齐全,技术先进,使人们相信这是科技进步的成果。
它更让人类懂得,数字时代的发展将改变人类的生活,将加快科学技术的发展。
本次设计为单片机奏乐器,硬件部分它以单片机AT89C2051为核心,由功放电路、数码管等组成。
当接上电源按下开关时,就能听到优美的旋律。
当然这些音乐都是通过软件编程实现的,把它存储在存储器里,根据存储容量大小决定存储音乐的数目。
[2]2.系统整体结构2.1系统总设计本设计主要由单片机AT89c2051、独立键盘、复位电路、数码管显示电路和时钟电路组成,用于实现单片机奏乐功能。
系统设计总框图如图1所示:系统设计总框图12.2实现的功能设有四个按键,其中两个能实现多首音乐的选择,另一个能实现播放功能和暂停的功能,最后一个能实现复位和关闭歌曲的功能。
设有一位数码管,每选择一首曲子能在数码管上显示当前的曲目(只是数字)。
2.3主要芯片介绍2.3.1 AT89C2051芯片介绍AT89C2051芯片的引脚图2:At89c2051的20 个引脚的功能为: VCC\GND :电源电压,接地引脚XTAL1、XTAL2:反向震荡放大器内部时钟工作电路的输入、反向震荡放大器内部时钟工作电路的输出引脚。
RST :复位信号输入引脚。
当RST 编为高电平并保持2个机器周期,所有I/O 引脚复位至“1”电平。
P1.0—P1.7:P1口的8位双向I/O 引脚。
P3.0—P3.5与P3.7:为7个带内部上拉的双向I/O 口3.系统硬件设计3.1键盘输入模块设计所用到的按键数量较少,所以可以采用独立按键式键盘。
独立式按键盘每一个按键与一个I/O 口相连。
共有3个按键,SW2用于播放和暂停,SW1用于上一曲,SW3用于下一曲。
如图所示:3.2时钟模块单片机工作的时间基准是由时钟电路提供的。
在单片机的XTAL1与XTAL2两个引脚间,接一只晶振及两只电容就构成了单片机的时钟电路,如下图所示。
89C2051电容器C5和C6对振荡频率有微调的作用,通常的取值是30pF;石英晶体选12MHz。
3.3显示模块显示部分是使用一位数码管,采用共阳接法,a-g分别接P1.0-P1.6口。
3.4复位电路单片机的RST引脚为主机提供一个外部信号输入端口。
信号时高电平有效,高电平有效的持续时间应为2个机器周期以上。
复位以后,单片机内各个部件恢复到初始状态,单片机从ROM的0000H开始执行程序。
单片机的复位方式有上电复位和手工复位两种,在这边我采用的按键复位方式,只要VCC上升时间不超过1ms,它们都能很好的工作。
该单元的电路图:3.5蜂鸣器电路设计设计要求定时时间到的时候来回置低电平,来驱动蜂鸣器发出声音。
4.系统软件设计4.14.2 部分子程序流程图独立按键扫描音乐播放模块基于单片机音乐演奏曲结束语本次设计总体上达到了预期的要求,运用我们所学的单片机知识完成了以单片机AT89C2051为核心的单片机奏乐器,经过这段时间有关于单片机奏乐器的课程设计,使我对单片机的应用有了更深的了解。
在设计过程中,碰到了许多问题。
当然也收获了很多,动手能力得到了很大的提高,学会了查阅资料和对各种资料的融会变通。
参考文献[1] 赵建领著.51单片机开发与应用技术详解.电子工业出版社,2009.01.[2] 倪云峰主编.单片机原理与应用.西安电子科技大学出版社,2009.06.附录1附录一源程序#include <reg51.h>sbit fmq=P3^7;sbit SW0=P3^4;sbit SW1=P3^3;sbit SW2=P3^5;unsigned char flag=0;unsigned char data l;unsigned int sta=1;unsigned int data j;unsigned char data i;unsigned char data k;unsigned char count;void delay(unsigned int t); //延时函数声明void play();void xuanz();void keyscan(); //按键扫描unsigned char *pMmusic;unsigned char codeled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x8 2,0xF8,0x80,0x90};unsigned char code music[30]={0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x4 4,0xFC,0xAC,0xFD,0x09,0xFD,0x34,0xFD,0x82,0xFD,0xC 8,0xFE,0x06,0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x6 7,0xFE,0x85};//音调数组unsigned char code Mmusic[]={0x35,0x31,0x34,0x34,0x24,0x35,0x32,0x32, 0x24,0x38,0x44,0x58,0x48,0x34,0x31,0x34,0x34,0x24,0 x38,0x34, 0x7F,0x32,0x34,0x32,0x34,0x24,0x38,0x34,0 x24,0x38,0x43,0x58,0x48,0x34,0x32,0x34,0x38,0x24,0 x38,0x34,0x7F,0x16,0x4C,0x74,0x78,0x64,0x54,0x48,0 x54,0x64,0x58,0x44,0x34,0x24,0x38,0x24,0x14,0x12,0 x21,0x14,0x78,0x68,0x3F,0x4C,0x74,0x78,0x64,0x52,0 x42,0x48,0x53,0x64,0x58,0x44,0x34,0x24,0x38,0x24,0 x24,0x38,0x44,0x58,0x48,0x3C,0xFF};unsigned char code Mmusic1[]={0xC2,0xB2,0x36,0x52,0x42,0x32,0x11,0xC1 ,0xB2,0xC6,0x22,0xC4,0x12,0xC2,0x76,0xA2,0x84,0x72, 0x51,0x41,0x32,0x4C,0x41,0x36,0x74,0x82,0x74,0x82,0 x72,0x52,0x41,0x38,0x32,0x42,0x14,0xC2,0x72,0x52,0 x42,0x42,0x3C,0xC2,0xB2,0x36,0x52,0x42,0x32,0x11, 0xC1,0xB2,0xC6,0x12,0xC4,0x12,0xC2,0x76,0xA2,0x82, 0x72,0x51,0x41,0x32,0x4C,0x42,0x32,0x76,0x82,0x74,0 x82,0x72,0x53,0x41,0x38,0x32,0x42,0x16,0xC2,0x72,0 x52,0x41,0x53,0x12,0xCC,0xC2,0xB2,0x16,0xC2,0x72 ,0x52,0x42,0x41,0x3C,0x32,0x32,0x26,0x22,0x24,0x42,0 x32,0x22,0xFF};unsigned char code Mmusic2[]={0x34,0x31,0x31,0x34,0x44,0x52,0x62,0x52, 0x42,0x32,0x34,0x04,0x74,0x74,0x62,0x62,0x64,0x3C,0 x04,0x64,0x62,0x52,0x42,0x32,0x34,0x33,0x31,0x32,0 x72,0x76,0x72,0x83,0x81,0x82,0x82,0x82,0x74,0x72,0 x7C,0x04,0x63,0x61,0x64,0x64,0x64,0x72,0x82,0x72,0 x74,0x72,0x62,0x52,0x42,0x32,0x42,0x44,0x42,0x42,0 x52,0x62,0x52,0x5C,0x04,0x64,0x62,0x62,0x64,0x72,0 x82,0x72,0x74,0x72,0x62,0x52,0x42,0x32,0x42,0x46,0 x53,0x41,0x42,0x32,0x3C,0x04,0x44,0x48,0x02,0x32,0 x3F,0x44,0x48,0x01,0x34,0x3F,0x44,0x0C,0XFF}; //主程序void main(){TMOD=0x11;//初始化IE=0x8A;TH1=(65536-5000)/256;TL1=(65536-5000)%256;TR1=1;TR0=0;while(1){P1=led[sta];if(TR0==1){flag=0;xuanz();play();} }}void xuanz(){ if(sta==1)pMmusic=Mmusic;else if(sta==2)pMmusic=Mmusic1;else if(sta==3)pMmusic=Mmusic2;/*else if(sta==4)pMmusic=Mmusic3;else if(sta==5)pMmusic=Mmusic4;else if(sta==6)pMmusic=Mmusic5;else if(sta==7)pMmusic=Mmusic6;else if(sta==8)pMmusic=Mmusic7;*/else pMmusic=Mmusic1;}void play(){if(*(pMmusic+j)!=0xFF){k=*(pMmusic+j)&0x0F;l=*(pMmusic+j)>>4;TH0=music[2*l];TL0=music[2*l+1];if(flag==1){goto Next;}if((music[2*l]==0xff)&&(music[2*l+1]==0xff) ){TR0=0;}for(i=k;i>0;--i){delay(23350);}j++;}else{Next:j=0;TR0=0;}}void timer0(void) interrupt 1{TH0=music[2*l];TL0=music[2*l+1];fmq=!fmq;}void timer1(void) interrupt 3{TH1=(65536-5000)/256;TL1=(65536-5000)%256;keyscan();}void keyscan() //独立按键扫描{if(SW0==0){count++;if(count==40){count=0;if(SW0==0){ TR0=~TR0;fmq=1;}} }if(SW1==0){count++;if(count==40){count=0;if(SW1==0){if(sta>0){sta--;flag=1;}}} }if(SW2==0){count++;if(count==40){count=0;if(SW2==0){if(sta<9){sta++;flag=1;}}}} }/*延时*/void delay(unsigned int t) {while(--t);}附录2原理图PCB 图附录3正面反面附录4:元件清单。