叨叨游戏网
您的当前位置:首页电子音乐门铃实训报告

电子音乐门铃实训报告

来源:叨叨游戏网


重庆电力高等专科学校

音乐门铃实训报告

实训课程:单片机应用课程设计 实训班级: 信息1611 实训时间:2017/12/25~2018/1/12

(第17-19周)

实训地点: 八阶

实训成员: 赵德翠、皮世敏

指导教师: 任照富、李景明

意义

本设计的红外线感应电子门铃,可在来客距房门一定距离时发出

音频信号,以告知主人“有客来访”。该门铃还可兼作报警器用。电路能探测人体发出的红外线,该红外线感应电子门铃电路由红外线发射电路、红外线接收电路、低频振荡器、音频振荡器和音频输出电路等组成。当人进入感应的区域内,即可发出铃声或者报警声,适用于家庭、办公室、仓库、实验室等比较重要场合的铃声和报警。概述了红外辐射的知识、反射式红外传感器的结构和工作原理。利用反射式红外传感器设计了一种被动式红外报警电路,分析了该电路的功能和工作原理。反射式红外传感器具有很多的优点,在人们生活、安全、警戒等装置中应用较广。

工作分布:

查询资料:赵德翠,皮世敏 PROTEUS仿真图绘制:赵德翠

DXP原理图绘制:皮世敏 PCB板图绘制:皮世敏,赵德翠 程序设计:皮世敏,赵德翠

组装:皮世敏 焊接:赵德翠 PPT制作:皮世敏 设计报告:赵德翠

第一章 绪论 ............................................................................................................................................ 3

1.1.实训内容 ................................................................................................................................. 3 1.2 实训要求 ................................................................................................................................... 4 第二章 系统设计 ....................................................................................................................................... 5

2.1 系统方案 ................................................................................................................................... 5 2.2 传感器概述 ................................................................................................................................ 6

2.2.1 红外传感器 ................................................................................................................... 6 2.2.2红外传感器特点 ............................................................................................................. 7 2.2.3红外传感器特性 ........................................................................................................... 10 2.3系统核心芯片ATC51 ........................................................................................................... 10

2.3.1芯片概述 ...................................................................................................................... 10 2.3.2 芯片特性 ..................................................................................................................... 11

2.3.3 芯片功能特点 .............................................................................................................. 12

第三章 实验 ............................................................................................................................................ 14

3.1 电路设计 ................................................................................................................................. 14

3.1.1 电路原理图 ................................................................................................................. 14 3.1.2 电路组成部分 .............................................................................................................. 14 3.1.3 电路工作原理 .............................................................................................................. 14 3.2 电路PCB板的设计 ............................................................................................................... 15 3.3 电路仿真设计 .......................................................................................................................... 16 3.4 源代码程序 .............................................................................................................................. 16 3.5 做板 ........................................................................................................................................ 16 3.6 焊接、组装 .............................................................................................................................. 17

3.6.1 焊接 ............................................................................................................................ 17 3.6.2 组装 ............................................................................................................................ 18 3.7 调试、结果 .............................................................................................................................. 18 成果展示.................................................................................................................................................. 19

实训总结 ........................................................................................................................................ 21 附录:源程序 ................................................................................................................................. 22

第一章 绪论

1.1.实训内容

通过对红外反射感应系统的设计和分析,红外线发射接收装置、三极管等器件设计电路。可以监测到一定范围内人体的运动,并发出音频信号。熟悉Proteus软件的应用,并且应用DXP软件画出原理图以及制作电路板,制作实物并且调试、展示功能。掌握红外线发光二极管和红外线接收二极管的工作原理,熟悉做板的方法和焊接的技术。正确调试出电路的实物功能。

1.2 实训要求

当有人靠近门时,系统自动播放音乐,通知主人有人来了。系统中至少可以存储5首音乐供用户选择。

(1)当有人靠近门时,系统自动检测,并播放音乐,提醒主人有人来了不得

(2)系统中可以存储多首音乐供用户选择。

本设计采用的是红外感应电子音乐门铃,可在来客距房门一定距离时发出音频信号,以告知主人“有客来访”

第二章 系统设计

2.1 系统方案

(1)输出震荡信号

