基于单片机的电子音乐盒的设计与实现
基于单片机的音乐盒设计

基于单片机的音乐盒设计音乐盒是一种小型的自动播放音乐的装置,它以其独特的装饰性和音乐的美妙而备受欢迎。
随着电子技术的发展,基于单片机的音乐盒也逐渐出现并成为主流。
本文将从硬件设计和软件设计两个方面介绍基于单片机的音乐盒设计。
一、硬件设计1.单片机选择单片机是音乐盒的核心控制器,其选择应根据功能需求和成本考虑。
常用的单片机有PIC、AVR和ARM等。
PIC系列单片机成本较低,易于上手,适合初学者使用。
AVR系列单片机性能较好,适合需要复杂功能的设计。
ARM系列单片机功能强大,适合需求较高的应用。
2.电源电路音乐盒的电源电路需要保证供电稳定,并根据电源需求选择适当的电池或适配器。
一般情况下,音乐盒可以采用锂电池供电,以方便携带和使用。
3.音乐模块音乐模块是音乐盒的关键组成部分,用于播放音乐。
音乐模块通常由音源芯片和音响组成。
音源芯片可以选择解码芯片或音频模块,用于解码和播放音乐文件。
音响部分可以选择扬声器或耳机输出,以提供清晰的音乐效果。
4.控制按钮和指示灯音乐盒需要设计控制按钮和指示灯,以便用户操作和状态显示。
控制按钮用于启动、暂停和切换音乐等操作,指示灯用于显示音乐播放状态和电源状态。
5.外部接口音乐盒可以设计外部接口,以便扩展功能。
常见的外部接口包括USB 接口、SD卡接口和蓝牙接口等。
二、软件设计1.系统框架音乐盒的软件设计可以采用简单的状态机或多任务系统。
简单的状态机可以实现音乐的播放、暂停和停止等基本功能。
多任务系统可以实现多个功能的并发运行,提高系统的灵活性。
2.音乐播放控制音乐盒的主要功能是播放音乐,因此需要设计音乐播放控制模块。
该模块可以提供音乐的选择、播放和暂停等功能。
可以通过中断或轮询方式检测按钮的状态,以实现用户的控制。
3.音量控制音乐盒通常需要设计音量控制功能,以满足用户的需求。
可以通过PWM方式控制音量大小,调节音量输出。
4.音乐存储和读取音乐盒需要设计音乐存储和读取模块,以方便用户选择和加载音乐。
基于单片机的音乐盒设计与实现

基于单片机的音乐盒设计与实现【摘要】本文主要介绍了一款基于单片机的音乐盒的设计与实现过程。
在首先介绍了背景信息,说明了音乐盒在现代社会的重要性。
接着阐述了研究意义和研究目的,明确了本文的目标。
在详细介绍了硬件设计和软件设计的过程,包括音乐盒的整体架构和功能模块设计。
然后给出了实现步骤和系统测试的过程,确保音乐盒的正常运行。
最后对功能进行了优化,提升了用户体验。
在对设计过程进行了总结,展示了最终的成果,并展望了未来可能的改进方向。
通过本文的研究,可以为基于单片机的音乐盒设计提供一定的参考和借鉴价值。
【关键词】引言、背景介绍、研究意义、研究目的、硬件设计、软件设计、实现步骤、系统测试、功能优化、设计总结、成果展示、展望未来、音乐盒设计、单片机、制作、音乐播放、电路设计、程序编写、测试验证1. 引言1.1 背景介绍音乐盒是一种可以播放美妙乐曲的小型装置,通常由盒体、发声装置和旋钮组成。
随着科技的发展,传统的机械音乐盒逐渐被电子音乐盒所取代。
基于单片机的音乐盒设计与实现,正是将现代科技与传统音乐结合的产物。
基于单片机的音乐盒设计与实现,可以通过预先编程的方式实现多种音乐的存储和播放,同时可以实现音乐的自动循环和定时播放等功能。
这不仅增加了音乐盒的灵活性和功能性,也为人们提供了更加便利和多样化的音乐享受方式。
基于单片机的音乐盒设计与实现具有重要的研究意义和实际应用价值。
通过本篇文章的介绍,我们将深入探讨基于单片机的音乐盒设计与实现,为读者呈现一个全面的设计方案和实现步骤。
1.2 研究意义音乐盒是一种古老而具有浓厚艺术氛围的音乐播放器,它通过装置内置的音乐盘或者转动式音梭使得音乐发声。
在现代科技的不断发展下,基于单片机的音乐盒设计与实现成为了一个新的研究领域。
这种音乐盒不仅能够实现传统音乐盒的功能,更能够通过单片机的强大功能实现更多高级的音乐播放功能。
研究基于单片机的音乐盒设计与实现具有重要的意义。
基于单片机的音乐盒在硬件设计和软件设计上更加灵活多样,可以实现更多种类的音乐播放方式。
基于单片机的数字式音乐盒设计

