首页 单片机_音乐播放器_stc89s52

单片机_音乐播放器_stc89s52

举报
开通vip

单片机_音乐播放器_stc89s52单片机_音乐播放器_stc89s52 一、前言 单片机自20世单70年代单世以~作单微型单算机的一重要的分支来个很~单用非常泛~以单人单社单生了巨大的影。尤其是广会响MCS-51系列的单片机~由于其具有集成度高、功能强、可性好、系单单单单、价格低廉、易于单展和使靠构 用等特点~在我已得到泛的单用收到好的成果。单然世界各大公司国广并很 也有各单型的高性能单片机单世~但号MCS-51系列单片机仍然是我在单片国机单用单域的首单机型。在单我以STC89C52单片机单基单单单音单播放器。二、单程单单及要求 本次涉及的是单片...

单片机_音乐播放器_stc89s52
单片机_音乐播放器_stc89s52 一、前言 单片机自20世单70年代单世以~作单微型单算机的一重要的分支来个很~单用非常泛~以单人单社单生了巨大的影。尤其是广会响MCS-51系列的单片机~由于其具有集成度高、功能强、可性好、系单单单单、价格低廉、易于单展和使靠构 用等特点~在我已得到泛的单用收到好的成果。单然世界各大公司国广并很 也有各单型的高性能单片机单世~但号MCS-51系列单片机仍然是我在单片国机单用单域的首单机型。在单我以STC89C52单片机单基单单单音单播放器。二、单程单单及要求 本次涉及的是单片机控制的音单播放器~使单片机播放出一首音单。 单单单目, 单片机音单播放器 单单要求, 1、完成89S51的外单单位、单单和单源等外单单路的单单~完成单器单单单单。声 2、根据各音单单率算出定单器定单常~根据单拍单出单音单持单的单单。 数 3、完成音单播放单件完成单单 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 的单~最好能单一播放子程序用于并翻写个 播放。 4、播放音单片段 三、方案单单 采用单片机单单单路。此单路包括单单单路、单位单路、音单单单单路和来MCS-51单片机。各部分功能如下, 1、单单单路,由石英晶振单器单生单片机工作单所必单的单单信。振单器采用体号 12M的晶振~使之机器周期 Tcy=1us,方便单音程序的单算和单单。 2、单位单路,由单位按单使单片机的CPU和系单中其他部件都单于一定个确的初始单~单单单单单始工作。状并从个状 3、音单单单单路,由于单片机最大灌入单流单3.2mA~所以单用PNP管~要并在PNP的基和单射加限流单阻。极极 四、硬件单单 1、单单元器件 根据系单要求~单要求蜂单器及单单单路成单片机音单播放器~单单用蜂单器、构 三管、单阻、单容。极 2、硬件原理 单片机控制的音单播放器原理单, 1 123456789101112131415161234567817GND18PVCC11920GNDPVCC2ENDDP1P2J3128641602EN_1602P1PORTP1023P12PVCC2GNDMC14P10P00PVCC1P00GNDENVCCGND5P11P01GNDP01PR3PR461KPR1104P02P02710K4K7P11P03P038P04P04DDIGI9DVCCP05P0510P06P06MU1AT89S5211MR131DQ1DQ2DQ3DQ4DQ5DQ6DQ7DQ8P10139P00P07P07CE12P1.0(T2)(AD0)P0.0VCCDR1DR2DR3DR4DR5DR6DR7DR8285508550855085508550855085508550P11238P011P13B1112P1.1(T2EX)(AD1)P0.1134K74K74K74K74K74K74K74K7aA1P12337P02279P12P14P1.2(AD2)P0.2bA214P13436P03348P1.3(AD3)P0.3P15cA315P14535P044IP126ID1P1.4(AD4)P0.4dA4P15634P05516P15MOSI12VCC1P1.5(MOSI)(AD5)P0.5eP16733P0663410W1P1.6(MISO)(AD6)P0.6fP17832P077RST5651N4148P1.7(SCK)(AD7)P0.7gDS2DS18P17SCK783DPP331321P20D1W8D11112W49P16MISO910GNDP13P3.3(INT1)(A8)P2.0aA1P321222P21D2W7D279W3DIG1DIG2DIG3DIG4DIG1DIG2DIG3DIG4P3.2(INT0)(A9)P2.1bA2DP3DP34K7x823P22D3W6D348W2CCISP(A10)P2.2cA3VCCP351524P23D4W5D426W1P3.5(T1)(A11)P2.3dA4P341425P24D5D51W2P3.4(T0)(A12)P2.4eDP2DP2SC526P25D6D610SSerial(A13)P2.5fSC31043127P26D7D75VCCEA/VPP(A14)P2.6g10428P27D8D83OSC_INP14(A15)P2.7DPSCON1DR919OSC_OUTD1P00JP1XTAL1SC45SU1DR101840VCCHDSP-B04EHDSP-B04ED2P01VCCLED1LED2LED3LED4LED5LED6LED7LED8XTAL2VCC1K10412912DR11VCC20GNDD3P02DVCCVCCR1 OUTGNDLLED1KLVCC34LVCC49P30DR12RST910P30D4P03PVCC2VCCW3R2 OUTRST(RXD)P3.01KLQ156814DR1311P31D5P04PVCC1T1 OUT(TXD)P3.11K8550783P317DR14P371730D6P05T2 OUTP27P3.7(RD)ALE/PROG131KVCC714DR15P361629R1 IND7P06HEADER 4X2P15C1+C2+152P3.6(WR)PSENMP1MP4LR081K235DR16GNDV+R2 INT2OUTD8P07C1 -C2 -64K7111KSC1SC26V-88T1 IN10P101K161041041MAX23277T2 INVCCT2OUTD1P11VCC66LVCCW4RS2325544KEC1D233EVCCP16EKEYEVCCGND22MK1P07P37P30P31P32P3311EEPROMRESETP06P36104MC4EU1D3P0P3P05P3510U/16VER1ER218W5P04P34A0VDDRST4K74K727MP2MP3P03P33A1WP36PCON1P02P326A2SCLD4P25MR2K11K12K13K148845P17P01P31VSSSDAP26P344K7377P00P30BB526624C08SW-PB4SW-PB4SW-PB4SW-PB441551D5GNDGNDTX1344W6VCC12D+POWERK21K22K23K24233TRTC3D-P35TC1122UCON1USBVBUSP17P27D6TVCCGND32K11VCC6P16P26SW-PB4SW-PB4SW-PB4SW-PB4GNDP12SW15P1P2P15P25VCC2104R14P14P24TU1OSC32 OUTOSC32 INK31K32K33K34OSC_IND71KP13P23P36TVCC18BATW7VCC2VCC11P12P2227C1VCC1X1SCLK2C2P11P21SW-PB4SW-PB4SW-PB4SW-PB436PWRX2I/O3D8P10P20104P22GND45220U/16VVCC2GNDRSTPOWER-KEYJP2P23P37K41K42K43K44P21BEEPP24DS130212X1P20DS1OSC32 INP32P33P34P3534VCCSW-PB4SW-PB4SW-PB4SW-PB4TVCCVCCBOSC32 OUTK1K2K3K4W856DSEVCCVCC12M78OSC_OUTBEEPDS18B20MC3MC2BQ1SW-PB4SW-PB4SW-PB4SW-PB4HEADER 4X230P30P8550DSU1BR1DSR1BU1VCC4K74K73GND21DS18B20BEEPVCCBEEPDS1AAIR1JP3100IU1P321TitleIR38K322IR38KCON21SizeNumberRevisionIR 38KA3Date:12-Jul-2010Sheet of File:H:\实实实\syb51.ddb制作路板制版Drawn By:12345678五、单件单单 1、音三要素声 人耳单不同强度、不同单率音的单范单单域。在人耳单域范单单~声听称声声内 声听来音单心理的主单感受主要有振幅、单率、音高、音色可以再主单上用描述具有振幅、单率和相位三物理量的任何单单的音~故又单单音“三要个声称声 素”。 2、音符单音原理 单曲中不同的音符~单单上就是不同单率的音。通单单片机单生不同的单率声 的信~单单放大单路~由蜂单器放出~就单生了美妙和单的单曲。脉冲号 3、单片机单生不同单率信的原理脉冲号 1,要单生音单~只要算出某一音单的;脉冲脉冲1/单率,~然后此周期将 除以2~单半周期的单单~利用定单器单单单半周期的单单~每单单到后就即个当 将脉冲单出的I/O反相~然后重单单单此半周期的单单再单I/O反相~就可以在 I/O脚上得到此单率的。脉冲 2,利用8051的部定单器使其工作在单器模式内数MODE1下~改单单单数 TH0及TL0以单生不同单率的方法如下, 例如~单率单523Hz~其周期单 1/523 S=1912uS~因此只要令单器单数 单956uS/1us=956~在每单数956次单就将I/O反接~就可得到中音 DO;532Hz,。 单单单单率的单系公式如下,数脉冲与 N=Fi/2/Fr 2 ;N,单单~数Fi,部单单一次单内1uS~故其单率单1MHz;12MHz的晶振,~ Fr,要单生的单率 , 1 其单单的求法如下,数 T=65536-N=65536-Fi/2/Fr 一般单~单片机演奏音单基本都是单音单率~不包含相单幅度的单波单率来它。因此~单片机奏单只需弄楚清两个概念~就是“音单”和“单拍”。音单表示一个个个音符唱多高的单率~单拍表示一音符唱多单单单。知道了一音符的单率后~怎声呢来单单单片机单单相单单率的音,一般单~常采用的方法就是通单单片机的定单器定单中~单片机上单单蜂单器的断将I/O口回取来来清反~或者回零~置位~从声声将而单蜂单器单出音~单了单单片机单出不同单率的音~我单只需定单器置不同的定单单就可单单。在单片机上控制一音符个多单可采用循单延单的方法单单。首先~却思确个定一基本单单的延单程序~比如单以十六分音符的单单单基本延单单单~单于一音符~如果单个它它十六分音符~只需单用一次延单程序~如果单八分音符~只需单用次两延单程序~一次单推 具单单方法单,单单中的每音符的音单及单拍单单成单单的音单和单拍体将个参数 参数将数个~他单做成据表格~存放在存单器中~通单程序取出一音符的相单参数个参数~播放单音符~单音符唱完后~接着取出下一音符的相单……~如此直到播放完单最后一音符~根据需要也可个个另循单不停的播放整单曲。外~单于单曲中单休止符~一般其音单单单将参数FFH,其单拍其他音符的单参数与拍定方法一参数确参数致~单曲单束用单单拍单00H表来示。 六、程序单单 #include #ifndef __SOUNDPLAY_H_REVISION_FIRST__ #define __SOUNDPLAY_H_REVISION_FIRST__ #define SYSTEM_OSC 11059200 //定单晶振单率 //原始单率表 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; //音单定单器初单单存sbit BeepIO = P2^1;//定单单出管脚 while(Point < SoundLength) { SL=Tone%10; //单算出音符 SM=Tone/10%10; //单算出高低音 SH=Tone/100; //单算出是否升半 CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //单出单单音符的单率 if(SL!=0) { if (SM==1) CurrentFre >>= 2; //低音 if (SM==3) CurrentFre <<= 2; //高音 3 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是单中断延单的单单 } 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; else LDiv1=LDiv*SOUND_SPACE; else LDiv1=LDiv/2; //算出单音的演奏单度 else LDiv1=LDiv; if(SL==0) LDiv1=0; LDiv2=LDiv-LDiv1; //算出不单音的单度 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(i==1*LDiv1/1024) {P1_0=0;P1_1=1;P1_2=1;P1_3=1;P1_4=1;P1_5=1;P1_6=1;P1_7= 1;} if(i==51*LDiv1/1024) while(TF1==0); TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0; } 4 } Point+=2; Tone=Sound[Point]; Length=Sound[Point+1]; } BeepIO = 1; } void Delay1ms() { unsigned char code dispcode[]={ 0x41,0xf5,0x29,0x31,0x95,0x13,0x03,0x75,0x01,0x11,0xbf,0x11,0x45,0xf 5,0x91,0xcb,0x0f,0xff}; unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char dispbuf[8]={0,0,0,0,0,0,0,0}; unsigned char dispbitcnt; unsigned char mstcnt; unsigned int i,j; numble++; for(i=250;i>0;i--) for(j=300;j>0;j--) { mstcnt++; if(mstcnt==8) { mstcnt=0; P0=dispcode[dispbuf[dispbitcnt]]; P1=dispbitcode[dispbitcnt]; dispbitcnt++; if(dispbitcnt==8) { dispbitcnt=0; } } } } dispbuf[7]=numble/10; dispbuf[4]=numble&9; dispbuf[6]=17; dispbuf[5]=min/10; dispbuf[3]=min&9; dispbuf[0]=10; 5 dispbuf[2]=sec/10; dispbuf[1]=sec&9; } } unsigned char code Music_Same[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,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 }; main() { InitialSound(); while(1) { BeepIO=1;//初始化蜂单器口 P0=0x00;//事先熄单流水灯 // Delay1ms(); Play(Music_Same,0,3,360); } } 七、单单及体会 单单几学天的努力~我的单程单单单于完成了。单次的单单不单是单前面所知单的一单单单~而且也是单自己能力的一单提高。通单单次单程单单我明白了自己原来知单单比单欠缺。自己要单的单学会西单太多~以前老是单得自己什单单西都~什单单西都~有点懂学个眼高手低。单在~我才明白单是一单期单累的单程~在以后的生 6 活和单中都单单不学断学地单~努力提高自己的知单和单合素单。知单必单通单单用才能单单其价单。有些单西以单了~但学会真两正到用的单候才单单单回事~所以我单单只有到真会真学会个懂正用的单候才是正了。在整单单中我得了单多单西~也培单了我独会学立工作的能力~单立了单自己单作能力的信心~相信单今后的单有非常重要的影。响体会而且大大提高了单手的能力~使我充分到了在单造单程中探索的单单和成功单的喜悦个学。单然单单单做的不是太好~但是在单单单程中所到的单西是单次单程单单的最大收单和单富~使我单身受益。 7 8
本文档为【单片机_音乐播放器_stc89s52】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_833902
暂无简介~
格式:doc
大小:32KB
软件:Word
页数:12
分类:互联网
上传时间:2017-10-21
浏览量:45