接通电源后,红外线发射管发射红外光,电路等待反射红外光; (2)红外传感器接受信号

当有人进入感应范围区域时,红外传感器接收信号,输出高电平; (3)音频电路工作

信号通过音频电路接收,经三极管放大信号然后输出信号,扬声器开始工作,播放音乐。

2.2 传感器概述 2.2.1 红外传感器

完美版HC-SR501是基于红外线技术的自动控制模块,采用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。

2.2.2红外传感器特点

(1)触发方式:

L不可重复,H可重复。可跳线选择,默认为H。

A.不可重复触发方式:即感应输出高电平后,延时时间一结束,输出将自动从高电平变为低电平。

B.可重复触发方式: 即感应输出高电平后,在延时时间段内,如果有人体在其感应范围内活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。

(2)可调封锁时间及检测距离调节:

1、封锁时间:感应模块在每一次感应输出后(高电平变为低电平),可以紧跟着设置一个封锁时间,在此时间段内感应器不接收任何感应信号。此功能可以实现(感应输出时间和封锁时间)两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(默认封锁时间2.5S) 2、调节检测距离 (3)光敏控制:

模块预留有位置,可设置光敏控制,白天或光线强时不感应。光

敏控制为可选功能,出厂时未安装光敏电阻。另外,感应器安装需要注意:

红外线热释电人体传感器只能安装在室内,红外线热释电传感器应离地面2.0-2.2米,红外线热释电传感器不要直对窗口,也不要安装在有强气流活动的地方。

热释电红外传感器对于径向移动反应最不敏感, 而对于横切方向 (即与半径垂直的方向)移动则最为敏感。 接线图如下:

2.2.3红外传感器特性

产品型号 HC--SR501人体感应模块 工作电压范围 直流电压4.5-20V 静态电流 电平输出 触发方式 延时时间 封锁时间 <50uA 高3.3 V /低0V L不可重复触发/H重复触发(默认重复触发) 0.5-200S(可调)可制作范围零点几秒-几十分钟 2.5S(默认)可制作范围零点几秒-几十秒 电路板外形尺寸 32mm*24mm 感应角度 工作温度 <100度锥角 -15-+70度 感应透镜尺寸 直径:23mm(默认) 2.3系统核心芯片ATC51 2.3.1芯片概述

ATC51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称 单片机 。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51 ? 指令集和输出管脚相兼容。由于将多功能8位CPU和

闪烁存储器组合在单个芯片中,ATMEL的ATC51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2.3.2 芯片特性

 与MCS-51 兼容  4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年  全静态工作:0Hz-24Hz  三级程序存储器锁定  ···128*8位内部RAM  32可编程I/O线

 两个16位定时器/计数器  ···5个中断源  可编程串行通道  低功耗的闲置和掉电模式

 片内振荡器和时钟电路

2.3.3 芯片功能特点

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内

部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为ATC51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

第三章 实验

3.1 电路设计 3.1.1 电路原理图

3.1.2 电路组成部分

该音乐门铃电路由红外传感模块、电源电路、复位电路、放大电路、音频输出电路等组成,如上图所示。

3.1.3 电路工作原理

红外传感器感应到人输出高电平,单片机识别到红外传感器的信号,通过三极管放大电压,对应控制门铃播放音乐。

3.2 电路PCB板的设计

3.3 电路仿真设计

3.4 源代码程序

见附录

3.5 做板

线路板的好坏直接影响着电路元器件的性能,不好的线路板,会使信号产生歧变,产生本底噪音生尖峰脉冲干扰等,为了尽避免上述影响,线路板在线出尽量做到:接照信号的传输路径由小到大的顺序在电路板上各路的布置各元器的位置,尽量缩短各元器件之间的距离,以减少外部干扰的引入和不必要的干扰。在供电线路中,大电流通过的路径应尽量设计得实一些,以降低电源内阻,使电流能顺利通

过。在供电线路中,应尽量避免大电流的印刷电路式导线交布置在小电流通路的中间式附近,以免造成对小电流的干扰。走线时,应尽量走大于90度直角的线以防止产生尖峰脉冲造成干扰。