基于单片机的数字式音乐盒设计数字式音乐盒是一种音乐播放器,它通过数字技术存储和播放音乐。
基于单片机的数字式音乐盒可以使用单片机控制音乐的播放,实现音符和旋律的发声和控制。
本文将介绍如何设计一款基于单片机的数字式音乐盒。
一、音乐盒基本原理音乐盒是通过一个带有齿轮的转子,以弹簧的力量驱动,使得钢片受到磁力响应并发声,从而发出旋律。
数字式音乐盒是通过数字技术将音乐编码为数字信号,并存储在芯片中,通过解码器将数字信号还原为音符和旋律发声。
二、单片机控制电路设计1.芯片选择要设计一个数字式音乐盒,需要先选择一款合适的单片机,常用的有AT89C51、STC89C52等。
这里选择一款性能好且价格适中的STC89C52单片机。
2.存储器选型数字式音乐盒的数字信号需要存储在内存中,为了方便起见,使用一个4Mbit的Flash记忆芯片作为存储器。
3.音频输出电路数字信号需要通过解码器进行还原后才能通过音频输出电路输出。
可以使用一对耳机或者喇叭,同时需要用到音量电位器控制音量。
三、软件程序设计1.数字信号编解码算法的设计,可以使用目前较为流行的MIDI编码格式。
2.音乐信号输入模块设计,可以使用USB接口或SD卡接口。
3.数据接收模块设计,可以使用串行通信或者并行通信。
4.数字信号存储模块设计,使用Flash记忆芯片。
5.控制模块设计,实现单片机控制音乐盒的所有操作。
四、实现效果基于单片机的数字式音乐盒实现较为简单,但是需要注意以下几点:1.考虑使用定时器计算控制音乐的播放时间,保证旋律按照要求执行。
2.使用ADC(模拟-数字转换器)读取音量电位器值,对音量进行控制。
3.在使用USB接口时,需要有电路板,使得USB通信接口稳定,可靠。
基于单片机的数字式音乐盒是一种方便实用的音乐盒,通过数字技术的运用,实现了音乐的存储和播放,可广泛应用于各个领域中。
基于单片机实现的音乐盒设计

