基于单片机音乐播放器课程设计报告书(20210504000331)_第1页
基于单片机音乐播放器课程设计报告书(20210504000331)_第2页
基于单片机音乐播放器课程设计报告书(20210504000331)_第3页
基于单片机音乐播放器课程设计报告书(20210504000331)_第4页
基于单片机音乐播放器课程设计报告书(20210504000331)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、目录第一章绪论 1第二章音乐播放器主要器件相关知识介绍 22.1 AT89C51 22.2 LCD 显示器 42.3 喇叭 52.4 键盘5第三章音乐播放器设计原理 63.1 单片机发声的基本原理 63.2 设计的相关音乐说明 73.3 音乐播放器设计功能说明 73.4 设计结构框图 93.5主程序控制的工作流程图 103.6播放音乐的主程序 11设计心得 15参考文献 15第一章绪论二十世纪九十年代以来,计算机、信息、电子、控制、通信等技术 得到迅速发展,促使了社会生产力的提高,也使人们的生产方式和生活 方式产生了日新月异的变化。随着人们生活水平的提高及对音乐的喜爱, 对音乐播放器的品质,功

2、能,品种等提出了越来越多的要求,表现在对 控制系统性能、可靠性等要求越来越高。而品质的提高,功能的更新, 可靠性的增强,品种的变化无不于产品的核心控制部分水平的提高密不可分。家用音乐播放器产品及其它有关消费电器产品都是一些开环或闭环控制系统,都由核心控制部分,执行部分与人机界面三部分组成。而最为重要的控制部分一般是由单片机来执行完成的,这就必将导致和促进单片机在音乐领域应用的发展。 现在这些由单片机实现的音乐播放器 的功能越来越强、费用越来越低。例如,就市场上的mp3 目前的功能越来越强大体积却越来越小,价格也逐渐便宜,被大多数人所能接受。但 这些音乐播放器也或多或少的存在着一些问题,解决这些

3、问题,还除智 能化的单片机莫属。设计指标:(1)设计一个(4 4)的键盘,并将16个键设计成16个音;2)可弹奏想要表达的音乐;3)该电子琴包含 1 首示例音乐,接通电源可播放示例音乐。设计要求:1 )按设计指标进行电路设计;2)列出音阶与单片机定时器输出频率关系表格;3)制作符合设计指标的硬件电路第二章 音乐电子显示屏主要器件相关知识介绍制作音乐播放器所使用的主要元器件AT89S52 1 个 晶振 12MHZ 1 个LCD1602液晶显示器1个小喇叭1个电容 30pf2个极性电容 1uf2个10nf1个电阻 10k1K欧1个按键17个排阻1k1个470欧1个2.1 AT89S52 :AT89

4、S52是一种带 4K字节闪烁可编程可擦除只读存储器(FPERO Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的 AT89S52是一种高效微控制器,为很多嵌入式控制系统提供了一 种灵活性高且价廉的方案。现在我们对这些引脚的功能加以说明:Pl. c 匚5。1V ccFL 1 C331po. a?*DCFL. 2 E昶F0 1 /AD1P

5、1. 3 C373PQ.P1. 4 c彳日1FC.P1. 5 C35PO. +/AD+PL fc C34PO S/AD57匚331&/AD&R5T c3?FJ). TUDTEKD/P2. 0 匚1031EAXiTPPTJID/P3. 1 匚11301ALE/PTjj 匚IHWF3 Z C1223PISHIlITf/F3. 3 匸U281F2. T/115T(J/P3. 4 匚U27F2. &/A14TL/F3. 5 C1?25P2. 5/AURH/P3. fe r1&251P2 4/112M/P3. 7 C1T24P2. 3/11XTAL2 匚13豁IS. S/AioKTAL1 匚13221P

6、2. 1 心 9CMD C202L1P2. (J/AGPEIP20:接地脚。40:正电源脚,工作时,接+5V电源。 9:时钟XTAL1脚,片振荡电路的输入端。 8:时钟XTAL2脚,片振荡电路的输出端。8051的时钟有两种方式,一种是片时钟振荡方振荡电容,振荡电容的值一般取10p-30p。另外一种是外部时钟方式,即将XTAL1式 但需在18和19脚外接石英晶体(2-12MHZ)和接地,外部时钟信号从XTAL2脚输入输入输出 (I/O) 引脚:Pin39-Pin32 为 P0.0-P0.7 输入输出脚。Pin1-Pin8 为 P1.0-P1.7 输入输出脚。芯片引脚简要说明Vcc (40) :

7、+5V 电源Vss (20) :接地P0 口( 3239):为 8 位双向三态 I/O 口P1 口( 81):是带部上拉电阻结构的 8位准双向I/O 口P2 口( 2821):也是带部上拉电阻结构的 8位准双向I/O 口P3(17 10):也是带部上拉电阻结构的 8位准双向 I/O 口,但在整个系统中,对相应的口锁存器置“ 1” 后,这 8个脚还具有第二功能。RST/VPD (9):复位信号线ALE/PROG (30):地址锁存有效信号线PSEN(29):外部程序存储器读选通信号线EN/VPP(31):部和外部程序存储器的选择线I/O 端口:8051共有4 I/O 端口 ,为P0,P1,P2,

8、P3 ; 4个I/O 口都是双向的,且每个口都具有锁存器。每个端口有 8 条线,共计 32 条 I/O 线。P0.0P0.7; P1.0P1.7; P2.0P2.7; P3.0P3.71. P0 有三个功能1 )。外部扩充存储器时,作数据总线( D0D7)2)。外部扩充存储器时,作地址总线(A0A73)。不扩充时,作一般I/O使用,部无上拉电阻,作为输出/输入使用时应加上拉电阻2. P1只作I/O 口使用,有部上拉电阻。3. P2有两个功能1)。扩充外部存储器时,作地址总线(A8A15使用。2)。作一般I/O 口使用,有部上拉电阻。2.2 LCD1602液晶显示器图10-54 1602LCD尺