在焊接的时候都是通过手工完成,在打孔时也是通过手工操作电钻完成,而我们并不是这方面的技工,这将在打孔的时候无法避免一些技术失误。如果焊盘的直径过小,在打孔时,孔稍微大了一点,焊盘便没有了。所以在设计旱盘大小是都设置为大于2毫米。线的宽度问题很重要,由于在学校的条件是手工腐蚀铜板,考虑到热转印中,炭粉的吸附与脱落问题,防止出现断线的情况,布线宽为1.5-2.5毫米。地线则尽可能的加宽,设置为环绕在板的边缘。大功率元件与小 功率元件尽量分开布线。 在焊接的过程中要先将体形小的元器件比如电阻、瓷片电容先焊接好,然后再焊接芯片的插脚和其他体积较大的元器件。焊接好后用数字万用表检测电路是否有短路和断路以及虚焊现象。

3.6 焊接、组装 3.6.1 焊接

焊接使用的方法是手工焊接中的一种:接触焊接。接触焊接是在加热的烙铁嘴或环直接接触焊接点时完成的。烙铁嘴或环安装在焊接工具上。焊接嘴用来加热单个的焊接点,而焊接环用来同时加热多个焊接点。 焊接时,首先,工具上要对电烙铁的电烙头要保护好,不能够出现黑色的氧化物,如果有就用锉刀磨掉后马上粘松香补焊锡。

焊锡与电路板、电烙铁与电路板的夹角最好成45度,这样焊锡与电烙铁夹角成90度。 然后将元器件的管脚对应好焊接电路板的焊接位置上,接着先将焊丝接触然后电烙头从下至上的较快速的上锡。焊接出来的焊点应该饱满,略有尖头。焊接IC等芯片原件时,可以先在板子上焊上插槽,安装在插槽上有几个好处:坏了之后更换方便;实验完后可以拿下来,而且引脚还是干净的,可重复利用;在调试的时候也能够方便检查出错误。

3.6.2 组装

红外传感器接受信号时,其两端的电阻很小,即导通。当没有接收到红外信号时,其两端的电阻很大,即断路。所以在安装此类元器件的时候,应注意红外传感器能接收到信号,不要被遮挡住。 电路中的三极管、电容在安装时,应注意管脚的极性,防止正负极的颠倒,导致电路损坏。电路的电源用的是直流电源5V,在连接电源的时候,要注意电源的正负极,防止电路出现故障。

3.7 调试、结果

在调试的过程中,先调试红外传感器部分的电路,接通电源按下开关之后,发现喇叭不响,我们对照原理图和PCB板用数字万用表检测每个元器件引脚的电压值,发现原来在画图的时候三极管的三个引脚接反了,我们将三极管重新焊接后,喇叭响起。

在调试过程中出现问题,要仔细检查元器件(如三极管极性、集

成块缺口方向、音乐芯片焊点等)是否接错,检查是否搭焊、错焊、虚焊等。

调试完成后,接通电源,电路没有发出声音。我用手放到红外线传感器的前面,红外传感器接受信号后,电路发出声音。整个电路完成。

成果展示

实训总结

经过三个星期的努力,项目设计总归完成了。我们积极地去做实训项目。本设计中所阐述的仅仅是一种简易的红外感应门铃电路设计。我们阅读搜索一些电子方面的材料,单片机,PROTEUS,DXP, Keil 等,总结下来,我们自学的只是一点皮毛,肤浅的东西,总之,不论工作还是学习,都要理论联系实际,运用相关的理论知识,通过对电路原理的介绍和探究,得出其制作方案与实践应用原理,并重点研究了其相关的核心技术和应用理论。相信,在现实生活中该理论一定能得到很好的应用和更为广阔的发展。

一开始做项目设计时觉得很新鲜,所以我们很积极,课题下来一周后,我们完成了第一版本,按键式的门铃设计,接下来就准备做红外感应门铃的设计,也就是在课题的基础上发挥一下。还有,就是之前觉得吧,项目设计只是对这学期来所学知识的单纯总结,只要有点专业基础就会很简单,但现在才发现毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高,同时学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质,而自己需要学习的东西还有很多。

在项目设计过程中,我们也上网查阅了许多资料,掌握了科技文献的检索方法,大大提高了自己获得新知识,新信息的能力。我也深深的体会到,实践必须在充分理解电路原理的基础上,才能做到目标明确,操作准确。反过来,分析调试过中的得失,能加深对理论的理解。我也将许多遗忘的知识又给温习了。通过这次项目设计,我们明