摘要本设计是采用单片机为核心设计的数字音乐盒。
具体硬件电路包括:AT89C2051单片机、音频发生器、音频放大器、按键电路、复位电路、时钟电路。
本音乐盒可以播放三首音乐,通过软件程序来控制单片机内部的定时器使其产生音乐频率,演奏出优美动听的音乐同时,用户通过选择按键电路来选择自己喜欢的音乐,同时具有播放\暂停功能。
与传统的机械式音乐盒相比,用单片机设计的音乐盒体积更小巧,且制作工艺简单,音质更优美能演奏出和弦音乐。
关键词:音乐盒AT89C2051播放\暂停AbstractThis design is used as the core design of single chip digital music box. Specific hardware circuit includes: AT89C2051 microcontroller, audio generator, audio amplifier, keypad circuit, reset circuit, clock circuit. The music box can play three songs, through the software program to control the microcontroller's internal timer frequency to produce music, playing the beautiful sounds of music at the same time, the user by selecting the button circuit to select your favorite music, both play \ pause function. With the traditional mechanical music box than a music box with a single chip design is more compact size and simple fabrication process, can play a sound more beautiful polyphonic music.Keywords: music box AT89C2051 Broadcast \ pause目录摘要 (i)Abstract (i)第一章绪论 (1)第一节选题目的及国内外发展情况 (1)一、选题目的 (1)二、国内外发展情况 (1)第二节设计所研究的内容及所做工作 (2)第二章方案论证 (3)第一节设计方案 (3)第二节设计方案的确定 (4)第三章音乐盒的硬件系统设计 (5)第一节音乐盒的硬件电路设计框图 (5)第二节控制系统的设计 (5)一、AT89C2051介绍 (5)二、时钟电路设计 (8)三、复位电路的设计 (10)第三节音频放大器的设计 (13)一、音频放大器的作用 (13)二、LM386的性能介绍 (13)第四节按键选择输入电路 (15)一、键盘接口设计 (15)二、按键识别方式 (16)三、键盘模块处理方式 (17)四、键盘设计实用技巧 (19)第四章音乐盒的软件系统设计 (20)第一节音符盒的发音原理 (20)一、音符频率 (20)二、音符节拍 (21)三、建立曲谱编码表 (23)第二节程序模块设计 (24)一、主程序模块设计 (24)二、音乐部分模块设计 (25)三、外部中断模块设计 (30)四、定时器模块设计 (31)第五章软硬件调试 (33)第一节硬件调试 (33)第二节软件调试 (34)第三节性能分析 (35)第六章抗干扰措施 (36)第一节干扰的来源及后果 (36)一、干扰的来源 (36)二、干扰产生的后果 (36)第二节硬件抗干扰设计 (37)第三节软件的抗干扰设计 (38)结束语 (39)参考文献 (40)附录一:音乐盒硬件电路原理图 (41)附录二:程序 (42)外文资料 (47)中文翻译 (53)致谢 (58)第一章绪论第一节选题目的及国内外发展情况一、选题目的通过设计电子音乐盒这个系统,有利于进一步巩固单片机的知识,将所学知识综合运用到实际当中来,并且提高自身的设计能力、动手操作能力以及解决问题的能力。
基于单片机的音乐盒设计毕业论文

2014届本科毕业论文基于单片机的音乐盒设计姓名:张静伟系别:物理与电气信息学院专业:通信工程学号:100313037指导教师:吕广申2014年4月20日目录摘要与关键词 (II)0 引言.............................................................................................................................. 错误!未定义书签。
1 整体设计方案.............................................................................................................. 错误!未定义书签。
1.1 系统总体结构框图........................................................................................... 错误!未定义书签。
1.2 对音乐盒基本功能介绍................................................................................... 错误!未定义书签。
1.3 系统相关软件介绍........................................................................................... 错误!未定义书签。
2 系统整体硬件介绍...................................................................................................... 错误!未定义书签。
单片机的音乐盒设计报告

单片机的音乐盒设计报告一、引言音乐盒作为一种能够带来美妙旋律的装置,一直以来都深受人们的喜爱。
随着科技的不断发展,单片机技术的应用使得音乐盒的设计更加多样化和智能化。
本报告将详细介绍基于单片机的音乐盒的设计过程,包括硬件设计、软件编程以及最终的实现效果。
二、设计目标与需求本次设计的目标是制作一个基于单片机的音乐盒,能够播放多首预存的音乐曲目,并且可以通过按键进行曲目选择和控制播放暂停等功能。
具体需求如下:1、能够存储至少三首不同的音乐曲目。
2、具备简单直观的操作界面,通过按键实现曲目切换、播放暂停等功能。
3、具有良好的音质输出,能够清晰地播放音乐。
4、设计成本低,易于实现和维护。
三、硬件设计1、单片机选择选用 STC89C52 单片机作为核心控制器,其具有丰富的 I/O 端口和较高的性价比,能够满足本设计的需求。
2、存储模块使用 EEPROM 芯片(如 AT24C02)来存储音乐曲目数据,以便在掉电情况下仍能保存曲目信息。
3、音频输出模块采用无源蜂鸣器作为音频输出设备,通过单片机的 I/O 端口输出不同频率的方波信号来驱动蜂鸣器发声。
4、按键模块设置四个独立按键,分别用于曲目选择、播放、暂停和停止功能。
5、电源模块采用 5V 直流电源为整个系统供电。
四、软件设计1、编程语言选择使用 C 语言进行编程,具有较高的可读性和可移植性。
2、主程序流程系统初始化,包括单片机端口设置、EEPROM 读取等。
进入按键扫描循环,检测按键操作并执行相应的功能。
根据当前曲目播放状态,输出相应的音频信号。
3、音乐数据存储与读取将音乐曲目数据以特定的格式存储在 EEPROM 中,通过读取相应地址的数据来获取曲目信息。
4、音频信号产生根据不同的音符频率,计算出对应的方波周期,并通过定时器中断来产生相应频率的方波信号,驱动蜂鸣器发声。
五、系统实现与调试1、硬件焊接与组装按照设计原理图,将各个硬件模块焊接在电路板上,并进行组装和连接。
基于AT89C52单片机的音乐盒设计方案

