C51音乐播放器课程设计.docx
- 文档编号:16777235
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:11
- 大小:25.82KB
C51音乐播放器课程设计.docx
《C51音乐播放器课程设计.docx》由会员分享,可在线阅读,更多相关《C51音乐播放器课程设计.docx(11页珍藏版)》请在冰点文库上搜索。
C51音乐播放器课程设计
C51音乐播放器课程设计
课程设计姓名:
学号:
班级:
组员:
目录1设计题目.....................................................32概述32.1单片机数字音乐盒有关介绍32.2本设计任务53总体方案论证与设计73.1单片机的选取73.2LED显示方式83.3系统总体结构框图84系统硬件设计94.1AT___C51芯片功能和硬件连接94.2LED显示器114.3键盘124.4音频输出部分124.5整体硬件电路144.6原理说明........................145系统软件设计155.1主模块的设计155.2外部中断源系统设计165.3基本显示模块设计195.4系统初始化程序195.5音调、节拍以及编码的确定方法196调试结果216.1系统总电路图21总结22___23附件.............................241.设计题目基于C51的音乐发生器设计1.概述2.1单片机数字音乐盒有关介绍电子音乐已广泛地应用于社会生活的各个领域。
其类型从音乐卡片到CD、MP3等多种多样,制作原理也各不相同。
声音是通过振动产生的。
单片机对某一I/O引脚以一定的频率循环置1和清0,这一引脚便产生一定频率的方波,该方波通过放大后作用于扬声器便产生一定频率的声音。
若改变输出方波的频率,产生的声音也就改变了。
通过控制输出方波的时间长短,声音的长短也就得到控制。
因此,根据乐谱,单片机就可产生电子音乐。
音乐中最关键的两个要素是音符和节拍。
单片机控制的音乐发生器系统由硬件电路和软件两部分构成。
利用单片机控制的电子音乐发生器软硬件上具有独特的优点,系统的___周期短,成本低,电路制作容易。
更换歌曲时,硬件电路无需作任何修改,只需修改软件即可实现。
软件编程时,可用51系列单片机的汇编语言或C51语言实现。
同时还可根据个人的习好通过软件改变节拍的延时时间,增加电子音乐的趣味性。
2.1.1发音原理介绍发音原理:
播放一段音乐需要的是两个元素,一个是音调,另一个是音符。
首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。
对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。
另外,音符的频率有所不同。
基于上面的内容,这样就对发音的原理有了一些初步的了解。
音符的发音主要靠不同的音频脉冲。
利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P0.3引脚的输出音乐。
只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
2.1.2音符频率的产生音符及定时器初始值:
例如:
中音1(do)的音频=523HZ,周期T=1/523s=1912定时器/计数器0的定时时间为:
T/2=1912/2=956定时器956的计数值=定时时间/机器周期=956/1=956(时钟频率=12MHZ)装入T0计数器初值为65536-956=64580将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P0.3引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。
将51单片机内部定时器工作在计数器模式0下,改变计数初值TH0,TL0以产生不同的频率。
下表1.1是C调各音符频率与计数初值T的对照表:
表1.1C调各音符频率与计数初值T的对照表音符频率(Hz)/初值()音符频率(Hz)/初值()低1DO262/63627中1DO523/64580低2RE294/63835中2RE5___/64687低3M330/64021中3M661/64780低4FA350/64107中4FA700/64822低5SO393/64264中5SO786/64900低6LA441/64402中6LA882/64969低7SI495/64526中7SI990/65031高1DO1042/65056高5SO1568/65217高2RE1245/65134高6LA1760/65252高3M1318/65157高7SI1967/65282高4FA1397/651782.1.3节拍频率的产生节拍的产生与编码:
音乐中的节拍用延时时间产生。
例如,1拍=0.4s,1/4拍=0.1s,以此类推。
假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。
为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表1.3和表1.4所示。
表1.3节拍数编码表按1/4拍为一个延时时间的节拍编码与节拍对应的表按1/8拍为一个延时时间的节拍编码与节拍对应的表节拍编码节拍节拍编码节拍节拍编码节拍节拍编码节拍11/466/411/866/822/488/422/888/833/4A10/433/8A10/844/4C12/444/8C12/855/4F15/455/8表1.4乐谱节拍编程时的时间延时表乐谱节拍1/4拍的延时时间乐谱节拍1/8拍的延时时间4/4125ms4/462ms3/4187ms3/494ms2/4250ms2/4125ms2.2本设计任务随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。
小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。
传统的音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。
本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,使用方便,可以批量生产,具有一定的商业价值。
本设计是基于单片机控制的数字音乐盒的设计,由单片机AT___C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机数字音乐盒。
若该设计使用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。
若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计中采用单片机利用AT___C51,它是低功耗、高性能的CMOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT___C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。
在该设计中利用单片机I/O口产生一定频率的方波,驱动蜂鸣器,发出各种不同的音调,从而演奏乐曲,并能够由LCD显示信息。
键盘在单片机应用系统中能实现向单片机输入数据,传送命令等功能,是人工干预单片机的主要手段。
本设计采用4*4键盘,16*2LCD,七段显示数码管LED。
在开机按钮按下时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。
在演奏过程中可通过功能键选择乐曲,暂停,播放。
3总体方案论证与设计本设计是基于单片机的数字音乐盒设计,由单片机AT___C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子数字音乐盒。
要求利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调并采用LCD显示信息,从而演奏乐曲,开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称),可通过功能键选择乐曲,暂停,播放。
本设计采用4*4键盘,16*2LCD,七段显示数码管LED。
下面对各模块的设计逐一进行论证比较。
3.1单片机的选取首先选择单片机中最为普遍的MCS51系列。
其中AT___C2051是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含2kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位___处理器和Flash存储单元,功能强大的AT___C2051单片机可应用于许多高性价比的应用场合。
主要性能:
l和MCS-51产品兼容;l2KB可重编程FLASH存储器(1000次);l2.7-6V电压范围;l全静态工作:
0Hz-24KHzl2级程序存储器保密锁定l128*8位内部RAMl15条可编程I/O线l两个16位定时器/计数器l6个中断源l可编程串行通道l高精度电压比较器(P1.0,P1.1,P3.6)l直接驱动LED的输出端口由于完成核心功能——音频输出只需一个I/O口,并且额外功能LED移位显示可根据所选单片机的剩余I/O口进行设计,因此AT___C2051足以满足基本要求。
其20个引脚体积小巧,内部2k字节的程序存储器容量适中,低压低频工作条件,并且___低廉容易购得。
综上,本次设计选择AT___C2051单片机。
3.2LED显示方选取七段数码管,当播放数字音符i(i=1,2…7)的时候则第i个数码管显示i,显示时间与该音的节拍时间相同。
故选用动态显示。
3.3系统总体结构框图4系统硬件设计本设计中用到了AT___C51单片机,七段数码管,蜂鸣器,等硬件电路常用元器件。
4.1AT___C51芯片功能和硬件连接AT___C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT___C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
4.1.1主要特性:
·与MCS-51兼容·4K字节可编程闪烁存储器·寿命:
1000写/擦循环·数据保留时间:
10年·全静态工作:
0Hz-24Hz·三级程序存储器锁定·128*8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路4.1.2管脚说明(如图3.1):
图3.1VCC:
供电电压。
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口也可作为AT___C51的一些特殊功能口,如下表所示:
管口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制___。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲___,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通___。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN___将不出现。
/EA/VPP:
/EA保持低电平时,在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
反向振荡器的输出。
4.2.1LED显示器的结构常用的LED显示器为8段。
每一个段对应1个发光二极管,这种显示器有共阳极和共阴极两种:
共阴极LED显示器的发光二极管的阴极连接在一起,通常此公共阴极接地。
当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。
同样,共阳极LED显示器的发光二极管的阳极连接在一起,通常此公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。
为了使LED显示器显示不同的符号或数字,就要把不同段的发光二极管点亮,这样就要为LED提供代码,因为这些代码可使LED相应的段发光,从而显示不同字型,因此该代码称为段码。
7段发光二极管,再加上1个小数点位,共计8位。
因此提供给LED显示器的段码正好是1B。
各段与字节中各位对应关系如下表3.1:
表3.18段LED结构及外形位码位D1D2D3D4D5D6D7D80xfe0xfd0xfb0xf70xef0xdf0xbf0x7f段码012345670x3f0x060x5b0x4f0x660x6d0x7d0x074.2.2LED显示器工作原理由N个LED显示块可以拼接成N位的LED显示器。
如图是LED显示器的结构原理图3.2。
N个LED显示器有N个位选线和8*N位根段码线。
段码线控制显示字符的字型,而位选线为各个LED显示块中各段的公共端,它控制该LED显示位的亮或暗。
LED显示器有静态显示和动态显示两种。
4.3键盘键盘设置为选歌,按一个按键进行一次中断,故采用优先级解码芯片如74LS148,把多个中断源___作为一个中断。
4.4音频输出部分整个输出部分由一个100uF电容、两个S9013NPN三极管和一个蜂鸣器/喇叭组成,原理图如右图所示:
100uF电容是用来滤波的,两个NPN三极管起到放大___的作用,最后由蜂鸣器/喇叭表现出___。
用P3.7口控制蜂鸣器。
输出显示电路如图3.4所示:
图3.4输出显示电路4.5整体硬件电路4.6原理说明:
当键盘有键按下时,判断键值,并触发外部0中断,选择对应播放的曲目。
同时8段数码管动态显示所播放的数字音符。
按sw1可以暂停播放,按快进快退触发外部1中断,可以时曲子循环前进活快退5个音符。
5系统软件设计5.1主模块的设计主模块是系统软件的主框架。
结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。
它的合理与否关系到程序最终的功能的多少和性能的好坏。
本系统的主模块的程序框图如下图6所示:
图65.2外部中断源系统设计在本设计中中断源是采用外部中断0和外部中断1方式,均为负跳变有效。
(1)定时器/计数器工作方式寄存器TMOD用于选择定时器/计数器的工作方式和工作模式。
其格式如下表4.1:
TMODD7D6D5D4D3D2D1D0GATEM1M0GATEM1M0T1方式字段T0方式字段表4.1下面表4.2对TMOD各位进行说明:
门控位—GATE工作方式选择位—M1、M0M1M0工作方式00方式0,为13位定时器/计数器01方式1,为16位定时器/计数器10方式2,8位的常数自动重新装载的定时器/计数器11方式3,仅适用于T0表4.2其中,在本设计中采用方式1的16位定时器/计数器。
—计数器模式和定时器模式选择位=0,为定时器模式。
=1,为计数模式。
定时器/计数器控制寄存器TCON,其格式如下表4.3:
TCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0ITO表4.3其各位的功能如下:
TF1、TF0—计数溢出标志位当计数器溢出时,该位置1。
TR1、TR0—计数运行控制位5.2.1外部中断1实现快进快退按下快进快退键,进入外部1中断,通过读取P3^4和P3^5的电平来判断m的值。
voidint1()interrupt2//外部1中断,快进快退{TR0=0;if(p34==0&p35==1)m=1;//快进if(p34==1&p35==0)m=0;//快退}主程序中会通过m的值来判断是快进还是快退if(m==1){c=(c+5*3)%159;//一次前进活着后退5个音符;取余,使之不会超过普子长度m=3;}elseif(m==0){c=(c-5*3)%159;m=3;}5.2.2外部中断0实现歌曲的选择选择所听歌曲的按键,就会进入外部0中断,通过读取P0口的状态来确定status的值。
voidint0()interrupt0//外部0中断,选择歌曲{c=0;//换曲子时从头播放status=0X07&P0;}主程序中通过判断status的值来选择播放的曲子switch(status){case1:
……case2:
…………}5.3基本显示模块设计P1=count[table[c]];P2=bitcode[table[c]-1];动态显示播放音符所对应的数字谱5.4系统初始化程序unsignedchark;p00=0;TMOD=0X01;EA=1;EX0=1;EX1=1;//开外部0,1中断和定时器0中断ET0=1;ET1=1;//外部中断0,1为脉冲触发方式,负跳变有效IT0=1;c=0;5.5音调、节拍以及编码的确定方法一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。
4.5.1曲子的编码以一小段编码为例table[]=//乐谱{6,1,1,5,1,1,6,1,3,1,2,1,2,2,1,3,2,1,0,0,0};编码为3个一组,每组对应一个音符。
以6,1,1,为例:
第一个数代表音符,6代表数字谱6即La;第二个数代表音调,1表示低音,同理2表示中音,3表示高音;第三个数代表节拍,1表示最小节拍,此处为半拍,同理2就表示1拍,3为1个半拍,4为2拍;k=table[c]+7*table[c-1]-1;//找音调BTH0=th0[k];BTL0=tl0[k];time=table[c+2];//找节拍低中高音为7个一循环,k代表音符的位置,比如6,1,1,则k=6+7*0-1,故低音6的频率就可以在th0[k](频率的高八位)和tl0[k](频率的低八位)中寻得th0[]=//音调频率的高八位{0xf2,0xf3,0xf5,0xf5,0xf6,0xf7,0xf8,//低音0xf9,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,//中音0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,//高音0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff};//超高音tl0[]=//音调频率的低八位{0x42,0xc1,0x17,0xb6,0xd0,0xd1,0xb6,//低音0x21,0xe1,0x8c,0xd8,0x68,0xe9,0x5b,//中音0x8f,0xee,0x44,0x6b,0xb4,0xf4,0x2d,//高音0x47,0x77,0xa2,0xb6,0xda,0xfa,0xe6};//超高音定时器0中断产生方波,放出音调voidtime0()interrupt1using0//定时中断,产生音调{TR0=0;p00=~p00;TH0=BTH0;TL0=BTL0;TR0=1;}6调试结果6.1系统总电路图总结首先要感谢老师的教学才可以让我对C51熟悉起来。
我本身很喜欢音乐,所以准备课程设计我马上就想道要做个音乐播放器出来,自己编写喜欢的曲子。
在图书馆里找了几本书,看到了一个容易理解的程序。
原程序是循环播放一个音乐,我在次基础上进行了改变。
先是加入了外部0中断,联合switch语句可以实现随时选择曲子的功能;后来又___了可以暂停的功能;然后加入了8段数码管动态显示曲子的程序;最后加入了外部1中断的快进快退语句。
过程中因为没有设置外部0中断的负跳变有效,一时没发现,让我困恼了一下午,后己都不知怎么就突然想到了没有设置负跳变有效。
其余的也没多大的障碍,就是有些细节需要反复调试修改就是了。
制作过程还是很愉快的。
___姜志海.单片机的C语言程序设计与应用——基于Proteus仿真(第2版)..电子工业出版社,xx附件总程序#include___itp00=P0^3;___itp20=P3^0;___itp34=P3^4;___itp35=P3^5;unsignedintt,c,m=3;unsignedchartime;unsignedcharkeytmp,status=0;unsignedcharBTH0,BTL0;unsignedcharcodecount[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,//段码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 音乐 播放 课程设计