白了学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。

附录:源程序

////////////////////////////////////////////// //51单片机无线遥控门铃程序

////////////////////////////////////////////// #include

#define sound_amount 5 //歌曲的数量 sbit pause=P2^5; //播放\\暂停 sbit speaker=P2^7; //无源蜂鸣器 sbit sensor=P2^0; //传感器 sbit anjian1=P3^2; //调歌功能 sbit anjian2=P3^3; //调歌选择

//////////////////////////////////////////////

unsigned char timer0h,timer0l,time,moshi=0;//timer0h,timer0l为定时器T0的高低位初值,time为对应的节拍时间

unsigned char music_num=1,num; //music_num为歌曲编号,music_num=0表示刚开机时的状态,num是查找歌曲数据表的地址 signed char fre; //对应频率数据表的地址

bit play_enable; //歌曲播放的使能标志位,用于播放\\暂停

void delay(unsigned char t); //延时子函数,控制发音的时间长度 void delayms(unsigned int t); //普通延时子程序,可用于按键消抖 void song(void);

//演奏一个音符

//播放歌曲

void music_play(void);

////////////////////////////////////////////// //每三个数字,代表一个音符

//第一个数字是音符的数值1234567之一(第几个音),代表哆来咪发... //第二个数字是0123之一,代表低音\\中音\\高音\\超高音(第几个八度) //第三个数字是时间长度,以半拍为单位,乐曲数据表的结尾是三个0 ////////////////////////////////////////////// //《祝你生日快乐》

unsigned char code song1[]={

5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4, 5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4, 5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2, 4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4, 0,0,0};

//《世上只有妈妈好》

unsigned char code song2[]={

6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1,

//6,2,3代表6,中音,3个半拍; //5,2,1代表5,中音,1个半拍; //3,2,2代表3,中音,2个半拍; //5,2,2代表5,中音,2个半拍; //1,3,2代表1,高音,2个半拍; //...

5,2,1,6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1,

//《当你孤单你会想起谁》 unsigned char code song3[]={

3,2,2, 3,2,1, 4,2,1, 3,2,2, 2,2,1, 1,2,1, 2,2,2, 5,2,2, 2,2,2, 2,2,3,

//《乡间小路》

unsigned char code song4[]={

3,1,2, 3,1,1, 3,1,1, 6,0,1, 6,0,1, 1,1,2,

6,0,1, 5,0,1, 6,0,4, 6,0,2, 6,0,1 ,6,0,1, 6,0,2, 6,0,1, 1,1,1, 2,1,2, 2,1,1, 3,1,1, 2,1,4, 3,1,1, 3,1,1, 3,1,1, 2,1,1, 4,1,2,

1,2,2, 1,2,1, 2,2,1, 1,2,2, 7,1,1, 6,1,1, 7,1,2, 3,2,2, 7,1,2, 7,1,3, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 5,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 7,1,1, 1,2,6, 0,0,0 }; 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0};

4,1,2, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 7,0,1, 7,0,1, 7,0,1, 6,0,1, 5,0,1, 5,0,1, 6,0,1, 7,0,1, 7,0,1, 6,0,1, 5,0,1, 6,0,4, 6,1,2, 3,1,1, 6,1,1, 7,1,1, 6,1,1, 5,1,1, 5,1,2, 5,1,1, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 4,1,2, 4,1,1, 3,1,1, 2,1,2, 1,1,1, 2,1,1, 3,1,1, 2,1,1, 1,1,1, 2,1,1, 3,1,4, 6,1,2, 3,1,1, 6,1,1, 7,1,1,

//《送别》

unsigned char code song5[]={

5,1,2, 3,1,3, 5,1,1, 1,2,3, 6,1,2, 1,2,2,

5,1,4, 5,1,2, 1,1,1, 2,1,1, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 5,1,2,

// 频率-半周期数据表 高八位 共保存了四个八度的28个频率数据 unsigned char code FREQH[]={

0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i

3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 2,1,1, 3,1,1, 4,1,2, 7,0,1, 1,1,4, 6,1,2, 1,2,2, 1,2,4, 7,1,2, 6,1,1, 7,1,1, 1,2,4, 6,1,1, 7,1,1, 1,2,1, 6,1,1, 6,1,1, 5,1,1, 3,1,1, 1,1,1, 2,1,8, 5,1,2, 3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 2,1,1, 3,1,1, 4,1,2, 7,0,2, 1,1,4, 0,0,0};