1/4和1/8节拍的时间设定
曲调值
DELAY 曲调值 DELAY
调4/4
125毫秒
调4/4 62毫秒
调3/4 调2/4
187毫秒 250毫秒
调3/4 94毫秒 调2/4 125毫秒
对于单片机来说,产生不同频率的脉冲是非
常方便的,利用单片机的定时/计数器来产生这样
的方波频率信号。因此,需要弄清楚音乐中的音
Page 3
传统音乐盒
Page 4
设计任务及要求
本设计是以AT89C52芯片的电路为基础,外
部加上放音设备,以此来实现音乐盒的硬件电
路,通过软件程序来控制单片机内部的定时器
■设 使其演奏出优美动听的音乐。用户可以按照自
■计 己的喜好选择音乐并将其转化成机器码存入单
■任 片机的存储器中。该系统具有很好的通用性,
21
基于AT89C52单片机的音乐盒设计
论文结构
1 2 3 4 5
■课题意义、任务及要求 ■应用软件简介 ■设计方案 ■设计结构 ■系统电路图
Page 2
设计意义
传统的音乐盒多是机械音乐盒,其工作原理是通过齿 轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁 片制成的琴键,从而发出声音但是,机械式的音乐盒体 积比较大,比较笨重,且发音单调。水、灰尘等外在因 素,容易使内部金属发音条变形,从而造成发音跑调。 另外,机械音乐盒放音时为了让音色稳定,必须放平不 ■设 能动摇,而且价格昂贵,不能实现大批量生产。 ■计 本文设计的音乐盒,是基于单片机设计制作的电子 ■意 式音乐盒。与传统的机械式音乐盒相比更小巧,能演奏 ■义 多个曲目且携带方便。电子式音乐盒动力来源是电池, 制作工艺简单,可进行批量生产,且价格便宜。基于单 片机制作的电子式音乐盒,控制功能强大,可根据需要 选歌,使用方便。根据存储容量的大小,可以尽可能多 的存储歌曲。另外,可以设计彩灯外观效果,使音乐盒 的功能更加丰富。
基于51单片机的音乐盒设计报告

