单片机课程设计报告 简易音乐播放器.doc_第1页
单片机课程设计报告 简易音乐播放器.doc_第2页
单片机课程设计报告 简易音乐播放器.doc_第3页
单片机课程设计报告 简易音乐播放器.doc_第4页
单片机课程设计报告 简易音乐播放器.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

_第一章 前言伴随着科技的发展和时代的进步,人们对生活质量的要求也越来越高,由以前简单的追求温饱和物质财富转向更高层面的精神追求!而这一切催生了智能仪器的发展,音乐则是人们娱乐生活的重要组成部分,目前市场上出现了许许多多的音乐播放器,而人们对播放器的功能需求也越来越广泛,本文将设计一个基于单片机的音乐播放器,通过对其全面的介绍与分析,让大家了解音乐播放器的原理!第二章: 简易音乐播放器的功能和原理说明音乐播放器,可以通过单片机板子上的数字按键对音乐播放的曲目进行控制,并且通过LED灯将播放的音乐加以区分,在播放音乐的同时点亮LED灯,让人知道现在正在播放的音乐曲目,从而实现简单的音乐播放功能!表1 需求分析名称简易音乐播放器目的实现简单的特定音乐播放功能输入单片机板子上的数字按键输出扬声器,LED灯功能(1) 接收按键开关的信号,并将信号送入单片机(2) 处理得到的结果通过LED信号灯进行显示,并通过扬声器播放音乐(3) 可以播放4首程序中写好的音乐性能基于单片机的扬声器和程序的软件设计 功能说明:这次设计是依据单片机技术原理,通过硬件电路设计以及软件的编译而设计的一个简单的音乐播放器,可以通过按键选择播放四首歌曲(歌曲自选,只要将想要播放的歌曲的乐谱写入程序中即可)同时点亮相应的LED灯,并用它来指示当前播放的歌曲序列,只能实现简单的音乐播放功能。原理说明:这个音乐播放器主要有晶振电路,复位电路,LED电路,按键电路以及扬声器组成。它利用单片机产生乐曲音符,再把乐曲音符翻译成计算机音乐语言,接着用单片机进行信息处理,再通过蜂鸣器或喇叭放出音乐。音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制扬声器发音。通常利用单片机的内部定时器0,工作在方式1下,再改变计数初值TH0和TL0来产生不同频率。当控制歌曲按键按下时,按照预先存放在单片机中的程序,就会自动判断键值,然后启动计数器,按照程序产生一定频率的脉冲,接着通过uln2003芯片驱动扬声器,播放出乐曲。该硬件电路中用P3.0,P3.1,P3.2,P3.3控制四个按键,“0”,“1”,“2”,“3”分别控制四首音乐。P1.0,P1.1,P1.2,P1.3控制四个LED灯,它们分别对应四个按键,用来显示正在播放的歌曲,并用P2.3 来控制扬声器,电路为12MHz晶振频率工作,起振电路中C1 和C2为22pf。第三章:系统硬件电路设计1:硬件体系结构设计 该简易音乐播放器主要有单片机核心芯片89C52,LED发光二极管,扬声器,晶振电路,按键电路,复位电路组成,通过芯片引脚输出定时器产生的各种固定频率的方波信号,然后在经由扬声器产生各种频率的声音。另外,该方案使用的是单片机板子的内部振荡电路,89C52芯片的X1,X2引脚外接石英晶体。它的系统组成如图所示。晶体振荡电路89C52芯片复位电路按键电路扬声器LED显示(1) 晶振电路部分 晶振的作用是给电路提供工作信号脉冲的,其实就是单片机的工作速度。本次设计选用12M晶振,则单片机的工作速度就是每秒12M。与此同时,也要注意单片机的工作频率范围。(2) 复位电路部分 当系统出现问题时可以重置系统,解决一些问题(3) LED显示部分 显示系统在各种不同条件下的状态(4) 89C52芯片 整个设计的核心,接收和处理信号及程序(5) 按键电路部分 作为系统的输入(6) 扬声器部分 用于发出不同频率的音调形成歌曲2 硬件电路设计硬件电路分为单片机芯片最小系统(包括时钟电路,复位电路),扬声器电路,按键电路和LED电路等(1) 单片机89C52芯片最小系统设计 AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。它的引脚图如图2所示图2主要性能参数:l 与MCS-51单片机产品兼容l 8K字节在系统可编程Flash存储器l 1000次擦写周期l 全静态操作:0Hz33Hzl 三级加密程序存储器l 32个可编程I/O口线l 三个16位定时器/计数器l 八个中断源l 全双工UART串行通道l 低功耗空闲和掉电模式l 掉电后中断可唤醒l 看门狗定时器l 双数据指针l 掉电标识符引脚介绍:VCC : 电源GND: 地P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在 flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。该最小系统包括时钟电路,复位电路。在内部时钟电路中,必须在X1和X2引脚两端跨接石英晶体振荡器和两个微调电容从而形成振荡电路,按照单片机的板子C1和C2取的是22pf,而晶振的频率取值在1.2MHz和12MHz之间。复位电路就和电脑的重启部分差不多,当电脑使用中出现死机,按下重启按钮电脑内部的程序从头执行,其中,电容大小为10uf,电阻大小为10K。它在设计中电路图如图3图3(2) LED电路设计四个LED灯(发光二极管)分别由P1.0P1.3控制,播放第一首歌时D0点亮,第二、三首歌时D1、D2点亮,第四首歌时D3亮,电阻的阻值由单片机板子上的电阻值决定。它的电路原理图如图4图4(3)扬声器电路设计由于本设计基于单片机板子,所以扬声器电路取自板子的设计,将信号通过一个名为uln2003的芯片进行放大,并推动扬声器发出声音也即音乐。高耐压、大电流复合晶体管ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。它是大电流驱动阵列,多用于单片机、智能仪表、PLC,数字量输出卡等控制电路中。可直接驱动继电器等负载。在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。还具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。完全可以用来驱动扬声器发声!它的引脚图如图5所示。下附引脚介绍图5引脚介绍:引脚1:CPU脉冲输入端,端口对应一个信号输出端。引脚2:CPU脉冲输入端。引脚3:CPU脉冲输入端。引脚4:CPU脉冲输入端。引脚5:CPU脉冲输入端。引脚6:CPU脉冲输入端。引脚7:CPU脉冲输入端。引脚8:接地。引脚9:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。用于感性负载时,该脚接负载电源正极,实现续流作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。引脚10:脉冲信号输出端,对应7脚信号输入端。参考电路接法引脚11:脉冲信号输出端,对应6脚信号输入端。引脚12:脉冲信号输出端,对应5脚信号输入端。引脚13:脉冲信号输出端,对应4脚信号输入端。引脚14:脉冲信号输出端,对应3脚信号输入端。引脚15:脉冲信号输出端,对应2脚信号输入端。引脚16:脉冲信号输出端,对应1脚信号输入端。扬声器电路在设计中的电路图如图6所示:图6 (4)按键电路设计单片机应用系统中的人机对话通道是用户为了对应用系统进行干预以及了解应用系统运行状态所设置的通道,主要有键盘,显示器等通道接口,为了控制系统的工作状态以及向系统中输入数据,应用系统设置键盘,借助键盘向系统输入程序,置数,送操作命令,控制程序的执行等。本设计采用4个按钮来实现选择歌曲的播放,电路的连接选用单片机板子上的电路。“0”、“1”“2”、“3”分别由单片机引脚P3.0,P3.1,P3.2,P3.3控制,它的设计电路图如图7所示。图7第四章: 软件系统设计1:主程序在本设计中,主程序是整个软件模块的核心,它实现对程序的初始化以及各个函数的调用。void main( ) uchar key; P2=0; P0=0X00; while(1) key=keyscan(); /调用键盘扫描扫描函数, switch(key) case 0xee:P0=EL0;P1=0xfe; /LED灯D0点亮 yy1(); /播放第一首音乐break; case 0xde:P0=EL1;P1=0xfd; /LED灯D1点亮 yy2(); /播放第二首音乐break; case 0xbe:P0=EL2; P1=0xfb; /LED灯D2点亮 yy3(); /播放第三首音乐 break; case 0x7e:P0=EL3; P1=0xf7; /LED灯D3点亮 yy4(); /播放第四首音乐 break; 系统结构框图开始系统初始化有键按下 否 是“2”键“1”键“3”键“0”键 否 否 否 是 是 是 是播放第四首歌,点亮D3播放第三首歌,点亮D2播放第二首歌,点亮D1播放第一首歌,点亮D0 播放 播放 播放 播放 结束 结束 结束 结束2:键盘扫描程序在主程序中,需要调用键盘扫描程序,该程序可以对键盘的键值进行扫描,确保我们再输入键值后,系统单片机能够接收并作出相应的处理。uchar keyscan(void) /键盘扫描函数,使用行列反转扫描法 uchar cord_h,cord_l;/行列值中间变量 P3=0x0f; /行线输出全为0 cord_h=P3&0x0f; /读入列线值 if(cord_h!=0x0f) /先检测有无按键按下 delay(100); /去抖 if(cord_h!=0x0f) cord_h=P3&0x0f; /读入列线值 P3=cord_h|0xf0; /输出当前列线值 cord_l=P3&0xf0; /读入行线值 return(cord_h+cord_l);/键盘最后组合码值 return(0xff); /返回该值结构框图:开始 有键按下延迟100ms 是逐行逐列扫描并确定按键的键值 调用按键相应的子程序 3:音乐播放函数该音乐播放函数包含了音乐播放的规律,能够确保音乐按照乐谱播放。 void yy1(void) unsigned char k,i; TMOD=1; /置CT0定时工作方式1 EA=1; ET0=1;/IE=0x82 /CPU开中断,CT0开中断 while(1) i=0; while(i100) /音乐数组长度 ,唱完从头再来 k=sszymmhi+7*sszymmhi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=sszymmhi+2; i=i+3; song(); void yy2(void) unsigned char k,i; TMOD=1; /置CT0定时工作方式1 EA=1; ET0=1;/IE=0x82 /CPU开中断,CT0开中断 while(1) i=0; while(i150) /音乐数组长度 ,唱完从头再来 k=mldshi+7*mldshi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=mldshi+2; i=i+3; song(); void yy3(void) unsigned char k,i; TMOD=1; /置CT0定时工作方式1 EA=1; ET0=1;/IE=0x82 /CPU开中断,CT0开中断 while(1) i=0; while(i150) /音乐数组长度 ,唱完从头再来 k=lzlhi+7*lzlhi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=lzlhi+2; i=i+3; song(); void yy4(void) unsigned char k,i; TMOD=1; /置CT0定时工作方式1 EA=1; ET0=1;/IE=0x82 /CPU开中断,CT0开中断 while(1) i=0; while(i150) /音乐数组长度 ,唱完从头再来 k=srgi+7*srgi+1-1; timer0h=FREQHk; timer0l=FREQLk; time=srgi+2; i=i+3; song(); 4:音乐处理函数该函数能够对音乐进行简单的处理。void song() TH0=timer0h; TL0=timer0l; TR0=1; delay2(time); 5:定时器中断函数该函数可以控制音乐播放后停止。 void t0int() interrupt 1 TR0=0; speaker=!speaker; TH0=timer0h; TL0=timer0l; TR0=1; 6:延时程序void delay1(uint i) /延时函数while(i-);void delay2(unsigned char t) unsigned char t1; unsigned long t2; for(t1=0;t1t;t1+) for(t2=0;t2 第一首歌:世上只有妈妈好code uchar sszymmh= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 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, 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 2 第二首歌 美丽的神话code uchar mldsh= 6,1,2, 3,2,2, 7,1,3, 6,1,1, 1,2,1, 2,2,1, 1,2,1, 3,2,4, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 4,2,1, 3,2,1, 3,2,2, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,4, 1,2,4, 6,1,2, 3,2,2, 2,2,3, 7,1,1, 6,1,8, 6,1,2, 3,2,2, 7,2,3, 7,1,1, 6,1,1, 1,2,1, 2,2,1, 1,2,1, 3,2,4, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 4,2,1, 3,2,1, 3,2,6, 6,1,2, 6,2,2, 5,2,1, 2,2,1, 3,2,1, 4,2,1, 3,2,2, 2,2,2, 1,2,4, 6,2,2, 2,2,2, 1,2,3, 7,1,1, 6,1,6, 6,1,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 1,2,1, 7,2,2, 5,1,2, 6,1,1, 1,2,1, 2,2,1, 3,2,13 第三首歌 两只老虎code uchar lzlh= 1,2,2, 2,2,2, 3,2,2, 1,2,2, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 3,2,2, 4,2,2, 5,2,4, 3,2,2, 4,2,2, 5,2,4, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 5,1,2, 1,2,4, 2,2,2, 5,1,2, 1,2,4, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 3,2,2, 4,2,2, 5,2,4, 3,2,2, 4,2,2, 5,2,4, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 5,1,2, 1,2,4, 2,2,2, 5,1,2, 1,2,4 ; 4第四首歌 生日歌 code uchar srg= 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,1, 6,1,1, 4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4 ; 5 音阶频率表 / 音阶频率表 高八位code uchar FREQH= 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; / 音阶频率表 低八位code uchar FREQL= 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ;六: 系统调试及总结硬件电路和软件程序设计完成后,在单片机上连接好硬件电路,然后将由软件产生的程序Hex文件拷入单片机的AT89C51芯片,然后在按键面板上选择按键,看能否播放程序中的音乐,同时注意观察相应的LED灯能否点亮,实验结果证明设计成功。本设计没有考虑到音乐的暂停播放功能,因此选择按键后必须等待音乐全部播放完毕,然后断开电源再接通电源重新选择播放的曲目。在程序调试的过程中,由于编程中出现的一些错误,导致软件的Hex文件一直不能生成,但是经过仔细检查,最终成功写好程序。除此之外,在使用PROTEL软件画硬件电路时,也由于硬件电路元件的特殊性,遇到了许多困难,无奈多方查询资料,终于解决问题。另外在编写乐谱程序也颇为不易,上网查阅了很多资料才基本将一首简单的音乐C程序代码编写出来。 总之,虽然调试过程遇到很多问题,但经过集体努力,最终调试成功。基本实现设计预定的功能,可以用按键控制四首音乐的播放,并在播放的同时点亮了相应的LED灯。设计成功。附录一系统硬件电路图:附录二系统软件总程序:#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit speaker=P23; /定义音乐输出端口,需要连接到对应的喇叭#define uchar unsigned char#define uint unsigned intuchar timer0h,timer0l,time;code uchar sszymmh= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 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, 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 ; /世上只有妈妈好 code uchar mldsh= 6,1,2, 3,2,2, 7,1,3, 6,1,1, 1,2,1, 2,2,1, 1,2,1, 3,2,4, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 4,2,1, 3,2,1, 3,2,2, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,4, 1,2,4, 6,1,2, 3,2,2, 2,2,3, 7,1,1, 6,1,8, 6,1,2, 3,2,2, 7,2,3, 7,1,1, 6,1,1, 1,2,1, 2,2,1, 1,2,1, 3,2,4, 6,1,2, 6,2,2, 5,2,1, 6,2,1, 5,2,1, 2,2,1, 4,2,1, 3,2,1, 3,2,6, 6,1,2, 6,2,2, 5,2,1, 2,2,1, 3,2,1, 4,2,1, 3,2,2, 2,2,2, 1,2,4, 6,2,2, 2,2,2, 1,2,3, 7,1,1, 6,1,6, 6,1,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 1,2,1, 7,2,2, 5,1,2, 6,1,1, 1,2,1, 2,2,1, 3,2,1 ; /美丽的神话code uchar lzlh= 1,2,2, 2,2,2, 3,2,2, 1,2,2, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 3,2,2, 4,2,2, 5,2,4, 3,2,2, 4,2,2, 5,2,4, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 5,1,2, 1,2,4, 2,2,2, 5,1,2, 1,2,4, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 3,2,2, 4,2,2, 5,2,4, 3,2,2, 4,2,2, 5,2,4, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 5,2,1, 6,2,1, 5,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 5,1,2, 1,2,4, 2,2,2, 5,1,2, 1,2,4 ;/两只老虎code uchar srg= 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,1, 6,1,1, 4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4 ;/生日歌 / 音阶频率表 高八位code uchar FREQH= 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; / 音阶频率表 低八位code uchar FREQL= 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ;uchar const EL=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71;/0-F/*/* 函数声明 */*/ uchar keyscan(void); /键盘扫描void delay1(uint i); /演示程序void delay2(unsigned char t);void yy1(void) ; /定义音乐函数1void yy2(void) ; /定义音乐函数2void yy3(void) ; /定义音乐函数3void yy4(void); /定义音乐函数4 /*/* 主函数 */*/void main() uchar key; P2=0; P0=0X00; while(1) key=keyscan(); /调用键盘扫描, switch(key) cas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论