6,1,1, 5,1,1, 5,1,2, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 0,0,0};

0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 234567 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音 1234567

// 频率-半周期数据表 低八位 unsigned char code FREQL[]={

0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音1234567 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音 234567 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16}; //超高音 1234567

void main(void) {

TMOD=0x11; //T0 T1 均在工作方式1 ET0=1; //T0开中断 EA=1; //CPU开中断 while(1) {

if(anjian2==0) {

while(anjian2==0);

music_num=music_num+1; num=0;

}

}

if(music_num==6)

music_num=1;

if(!sensor&&anjian1==1) { EA=0; num=0; play_enable=0; }

if(sensor||anjian1==0) { EA=1;

play_enable=1; }

music_play(); //根据当前状态播放相应歌曲的某个音符

}

void delayms(unsigned int t) //MS延时子程序 {

}

unsigned int i,j; for(i=0;ifor(j=0;j<123;j++)

;

void delay(unsigned char t) //延时子函数,控制发音的时间长度,每个节拍0.4S {

unsigned char t1; unsigned long t2;

for(t1=0;t1for(t2=0;t2<8000;t2++) //延时期间, 可进入T0中断去发音

{ } }

} TR0=0;

//关闭T0, 停止发音 ;

void timer0(void) interrupt 1 //T0中断程序,控制发音的音调 { }

void song(void) //演奏一个音符 { }

////////////////////////////////////////////////////////////////////////////////////

void music_play(void)//播放相应歌曲的某个音符 {

if((music_num==1)&&(play_enable==1)) {

fre=song1[num]+7*song1[num+1]-1;//第i个是音符,第i+1个是第几TH0=timer0h; //控制音调 TL0=timer0l; TR0=1;

//启动T0, 由T0输出方波发音

speaker=!speaker;//输出方波, 发音

TH0=timer0h; //下次的中断时间,这个时间控制音调高低 TL0=timer0l;

delay(time); //每个音符的演奏时间

个八度

timer0h=FREQH[fre]; //从数据表中读出频率数值,实际

上是定时的时间长度

timer0l=FREQL[fre];

time=song1[num+2]; //读出时间长度数值 num+=3; if(fre==-1) { }

song(); //发出一个音符

num=0;

//下一首从头播放

//判断歌曲的结束位,结束后转到下一首

music_num=2; play_enable=0;

}

////////////////////////////////////////////////////////////////////////////////////

if((music_num==2)&&(play_enable==1)) {

fre=song2[num]+7*song2[num+1]-1; timer0h=FREQH[fre]; timer0l=FREQL[fre]; time=song2[num+2];

num+=3; if(fre==-1) { } song();

num=0; music_num=3; play_enable=0;

}

////////////////////////////////////////////////////////////////////////////////////

{

fre=song3[num]+7*song3[num+1]-1; timer0h=FREQH[fre]; timer0l=FREQL[fre]; time=song3[num+2]; num+=3; if(fre==-1) {

num=0; music_num=4;

if((music_num==3)&&(play_enable==1))

}

play_enable=0;

}

song();

////////////////////////////////////////////////////////////////////////////////////

if((music_num==4)&&(play_enable==1)) {

fre=song4[num]+7*song4[num+1]-1; timer0h=FREQH[fre]; timer0l=FREQL[fre]; time=song4[num+2]; num+=3; if(fre==-1) { } song();

num=0; music_num=5; play_enable=0;

}

///////////////////////////////////////////////////////////////////////////////

/////

if((music_num==5)&&(play_enable==1)) {

fre=song5[num]+7*song5[num+1]-1; timer0h=FREQH[fre]; timer0l=FREQL[fre]; time=song5[num+2]; num+=3; if(fre==-1) { } song();

num=0; music_num=1; play_enable=0;

}

//////////////////////////////////////////////////////////////////////////////////// }

//程序结束

因篇幅问题不能全部显示,请点此查看更多更全内容