电子音乐盒(单片机课程设计)
单片机课程设计(论文)电子音乐盒的单片机设计
单片机课程设计论文题目 FSY电子音乐盒的单片机设计学院通信与电子工程学院专业班级电子083学生姓名指导教师王发智2011年12月11日摘要为了实现单片机控制音乐播放,此次毕业设计做出了尝试,即电子音乐盒的设计。
本设计采用了蜂鸣器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲。
现选用AT89S51单片机。
主要设计模块包括数码管显示部分,功能键盘部分,蜂鸣器发声部分,彩灯部分。
数码管采用共阳极数码管,通过单片机P1口控制,实现歌曲序号的显示;功能键盘采用按键开关,通过单片机P3口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的P2口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效果。
主要工作过程是通过按下功能键实现上一首和下一首及暂停播放,同时有数码管显示当前播放歌曲的序号,蜂鸣器播放出音乐,当播放最后一首夜曲时还伴有彩灯闪烁。
此次设计要利用单片机及KeilC51编程软件编程和PROTEUS单片机仿真软件和电子电工等方面知识,用KeilC51编程软件编程,用PROTEUS单片机仿真软件仿真。
最后制作实物,将程序下载到单片机中,利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。
关键词:AT89S51单片机方波音调AbstractIn order to achieve single-chip control music playback,The design made an attempt to,That the design of electronic music box,This design uses a buzzer sound to achieve the song playing, can maintain the same basic tone, smooth playback of songs. AT89S51 microcontroller is used.Major design modules include digital display part, function keyboard parts, some of the buzzer sound, lights parts. Using common anode LED digital tube, through the P1 port control chip to realize the song number display; function keyboard with key switch, controlled by microcontroller port P3, playing songs in order to achieve the exchange and pause functions; buzzer by the microcontroller P2 port control, to achieve the song playing; lights are replaced by the ordinary light-emitting diodes, to achieve long light and color flashing effect.Main work process is achieved by pressing the function key and the next one on the head, and a pause, while a digital display serial number of the currently playing song, buzzer playing the music, when played with the last one Nocturne Shihai lightsTo take advantage of the chip design and software programming and programming KeilC51 PROTEUS microcontroller simulation software such as electrical and electronics knowledge, with KeilC51 programming software programming, microcontroller simulation software with the PROTEUS simulation. Finally, the physical production, the program to the microcontroller, the use of I / O ports have a certain frequency square wave to drive the buzzer, to issue a different tone to play music.Keywords:AT89S51 microcontroller square wave tone目录摘要 (I)Abstract (II)第1章绪论 (1)1.1 概述 (1)第2章音乐盒总体设计 (2)2.1 设计功能要求 (2)2.2 总体设计原理 (2)2.3 总体设计框图 (3)第3章芯片的选择和介绍 (4)3.1 MCS-51系列单片机简介 (4)3.2 单片机的选择 (4)3.2.1 AT89S51芯片介绍 (5)第4章系统的硬件设计 (8)4.1 电源电路 (8)4.2 单片机最小系统 (8)4.3 数码管显示部分 (9)4.4 键盘部分 (33)4.4.1 按键开关 (33)4.4.2 轻触开关 (33)4.5 蜂鸣器部分 (33)第5章系统软件设计 (13)5.1 软件系统介绍 (13)5.2 编程语言的选择 (13)5.3 应用软件的选择——keilc51 (13)5.4 系统程序设计 (14)5.4.1 主程序流程图 (14)5.4.2 主程序 (15)5.4.3 定时器定时 (18)第6章系统仿真及硬件制作 (21)6.1 仿真的必要性 (21)6.2 系统仿真过程 (21)6.2.1 原理图的绘制 (21)6.2.2 程序的调入 (22)结论 (23)参考文献 (24)附录1 (25)附录2 (32)致谢 (33)第1章绪论1.1 概述语音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。
电子音乐盒(单片机课程设计)说明书
单位代码 6130学号 090105096分类号密级公开课程设计(说明书)电子音乐盒的设计院(系)名称工学院机械系专业名称机械设计制造及其自动化学生姓名祝林林指导教师郭晓君2013年01月12日河科技学院课程设计任务书工学院机械系机械设计制造及其自动化专业09 级1 班学号090105096 姓名祝林林指导教师郭晓君题目: 电子音乐盒的设计课程:单片机课程设计课程设计时间 2012年12月21 日至2012年1 月3日共2 周课程设计工作内容与基本要求(设计要求、设计任务、工作计划、所需相关资料)(纸张不够可加页)1.设计要求查阅资料,了解单片机控制单音喇叭发声原理;设计基于单片机的电子音乐盒;通过按钮可选择不同的音乐。
创新设计:1、安装复位键,暂停、播放键;2、有6首不同的音乐用程序编出可供选择。
2. 设计任务与要求2.1系统硬件电路设计根据该系统设计的功能要求选择所用元器件,设计硬件电路。
要求用Proteus绘制整个系统电路原理图。
2.2软件设计根据该系统要求的功能进行软件设计,绘制整个系统的软件流程图;根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求逐条加以注释。
2.3 Proteus仿真用Proteus对系统进行仿真并进行软硬件调试。
2.4 编写设计说明书内容包括任务书、设计方案分析、硬件部分设计、软件部分设计、调试结果整理分析、设计调试的心得体会等,字数不少于4000字;硬件部分设计要绘制整个系统电路原理图,对各部分电路设计原理做出说明;软件设计部分要绘制整个系统及各部分的软件流程图,列出程序清单,逐条加以注释,并在各功能块前加程序功能注释。
3.工作计划4.主要参考资料单片机课程设计指导书皮大能北京理工大学出版社2010.78051单片机实践与应用吴金戎清华大学出版社2003.8单片机技术基础教程与实践夏路易电子工业出版社2008.1MCS-51单片机原理接口及应用王质朴北京理工大学出版社2009.11基于Proteus的单片机系统设计与仿真实例蒋辉平机械工业出版社2009.7指导老师签字:日期:电子音乐盒1设计任务和要求 (1)2总体方案设计 (1)3硬件设计 (2)3.1 硬件电路 (2)3.2 系统总框图 (2)3.3器件选择 (2)3.4 原理图设计 (3)3.5 原理说明 (6)4软件设计 (7)5仿真、安装和调试 (8)收获与体会 (10)参考文献 (11)附件1:元件清单 (12)附件2: 总电路图 (13)附件3:音乐程序 (14)黄河科技学院课程设计(说明书)第1 页1设计任务和要求1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲(内存六首乐曲)。
单片机音乐盒课程设计
单片机音乐盒课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理和编程方法,掌握音乐盒制作的硬件和软件需求。
2. 使学生掌握音乐盒音符的组合和编排,能运用单片机制作个性化的音乐作品。
3. 帮助学生了解声音的产生、传播和接收过程,提高对声学知识的理解和应用能力。
技能目标:1. 培养学生动手实践能力,能独立完成单片机音乐盒的组装和编程。
2. 培养学生创新思维和问题解决能力,能针对实际问题提出解决方案并优化改进。
3. 提高学生团队协作能力,能在小组合作中发挥个人优势,共同完成项目任务。
情感态度价值观目标:1. 培养学生对单片机编程和电子制作的兴趣,激发学习热情和积极性。
2. 培养学生勇于尝试、不断探索的精神,增强克服困难的信心和毅力。
3. 培养学生关注社会、关爱他人的责任感,通过音乐盒的制作,传递美好情感,传播正能量。
课程性质:本课程为实践性强的课程,旨在通过单片机音乐盒的制作,将理论知识与实际应用相结合,提高学生的综合素养。
学生特点:学生具备一定的电子基础知识,对单片机和编程有一定了解,喜欢动手实践,富有创新精神。
教学要求:教师应注重理论与实践相结合,引导学生主动探究,鼓励学生创新思维,关注学生个体差异,提供个性化指导。
通过课程学习,使学生达到预定的学习成果,为后续学习打下坚实基础。
二、教学内容1. 理论知识:- 单片机原理与编程基础:介绍单片机的硬件结构、工作原理,C语言编程基础。
- 声音原理:讲解声音的产生、传播、接收等基本知识,以及音符、音阶和旋律的概念。
- 音频信号处理:介绍音频信号的产生、放大和输出过程,以及如何利用单片机控制音频信号。
2. 实践操作:- 硬件组装:指导学生按照电路图组装单片机音乐盒,包括单片机、扬声器、按键等元件的连接。
- 软件编程:教授学生编写程序,实现音乐盒的基本功能,如播放音符、调整音量、切换曲目等。
- 创新设计:鼓励学生发挥创意,为音乐盒增加新功能,如定时播放、录音等。
单片机数字音乐盒课程设计
数字音乐盒的设计摘要随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。
小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。
传统音乐盒,多是机械型的,体积笨重,发音单调,不能实现批量生产。
本设计是一个基于AT89C51系列单片机的音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路、显示电路以及蜂鸣器组成。
使用四个按键控制音乐盒,其中两个按键用来控制歌曲的播放、暂停,另两个用来控制液晶上歌曲次序的变化,本音乐盒共有三首歌曲。
播放歌曲时,相应歌曲对应相应数码管上歌曲次序及歌名的显示。
关键词:AT89C51,蜂鸣器,LCD液晶显示目录1绪论 (1)1.1课题描述 (1)1.2基本工作原理及框图 (1)2 相关芯片及硬件电路设计 (1)2.1AT89C51芯片 (1)2.1.1 AT89C51的功能特性 (2)2.1.2 AT89C51的主要性能参数 (2)2.2晶振电路 (3)2.3复位电路 (3)2.4驱动电路 (4)2.4.1 蜂鸣器 (5)2.4.2 续流二极管 (5)2.4.3 滤波电容 (5)2.4.4 三极管 (5)2.5显示电路 (6)2.5.1 线段的显示 (6)2.5.2 字符的显示 (6)2.6按键电路 (7)3 系统软件设计 (7)3.1软件设计程序流程图 (7)3.2节拍的确定 (8)3.3编码 (9)3.4仿真 (9)总结 (12)致谢 (13)参考文献 (14)附录 (15)1绪论1.1 课题描述随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。
面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现。
单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。
小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。
单片机课程设计音乐盒
单片机课程设计音乐盒一、教学目标本课程旨在通过学习单片机课程设计音乐盒,让学生掌握单片机的基本原理和应用,培养学生动手实践能力和创新思维。
具体的教学目标如下:知识目标:使学生了解单片机的基本结构、工作原理和编程方法;掌握音乐盒的基本电路设计和制作方法。
技能目标:培养学生使用单片机开发工具进行程序设计和调试的能力;训练学生进行音乐盒电路搭建和故障排查的能力。
情感态度价值观目标:激发学生对单片机技术和音乐盒制作的兴趣,培养学生的创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括单片机的基本原理、音乐盒的设计与制作、编程与调试等。
具体安排如下:1.单片机的基本原理:介绍单片机的结构、工作原理和编程语言。
2.音乐盒的设计与制作:讲解音乐盒的基本电路设计、元件选型和制作方法。
3.编程与调试:教授如何使用单片机开发工具进行程序设计和调试。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。
具体方法如下:1.讲授法:讲解单片机的基本原理、音乐盒设计和编程方法。
2.实验法:让学生动手搭建音乐盒电路,进行编程和调试。
3.讨论法:学生进行小组讨论,分享学习心得和经验。
4.案例分析法:分析实际案例,让学生了解单片机在实际应用中的优势和局限。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用权威、实用的单片机和音乐盒制作教材。
2.参考书:提供相关的技术资料和案例分析,丰富学生的知识体系。
3.多媒体资料:制作精美的PPT和教学视频,提高学生的学习兴趣。
4.实验设备:准备单片机开发板、音乐盒电路元件等实验设备,确保学生能动手实践。
五、教学评估本课程的教学评估将采用多元化、全过程的评价方式,以全面、客观、公正地评估学生的学习成果。
具体评估方式如下:1.平时表现:通过观察学生在课堂上的参与程度、提问回答、小组讨论等表现,评估其学习态度和理解能力。
2.作业:布置相关的编程练习和音乐盒制作任务,评估学生的实践能力和创新能力。
单片机电子琴音乐盒课程设计
软件优化不够
虽然我们实现了基本的功能,但 在软件算法的优化方面还存在不 足,如音符播放的流畅度、音乐
格式的兼容性等还有待提高。
测试与验证不充分
在课程设计中,我们对音乐盒的 测试与验证工作不够充分,未能 全面覆盖各种使用场景和异常情 况,导致在实际应用中出现了一
些问题。
未来发展趋势预测
,在各个领域得到了广泛应用。
02
音乐教育的普及
音乐教育逐渐受到人们的重视,越来越多的人希望通过各种方式学习和
欣赏音乐。
03
创意礼品的市场需求
在礼品市场中,具有创意和个性化的产品越来越受到消费者的青睐,电
子琴音乐盒作为一种将音乐与工艺品相结合的创意礼品,具有很大的市
场潜力。
目的和意义
01
提高学生实践能力
改进建议
针对发现的问题和性能瓶颈,提出具体的改进措施,如优化算法、更换更高性能的元器件 等。同时,也可以提出新的功能或设计思路,以完善和提升系统的整体性能。
PART 06
课程设计总结与展望
REPORTING
课程设计成果总结
1 2 3
实现基本功能
成功设计并制作了一个基于单片机的电子琴音乐 盒,实现了基本的音符播放、音乐播放和控制功 能。
智能化发展
随着人工智能技术的不断发展,未来的电子琴音乐盒有望 实现更加智能化的功能,如语音识别、自动演奏等。
多功能集成
为了满足用户多样化的需求,未来的电子琴音乐盒可能会 集成更多功能,如录音、编曲、教学等。
绿色环保
随着环保意识的日益增强,未来的电子琴音乐盒在设计和 生产过程中将更加注重环保和节能,采用更环保的材料和 更高效的能源利用方案。
播放功能测试
单片机课程设计音乐盒设计
单片机课程设计音乐盒设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解其在音乐盒设计中的应用。
2. 使学生了解并掌握音乐盒的基本组成部分,如音符、节拍等。
3. 帮助学生理解并运用编程语言,实现对音乐盒乐曲的编程与控制。
技能目标:1. 培养学生动手实践能力,能够独立完成音乐盒硬件电路的搭建。
2. 培养学生运用编程软件进行单片机程序设计的能力,实现音乐盒乐曲的播放与控制。
3. 提高学生的问题解决能力,能够针对音乐盒设计过程中遇到的问题进行调试与优化。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养其创新意识和动手能力。
2. 培养学生团队协作精神,学会与他人共同分析问题、解决问题。
3. 引导学生关注科技发展,认识到所学知识在实际应用中的价值。
分析课程性质、学生特点和教学要求:本课程为单片机课程设计,结合音乐盒设计,旨在让学生在实际操作中掌握单片机原理和应用。
学生为高年级学生,已具备一定的电子基础和编程能力。
教学要求注重实践与理论相结合,培养学生的动手能力和实际应用能力。
二、教学内容1. 理论知识:- 单片机原理及功能特点,对应教材第3章。
- 音乐盒基本构成及工作原理,对应教材第6章。
2. 实践操作:- 硬件电路搭建,包括单片机、扬声器、按键等元件的连接,对应教材第4章。
- 程序设计,使用C语言或汇编语言编写音乐盒乐曲播放程序,对应教材第5章。
3. 教学大纲:- 第一周:学习单片机原理及功能特点,了解音乐盒基本构成及工作原理。
- 第二周:进行硬件电路搭建,学习并掌握相关元件的使用方法。
- 第三周:编写音乐盒乐曲播放程序,学会编程控制单片机播放音乐。
- 第四周:调试与优化,针对音乐盒设计过程中遇到的问题进行解决。
4. 教学内容安排与进度:- 理论与实践相结合,每周安排2课时理论知识学习,2课时实践操作。
- 按照教学大纲,逐步完成音乐盒设计的相关内容。
5. 教材章节及内容列举:- 第3章:单片机原理及功能特点,重点学习单片机的内部结构、工作原理及编程方法。
单片机课程设计-基于单片机的数字音乐盒设计
湖南铁路科技职业技术学院单片机课程设计题目:基于单片机的数字音乐盒设计专业:机电一体化系部:机械工程系姓名:班级:309-2班湖南铁路科技职业技术学院单片机课程设计说明书基于单片机的数字音乐盒设计任务书一、任务设计一款基于AT89C51单片机的数字音乐盒。
二、设计要求(1)利用单片机的I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。
(2)共有10首音乐,每首乐曲都由相应的按键控制,并有开关键、暂停键、上一曲及下一曲控制键;(3)利用LCD液晶显示歌曲的序号、播放时间,开机时显示英文欢迎提示字符。
湖南铁路科技职业技术学院单片机课程设计说明书目录任务书 (1)目录 (2)1 概述 (5)1.1单片机数字音乐盒有关介绍 (5)1.2LED显示屏控制技术状况 (9)1.3本设计任务 (10)2总体方案论证与设计 (12)2.1单片机的选取 (12)2.2LED显示方式 (13)2.3LED驱动模块 (13)2.4系统总体结构框图 (14)3 系统硬件设计 (15)3.1AT89C51芯片功能和硬件连接 (15)3.2LED显示器 (18)3.3键盘 (19)3.4系统复位电路的设计 (20)3.5时钟电路模块 (20)3.6输出显示电路 (21)3.7音频输出部分 (21)3.8整体硬件电路 (23)4系统软件设计 (25)4.1主模块的设计 (25)4.2外部中断源系统设计 (26)4.3基本显示模块设计 (27)4.4系统初始化程序 (28)湖南铁路科技职业技术学院单片机课程设计说明书4.5音调、节拍以及编码的确定方法 (28)4.6程序流程图 (33)4.7文档顶端程序清单 (35)5 调试结果 (46)5.1系统总电路图 (46)5.2运行结果及分析 (46)总结 (48)参考文献 (49)湖南铁路科技职业技术学院单片机课程设计说明书1 概述传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。
单片机音乐盒课程设计
《单片机数字音乐盒》课程设计报告专业:通信工程班级:0802姓名:彭孟秋指导教师:何小年、刘甫2011 年 6 月18 日目录1、课程设计目的 (2)2、数字音乐盒的设计要求 (2)3、电路工作原理、操作方法 (2)4、电路图 (2)5、程序框图 (3)6、关键程序 (3)7、总结 (12)8、参考书目 (12)数字音乐盒设计课程设计目的单片机原理与应用课程设计是在理论教学与有关的实验完成之后进行的,其目的是培养学生程序设计和实际应用单片机技术的能力。
通过此实践环节,使学生能够校熟练设计常用的各类汇编语言程序,掌握设计调试单片机应用系统基本方法和步骤,能够利用所学的知识设计一个中等难度的单片机应用系统,为后续实践课程奠定基础。
数字音乐盒的设计要求1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒)。
2.采用数码管显示歌曲序号。
3.可通过功能键选择乐曲,暂停,播放。
电路工作原理、操作方法(1)硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列。
(2)用P0.0~P0.7,P2.0~P2.7控制LED,其中P0.0~P0.7控制七段码a、b、d、e、f、g,用P2.0~P2.7为数码管位选信号。
(3)用,P2.0~P2.2作为LCD的RS,R/W,E的控制信号。
用P0.0~P0.7作为LCD的D0~D7的控制信号。
(4)用P3.7口控制蜂鸣器。
(5)电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。
电路图程序框图关键程序Soundplay:#include <reg52.h>#include "Music.h"#include "SoundPlay.h"#include "lcd.h"#define SYSTEM_OSC 12000000 //定义晶振频率12000000HZ#define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔sbit BeepIO = P2^0; //定义输出管脚unsigned char codeduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//duan code 0~9unsigned int code FreTab[12] ={ 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 };//1~7在频率表中的位置unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 };unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存//******************************************************************* #define MaxNo 3 //定义歌曲数目unsigned char code *Sound;unsigned char code * codeMusic[MaxNo]={Music_4,Music_8,Music_7,Music_6,Music_5,Music_9,Music_3 ,Music_2,Music_1};signed char FlagNo=0;static unsigned char KeyScan(void);static void Beep(void);bit RunStop = 1;//1表示运行sbit KeyB =P3^2; // 上一首sbit KeyF =P3^3; //下一首sbit KeyT =P3^5; //暂停extern void Delay1ms(unsigned int);void InitialSound(void){BeepIO = 0;Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; // 计算TL1应装入的初值(10ms的初装值)Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; // 计算TH1应装入的初值TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TMOD |= 0x11; //两个定时器都工作在方式1ET0 = 1;ET1 = 0;TR0 = 0;TR1 = 0;EA = 1;FlagNo = 0;Sound = Music[FlagNo];P1 = duan[FlagNo+1];}void BeepTimer0(void) interrupt 1 //音符发生中断{BeepIO = !BeepIO;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0;}//*******************************************************************void Play(unsigned char Signature,unsigned Octachord,unsigned int Speed) {unsigned int NewFreTab[12]; //新的频率表unsigned char i,j;unsigned intPoint,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength;unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;#ifdef USE_LCDlcd_init();lcd_write_string(0,"MusicPlayer");#endifAgain :Delay1ms(600);for(i=0;i<12;i++) // 根据调号及升降八度来生成新的频率表{j = i + Signature;if(j > 11){j = j-12;NewFreTab[i] = FreTab[j]*2;}elseNewFreTab[i] = FreTab[j];if(Octachord == 1)NewFreTab[i]>>=2;else if(Octachord == 3)NewFreTab[i]<<=2;}SoundLength = 0;while(Sound[SoundLength] != 0x00) //计算歌曲长度{SoundLength+=2;}Point = 0;Tone = Sound[Point];Length = Sound[Point+1]; // 读出第一个音符和它时时值LDiv0 = 12000/Speed; // 算出1分音符的长度(几个10ms) LDiv4 = LDiv0/4; // 算出4分音符的长度LDiv4 = LDiv4-LDiv4*SOUND_SPACE; // 普通音最长间隔标准TR0 = 0;TR1 = 1;while(Point < SoundLength){if(KeyScan())goto Again; /*more keyscan for speed*/SL=Tone%10; //计算出音符SM=Tone/10%10; //计算出高低音SH=Tone/100; //计算出是否升半CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出对应音符的频率if(KeyScan())goto Again; /*more keyscan for speed*/ if(SL!=0){if (SM==1) CurrentFre >>= 2; //低音if (SM==3) CurrentFre <<= 2; //高音Temp_T =65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数器初值Sound_Temp_TH0 = Temp_T/256;Sound_Temp_TL0 = Temp_T%256;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿}if(KeyScan())goto Again; /*more keyscan for speed*/ SLen=LengthTab[Length%10]; //算出是几分音符XG=Length/10%10; //算出音符类型(0普通1连音2顿音)FD=Length/100;LDiv=LDiv0/SLen; //算出连音音符演奏的长度(多少个10ms)if (FD==1)LDiv=LDiv+LDiv/2;if(XG!=1)if(XG==0) //算出普通音符的演奏长度if (SLen<=4)LDiv1=LDiv-LDiv4;elseLDiv1=LDiv*SOUND_SPACE;elseLDiv1=LDiv/2; //算出顿音的演奏长度elseLDiv1=LDiv;if(SL==0) LDiv1=0;LDiv2=LDiv-LDiv1; //算出不发音的长度if(KeyScan())goto Again; /*more keyscan for speed*/ if (SL!=0){TR0=1;for(i=LDiv1;i>0;i--) //发规定长度的音{while(TF1==0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;if(KeyScan())goto Again; /*more keyscan for speed*/}}if(KeyScan())goto Again; /*more keyscan for speed*/if(LDiv2!=0){TR0=0; BeepIO=0;for(i=LDiv2;i>0;i--) //音符间的间隔{while(TF1==0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;if(KeyScan())goto Again; /*more keyscan for speed*/}}Point+=2;Tone=Sound[Point];Length=Sound[Point+1];if(KeyScan())goto Again; /*more keyscan for speed*/#ifdef USE_LCDlcd_write_char(12,FlagNo+49);#endif}BeepIO = 0;FlagNo ++;if (FlagNo == MaxNo)FlagNo =0;Sound = Music[FlagNo];P1 = duan[FlagNo+1];}/**************************************************************功能:键盘扫描函数入参: viod KeyF 下一首KeyB 上一首KeyT 暂停返回: unsigned char1 需跳转 0 不跳转***************************************************************/ static unsigned char KeyScan(void){unsigned char Cont;if (KeyF == 0){ //前进Delay1ms(5);if (KeyF == 0){while(KeyF == 0){EA = 0;FlagNo ++;if (FlagNo == MaxNo)FlagNo =0;P1 = duan[FlagNo+1];Beep();Delay1ms(600); //是长按EA = 1;}if (FlagNo == MaxNo)FlagNo =0;Sound = Music[FlagNo];P1= duan[FlagNo+1]; //刷显示while(KeyF == 0);return 1;}}if (KeyB == 0){ //后退Delay1ms(5);if (KeyB == 0){while(KeyB == 0){EA = 0;FlagNo --;if (FlagNo == -1)FlagNo =MaxNo-1;P1 = duan[FlagNo+1];//刷显示Beep();Delay1ms(600); //是长按EA = 1;}if (FlagNo == -1)FlagNo =MaxNo-1;Sound = Music[FlagNo];P1 = duan[FlagNo+1];while(KeyB == 0);return 1;}}if (KeyT == 0){ //暂停Delay1ms(20);Cont = 0;EA = 0;TR0 = 0;TR1 = 0;if (KeyT == 0){RunStop = ~RunStop;while(KeyT == 0); //等待第一次释放Beep();if (!RunStop){ //是暂停则关中断和定时器EA = 0;TR0 = 0;TR1 = 0;while(KeyT == 0); //检测第二次按键并等待它释放(若有的话) while (KeyT){ //第二次释放了等待第三次按下P1 = duan[Cont++%10]; //第三次未按下则暂停数秒0~9Delay1ms(100);} //此处暂停直到再次有按键低电平EA = 1; //重开定时器和中断TR0 = 1;TR1 = 1;Sound = Music[FlagNo];P1 = duan[FlagNo+1]; //恢复原来的显示}}EA = 1;TR0 = 1;TR1 = 1;return 0;}return 0;}void Beep(void){unsigned char i;for(i = 0;i < 200 ;i ++){BeepIO = ~BeepIO;Delay1ms(1);}}Playmusic:#include <REG52.H>#include "Music.h"#include "SoundPlay.h"void Delay1ms(unsigned int count){unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}main(){InitialSound();while(1){Play(0,3,380);Delay1ms(500);}}Music:#include "Music.h"//*****************************Music******************************** //挥着翅膀的女孩unsigned char code Music_1[]={0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00};//同一首歌unsigned char code Music_2[]={0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x020x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03, 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C, 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03, 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02, 0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70, 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66, 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C, 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66, 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00, 0x00,0x00 };//两只蝴蝶unsigned char code Music_3[] ={0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01, 0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02, 0x10,0x03, 0x15,0x00, 0x00,0x00 };总结1.本学期学习单片机的时间只有十几周时间,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,却改变了很多,首先对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;其次软件方面,在程序的设计,程序的调试方面都学到了很多东西,这是第一次编写单片机的大程序,很有成就感。
电子音乐盒课程设计报告
电子音乐盒课程设计报告文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)曲阜师范大学单片机原理与应用课程设计报告题目电子音乐盒的设计姓名武迪许艳军薛玉梅院系物理工程学院专业通信工程(物联网)指导教师张明强职称讲师2015年月日单片机原理与应用课程设计任务书单片机原理与应用课程设计评阅表注:课程设计等级:优秀(90-100),良好(80-89),中等(70-79),及格(60-69),不及格(60分以下)。
目录电子音乐盒的设计通信工程(物联网)专业学生学生姓名武迪许艳军薛玉梅指导教师张明强摘要本设计采用了蜂鸣器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲。
现选用AT89S52单片机。
主要设计模块包括数码管显示部分,功能键盘部分,蜂鸣器发声部分,彩灯部分。
数码管采用共阳极数码管,通过单片机P1口控制,实现歌曲序号的显示;功能键盘采用按键开关,通过单片机P3口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的P2口控制,实现歌曲播放;主要工作过程是通过按下功能键实现上一首和下一首及暂停播放,同时有数码管显示当前播放歌曲的序号,蜂鸣器播放出音乐。
此次设计要利用单片机及KeilC51编程软件编程和PROTEUS单片机仿真软件和电子电工等方面知识,用KeilC51编程软件编程,用PROTEUS单片机仿真软件仿真。
最后制作实物,将程序下载到单片机中,利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。
关键词AT89S51单片机;方波;音调TheDesignofTheElectronicMusicBoxStudentmajoringinCommunicationEngineeringNameWuDiXuYanJunXueYuMeiTutorNameZhangMingQiangAbstractWeusedtoachieveaudiblebuzzersongstoplay,tomaintainthesamebasictone,设计目的和要求设计目的(1)通过设计,查阅相关资料,掌握如何利用单片机设计产品,同时了解与单片机有关的软件模拟器的使用及取字模块软件的使用方法。
单片机课程设计(含程序)——基于C51单片机的电子音乐盒
单片机课程设计题目基于C51单片机的电子音乐盒学院机电与信息工程学院专业电子信息工程年级 XXXX级学号XXXXXXXXXXXXXXXXXXXXXXXXXXX姓名 XXXXXXXXXXXXXXX指导教师 XXXXX成绩目录摘要 (1)Abstract (1)第一章绪论 (2)1.1背景 (2)1.2单片机概述 (2)1.3目的与意义 (2)第二章总体设计 (3)2.1总体设计 (3)2.2总体方案论证与设计 (3)2.2.1单片机选择 (3)第三章硬件设施 (4)3.1单片机简介 (4)3.2最小系统 (4)3.3按键电路 (4)3.4 LCD1602液晶显示电路 (5)3.5 PCB图 (8)3.6发声模块(功率放大) (8)第四章软件设计 (9)4.1软件模块及发声原理 (10)4.1.1音调的产生 (10)4.1.2节拍的确定 (12)4.2 软件设计流程 (14)4.3 发声程序 (15)4.4 按键电路设计 (16)4.5 LCD1602液晶显示电路设计 (17)4.5.1 LCD显示模块 (17)4.5.2 LCD延时模块 (19)第五章调试 (19)5.1硬件调试 (19)5.2软件调试 (21)5.3联合调试 (22)第六章总结 (22)附录1 总原理图 (23)附录2 程序 (23)1.主函数模块 (23)2.LCD模块 (30)3. LCD参数设定头文件 (31)4.LCD延时函数 (32)摘要本设计是一个基于STC89C51RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路、喇叭以及LCD1602液晶显示系统组成。
本音乐盒共有四首歌曲,用3个按键控制上一曲下一曲以及暂停和恢复。
播放歌曲时,喇叭发出某个音调。
本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
单片机电子音乐盒课程设计说明书
中州大学·工程技术学院单片机课程设计说明书课题名称:电子音乐盒的设计班级:11机电对口1班学生姓名: # # #学号: *************指导教师:# # #完成日期:2013年9月13日成绩:目录引言 (2)1概述 (3)1.1 课题要求 (3)1.2设计方案 (3)1.3研究内容 (3)2 系统总体方案介绍 (3)2.1 系统组成框图 (3)2.2 音乐盒的功能结构图 (4)2.3 主要设计软件介绍 (4)3硬件设计 (5)3.1 总体设计框图 (5)3.2各部分硬件设计及其原理 (5)3.3 硬件电路图及功能 (6)4软件设计 (7)4.1 音调、节拍以及编码的确定方法 (7)4.2 软件程序设计 (10)5调试 (14)5.1 检查硬件连接 (14)5.2 检查软件系统 (14)5.3 测试结果 (14)6 总结 (16)致谢 (17)参考文献 (18)附:原程序 (19)引言21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
基于单片机控制的电子音乐盒课程设计
基于单片机控制的电子音乐盒课程设计单片机课程设计设计(论文)摘要为了实现单片机控制音乐播放,此次毕业设计做出了尝试,即电子音乐盒的设计。
本设计采用了蜂鸣器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲。
现选用AT89S51单片机。
主要设计模块包括数码管显示部分,功能键盘部分,蜂鸣器发声部分,彩灯部分。
数码管采用共阳极数码管,通过单片机P1口控制,实现歌曲序号的显示;功能键盘采用按键开关,通过单片机P3口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的P2口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效果。
主要工作过程是通过按下功能键实现上一首和下一首及暂停播放,同时有数码管显示当前播放歌曲的序号,蜂鸣器播放出音乐,当播放最后一首夜曲时还伴有彩灯闪烁。
此次设计要利用单片机及KeilC51编程软件编程和PROTEUS单片机仿真软件和电子电工等方面知识,用KeilC51编程软件编程,用PROTEUS单片机仿真软件仿真。
最后制作实物,将程序下载到单片机中,利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。
关键词:AT89S51单片机方波音调第I页单片机课程设计设计(论文)目录摘要 ..................................................................... .. I 目录 ..................................................................... II 第 1 章绪论 ............................................................... 1 第2章音乐盒总体设计 (2)2.1 设计功能要求 (2)2.2 总体设计原理 (2)2.3 总体设计框图 ........................................................ 2 第3章芯片的选择和介绍 .. (4)3.1 MCS-51系列单片机简介 (4)3.2 单片机的选择 (4)3.2.1 AT89S51芯片介绍 ................................................ 5 第4章系统硬件设计 (8)4.1 电源电路 (8)4.2 单片机最小系统 (9)4.3 数码管显示部分 (10)4.4 键盘部分 (11)4.4.1 按键开关 (11)4.4.2 轻触开关 (12)4.5 蜂鸣器部分 ......................................................... 12 第5章系统软件设计 (13)5.1 软件系统介绍 (13)5.2 编程语言的选择 ................................... 错误~未定义书签。
音乐盒设计单片机课程设计
初始化:设置系统参数,初始化硬件 设备
读取音乐文件:从存储设备中读取音 乐文件
解码音乐文件:将音乐文件解码为音 频信号
播放音频信号:将解码后的音频信号 输出到扬声器
控制音乐播放:根据用户操作控制音 乐的播放、暂停、快进、快退等功能
结束:关闭硬件设备,结束程序运行
音乐盒单片机软件功能模块设计
音乐播放模块:负责播放音乐,包括音乐文件的读取、解码和播放
实现
Part One
单击添加章节标题
Part Two
音乐盒设计概述
音乐盒的历史与文化背景
起源:音乐盒起源 于18世纪,最初 是作为贵族的奢侈 品
发展:19世纪, 音乐盒逐渐普及, 成为大众娱乐工具
音乐盒种类:包括 机械音乐盒、电子 音乐盒等
文化意义:音乐盒 不仅是一种娱乐工 具,也是一种文化 符号,代表着浪漫 、优雅和精致。
开发环境:Keil uVision 或IAR Embedded Workbench
编译工具:Keil uVision 或IAR Embedded Workbench
调试工具:J-Link或STLink
开发流程:编写代码、编 译、调试、下载到单片机
开发技巧:模块化编程、 代码优化、错误处理
音乐盒单片机软件控制流程设计
电源保护等
接口设计:包 括USB接口、 音频接口、电 源接口等,方 便用户操作和 连接外部设备
音乐盒单片机控制模块设计
单片机选择:根据音乐盒功能需求选择合适的单片机型号 控制模块设计:设计音乐盒的控制模块,包括按键、显示、音频输出等 程序编写:编写控制模块的程序,实现音乐盒的功能 调试与测试:对控制模块进行调试和测试,确保其正常运行
音乐盒单片机硬件 设计
单片机课程设计音乐盒
单片机课程设计音乐盒一、课程目标知识目标:1. 理解单片机的基本原理,掌握其编程方法;2. 学习音乐盒的基础知识,了解音符、节奏与旋律的关系;3. 掌握单片机控制音乐盒的硬件连接和程序设计。
技能目标:1. 能够运用所学知识,设计并实现一个功能齐全的音乐盒;2. 培养学生动手实践能力,提高问题解决和团队协作能力;3. 培养学生创新思维,能够对音乐盒进行优化和拓展。
情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发学习热情;2. 培养学生严谨的科学态度,注重实践与理论相结合;3. 培养学生良好的团队合作精神,学会尊重他人,分享成果。
分析课程性质、学生特点和教学要求:本课程为单片机课程设计,结合音乐盒的制作,旨在让学生在实际操作中掌握单片机知识。
学生处于中学阶段,具有一定的电子基础和编程能力,对新鲜事物充满好奇。
教学要求注重实践性、实用性和创新性,培养学生综合运用所学知识解决实际问题的能力。
课程目标分解为具体学习成果:1. 学生能够独立完成单片机音乐盒的硬件连接和程序设计;2. 学生能够编写出不少于两种旋律的音乐盒程序;3. 学生能够在课程结束后,进行作品展示,分享创作过程和心得体会。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 单片机基础原理:回顾并巩固单片机的工作原理、内部结构、编程语言等基础知识,涉及教材第1章内容。
2. 音乐盒知识:学习音乐盒的基本原理,包括音符、节奏、旋律的构成,涉及教材第3章内容。
a. 音符与频率的关系b. 节奏与时间的控制c. 旋律的组合与编排3. 硬件连接与编程设计:a. 学习并掌握单片机与音乐盒硬件的连接方法,涉及教材第2章内容;b. 学习并编写音乐盒程序,实现不同旋律的播放,涉及教材第4章内容。
4. 实践操作与作品制作:a. 指导学生进行单片机音乐盒的硬件连接和调试;b. 协助学生编写音乐盒程序,实现功能要求;c. 组织学生进行作品展示和评价,分享创作经验。
单片机原理课程设计报告——音乐盒
单片机原理课程设计报告题目:音乐盒的设计班级:自动093学号:××××××姓名:×××成绩:指导教师:×××北京工商大学计算机与信息工程学院2012.6课程设计任务书摘要第一章绪论1.1课程设计目的1.2课程设计任务1.3课程设计要求1.4课程设计意义第二章设计原理2.1基本原理简述2.2设计方案第三章音乐播放器的硬件电路3.1 AT89C51单片机3.2 单片机CPU结构3.3引脚介绍3.4 电路连线第四章软件编程设计4.1编程方案第五章心得体会第一章绪论1.1课程设计目的应用单片机,利用它的原理组成一个音乐播放器。
本课程设计是主干实践课。
课程的任务在于提高学生综合运用所学知识理论、分析解决问题的能力。
1.2课程设计任务1)以单片机为核心部件组成一个音乐播放器;2)利用单片机的定时器产生乐谱的各种频率方波,由蜂鸣器发出声音;3)定义按键,能相应的播放出歌曲;1.3课程设计要求能用键盘选择不同的歌曲,至少两首以上,并写出课程设计报告。
1.4课程设计的意义通过自己动手设计单片及组成的器件,在软件及硬件上进一步了解单片机的原理,深入了解了单片机C51语言的实际应用,能更深地理解课堂上所学的内容,巩固C语言程序编写,体会作为一名设计人员所需要具备的各种能力,学会理论知识联系实际,提高我们发现问题,分析问题,解决问题和实践动手的能力。
第二章设计原理及总体方案选择2.1 设计原理音调的确定不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。
把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。
单片机音乐盒的课程设计
单片机音乐盒的课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解音乐盒制作的硬件组成和工作原理。
2. 使学生了解并掌握音乐盒编程的基础知识,包括音符、节拍和旋律的表示方法。
3. 让学生掌握音乐盒电路的搭建方法,了解相关电子元器件的功能和连接方式。
技能目标:1. 培养学生动手操作能力,能独立完成音乐盒硬件电路的搭建。
2. 培养学生编程能力,使其能编写简单的音乐程序,实现对音乐盒的控制。
3. 培养学生解决问题的能力,能针对音乐盒制作过程中遇到的问题进行分析和调试。
情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发学生探究科学的热情。
2. 培养学生团队合作精神,使学生学会与他人合作共同完成任务。
3. 培养学生创新思维,鼓励学生发挥想象,设计独特的音乐作品。
分析课程性质、学生特点和教学要求,本课程目标旨在让学生在掌握单片机基础知识的基础上,通过动手实践,培养其编程和电子制作能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果,并为后续的教学设计和评估提供依据。
二、教学内容1. 理论知识:- 单片机原理:介绍单片机的基本概念、结构及其工作原理。
- 音乐知识:讲解音符、节拍、旋律等基本音乐概念及其在编程中的表示方法。
- 电子元器件:介绍常用的电子元器件(如电阻、电容、二极管等)及其在音乐盒电路中的应用。
2. 实践操作:- 音乐盒硬件搭建:指导学生按照电路图搭建音乐盒硬件,包括单片机、扬声器、电子元器件的连接。
- 编程控制:教授学生使用编程软件,编写音乐程序,实现对音乐盒的控制。
- 调试与优化:教授学生如何对音乐盒进行调试,包括查找故障、优化程序等。
3. 教学大纲:- 第一阶段:单片机原理及音乐知识学习,占总课时1/4。
- 第二阶段:电子元器件认知及音乐盒硬件搭建,占总课时1/4。
- 第三阶段:编程控制与调试优化,占总课时1/2。
4. 教材章节:- 单片机原理与编程:《单片机原理与应用》第1章、第2章。
单片机课程设计音乐盒
微机原理课程设计题目:数字音乐盒姓名:学号:指导老师 :目录一、任务与要求 (3)二、硬件设计 (3)三、软件设计 (3)四、调试 (24)五、收获和体会 (25)六、参考文献 (25)单片机课程设计实验报告一、任务及要求课程设计题目:数字音乐盒课程设计要求:1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒)2.采用LCD显示信息3.开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称) 4.可通过功能键选择乐曲,暂停,播放。
5.选作容:显示乐曲播放时间或剩余时间二、硬件设计硬件电路:本设计中用到了98C51单片机,4*4键盘,蜂鸣器,16*2 LCD,七段显示数码管LED。
(硬件电路原理图附于后页)原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。
也可在LED显示歌曲号。
(1)硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列。
(2)用P0.0~P0.7,P2.0~P2.7控制LED,其中P0.0~P0.7控制七段码a,b,c,d,e,f,g,用P2.0~P2.7为数码管位选信号。
(3)用,P2.0~P2.2作为LCD的RS,R/W,E的控制信号。
用P0.0~P0.7作为LCD的D0~D7的控制信号。
(4)用P3.7口控制蜂鸣器(J2,J4断开,J3短接)。
(5)电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。
三、软件设计本程序可以实现课程设计的基本要求和附加功能,并可以通过按键播放七歌曲。
实验程序如下:RS BIT P2.0 ;定义液晶显示端口标号RW BIT P2.1E BIT P2.2;********************************************L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H;*******************************************ORG 0000hLJMP mainORG 000BHLJMP TT0ORG 001BHLJMP T1INTorg 1000hmain:;-----------------------;液晶初始化MOV SP,#70HMOV P0,#01H ;清屏CALL ENABLEMOV P0,#38H ;8位,2行显示LCALL ENABLEMOV P0,#0FH ;屏显on,光标on,闪烁onLCALL ENABLEMOV P0,#06H ;计数地址加1,显示幕onLCALL ENABLE;-------------------------------存初始化LCALL INITIL;-------------------------------key1: LCALL keyLCALL moddLJMP key1;---------------------键盘扫描key: nopnoplcall ksjnz k1 ;有按键转到K1lcall kaijilcall SOPxn: ljmp keyk1: lcall moddlcall moddlcall ksjnz k2ljmp keyk2: mov R2,#0feh ;读键盘mov R4,#00hk3: mov A,R2mov P1,Amov A,P1ACC.4,L1 ;为1跳转,第一行无按键mov a,#00hljmp lkL1: jb acc.5,L2mov a,#04hljmp lkL2: jb acc.6,L3mov a,#08hljmp lkL3: jb acc.7,next1mov a,#0ch;------------------------------------------------------- lk: add a,R4push acck4: lcall delay1 ;若同时有其他按键,则等待lcall ksjnz k4;-------------------------------------------------------- mov r3,#07hclr amov r0,#30hmov r1,#31hmm1: mov a,r1mov r0,ainc r0inc r1djnz r3,mm1pop accmov r0,aRET;------------------------------------------------------ next1: inc R4 ;------列扫描mov a,R2JNB acc.3,n2ljmp n1n2: ljmp keyn1: rl amov R2,aljmp k3;----------------------------------------------ks: mov a,#0f0h ;判断P1口mov P1,anopnopmov a,P1cpl aanl a,#0f0hRET;-------------------------------------------------- DELAY1:SETB RS0dl: mov R5,#0ahdl2: mov R6,#63dl3: nopnopdjnz R6,dl3djnz R5,dl2CLR RS0RET;--------------------------------------------------- ;30H-37H初值为零;---------------------------------------------------- initil:mov r3,#08hmov r0,#30hm1: mov r0,#00hinc r0djnz r3,m1RET;---------------------------------------------------- ;显示;--------------------------------------------------- modd:MOV P0,#8EHCALL ENABLEmov A,37Hmov DPTR,#TABLE3MOVC A,A+DPTRCALL WRITE2RET;-------------------------------------------------- ;开机提示字;------------------------------------------------- kaiji: mov a,37hcjne a,#0fh,DFFMOV P0,#80H ;设光标地址CALL ENABLEMOV DPTR,#TABLE1;写数据CALL WRITE1DFF: RET;----------------------------------------------;按键值播放歌曲;---------------------------------------------- SOP: mov a,37hcjne a,#01h,A11LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10LCALL INITILE2lcall MAIN0A11: CJNE A,#02H,A22LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20LCALL INITILE2lcall MAIN0A22: CJNE A,#03H,A33LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30LCALL INITILE2lcall MAIN0A33: CJNE A,#04H,A44LCALL MODDMOV 52H,#HIGH TABLE40MOV 53H,#LOW TABLE40LCALL INITILE2lcall MAIN0A44: CJNE A,#05H,A55LCALL MODDMOV 52H,#HIGH TABLE50MOV 53H,#LOW TABLE50LCALL INITILE2lcall MAIN0A55: CJNE A,#06H,A66LCALL MODDMOV 52H,#HIGH TABLE60MOV 53H,#LOW TABLE60LCALL INITILE2lcall MAIN0A66: CJNE A,#07H,A77LCALL MODDMOV 52H,#HIGH TABLE70MOV 53H,#LOW TABLE70LCALL INITILE2lcall MAIN0A77: CJNE A,#08H,A88LCALL MODDMOV 52H,#HIGH TABLE80MOV 53H,#LOW TABLE80LCALL INITILE2lcall MAIN0A88: CJNE A,#09H,A99LCALL MODDMOV 52H,#HIGH TABLE90MOV 53H,#LOW TABLE90LCALL INITILE2lcall MAIN0A99: CJNE A,#0AH,AAALCALL MODDMOV 52H,#HIGH TABLE100MOV 53H,#LOW TABLE100LCALL INITILE2lcall MAIN0AAA: RET;******************************************INITILE2:MOV L50MS,#20MOV L1MS,#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HMOV A,HOUMOV B,#10DIV ABADD A,#30H ;将BCD吗转化为ASIIC码MOV P0,#0C8H ;显示小时十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;显示小时个位CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0DH ;显示冒号CALL ENABLECALL WRITE2MOV A,MINMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;显示分十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;显示分个位CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0CDH ;显示冒号CALL ENABLECALL WRITE2MOV A,SECMOV B,#10DIV ABADD A,#30HMOV P0,#0CEH ;显示秒十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;显示秒个位CALL ENABLECALL WRITE2MOV P0,#0C0H ;设光标地址CALL ENABLEMOV DPTR,#TABLE2;写数据CALL WRITE1RET;*********************************************写指令ENABLE: CLR RSCLR RWCLR ELCALL DELAYSETB ERET;**********************************************写数据WRITE1: MOV R1,#00HA1: MOV A,R1MOVC A,A+DPTRCALL WRITE2INC R1CJNE A,#0FEH,A1 ;未到字符串末尾继续RETWRITE2: MOV P0,ASETB RSCLR RWCLR ECALL DELAYSETB ERET;********************************************** DELAY: MOV R4,#05D1: MOV R5,#0FFHDJNZ R5,$DJNZ R4,D1RET;----------------------------------------------TAB: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb 80h,90h,88h,83h,0c6h,0a1h,86h,8ehTAB1: db 89h,86h,0c7h,0c7h,0c0hTAB2: db 0c6h,88h,0c0hTABLE1: DB 'WELCOM HERE',0FEHTABLE2: DB 'DFF WB ',0FEHTABLE4: DB 'CAU',0FEHTABLE3: DB 30H,31H,32H,33hDB 34H,35H,36H,37HDB 38h,39H,41H,42HDB 43H,44H,45H,46H;-------------------------------------------------------------------- ;播放歌曲程序;--------------------------------------------------------------------MAIN0: MOV TMOD,#11HMOV IE,#8aH;MOV TH1, #3cH;MOV TL1, #0b0Hlcall ksjnz TTM12MOV 40H,#00H;---------------------------------------------------------NEXT20: MOV A,40HMOV DPH,52HMOV DPL,53HMOVC A,A+DPTRMOV R2,AJZ STOPANL A,#0FHMOV R1,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR0JMP W1;----------------------------------------------------------SING: DEC AMOV 22H,ARL AMOV DPTR,#TABLE00MOVC A,A+DPTRMOV TH0,AMOV 21H,AMOV A,22HRL AINC AMOVC A,A+DPTRMOV TL0,AMOV 20H,ASETB TR0SETB TR1W1: LCALL DELAY30INC 40HLCALL KS ;------有键跳出JNZ STOPLJMP NEXT20;----------------------------------------------------------- STOP: CLR TR0CLR TR1LJMP MAIN0;---------------------------------------------------------- TTM12: LCALL K2MOV A,37HCJNE A,#0EH,TTM13CLR TR1LCALL DELAY1TTM120: LCALL KSLCALL DELAY1JZ TTM120LCALL K2MOV A,37HCJNE A,#0EH,TTM120SETB TR1LJMP NEXT20TTM13: CJNE A,#0CH,TTM14MOV A,52HINC AMOV 52H,AMOV A,53HINC AMOV 53H,AMOV A,36HINC AMOV 37H,ALJMP TTM2TTM14: CJNE A,#0DH,TTM2MOV A,52HDEC AMOV 52H,AMOV A,53HDEC AMOV 53H,AMOV A,36HDEC AMOV 37H,A;------------------------------------------------------ TTM2: RET;***************************************************;定时器中断子程序0;***************************************************TT0: PUSH ACCPUSH PSWMOV TL0,20HMOV TH0,21HCPL P3.7POP PSWPOP ACCRETI;***************************************************;定时器中断子程序1;***************************************************T1INT:MOV TH1, #3cHMOV TL1, #0b0HDJNZ L50MS,X4MOV L50MS,#20;****************---每秒种时钟刷新秒显示一次SECSET:MOV A,SECMOV B,#10DIV ABADD A,#30HMOV P0,#0CEH ;显示秒十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;显示秒个位CALL ENABLECALL WRITE2MOV A,SECINC AMOV SEC,AXRL A,#60X4: JNZ OUTMINSET: MOV SEC,#00H;*************************************每分钟刷新分显示一次MOV A,MININC AMOV MIN,AMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH ;显示分十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;显示分个位CALL ENABLECALL WRITE2MOV A,MINMOV B,#3MUL ABMOV B,#100DIV ABMOV R2,AMOV A,#10XCH A,BDIV ABMOV A,MINXRL A,#60JNZ OUTHOUSET:MOV MIN,#00H;**************************************每小时刷新小时显示一次MOV A,HOUMOV B,#10DIV ABADD A,#30H ;将BCD吗转化为ASIIC码MOV P0,#0C8H ;显示小时十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;显示小时个位CALL ENABLECALL WRITE2MOV A,HOUINC AMOV HOU,AXRL A,#10JNZ OUTSJMP OVERFLOWOUT: RETI;*************************************溢出处理OVERFLOW:MOV L50MS,#20MOV L1MS,#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HRETI;-------------------------------------------------------------------- DELAY30:MOV R7,#2W2: MOV R4,#125W3: MOV R3,#248DJNZ R3,$DJNZ R4,W3DJNZ R7,W2DJNZ R1,DELAY30RET;-------------------------------------------------------------------- TABLE00:DW 64580,64684,64777,64820DW 64898,64968,65030,64260DW 64400,64524,65058,63835,64021;--------------------------------------------------------------------;第一首《精忠报国》;-------------------------------------------------------------------- TABLE10:DB66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22HDB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98HDB24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22HDB12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38HDB66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32HDB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52HDB62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38HDB64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52HDB 52H,62H,7FH,74H,04H,58H,6FHDB 00;-------------------------------------------------------------------- ;第二首《月亮代表我的心》;-------------------------------------------------------------------- TABLE20:DB 02H,82HDB 16H,32H,54H,02H,52HDB 0A6H,32H,54H,02H,52HDB 64H,74H,0B6H,64HDB 52H,5CH,32H,22HDB 16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32HDB 26H,12H,94H,22H,32HDB 2CHDB 32H,52HDB 36H,22H,14H,54HDB 0ACH,92H,0A2HDB 96H,0A2H,96H,82HDB 3CH,54HDB 36H,22H,14H,54HDB 0ACH,92H,0A2HDB 16H,12H,14H,22H,32HDB 2CH,02H,82HDB 16H,32H,56H,12HDB 0A6H,32H,56H,52HDB 66H,72H,0B6H,62HDB 62H,52H,58H,32H,22HDB 16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32HDB 26H,92H,0A4H,12H,22HDB 1CHDB 00;------------------------------------------------------------------- ;第三首《看我七十二变》;------------------------------------------------------------------- TABLE30:DB 0d4H,84H,94H,82H,92HDB 12H,22H,82H,92H,02H,92H,82H,0d2HDB 82H,92H,14H,84H,02H,0d1H,0d1HDB 0c2H,0d2H,84H,0d2H,0d2H,82H,82HDB 84H,82H,82H,94H,82H,0d2HDB 82H,82H,82H,92H,02H,82H,82H,0d2HDB 0c4H,84H,0d4H,92H,0d2HDB 82H,0d2H,82H,92H,98HDB 04H,94H,88HDB 04H,94H,88HDB 04H,94H,88HDB 04H,94H,88H,04HDB 32H,32H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,22HDB 54H,44H,34H,12H,22HDB 34H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,92HDB 32H,32H,22H,12H,02H,92H,12H,22HDB 54H,44H,32H,22H,12H,92HDB 00;--------------------------------------------------------------------;第四首《同一首歌》;-------------------------------------------------------------------- TABLE40:DB 88h,14h,24h,36H,42H,34H,14H,28H,14H,94HDB 1fH,88H,14H,24H,34H,32H,42H,54H,14HDB 46H,32H,54H,22H,32H,32H,22H,2CH,38H,54H,74HDB 76H,62H,68H,54H,52H,62H,74H,62H,52H,3fHDB 46H,42H,54H,64H,54H,42H,32H,28H,0a4H,0a2HDB 92H,84H,94H,1fH,0b8H,68H,46H,52H,68HDB 74H,72H,72H,74H,62H,52H,3fH,0b8H,68HDB 46H,52H,68H,64H,62H,62H,64H,42H,32H,2fHDB 58H,14H,24H,36H,42H,34H,12H,12H,26H,22H,24H,22H,12HDB94H,9cH,0a8H,0a6H,92H,84H,64H,54H,22H,22H,46H,42H,44H,32H,22H,5fHDB 00;-------------------------------------------------------------------- ;第五首《大海》;-------------------------------------------------------------------- TABLE50:DB82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,94H,1cHDB82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,22H,12H,1cH,32H,52HDB 62H,64H,62H,64H,0b2H,62H,52H,54H,62H,54H,32H,22HDB12H,14H,12H,14H,24H,3cH,32H,22H,12H,14H,12H,14H,0b2H,62H,52H,54H,62H,54H,32H,52HDB66H,0b2H,0b4H,62H,52H,5cH,32H,52H,62H,64H,62H,64H,0b2H,62H,52H,54HDB62H,54H,32H,22H,12H,14H,12H,14H,54H,3cH,32H,22H,12H,14H,12H,14H,22H,32HDB 52H,54H,32H,54H,32H,52H,6fH,04H,02H,92H,32H,24H,12H,1fHDB 00;-------------------------------------------------------------------- ;第六首《两只蝴蝶》;--------------------------------------------------------------------TABLE60:DB32H,22H,38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,92H,88H,04H,32H,22HDB38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,21H,92H,12H,28H,04H,32H,22HDB38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,91H,11H,88HDB04H,32H,52H,58H,02H,52H,62H,52H,38H,04H,22H,22H,24H,22H,32H,22H,12H,92H,92HDB12H,12H,1cH,08H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22HDB38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4H,72HDB62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,32H,22H,32HDB 58H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22HDB38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4H,72HDB62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,84H,92H,1cHDB 00;--------------------------------------------------------------------;第七首<<世上只有妈妈好>>;-------------------------------------------------------------------- TABLE70:DB66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28HDB26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FHDB66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28HDB26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FHDB66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28HDB26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FHDB 00;-------------------------------------------------------------------- ;第八首歌《彩云追月》;-------------------------------------------------------------------- TABLE80:DB86H,92H,12H,22H,32H,52H,68H,63H,52H,34H,62H,0B2H,0B2H,62H,51H,61H,51H,31H,54HDB62H,0B2H,0B2H,62H,52H,32H,52H,52H,51H,61H,51H,31H,34H,52H,62H,74H,32H,52H,52H,32H,21H,31H,21H,11H,24HDB32H,52H,52H,32H,22H,12H,24H,32H,52H,52H,32H,62H,52H,61H,51H,31H,21H,21H,31H,21H,11H,1CHDB21H,31H,22H,23H,31H,21H,18H,02H,0B2H,0BCH,0B4H,72H,61H,51H,72H,61H,71H,61H,51H,61H,71H,61H,6FHDB86H,94H,12H,22H,32H,52H,64H,62H,51H,31H,52H,21H,31H,21H,33H,62H,0B2H,0B2H,62H,51H,61H,51H,31H,54HDB62H,0B2H,72H,61H,51H,51H,61H,51H,31H,54H,61H,0B2H,72H,61H,51H,51H,61H,51H,31H,32H,21H,11H,32H,51H,61H,54HDB02H,32H,24H,32H,52H,52H,32H,22H,31H,21H,11H,24H,32H,52H,62H,0B2H,72H,61H,51H,61H,51H,31H,32H,52H,52H,32H,62HDB51H,31H,31H,21H,11H,91H,23H,31H,21H,1CH,12H,24H,32H,62H,51H,31H,34H,0B4H,72H,61H,51H,63H,71H,64HDB0B2H,54H,72H,62H,71H,61H,54H,61H,51H,31H,21H,34H,73H,61H,54H,22H,32H,52H,22H,36H,52H,62H,61H,31H,32H,21H,11H,21H,11H,91H,81HDB94H,52H,62H,52H,42H,32H,22H,32H,52H,0B4H,74H,64H,52H,61H,51H,41H,5CH,02H,52H,0B4H,74H,63H,51H,61H,51H,31H,21HDB 00;-------------------------------------------------------------------- ;第九首<<十年>>;--------------------------------------------------------------------TABLE90:DB02H,11H,21H,32H,32H,22H,32H,21H,11H,0A1H,91H,92H,0D1H,91H,83H,91H,0A2H,91H,81H,94H,11H,0A1H,91H,0A1H,98H,03H,81H,0A1H,0A1H,91H,0A1HDB98H,04H,02H,11H,21H,32H,32H,22H,32H,21H,31H,51H,11H,13H,31H,22H,22H,21H,11H,0A1H,11H,13H,11H,11H,0A1H,91H,0A1HDB11H,93H,94H,03H,81H,11H,0A1H,91H,81H,92H,0A1H,91H,94H,08H,03H,81H,32H,21H,11H,22H,31H,21H,21H,83HDB01H,11H,91H,0A1H,11H,61H,51H,11H,34H,01H,31H,21H,31H,48H,23H,31H,32H,42H,38H,03H,11H,21H,52H,31HDB33H,31H,31H,41H,51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,92H,91H,11H,0A1H,91HDB0A1H,31H,31H,22H,0A1H,11H,14H,01H,11H,21H,31H,63H,31H,42H,51H,31H,31H,22H,11H,21H,52H,31H,33H,31H,31H,41HDB51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,92H,91H,11H,0A1H,91HDB0A2H,41H,31H,22H,31H,21H,12H,12H,11H,11H,21H,31H,63H,51H,32H,11H,21H,26H,11H,0A1H,18HDB 00;-------------------------------------------------------------------- ;第十首<<你的爱给了谁>>;-------------------------------------------------------------------- TABLE100:DB02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0A1H,11H,0A1HDB9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92HDB02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1HDB 72H,62H,68H,02H,61H,51H,66H,62H,58H,0CH,02H,51H,41H,5FHDB02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0A1H,11H,0A1HDB9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92HDB02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1HDB 66H,62H,54H,0B2H,71H,61H,6CHDB 00END实验控制流程图如下:使用说明:键盘如下:按键功能说明:1~A:十首歌曲C:上一首歌曲D:下一首歌曲E:歌曲暂停F:开机画面四、调试程序调试中出现的问题及解决的办法:1.有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
^电子音乐盒1、设计任务和要求 (1)2、总体设计 (1)3、硬件设计 (2)硬件电路 (2)原理说明 (2)4、软件设计 (3)5、仿真、安装和调试 (3)【6、收获与体会 (4)参考文献 (5)附件1:元件清单 (6)附件2: 总电路图 (7)附件3:音乐程序 (8),音乐盒设计1、设计任务和要求(1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲(内存两首乐曲)。
(2)采用七段数码管显示当前播放的歌曲序号。
(3)可通过功能键选择乐曲,暂停,播放,上一曲,下一曲。
2、总体设计(1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲(2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。
例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。
记数脉冲值与频率的关系公式如下:N=Fi/2/Fr N:记数值Fi:内部计时一次为1微秒.故其频率为1MHZFr;要产生的频率(3):起记数值的求法如下:T=65536-N=65536-Fi/2/Fr例如:设K=65536,F=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr低音D0的T =65536-500000/262=63627 中音D0的T =65536-500000/523=64580 低音D0的T =65536-500000/1047=650593、硬件设计 硬件电路本设计中用到89C51单片机,喇叭,七段显示数码管LED 。
(硬件电路原理图如图1所示)原理说明当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
同时启动定时器T1,显示歌曲号。
(1) 硬件电路中用0INT 、1INT 分别接S1、S2作为上、下一曲的功能键 (2) 用控制七段码a,b,c,d,e,f 。
(3) 用口控制喇叭。
(4) 电路为12MHZ 晶振频率工作,起振电路中C1,C2均为30pf 。
图1 音乐盒原理图4、软件设计本程序可以实现课程设计的基本要求,并可以通过按键播放两首歌曲,程序流程图如下:5、仿真、安装和调试按照上面设计的电路在proteus软件内画图, 打开单片机软件开发系统Keil,选择89c51单片机,在其中编写程序,运行生成一个后缀名为hex的文件,然后将该文件下载到proteus中的AT89c51单片机中进行仿真,观察实验现象。
仿真能实现播放音乐,按键选择曲目,暂停,播放功能。
仿真成功后,安装好实验板,然后将音乐程序下载到电路板内 ,观察结果。
能实现播放音乐,按键换曲等功能。
程序调试中出现的问题及解决的办法:(1)有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。
(2)程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。
当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。
(3)编程时要注意,在程序开始时,要写入各定时器中断的入口地址。
(4)编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。
(5)编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。
(6) LCD计时正常显示的解决办法:a. 两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。
解决办法:将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。
但还有问题。
b. 当音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,LCD 显示和音乐播放都会好一些。
c. 另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,因时间较长,当定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。
改进方案:若采用可以定时时间更长的单片机,可以避免所有问题。
6、收获与体会(1) 上学期学习单片机的课时不多,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,明显的改善了,首先对于硬件电路的工作原理有了进一步的学习,同时有了一个提升;软件方面,在程序的设计,程序的调试方面都有了很大的进步。
(2) 在一个好的氛围里才能踏下心来做东西,在这一段时间里,寝室成员都认真对待这次课程设计,除了自己做好自己的课题外,在遇到不懂的地方互相讨论,查阅资料,互助解决问题。
另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误。
我们也是这么做的,这一点在这次的课程设计中十分重要。
(3) 通过这次课程设计,我体会到了成功的喜悦,听着自己设计的程序下载到单片机中播放出音乐,心理非常自豪。
这次的课程设计在一定程度上改变了我学习单片机这门课程的态度,从最初的认为学它没有什么实际意义,到如今爱上单片机学习,并希望能将理论运用到实践,设计出更好更完整的系统。
我明白了一个人要想做好一件事,就必须具备自信心,耐心,还要有毅力,要胆大心细,要勇于尝试,要手脑并用,最后才能交出一份令人满意的答卷。
参考文献[1] 许珉.单片机原理及应用[M].北京:中国电力出版社,[2] 三恒星科技.MCS-51单片机原理与应用实例[M]. 北京:电子工业出版社,[3] 王为青,程国钢.单片机Keil Cx51应用开发技术[M]. 北京:人民邮电出版社,[4] John Markus.电子电路大全[M].北京:计量出版社,1995[5] 阎石.数字电子技术基础[M].北京:高等教育出版社,,第4版[6] 邓元庆.数字电路与逻辑设计[M].北京:电子工业出版社,2001[7]附件1:元件清单附件3:音乐程序OUT BIT ;定义音频输出端口,N EQU 6 ;歌曲总数OUT_NUM EQU P1 ;数码管显视当前所放歌曲曲数ORG 0000HAJMP MAINORG 0003HAJMP LAST_SONG ;外部中断0用于接上一曲歌按键ORG 000BHAJMP F_T0 ;定时器0用于定时,作音符发生器用 ORG 0013Hq4: AJMP NEXT_SONG ;外部中断1接下一曲歌按键ORG 001BHAJMP START_PAUSE ;定时器1用计数,这里用作中断,接开始/暂停键,初值为0ffH,方式2ORG 0030HMAIN: MOV SP,#60HMOV DPTR,#TABLE ;DPRT指向每首歌曲的入口地址的地址。
MOV R0,#30H ;R0中存入数据30H,这里在以30H 开始的单元存放每首歌曲的入口地址,其中30H,31H存放;歌曲的节拍入口地址,32H,33H存放歌曲音符入口地址,每首歌占用四个存储存单元。
MOV R5,#00H ;R5中存放表TABLE中正在执行操作的序号MOV R6,#1 ;R6存放正在设置入口信息的歌曲数SET_TAB: MOV A,R5 ;设置每首歌曲的入口信息,存放在以30H开始的存储单元中。
MOVC A,@A+DPTRMOV @R0,AINC R5INC R0MOV A,R5MOVC A,@A+DPTRMOV @R0,AINC R5INC R0MOV A,R5MOVC A,@A+DPTRMOV @R0,AINC R0INC R5MOV A,R5MOVC A,@A+DPTRMOV @R0,AINC R0INC R5INC R6 ;设置完一首歌曲后,歌曲数加一CJNE R6,#N+1,SET_TAB ;是否设置完,没有便继续,否则进行下面的操作;*********************************** 对中断,计数器的相关参数进行设置MOV TMOD, #61H ;计数器0工作方式1,计数器1工作方式2MOV TH1,#0FFH ;给计数器1置初值0FFH,又由于是工作方式2,所以MOV TL1,#0FFH ;计数器计数为1,相当于一外部中断。
SETB ET1 ;允许计数器1中断SETB ET0 ;允许计数器具0中断CLR PT0 ;计数器0为低优先级 SETB PT1 ;计数器1为高优先级SETB IT0 ;外部中断0为跳沿触发SETB PX0 ;高优先级SETB IT1 ;外部中断1为跳沿触发SETB PX1 ;高优先级SETB EX1 ;允许外部中断1中断 SETB EX0 ;允许外部中断定0中断SETB EA ;开中断总开关SETB TR1 ;定时器1开始工作,作中断用SETB OUT ;音频输出端口初始化;*********************************** ;设置结束CLR F0 ;设置F0=0,用来作暂停/播放的标置位用MOV 22H,#01H ;22H单元中存放正在播放的歌曲编号MOV DPTR,#OUT_TAB ;将正在播放的歌曲编号送数码管显视MOV A,22HMOVC A,@A+DPTRMOV OUT_NUM,AMOV R7,#00H ;R7中存放歌曲总信息的入口地址START0:MOV R4,#00H ;R4存放当前正在播放歌曲的第几个节拍数MOV R0,#30H ;30H开始的单元中存放歌曲的入口信息MOV A,R7 ;将歌曲的节拍表的入口地址送到DPTRADD A,R0MOV R0,AMOV DPH,@R0INC R0MOV DPL,@R0INC R0MOV A,R4INC R4MOVC A,@A+DPTR ;取出第一节拍数,其实第一个节拍不是歌曲的第一个节拍,而是表示几分音符;****************************************************MOV 26H,A ;将取出的音符数+节拍数保存在职26H单元中NEXT: MOV R0,#30H ;开始取出歌曲的第一个数据MOV A,R7ADD A,R0MOV R0,AMOV DPH,@R0INC R0MOV DPL,@R0INC R0MOV A,R4INC R4MOVC A,@A+DPTR ;放在A中;****************************************************JZ END0 ;若为0,则表示为休止符,不唱,本次音符不唱,MOV R1,A ;不为0,取出节拍数 ANL A,#0FHMOV R2,AMOV A,R1SWAP AANL A,#0FHJNZ SING ;音符不为0,唱CLR TR0 ;为0,不唱,关频率发生器SJMP SING1SING: DEC A ;开始唱,进行相应的数据处理MOV R3,ARL AMOV DPH,@R0INC R0MOV DPL,@R0INC R0MOVC A,@A+DPTRMOV 21H,AMOV TH0,AMOV A,R3RL AINC AMOVC A,@A+DPTRMOV 20H,AMOV TL0,ASETB TR0 ;开唱SING1:LCALL DELAY ;每个音符唱多久JB F0,FOR ;是否暂停,AJMP NEXT ;没有暂停,继续FOR: CLR TR0 ;暂停,不唱JB F0,$ ;等待播放AJMP NEXT ;开始播放END0: CLR TR0 ;不唱MOV A,22H ;唱完处理CJNE A,#N,WW ;是不是全部歌曲都唱完MOV 22H,#01H ;全部唱完,则从第一首开始再唱MOV R7,#00HMOV OUT_NUM,#B ;数码管显视第一首歌曲编号AJMP WWWWW: MOV A,R7 ;没有全部唱完,唱下一首,歌曲的入口信息调整ADD A,#4MOV R7,AINC 22HCLR EAPUSH DPHPUSH DPLMOV A,22HMOV DPTR,#OUT_TABMOVC A,@A+DPTRMOV OUT_NUM,A ;数码管显视相应的歌曲编号POP DPLPOP DPHWWW: SETB EAAJMP START0 ;开始下一首的演唱F_T0: MOV TH0,21H ;定时器0置初值MOV TL0,20HCPL OUT ;频率产生RETINEXT_SONG: PUSH ACC ;下一曲中断程序处理,保护现场PUSH DPHPUSH DPLCLR EA ;关中断MOV A,22HCJNE A,#N,Q ;是最后一首吗MOV R7,#00H ;是最后一首,则R7指向第一首,演唱第一首MOV 22H,#01HAJMP BACKQ: INC 22H ;不是最后一首,唱下一首,R7内容加4,歌曲数加1MOV A,R7ADD A,#4MOV R7,ABACK: MOV R4,#00H ;数码管显视相应的歌曲编号MOV A,22HMOV DPTR,#OUT_TABMOVC A,@A+DPTRMOV OUT_NUM,A;********************************************MOV B,R0 ;对下首要演唱的歌曲的几分拍进行调整,同时对R0中的内容进行保护MOV R4,#00HMOV R0,#30HMOV A,R7ADD A,R0MOV R0,AMOV DPH,@R0INC R0MOV DPL,@R0MOV A,R4INC R4MOVC A,@A+DPTRMOV 26H,A ;结果存入26H单元中DEC R4MOV R0,B ;恢复R0中的内容;********************************************POP DPL ;恢复现场POP DPHPOP ACCSETB EARETI ;中断返回LAST_SONG: PUSH ACC ;上一曲中断程序处理开始,保护现场PUSH DPHPUSH DPLCLR EA ;关中断MOV A,22H ;曲目数送ACJNE A,#1,QQ ;是否是第一首MOV 22H,#N ;是第一首歌曲MOV B,#4 ;将R7指向最后一首歌曲 MOV A,#N-1MUL ABMOV R7,AAJMP BACK2 ;处理结束QQ: DEC 22HMOV A,R7 ;R7减4SUBB A,#4MOV R7,ABACK2: MOV R4,#00HMOV A,22HMOV DPTR,#OUT_TABMOVC A,@A+DPTRMOV OUT_NUM,A ;数码管显视相应歌曲的编号;********************************************MOV B,R0 ;对下首要演唱的歌曲的几分拍进行调整,同时对R0中的内容进行保护MOV R4,#00HMOV R0,#30HMOV A,R7ADD A,R0MOV R0,AMOV DPH,@R0MOV DPL,@R0INC R0MOV A,R4INC R4MOVC A,@A+DPTRMOV 26H,A ;结果存入26H单元中DEC R4MOV R0,B ;R0中的内容恢复;********************************************POP DPL ;恢复现场POP DPHPOP ACCSETB EARETI ;中断返回START_PAUSE:CPL F0 ;开始/暂停中断处理程序,将标置位取反JB F0,RETURN ;为1返回SETB TR0 ;为0则播放RETURN: RETI ;中断返回DELAY: MOV 27H,26H ;音符演奏时间控制D2: MOV 28H,#125D3: MOV 29H,#248DJNZ 29H,$DJNZ 28H,D3DJNZ 27H,D2DJNZ R2,DELAYRET;OUT_TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,7 3H ;共阴数码管显视用OUT_TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86 H,8EH,0FFH ;共阳TABLE: DW SONG1,TABLE1,SONG2,TABLE2,SONG3,TABLE3,SONG4,TABLE4 ,SONG5,TABLE5 TABLE1:DW 64580,64684,64777,64820,64898,64968,65030DW 63628,63835,64021,64103,64260,64400,64524SONG1: DB 04H ;1=C 2/4 军港之夜DB32H,54H,52H,32H,54H,52H,32H,12H,12H,32H,32H,54H,52H,32H,52H,52H,3 2H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24HDB34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H ,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4HDB22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,3 1H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32HDB32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,6 2H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52HDB32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H, 14HDB32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H DB0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52 H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24HDB34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H ,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4HDB22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,3 1H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32HDB32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,6 2H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52HDB32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H, 14HDB 32H,52H,52H,32H,32H,21H,31H,24H,74H,0D2H,0C2H,14H,14H,14H,14H DB 00HTABLE2:DW 63835,64021,64103,64260,64400,64524,64580,64684,64777 DW 64820,64898,64968,65030,65058,65110,65157,65178SONG2: DB 02H ;1=C 4/4 死了都要爱DB 04H,94HDB0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H, 92H,02HDB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4HDB 04H,0C2H,0C2H,0D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92HDB0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H, 92H,02HDB 0A4H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8HDB 0C8H,0C8H,08H,08H,78H,28H,38H,34H,24HDB24H,64H,64H,24H,64H,72H,72H,78H,58H,54H,44H,38H,34H,14H,34H,84H,74H,74H,62H,62H,0D8H,78H,28H,38H,34H,24HDB24H,64H,64H,24H,64H,72H,72H,72H,94H,92H,94H,0A4H,58H,58H,54H,44H ;#音不准DB58H,58H,58H,58H,0A8H,0A8H,0A4H,0B4H,0A4H,84H,0A4H,94H,98H,98H,08H DB84H,82H,82H,82H,82H,94H,0A2H,94H,92H,82H,74H,72H,74H,72H,72H,72H,72H,92H,91H,91H,94H,54H,74H,94H;;*************************************************DB0A8H,0A4H,0A2H,0B2H,0C4H,0B4H,0A4H,0A4H,0A4H,92H,92H,98H,82H,72H,78H,04H,0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4HDB 04H,0C4H,0D4H,0C4H,0C8H,04H,94HDB0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02DB0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92HDB0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02DB0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H;*************DB 0A4H,0A2H,0B2H,0B3H,0C4H,0E8H,0D8HDB 0C8H,0C8H,0C8H,08HDB 00HTABLE3: DW 64898,64968,65030,65086,65135,65158,65199,64260,64400,64524,64580,64684,64777,64862SONG3: DB 03H ;G=2/4 中华人民共和国国歌DB04H,04H,0C2H,14H,12H,12H,12H,11H,11H,0C2H,0D1H,0E1H,14H,14H,02H,32H,12H,21H,31H,52H,51H,51H,54HDB32H,31H,31H,12H,11H,31H,52H,51H,31H,24H,24H,24H,64H,54H,24H,34H,52H,34H,52H,32H,21H,31H,12H,11H,21H,34H,04HDB52H,51H,0D1H,12H,12H,32H,31H,31H,52H,51H,51H,22H,22H,22H,0D2H,0D1 H,0D1H,24H,22H,0C2H,14H,12H,12H,34H,32H,32H,54H,54H,54H,54HDB12H,11H,31H,52H,51H,51H,64H,54H,32H,31H,11H,52H,52H,52H,32H,02H,1 2H,02H,0C4H,14HDB0A2H,0A1H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H,0C4H,14H,0C4H, 14H,14H,04HDB 04H,04H,04H,04HDB 00HTABLE4:DW64260,64400,64524,64580 ,64684,64777,64280,64898,64968,65030,6505 8,65110,65157,65178,65217SONG4:DB 04H ;生日快乐;1DB 82H,01H,81H,94H,84HDB 0B4H,0A4H,04HDB 82H,01H,81H,94H,84HDB 0C4H,0B4H,04H;2DB 82H,01H,81H,94H,84HDB 0B4H,0A4H,04HDB 82H,01H,81H,94H,84HDB 0C4H,0B4H,04H;3DB 82H,01H,81H,94H,84HDB 0B4H,0A4H,04HDB 82H,01H,81H,94H,84HDB 0C4H,0B4H,04H;4DB 82H,01H,81H,94H,84HDB 0B4H,0A4H,04HDB 82H,01H,81H,94H,84HDB 0C4H,0B4H,04HDB 00TABLE5:DW64021,64103,64260,64400 ,64524,64580,64684,64777,64820,64898,6496 8,65030,64934SONG5:DB 05H;胡适的兰花草;1DB 42H,82H,82H,82H,84H,02H,72HDB 62H,72H,62H,52H,48HDB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H;2DB 12H,0A2H,0D2H,92H,88HDB 82H,0B2H,0B2H,0A2H,84H,02H,72HDB 62H,72H,62H,52H,44H,02H,12H;3DB 12H,62H,62H,52H,44H,02H,82HDB 72H,62H,52H,32H,48HDB 00H;*******************************************绿岛小夜曲TABLE6:DW64021,6103,64260,64400,64524,64580,64624,64777,64820,64898,64958, 65030,65058,65110,65157SONG6: DB 06H;1DB 0A2H,0B2H,0D2H,0B2H,0A4H,0B2H,0D2HDB 0B2H,0A2H,82H,72H,88HDB 72H,82H,0A2H,82H,72H,62H,42H,62HDB 38H,38H;2DB 0A4H,02H,0B2H,0A4H,84HDB 72H,82H,72H,62H,72H,84H,72HDB 64H,62H,12H,34H,02H,42HDB 38H,38H;3DB 44H,02H,32H,44H,64HDB 72H,82H,72H,62H,72H,84H,0A2HDB 72H,74H,82H,0A4H,02H,062HDB 0A8H,0A8H;4DB 0B2H,0B4H,0A2H,84H,82H,72HDB 62H,72H,82H,0A2H,88HDB 72H,74H,62H,42H,32H,32H,62HDB 78H,78H;5DB 82H,84H,72H,82H,0A2H,84HDB 72H,82H,72H,62H,48HDB 32H,0A2H,82H,0F2H,0A2H,0B2H,82H,72HDB 68H,68H;6DB 0B2H,0B2H,0B2H,0A2H,82H,84H,02HDB 72H,74H,62H,42H,32H,42H,62HDB 78H,78HDB 0A2H,0B2H,0A2H,72H,82H,84H,82H;7DB 72H,74H,62H,44H,64HDB 0A8H,0A4H,02H,0A2HDB 0A2H,0B1H,0A1H,82H,0A2H,0B4H,0B2H,0C2H DB 0A2H,0B2H,0A2H,82H,78H;8DB 84H,72H,62H,44H,02H,62HDB 72H,81H,71H,62H,72H,84H,02H,0A2HDB 0B4H,02H,82H,74H,82H,72H~。