9、寸图1602LCD主要技术参数:显示容量:16 X2个字符芯片工作电压 45 5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95 X 4.35(WX H)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表10-13 :引脚接口说明表第1脚:

10、VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整 对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:DOD7为8位双向数据线。第15脚:背光

11、源正极。第16脚:背光源负极。10. 8. 2. 3 1602LCD的指令说明及时序指令R/序号RSW1清显示002光标返回00置输入模式3004显示开/关控制00光标或字符移位5006置功能00置字符发生存贮器地700址8置数据存贮器地址009读忙标志或地址01写数至U CGRA或10101602液晶模块部的控制器共有11条控制指令,如表10-14所示:DDRA)D7D6D5D4D3D2D1D0000000010000001*1/000001SD00001DCBS/R/0001*CL001DLNF*字符发生存贮器地址011显示数据存贮器地址BF计数器地址要写的数据容从CGRA或DDRA读读出

12、的数据容11数与HD4478C相兼容的芯片时序表如下:读状态输入RS=LR/W=H E=H输出D0- D7= 犬态字写指令输入RS=LR/W=LD0- D7=f 令码,E=输出无高脉冲读数据输入RS=HR/W=HE=H输出D0- D7=数据写数据输入RS=H R/W=L D0- D7=数据 , E= 高脉输出无冲2.3 :喇叭(如下图 2.3-1 )R41D0D-I - - CT1UI.srizAK 匚 n图 2.3-1由于人的耳朵能听到的声音feq为20HZH20 000HZ,极性电容C2的作用为 滤波,电容C7的作用为截止直流信号通过。其电容 C2角频率w=2*pi*feq 即为125.6

13、 125600。阻抗R=1/(j*w*c)得到阻抗的取值围 7.961 7961。2.4 4*4 键盘:第三章音乐播放器设计原理3.1单片机发声的基本原理我们知道,声音的频谱围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。音符的节拍我们可以用定时器TO来控制,送入不同的初值,就可以产生不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。但是,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的