摘要本作品利用单片机的IO口对蜂鸣器输送不同频率的信号,让单片机发出不同音调的声音。
以“新年好”曲调为基础以C51为语法编出51音乐盒的程序。
根据电路图焊接了蜂鸣器模块与TX-1C51开发板用杜邦线进行连接。
除了蜂鸣器外接模块外还使用了1602液晶显示模块作为外设连接。
本人对单片机演奏音乐比较有兴趣。
在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。
音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。
音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。
关键词: 51单片机音乐盒液晶屏幕显示模块蜂鸣器模块 C51目录1 设计任务目的与要求 (1)1.1任务设计目的 (1)1.2任务要求 (1)2 模块及其原理介绍 (2)2.1蜂鸣器模块 (2)2.21602液晶显示模块 (2)3 设计方案 (3)3.1软件设计 (3)3.2硬件设计 (3)4 实验结果与数据分析 (4)4.1测试步骤 (4)4.2实验现象 (4)5 结论与问题讨论 (4)5.1完成设计的要求程度 (4)5.2遇到的问题以及解决办法 (4)5.3存在的不足及改进思路 (4)参考文献 (5)附录 (5)附录一:C51程序 (5)1 设计任务目的与要求1.1任务设计目的本人对单片机演奏音乐比较有兴趣,所以选择51音乐盒的题目。
本设计通过两个模块的制作并与开发板一并使用。
通过本次设计不止熟悉焊接和熟悉各个电子元器件,而且还提高了对外设模块使用单片机编程的技能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告设计名称基于单片机的电子音乐盒的设计与实现学校陕西电子科技职业学院学院电子工程学院学生姓名滕一帆班级1507学号 *************指导教师聂弘颖时间2017年09月22日基于单片机的电子音乐盒的设计与实现一、设计目的为证明单片机可以通过软件程序控制硬件电路实现简单音乐播放器的功能,以此证明单片机的功能强大。
二、设计概述本课题是一个基于51单片机的电子音乐盒,依据单片机控制技术原理,设计出一个可以播放多首音乐的数字音乐盒,通过数码管显示当前是第几首音乐,系统设计了三个按键,具体功能:S1:暂停/播放;S2:加一首(下一首);S3:减一首(上一首)。
通过硬件电路制作以及以及软件编程,设计制作出一个多功能的电子音乐盒。
三、设计方案在这个系统的设计中,单片机采用51兼容系列的STC89C52RC 。
有以下几部分构成:电源电路、单片机最小系统、发声系统、键盘控制电路、显示电路。
经过论证后我确定的系统框图,如下图所示:四、设计原理1、原理本系统由单片机系统,独立按键、数码管组成。
利用I/O 口产生一定频率的方波,驱动扬声器,发生不同的音调,从而实现乐曲的演奏。
系统能通过功能键完成选择乐曲、播放、暂停、和复位的基本功能。
在播放乐曲的同时LCD 上显示所播放的歌曲序号,可以通过复位键使音乐盒从第一首歌曲重新播放,本系统成本低廉,功能强大实用。
51 单 片 机数字显示电路 键盘控制电路 发声控制电路电源电路单片机最小系统2、音乐基础简介<1>音乐频率表<2>音调表建立由于单片机输出为方波输入信号,波形图如下:高低电平各占1/2,根据单片机定时器工作原理。
定时时间=(满值-初值)X机器周期初值=满值-定时时间/机器周期=216-(1/f)X(1/2)X106以低音11为例,初值为=216-(1/262)X(1/2)X106=63627.6=63628同理得其他音调值,具体如下:Unsigned int code table[]={0,63628,63835,64021,64103,64260,64399,64523, 64579,64684,64777,64819,64898,64968,65030,65058,65110,65157,65178,65217,65252, 65282};<3>音乐表的建立我们以两只老虎音乐为例子,然后我们就会得到该音乐表Uchar code music1[]={8,4,9,4,10,4,8,4,9,4,10,4,8,4,10,4,11,4,12,8,10,4,11,4,12,8,12,3, 13,1,12,3,11,1,10,4,8,4,12,3,13,1,12,3,11,1,10,4,8,4,9,4,5,4,8,8,9,4,5,4,8,8,0,0xff};3、硬件电路设计1) 单片机最小系统在基于单片机的应用系统中,其核心是单片机的最小系统,而单片机又是最小系统的核心,为了方便起见,采用的型号是:STC89C52RC ,内部资源有:8kbflash ,512b sram ,4个8位I/O 口,2个TC ,1个UART ,带ISP 和IAP 功能。
是近年来流行的低端51单片机。
时钟电路采用12MHz 晶体,复位电路采用简单的RC 复位电路。
R 4=1K Ω,R 3=10K Ω,C 5=10Uf 。
2) 发声控制电路 音乐的发生器采用小喇叭,使用PNP 型三极管。
3)键盘控制电路通过安按键来控制乐曲的暂停/播放、加+、减-。
S1、S2、S3的功能设定如下。
S1暂停/播放;S2乐曲/+;S3乐曲/-。
4)音乐数目显示电路显示当前的乐曲序列。
为了直观的观察室哪一首曲子的效果,设置一位数码管显示,数码管需要接一个200-100Ω的电阻起分压作用。
4、程序流程图处理按键开始初始化检查按键有键按下?显示乐曲号播放乐曲该曲是否播放完?显示乐曲号+1所有曲子是否放完?五、仿真结果所仿真出来的结果,去掉N2905,声音变小了,加上之后声音变大了,额,第一首是两只老虎,第二首,我换成通天大道,不过没找到乐谱规律,错了,第三首是小兔子快开门,第四首新年好,第五首歌曲接连被放出来。
效果不错。
六、总结通过本次仿真作图,以及程序编写,仿真原图,和自己再画图,和程序再组合效果,依然不错,原图只是作为参考,其次,通过本次作业,明白,每一门课代表以后的每项工作,而这门课开设的原因估计是要我们认为,在一台机器,里面通过芯片,芯片的程序带动硬件,一件成品就出来了。
所以,软件和硬件属于相辅相成,在未来的世界中,是属于硬件和软件共存的时代,没有软件,硬件别想动;同理硬件也是一样的。
认可了工程师的伟大,以及程序员的厉害之处。
七、附录1、元件清单元件清单:2N2905、2W10G、7SEG-MPX2-CA A700127M004ATE018、AT89C52、BUTTON、BUZZER、CAP CRYSTAL、DIODE-LED、RES、SW-SPDT2、电路图3、程序代码#include"reg52.h"#define uchar unsigned char#define uint unsigned intsbit buzzer=P2^7;void delay(uint z);void scan();sbit S1=P3^1;sbit S2=P3^2;sbit S3=P3^3;bit flag=1;uchar buf,high,low,n;char i;uint sound;uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uint code table[]={0,63628,63835,64021,64103,64260,64399,64523,64579,64684,64777,64819,64898, 64968,65030,65058,65110,65157,65178,65217,65252,65282};uchar code music1[]={8,4,9,4,10,4,8,4,9,4,10,4,8,4,10,4,11,4,12,8,10,4,11,4,12,8,12,3,13,1,12,3,11,1,10, 4,8,4,12,3,13,1,12,3,11,1,10,4,8,4,9,4,5,4,8,8,9,4,5,4,8,8,0xff};uchar code music2[]={10,10,10,9,8,9,10,12,10,10,9,8,9,10,20,19,20,17,19,19,19,15,20,19,17,19,19,19, 15,16,17,16,19,17,16,15,16,19,8,20,19,19,8,20,19,17,19,20,8,8,20,19,10,10,12,9,8,8,0xff};uchar code music3[]={12,4,15,2,13,2,12,4,12,4,10,2,12,2,13,2,15,4,12,4,12,4,13,4,12,2,10,2,9,4,9,4,10, 4,12,2,10,2,9,2,10,2,8,4,13,4,12,4,13,4,12,4,13,4,12,4,10,4,13,4,12,4,12,2,12,2,10,2,9,2,8,2,8,8,2,8,2,9,2, 10,2,8,8,0xff};uchar code music4[]={8,3,8,3,8,3,5,3,10,3,10,3,10,3,8,4,8,3,10,3,12,3,12,4,10,3,11,3,10,3,9,6,9,3,10,3,11,3,11,4,10,3,9,3,10,3,8,4,8,3,10,3,9,3,5,4,7,3,9,3,8,6,0xff};uchar code music5[]={0,2,8,2,10,2,11,2,12,2,12,2,11,2,12,4,13,2,14,2,15,2,10,2,10,2,11,2,12,8,13,4,12, 2,11,2,12,2,15,2,15,4,13,4,13,2,14,2,15,4,14,4,12,4,10,2,11,2,10,2,11,2,12,4,13,2,14,2,15,4,14,2,13,2,12, 8,12,2,13,24,9,8,16,0xff};uchar code *menu[]={0,music1,music2,music3,music4,music5};uchar *p;char j;void int0() interrupt 0{if(S2==0){delay(1);if(S2==0){j++;if(j==6){j=1;}P0=num[j];TR0=0;TR1=0;n=0;i=3;p=menu[j];}delay(1);while(! S2);}}void int1() interrupt 2{if(S3==0){ delay(1);if(S3==0){ j--;if(j==0){j=5;}P0=num[j];TR0=0;TR1=0;n=0;i=3;p=menu[j];}delay(1);while(! S3);}}void t1() interrupt 3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;n--;scan();}void t0() interrupt 1{TH0=high;TL0=low;buzzer=!buzzer;}void init(){TMOD=0x11;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;EX0=1;EX1=1;IT0=1;IT1=1;}void main(){init();while(1){for(j=1;j<6;j++){P0=num[i];i=0;p=menu[j];delay(200);while(p[i]!=0){buf=p[i];if(buf!=0){sound=table[buf];high=sound/256;low=sound%256;TH0=high;TL0=low;if(flag){TR0=1;}else{while(!flag);}}else{TR0=0;}i++;n=p[i]*2;TR1=1;while(n!=0);i++;}}}}void scan(){if(S1==0){delay(10);if(S1==0){flag=!flag;TR0=~TR0;}while(!S1){delay(10);}while(!S1);}}void delay(uint z){uint x,y;for(x=0;x<100;x++)for(y=0;y<z;y++);}。