1、微机控制系统应用方向学年设计任务书学 院 计算机与信息工程学院 专 业 计算机科学与技术课程名称 微机控制系统应用方向 题 目 基于单片机的电子音乐门铃完成期限 自 2013 年 7 月 3 日 至 2013 年 8 月 29 日 共 8 周内容及任务一、项目的目的基于单片机的电子音乐门铃设计,强化动手能力,为毕业设计做准备。二、项目任务的主要内容和要求1. 用 I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(至少三首乐曲,每首不少于 30 秒)2. 客人可通过门铃按键器播放音乐,并显示等待时间。3. 如果主人在家,可暂停并取消音乐播放。三、项目设计(研究)思路通过仿真
2、软件 PROTUES 实现要求的硬件电路图,晶振电路、最小系统、数码管、按键、蜂鸣器等;软件实现按键事件、音乐播放、数码管显示等;首先实现硬件电路图,再软件处理的时候,通过中断和定时器,实现按键请求处理和计时显示处理,对于两个定时器 T0 和 T1 同时使用不是很熟悉,刚开始二者总是不能同时实现,通过针对性测试和查找资料,最终实现。四、具体成果形式和要求通过 PROTUES 仿真电路图展示项目主要功能。起止日期 工作内容7.4-7.5 召开小组会议,讨论设计的主要内容,进行明确的分工;7.6-8.23 查找参考资料,解决相关问题;8.23-8.26 完成仿真电路图和实现代码; 进度安排8.26
3、-8.28 书写设计文档。 主要参考资料1. 彭伟.单片机 C 语言程序设计实训 100 例M,电子工业出版社,2009.6.2. 谭浩强.C 语言程序设计(第二版)M,北京:清华大学出版社,1991.3. 李建忠.单片机原理及应用M, 西安电子科技大学出版社,2008.2.指导教师意见 (签字): 年 月 日系(教研室)主任意见 (签字): 年 月 日微机控制系统应用方向学年设计说明书学院名称: 计算机与信息工程学院 班级名称: 计科 101 学生姓名: 祖 杰、 赵雷、 周来宇、 朱路平、 张毅苗 学 号:2010211154、2010211150、2010211151、201021115
4、3、2010211147题 目: 基于单片机的电子音乐门铃设计 指导教师姓 名: 董再秀 起止日期: 2013.07.03-2013.08.29 计算机与信息工程学院目 录第一部分:正文部分 11 绪论 11.1 研究背景 11.2 主要工作 11.3 研究内容 12 系统总体方案 12.1 系统组成框图 12.2 音乐门铃的功能结构图 23 硬件设计 23.1 各部分硬件设计及其原理 23.1.1 AT89C51 简介 23.1.2 时钟振荡电路 33.2 硬件电路图及功能 34 软件设计 44.1 音调的确定 44.2 节拍的确定 54.3 编码 65 调试 75.1 检查硬件连接 75.
5、2 检查软件系统 75.3 测试结果 7总 结 8致 谢 8第二部分:参考文献 9附录 A 源代码及注释 .10第三部分:指导教师评语 15第四部分:成绩评定 15计算机与信息工程学院1门铃按键复位按键A T 8 9 c 5 1单片机蜂鸣器显示等待时间等待时间清零第一部分:正文部分1 绪论1.1 研究背景随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。传统的门铃由于发音单调,已经不能很好满足人们的需要,不能实现批量生产。本文设计的音乐门铃是以单片机为核心元件的电子式音乐门铃,体积小,功能强,能演奏和旋音乐,使用方便,并具有一定的商业价值。人类所接触的信息也在不断增加并且日益
6、复杂。面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现。单片机技术与数码管显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。1.2 主要工作本设计是基于 AT89C51 单片机的可控音乐门铃程序设计。该音乐门铃是一个依据单片机技术原理,通过 PROTEUS 仿真软件对硬件电路进行仿真制作以及利用 KEIL 软件对音乐门铃源程序进行 C 语言编译,而设计制作出的一个多功能音乐门铃。1.3 研究内容1)用 I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(至少三首
7、乐曲,每首不少于 30 秒) 。2)客人可通过门铃按键器播放音乐,并显示等待显示时间。3) 如果主人在家,可暂停并取消音乐。2 系统总体方案2.1 系统组成框图音乐门铃的系统结构以 AT89C51 单片机位控制核心,加上 2 个按键、时钟复位电路、蜂鸣器、数码管模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和显示等待时间以及蜂鸣器发音。系统组成框图如图 2-1 所示。计算机与信息工程学院2图 2-1 系统组成框图2.2 音乐门铃的功能结构图音乐门铃的功能结构如图 2-2 所示。门铃按键是实现播放音乐的功能,可播放的曲目有 4 首,分别是千年之恋、寂寞沙洲冷、小小葫芦娃和同桌的你。
8、复位按键是实现音乐停止和时间清零的功能,由主人完成操作。图 2-2 音乐门铃功能结构图3 硬件设计3.1 各部分硬件设计及其原理3.1.1 AT89C51 简介AT89C51 是一种带 4K 字节闪存可编程可擦除只读存储器( FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS 8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT8
9、9C51 是一种高效微控制器,AT89C51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图 3-1 所示开始门铃按键 复位按键播放音乐 显示等待时间 音乐停止 等待时间清零计算机与信息工程学院3图 3-1 AT89C51系列单片机3.1.2 时钟振荡电路AT89C51 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容 C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容 C1,C2 虽然没有什么严格的要
10、求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用 30PF 10PF,而如果使用陶瓷振荡器建议选择 40PF 10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到 XTAL1 端,即内部时钟发生器的输入端,XTAL2 则悬空。由于外部时钟信号是通过一个 2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路如图 3-2 所示:图 3-2 单片机内部、外部振荡电路3.2 硬件电路图及
11、功能总体硬件电路实现功能如下,如图 3-3 所示。1) 电路中用 P3.2、P3.3 控制按键。2)P0.0-P0.7 和 P2.0-2.7 控制数码管的时间显示。计算机与信息工程学院43)P3.7 控制蜂鸣器。图 3-3 硬件电路图4 软件设计一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“ 音调” 和节拍表示一个音符唱多长的时间。4.1 音调的确定不同音高的乐音是用 C、D、E、F、G、A、B 来表示,这 7 个字母就是音乐的音名,它们一般依次唱成 DO、RE、MI、FA、SO
12、、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西 ”的读音,这是唱曲时乐音的发音,所以叫“音调 ”,即 Tone。把 C、D、E、F、G、A、B 这一组音的距离分成 12 个等份,每一个等份叫一个“ 半音”。两个音之间的距离有两个 “半音”,就叫“ 全音”。在钢琴等键盘乐器上,CD、DE、FG、GA、AB 两音之间隔着一个黑键,他们之间的距离就是全音;EF 、B C 两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成1、2、3、4、5、6、7 的音叫自然音,那些在它们的左上角加上号或者 b 号的叫变化音。叫升记号,表示把音在原来的基础上升高半音,b 叫降记音
13、,表示在原来的基础上降低半音。1)要产生音频脉冲,只要算出某一音频的周期(1/ 频率) ,然后将此周期除以 2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O 反相,然后重复计时此半周期时间再对 I/O 反相,就可在 I/O 脚上得到此频率的脉计算机与信息工程学院5冲。2)利用 AT89C51 的内部定时器使其工作在计数器模式 MODE1 下,改变计数值TH0 及 TL0 以产生不同频率的方法。此外结束符和休止符可以分别用代码 00H 和 FFH 来表示,若查表结果为 00H,则表示曲子终了;若查表结果为 FFH,则产生相应的停顿效果。计数脉冲值与频率的关系公
14、式如下:N=Fi 2 FrN:计算值; Fi:内部计时一次为 1us,故其频率为 1MHz;3)其计数值的求法如下:T=65536-N=65536-Fi 2 Fr例如:设 K=65536,F=1000000=Fi=1MHz,球低音 DO(261Hz) 。中音DO(523Hz) 。高音的 DO(1046Hz )的计算值T=65536-N=65536-Fi 2 Fr=65536-1000000 2 Fr=65536-500000/Fr低音 DO 的 T=65536-500000/262=63627低音 DO 的 T=65536-500000/523=64580低音 DO 的 T=65536-500
15、000/1047=650594)C 调各音符频率与计数值 T 的对照表如表 4-1 所示。表 4-1 C调各音符频率与计数值 T的对照表低音 频率 T 参数 中音 频率 T 参数 高音 频率 T 参数Do 262 1908 229 Do 523 956 115 Do 1046 57 57Do 277 1805 217 Do 554 903 108 Do 1109 54 54Re 294 1701 204 Re 587 852 102 Re 1175 51 51Re 311 1608 193 Re 622 804 97 Re 1245 48 48Mi 330 1515 182 Mi 659 75
16、9 91 Mi 1318 45 45Fa 349 1433 172 Fa 698 716 86 Fa 1397 43 43Fa 370 1351 162 Fa 740 676 81 Fa 1480 41 41So 392 1276 153 So 784 638 77 So 1568 38 38So 415 1205 145 So 831 602 72 So 1661 36 36La 440 1136 136 La 880 568 68 La 1760 34 34La 464 1078 129 La 932 536 64 La 1865 32 32Si 494 1012 121 Si 988 5
17、06 61 Si 1976 30 304.2 节拍的确定若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动) ,而且可以调节各个音的快满度。休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。对于单片机来说,产生不计算机与信息工程学院6同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。表 4-2节拍与节拍码对照节拍码 节拍数 节拍码 节拍数1 1/4拍 1 1/8拍2 2/4拍 2 1/4拍3 3/4拍 3 3/8拍4 1拍 4 2/1拍5 1又 1/4拍
18、5 5/8拍6 1又 1/2拍 6 3/4拍8 2拍 8 1拍A 2又 1/2拍 A 1又 1/4拍C 3拍 C 1又 1/2拍F 3又 3/4拍每个音符使用 1 个字节,字节的高 4 位代表音符的高低,低 4 位代表音符的节拍,表 4-2 为节拍码的对照。如果 1 拍为 0.4 秒,1/4 拍实 0.1 秒,只要设定延迟时间就可求得节拍的时间。假设 1/4 拍为 1DELAY,则 1 拍应为 4DELAY,以此类推。所以只要求得 1/4 拍的 DELAY 时间,其余的节拍就是它的倍数,如表 4-3 为 1/4 和 1/8 节拍的时间设定。表 4-3 1/4和 1/8节拍的时间设定曲调值 DE
19、LAY 曲调值 DELAY调 4/4 125毫秒 调 4/4 62毫秒调 3/4 187毫秒 调 3/4 94毫秒调 2/4 250毫秒 调 2/4 125毫秒4.3 编码do re mi fa so la si 分别编码为 17,重音 do 编为 8,重音 re 编为 9,停顿编为 0。播放长度以十六分音符为单位(在本程序中为 165ms) ,一拍即四分音符等于 4 个十六分音符,编为 4,其它的播放时间以此类推。音调作为编码的高 4 位,而播放时间作为低4 位,如此音调和节拍就构成了一个编码。以 0xff 作为曲谱的结束标志,可以参考简谱码如表 4-4 所示。歌曲播放的设计:先将歌曲的简谱
20、进行编码,储存在一个数据类型为 unsigned char 的数组中。程序从数组中取出一个数,然后分离出高 4 位得到音调,接着找出相应的值赋给定时器 0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低 4 位,得到延时时间,接着调用软件延时。表 4-4 简谱对应的简谱码、T 值、节拍数简谱 发音 简谱码 T值 节拍码 节拍数5 低音 SO 1 64260 1 1/4拍6 低音 LA 2 64400 2 2/4拍7 低音 TI 3 64524 3 3/4拍1 中音 DO 4 64580 4 1拍2 中音 RE 5 64684 5 1又 1/4拍计算机与信息工程学院73 中音 MI 6
21、64777 6 1又 1/2拍4 中音 FA 7 64820 8 2拍5 中音 SO 8 64898 A 2又 1/2拍6 中音 LA 9 64968 C 3拍7 中音 TI A 65030 F 3又 3/4拍1 高音 DO B 650582 高音 RE C 651103 高音 MI D 651574 高音 FA E 651785 高音 SO F 652175 调试5.1 检查硬件连接在 PROTUES 检查各硬件管脚是否连接正确,线路逻辑是否正确,例如:晶振电路的连接,复位电路是否设计正确。5.2 检查软件系统1. 根据系统的原理结构检查各流程图是否正确,再根据流程图来检查程序是否也正确。2
22、. 将所有程序组织起来,在软件环境下运行,检查程序是否正确。通过对硬件和软件系统的认真检查,反复测试,如果没有出现问题即可把源程序编译成.HEX文件装载到单片机中,对硬件进行仿真。5.3 测试结果当有客人到来时,按下门铃按键,音乐会自动响起,同时数码管会记录等待时间并将其显示出来,如果主人在家,可以按下暂停并取消按键,即可结束音乐和等待时间,如图 5-1 所示。计算机与信息工程学院8图 5-1系统运行图总 结单片机的设计至今为止已经进入了令人鼓舞的阶段,在进行了长达一个星期的时间的摸索与实验,使我不仅仅是对于单片机入门软件与硬件的常用设计与功能,还使我对于一项设计研究的制作过程所需要的详细步骤
23、和具体的实现方法的力度的掌握。当然在这次宝贵的学年设计活动中,经验才是对于我们最大的收获,而且还增强了自身对未知问题以及对知识的深化认识的能力,用受益匪浅这个词语来概括这次难忘的活动我觉得再合适不过了。但是,光是完成了作品还是不可以自我满足的,在从一开始的时候就怀着将作品制作得更加人性化,更加令人满意,更加地使功能完美又方便地被应用领域这个最终目的下,随着对单片机这门学科的认识加深,到达了拓展的程度,我想这个目的将在不远的时期内被实现。总之,这次设计从软件编写、调试到软硬件联机调试,我们倾注了大量的时间和心血。真是曾经为程序的编写而冥思查找过,曾经为无法找出错误而郁闷苦恼过,也曾经为某一功能不
24、能实现而犹豫彷徨过,但最终我成功了。我不仅品味到了结果的喜悦,更明白了过程的弥足珍贵。致 谢感谢董再秀老师的指导,她严谨细致、一丝不苟的作风一直是工作、学习中的榜样;她循循善诱的教导和不拘一格的思路给予我无尽的启迪。实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来计算机与信息工程学院9最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。无论什么事经过大家的齐心协力,到最后都一定会成功的,在此首先
25、感谢我们的组长,明确的分工,充分利用大家之所长,让整个过程简单化,也要感谢我们的指导老师,在她的帮助下我们的设计变得更加实用完善。计算机与信息工程学院9第二部分:参考文献1李建忠.单片机原理及应用M,西安电子科技大学出版社,2008.2. 2黄智伟.全国大学生电子设计竞赛系统设计M,北京:北京航空航天大学出版社,2006.6.3李广弟,朱月秀,王秀山.单片机基础M,北京:北京航空航天大学出版社,2001.7.4谭浩强.C 语言程序设计(第二版)M,北京:清华大学出版社,1991.5雷思孝.凌阳单片机原理及实用技术M,西安电子科技大学,2004.6彭伟.单片机 C语言程序设计实训 100例M,电
26、子工业出版社,2009.6.学生签名: 填表日期: 年 月 日计算机与信息工程学院10附录 A 源代码及注释#include #include“intrins.h“#define uchar unsigned char#define uint unsigned intsbit key1=P32;/按 key1,暂停并取消按键sbit key2=P33;/按 key2 可切换歌曲,门铃按键sbit fm=P37;/蜂鸣器连续的 IO 口uchar count;/歌曲标志uchar timeh,timel,i,x,num;uchar code DSY_CODE=0x3f,0x06,0x5b,0x4
27、f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;/-简谱-/编程规则:字节高位是简谱,低位是持续时间,/代表多少个十六分音符/1-7 代表中央 C 调,8-E 代表高八度,0 代表停顿/最后的 0 是结束标志/歌曲 1:千年之恋uchar code qnzl= /千年之恋0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08,0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,0x32,0x31,0
28、x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02,0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,0x61,0x71,0x82,0x71,0x62,0
29、x52,0x31,0x36,0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,0x42,0x63,0x83,0x83,0x91,0x91,0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76,0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,0x42,0x82,0x88,0x02,0x74,0x93,0x89,0xff/结束标志;/歌曲 2:寂寞沙洲冷uchar code jmszl= /寂寞沙洲冷0x12,
30、0x12,0x22,0x32,0x31,0x22,0x21,0x22,0x21,0x31,0x51,0x52,0x31,0x52,0x61,0x15,0x14,计算机与信息工程学院110x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28,0x31,0x32,0x31,0x32,0x11,0x21,0x51,0x52,0x51,0x52,0x51,0x51,0x31,0x32,0x31,0x32,0x81,0x72,0x63,0x62,0x71,0x81,0x72,0x61,0x61,0x52,0x31,0x21,0x32,0x5
31、1,0x54,0x22,0x12,0x11,0x12,0x11,0x12,0x12,0x14,0x26,0x32,0x26,0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x02,0x32,0x81,0x81,0x81,0x81,0x62,0x52,0x34,0x31,0x81,0x81,0x81,0x61,0x91,0x82,0x51,0x51,0x51,0x51,0x31,0x61,0x53,0x21,0x11,0x21,0x11,0x22,0x11,0x21,0x26,0x32,0x61,0x51,0x5
32、1,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x52,0x31,0x31,0x81,0x81,0x81,0x61,0x91,0x81,0x61,0x31,0x56,0x32,0x32,0x81,0x81,0x81,0x81,0x91,0x81,0x61,0x81,0x61,0x51,0x31,0x51,0x34,0x21,0x31,0x51,0x31,0x21,0x11,0x61,0x21,0x16,0xff;/歌曲 3:小小葫芦娃uchar code hlw= /小小葫芦娃0x83,0x63,0x51,0x61,0x03,0x81,0x61,
33、0x51,0x81,0x63,0x01,0x81,0x61,0x63,0x51,0x63,0x01;/歌曲 4:同桌的你uchar code tzdn= /同桌的你110x56,0x56,0x32,0x42,0x52,0x76,0x66,0x56,0x52,0x22,0x32,0x46,0x16,0x26,0x04;/-简谱音调对应的定时器初值-/适合 11.0592M 的晶振uchar code cuzhi=0xff,0xff,/占位0xFC,0x8E,/中央 C 调 1-70xFC,0xED,0xFD,0x43,0xFD,0x6A,0xFD,0xB3,0xFD,0xF3,0xFE,0x2D
34、,0xFE,0x47, /高八度 1-7 0xFE,0x76,0xFE,0xA1,0xFE,0xC7,0xFE,0xD9,0xFE,0xF9,0xFF,0x16;void Delay1(uint z); /延时 1MSvoid Delay(uint z); /延时 165MS,即十六分音符void song(); /播放音乐子程序void beep(); /蜂鸣器响起计算机与信息工程学院12void main()P0=0X3F;P2=0X3F;EA=1;/开总中断EX0=1;/开外部中断 0IT0=1;/外部中断 0 下降沿触发方式EX1=1;/开外部中断 1IT1=1;/外部中断 1 下降沿
35、触发方式TMOD=0x11;/定时器 0 工作在方式 1ET0=1;ET1=1;TR0=0;TR1=0;TH1=(65536-50000)/256;TL1=(65536-50000)%256;while(1)if(key2=0)song();Delay1(1000); void int0() interrupt 0 /功能:用来暂停并取消音乐EA=0;/关总中断Delay1(1);/去抖if(key1=0)count=0;/不让蜂鸣器唱歌TR0=0;num=0;TR1=0;P0=0X3F;P2=0X3F;EA=1;/开总中断void int1() interrupt 2 /门铃按键:每按一次会
36、自动切换音乐,计时也会从新开始EA=0;/关总中断Delay1(1);/去抖if(key2=0)计算机与信息工程学院13TR0=1;TR1=1;i=0;/从头开始唱count+;if(count=5)count=1;EA=1;/开总中断void timer0() interrupt 1 /用于产生各种音调TH0=timeh;TL0=timel;fm=fm;void timer1() interrupt 3TH1=(65536-50000)/256;TL1=(65536-50000)%256;if(+x=20)x=0;+num;P0=DSY_CODEnum/10;P2=DSY_CODEnum%1
37、0;if(num=59)num=0;void song()uint temp;uchar jp;/jp 是简谱i=0;while(1) if(count=0)break;if(count=1) /选曲temp=qnzli;if(count=2)temp=jmszli;if(count=3)temp=hlwi;计算机与信息工程学院14if(count=4)temp=tzdni;if(temp=0xff)break;jp=temp/16; /取数的高 4 位if(jp!=0) timeh=cuzhijp*2;timel=cuzhijp*2+1;elseTR0=0;fm=1;/关蜂鸣器Delay(t
38、emp%16); /取数的低 4 位TR0=0; /唱完一个音停 10MSfm=1;Delay1(10); TR0=1; i+;TR0=0;fm=1;void Delay(uint z) /延时 165MS,即十六分音符 uint x,y;for(x=z;x0;x-)for(y=19000;y0;y-);void Delay1(uint z) /延时 1MS uint x,y;for(x=z;x0;x-)for(y=112;y0;y-);void beep() /蜂鸣器响起 uchar i;for(i=0;i50;i+)fm=fm;Delay1(1);fm=1;计算机与信息工程学院15第三部分:指导教师评语第四部分:成绩评定指导教师签名: 填表日期: 年 月 日