14、时间初值来实现不同节拍。我们可以用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。例如对1/4拍音符,定时时间为 0.16秒,相应的时间常数为16(即卩10H);对3拍音符,定时时间为1.92秒,相应时间长数为192 (即C0H。我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的 所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。此外,结束符和体止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。为了产生手弹的节奏感,在某些音

15、符(例如两个相同 音符)音插入一个时间单位的频率略有不同的音符。3.2 设计的相关音乐说明1 要产生音频脉冲,只要算出某一音频的周期( 1/ 频率),然后将此周 期除以 2,即为半周期时间。利用半周期时间定时这个半周期时间,每当 计时到后就将输出的 I/O 反向,然后重复计时此半周期再对 I/O 反向, 就可以在 I/O 脚上得到此频率的脉冲。2利用8051的部定时器使其工作在记数模式MODE下,改变记数值TH0及 TL0 以产生不同的方法。3记数脉冲值与频率的关系公式如:N=Fi/2/Fr 。N:记数值:Fi :部计时依次为 1us, 故其频率为 1 MHZ; Fr: 要产生的频率;4 其

16、记 数 值 的 求 法 如 :T=65536-N=65536-Fi/2/Fr。 例 : 设K=65536,F=1000000=Fi=1 MHZ。求低音 DO(26HZ),中音 DO(523HZ),高音 DO(1046HZ)的记数值。5 每个音符使用 1 个音节,字节的高四位代表音符的高低,低四位代 表音符的节拍。 如果 1 拍为 0.4 秒, 1/4 拍为 0.1 秒,假设 1/4 拍为 DELAY, 则 1 拍为 4 DELAY。6 歌曲设计采用直觉式输入法,由程序中直接输入“01h, 02h , 03h”,便会演奏 DO RE ME 。3.3功能说明:1先把乐谱的音符找出,然后建立表建立T

17、值的顺序2把T值表建立在TABLE1构成发音符的记数值放在“ TABLE3简谱码为高位,节拍为低四位,音符节拍码放在程序的“TABLE处表一各调1/4节拍的时间设定各调1/8节拍的时间设定曲调值DELAY曲调值DELAY调4/4125毫秒调4/462毫秒调3/4187毫秒调3/494毫秒调2/4250毫秒调2/4125毫秒表 3.3-1 (表 1)表二 简谱对应的简谱码T值,节拍数简谱发音简谱码T 值5低音SO1642606低音LA2644007低音TI3645241中音DO4645802中音RE5646863中音Ml6647774中音FA7648205中音SO8648986中音LA96496

18、87中音TIA650301高音DOB650582高音REC651103高音MED651574高音FAE651785高音SOF65217不发音0表 3.3-2 (表 2)表三节拍码节拍数节拍码节拍数11/4拍22/4拍33/4拍41拍51又1/4拍61又1/2拍82拍A2又1/2拍C3拍F3又3/4拍3.4音乐播放器硬件电路图图3.4-14*4键盘16*2液晶显示音乐播放电路复位晶振电路3.5音乐播放器原理流程图主程序开始初始化变量及LCD显示接口初始化定时器液晶显示姓名、学号依据按键码演奏该首歌曲歌曲名字显示在 LCD3.6主程序#i nclude #in elude vintrin s.h#

19、defi ne uchar un sig ned char#defi ne uint un sig ned int#defi ne LCDPORT P0unsigned int code tab=64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178;unsigned char code name=1234567 ;unsigned char code num=1 ;unsigned char code tab1=PLAYING MUSIC IS;unsig

20、ned char code tab2=TWO BUFFER;unsigned char code tab3=THE TONE IS;unsigned char code tab4=LOW SO LOW LA LOW TI MID DO MID RE MIN MI MIN FA MID SO MID LA MID TI HIG DO HIG RE HIG MI HIG FA HIG SO HIG LA;/ 两只蝴蝶unsigned char code Music_Two = 0x17,0x03,0x16,0x03, 0x15,0x01,0x15,0x03, 0x10,0x03,0x16,0x03

21、, 0x17,0x03, 0x17,0x03,0x16,0x03,0x10,0x03, 0x15,0x03,0x10,0x0E, 0x15,0x04,0x16,0x03, 0x15,0x01,0x15,0x03, 0x10,0x03,0x16,0x03, 0x17,0x01,0x16,0x02, 0x16,0x0D, 0x0F,0x01, 0x17,0x03, 0x10,0x03, 0x15,0x03, 0x15,0x03,0x16,0x01,0x17,0x03,0x16,0x03, 0x17,0x03,0x17,0x03, 0x16,0x03,0x16,0x03, 0x17,0x01,0x1

22、6,0x02, 0x16,0x0D,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, 0x1

23、6,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,0x17,0x03,0x17,0x03, 0x19,0x03,0x1A,0x02,0x16,0x03, 0x16,0x03,0x1A,0x02, 0x10,0x03,0x16,0x0D,0x17,0x0D,0x17,0x01,0x16,0x03,0x16,0x0

24、1,0x1A,0x03,0x1A,0x03,0x17,0x03, 0x19,0x03,0x1A,0x0E,0x1B,0x04,0x19,0x03,0x17,0x03,0x19,0x03,0x17,0x02,0x16,0x03,0x17,0x0D,0x17,0x03,0x19,0x02,0x1A,0x03,0x1A,0x03,0x16,0x03,0x1F,0x02,0x1A,0x0E,0x17,0x03,0x1B,0x03,0x1B,0x04,0x19,0x01,0x19,0x03,0x16,0x03,0x19,0x03,0x16,0x03,0x1F,0x03,0x1A,0x03,0x16,0x

25、03,0x17,0x01,0x1B,0x03,0x17,0x03,0x1B,0x03 0x1A,0x03,0x17,0x03, 0x19,0x03,0x17,0x0D,0x1A,0x02,0x1A,0x02,0x17,0x03,0x1A,0x03,0x17,0x0D,0x10,0x03,0x19,0x03,0x1F,0x02,0x1A,0x03, 0x1A,0x0E,0x16,0x03,0x1B,0x03,0x1B,0x04,0x17,0x16,0x16,0x01,0x1A,0x03,0x19,0x03,0x17,0x03, 0x19,0x03,0x1A,0x0E, 0x1B,0x04,0x1

26、7,0x02,0x1A,0x03, 0x1A,0x03, 0x1A,0x0E,0x1B,0x04,0x1A,0x03, 0x19,0x03,0x17,0x03, 0x16,0x03,0x0F,0x02,0x10,0x03, 0x15,0x00,0x00,0x00 ;/*#ifndef _SOUNDPLAY_H_REVISION_FIRST_#define _SOUNDPLAY_H_REVISION_FIRST_/*#define SYSTEM_OSC 12000000#define SOUND_SPACE 4/5sbit BeeplO=P3P;unsigned int code FreTab1

27、2 = 262,277,294,311,330,349,369,392,415,440,466,494 ;/ 原始频率表unsigned char code SignTab7 = 0,2,4,5,7,9,11 ;/17 在频率表中的位置unsigned char code LengthTab7= 1,2,4,8,16,32,64 ;unsigned char Sound_Temp_TH0,Sound_Temp_TL0; / 音符定时器初值暂存unsigned char Sound_Temp_TH1,Sound_Temp_TL1; / 音长定时器初值暂存/*void lnitialSound(v

28、oid)BeeplO = 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;ET0 = 1;ET1= 0;TR0= 0;TR1= 0;EA = 1;BeepIO = !BeepIO;TH0 = Sound_Temp_TH0;TL0 = Sound_Tem

29、p_TL0;/*void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed)unsigned int NewFreTab12; / 新的频率表unsigned char i,j;unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength;unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;for(i=0;i 11)j = j-12;Ne

30、wFreTabi = FreTabj*2;elseNewFreTabi = FreTabj;if(Octachord = 1)NewFreTabi=2;else if(Octachord = 3)NewFreTabi=2;SoundLength = 0;while(SoundSoundLength != 0x00) /计算歌曲长度SoundLength+=2;Point = 0;Tone = SoundPoint;Length = SoundPoint+1;/ 读出第一个音符和它时时值LDiv0 = 12000/Speed; / 算出 1 分音符的长度 ( 几个 10ms)LDiv4 = LD

31、iv0/4; / 算出 4 分音符的长度LDiv4 = LDiv4-LDiv4*SOUND_SPACE; / 普通音最长间隔标准TR0 = 0;TR1 = 1;while(Point = 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 +

32、12; /加 12 是对中断延时的补偿SLen=LengthTabLength%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 (SLen0;i-)/ 发规定长度的音while(TF1=0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;if(LDiv2!=0

33、)TR0=0; BeepIO=0;for(i=LDiv2;i0;i-)/ 音符间的间隔while(TF1=0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;Point+=2;Tone=SoundPoint;Length=SoundPoint+1;BeepIO = 0;/*液晶模块函数*/*sbit LCDE=P3psbit LCDRW=P3A6;sbit LCDRS=P3A7;void Delay()uint uiCount;for(uiCount=0;uiCount0;i-) for(y=255;y0;y-);*#endif main()

34、unsigned char temp;unsigned char key;unsigned char k,y,m,x,z,i,j;unsigned char counter;InitialSound(); inicry();*WriteCMD(0x80);for(y=0;y7;y+)WriteData(namey); mydelay(5);mydelay(2); WriteCMD(0x80+0x40);for(z=0;z12;z+) WriteData(numz); mydelay(5);for(x=0;x0;i-)for(j=200;j0;j-);(temp!=0x0f)temp=P1; t

35、emp=temp & 0x0f; if temp=P1; temp=temp & 0x0f;switch(temp)case0x0e: key=0+4*m;break; case 0x0d:key=1+4*m;case 0x0b:key=2+4*m; break; case 0x07: key=3+4*m;break; temp=P1;P3_0=P3_0;Sound_Temp_TH0=tabkey/256; Sound_Temp_TL0=tabkey%256;TR0=1;WriteCMD(0x01);WriteCMD(0x80);for(y=0;y11;y+) WriteData(tab3y); mydelay(3); mydelay(2);WriteCMD(0x80+0x40);counter=key*7;for(z=counter;zcounter+7;z+) WriteData(tab4z);mydelay(3);for(x=0;x18;x+)Wri

温馨提示

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

评论

0/150

提交评论