ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:440.62KB ,
资源ID:6602836      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6602836.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机音乐播放器报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机音乐播放器报告.docx

1、单片机音乐播放器报告摘 要利用单片机演奏音乐大概是单片机爱好者感兴趣的问题之一。利用单片机控制音乐播放也多不胜举.音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛。它有功能多价格优外围电路简单的特点,备受音乐爱好者及音乐芯片制造商的青睐。本题设计的系统以ATmega16单片机为核心,本文应用单片机和音乐发声的相关知识设计了一个简单的音乐播放器。所谓音乐播放器,由单片机进行信息处理,再经过信号放大,由耳机或扬声器(喇叭)放出乐曲声。我们知道,振动产生声音,振动频率不同,所发出的声音也就不同,有规律的振动发出的声音叫“乐音”,音乐由音频和节拍构成,音频即发声的频率,节拍即延时的长短,因此

2、利用单片机的定时器/计数器产生一定频率的方波,本文比较详细地介绍了音乐播放器的原理、设计思路、硬件的选择及相关作用、软件的实现方法及详细的程序清单、还包括进行了软、硬件调试和测试,耳熟能详的歌曲的依次、轮回播放。关键词:单片机,中断,频率,键盘,音乐播放器1系统方案本系统主要利用单片机的定时器/计数器产生一定频率的方波,利用延时来实现方波的延时,从而实现“17”的频率的高、中、低音的发音,而后把每首歌曲编码编程并结合单片机硬件再通过外接的扬声器来实现歌曲的播放。再利用4*4键盘与单片机相连接,通过对4*4键盘的捕捉,实现换曲、播放、暂停等功能。另外,我们又外加一个电机模块,驱动一个小女孩在为音

3、乐盒上舞动,实现了音乐盒的美观性。 4*4键盘数码管显示AVR单片机音乐播放电路图1 系统总体设计图本系统主要由按键模块、扬声器模块、数码管模块、控制器模块组成,下面分别论证这几个模块。1.1控制器系统模块方案一:采用51系列8位单片机,这种处理器处理速度相对缓慢,功能简单,外围电路电路比较复杂。方案二:采用196系列16位单片机,这种处理器处理速度较快,但由于内部外设模块不够丰富,需要接一定的外围电路,实现较为复杂。方案三:ATMEGA16作为CPU来控制,性价比较高,我们平时运用得多也较为熟悉。而且ATMEGA16能够产生我们所需要的控制信号,能连接键盘。硬件结构适合C语言编程,功能齐全,

4、不容易解密。抗干扰能力强。本实践活动用其即可很好的实现。综合以上本题要求和以上三种方案的分析,最终选择方案三。图2 ATMEGA16最小系统1.2扬声器模块采用音频功率放大器LM386来进行对音频的放大。LM386是一种音频集成功放,具有自身功耗低、更新内链增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点的功率放大器,广泛应用于录音机和收音机之中。通过扬声器即可实现对音乐盒音乐的播放。图3 扬声器模块1.3数码管模块数码管由8个发光二极管构成。其按按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数

5、码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。考虑系统的实际要求及易操作性,我们采用的是共阴极八段数码管,来实现对歌曲的播放曲目第几首的显示。图4 8段数码管原理1.4按键模块通过单片机相应程序控制,实现对4乘4键盘信息的采集。图5 4乘4按键模块2系统原理分析2.1 单片机发声原

6、理我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。音符的节拍我们可以用定时器来控制,送入不同的初值,就可以产生不同的定时时间。但是,由于定时器的最大定时时间有限,因此不可能直接用改变的时间初值来实现不同节拍。我们可以设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并

7、控制节奏,就可以实现演奏效果。节拍码节拍数11/4拍22/4拍33/4拍41拍51又 1/4拍61又1/2拍82拍A2又 1/2拍C3拍F3又3/4拍表13硬件设计3.1单片机硬件资源的设计A口PA0PA7:用于八段数码管的显示。考虑到电路不会用到太多口,资源配置还比较充裕。故我们采用的是静态显示驱动,故需要用到其八个口。B口PB0-PB7:用以对四乘四键盘扫描信号的采集以及控制。D口PD5:接相应扬声器电路,控制音乐播放。3.2功能模块硬件设计数码管模块:静态显示驱动与单片机相应B口相联系。键盘模块:采用纸质4乘4键盘输出线与单片机直接相对接的方式。扬声器模块:用扩展版来实现扬声器的功能,并

8、与单片机PD5口,接地接高等处相连接。4软件设计4.1数码管的设计 字形hgfedcba共阴极共阳极0001111113FHC0H10000011006HF9H2010110115BHA4H3010011114FHB0H40110011066H99H5011011016DH92H6011100107DH82H70000011107HF8H8011111117FH80H9011011116FH90HA0111011177H868B011111007CH83HC0110100139HC6HD010111105EHA1HE0111100179H86HF0111000171H8EH表2为了获得0-9十

9、个不同的字型符号,数码管各段所加电平不同,所以IO口输出的编码也不同。因此必须建立一个字型与字段7段码的编码表,(见上表2)。有了字段码对照表。可以实现对8段码的译码。若要显示字型1,PA口输出值为0x06;若要显示字型A,PA口显示输出值0x77。如此,程序中定义了如下数组:flash unsigned char shu10=0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f通过对数组元素,利用一个变量,在其中因不同状况而进行改变这样的设定,实现实时显示歌曲播放曲目读取这样的功能。4.2 键盘的设计按键扫描问题:将全部行线设置为低电平,然后读入

10、输入列线有无低电平出现。如果有低电平出现,则说明有按键按下,如果读到的都是高电平,则表示无按键按下。在确认有按键按下后,需要进入确定具体哪一个键闭合的过程,依次将行线设置为低电平,并检测列线的输入,进而确认具体按键位置。按键的防抖问题:按键的抖动时间:520ms,正常时间:300500ms则需要保证两次读键值的时间大于抖动时间,小于最小正常时间的1/2,取读键值时间为100ms。保证了在一次按键过程中至少可以检测到2次按键闭合,任意两次按键检测不会落在1个抖动区内。主要程序如下:switch (key_state) case 0: key_line = 0b00010000; for (i=1

11、; i=4; i+) / 扫描键盘 PORTB = key_line; / 输出行线电平 PORTB = key_line; / 必须送2次! key_value = Key_mask & PINB; / 读列电平 if (key_value = Key_mask) key_line = 1; / 没有按键,继续扫描 else key_state+; / 有按键,停止扫描 break; / 转消抖确认状态 break; case 1: if (key_value = (Key_mask & PINB) / 再次读列电平, switch (key_line | key_value) / 与状态0

12、的相同,确认按键 / 键盘编码,返回编码值 case 0b00011110: key_return = K4_1; break; case 0b00011101: key_return = K4_2;case 2: PORTB=0b00001111; PORTB=0b00001111; if(Key_mask & PINB) =Key_mask ) key_state=0; break; return key_return; 4.3 音乐播放软件采用T/C1比较匹配模式。系统时钟1Mhz,8分频。一个时钟周期为1微秒,寄存器OCR1A中为音符的半周期值,所以2次匹配中断的匹配比较输出在0C1A

13、上,输出一个完整的方波。通过变量记录中断的次数,用于控制音符脉冲的各抒,实际上就是音符输出的时间,代表了节拍的长度。 在T/C1中的OC1A会自动判别整个音乐是否全部播放完成,如果音乐没有全部播完,将取出下一个音符的节拍和音调面继续播放。利用设置T/C1技术脉冲源的方法来启动和停止T/C1的工作。一旦按键A键播放键被按下就会开始触发外部中断,进行工作。B键被按下即可暂停工作。再通过扬声器放大电路把它播放出去。D口相应初值设置如下: PORTD=0xFF; DDRD=0x20; / PD5音乐播放输出 OCR0 = 0xF9; / OCR0 = 0xF9(249),(249+1)/125=2ms

14、 TCCR0 = 0x0A; / 内部时钟,8分频(1M/8=125KHz),CTC模式 TCCR1A=0x40; TCCR1B=0x08; TIMSK = 0x12; / 允许T/C1比较匹配A中断,允许T/C0比较匹配中断 ;5设计体会通过这次实践设计活动深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。当看到自己设计的小音乐盒发声播放,上面的小女孩旋转的时候,那种喜悦的感觉不言而喻。在本次课程设计过程中,自己懂得单片机知识运用比较重要,要想把这门课程学好需要不但课本上的知道,关键还是亲手实践锻炼自己的动手能力,只有在实

15、践中才能够学到更多东西,从不知道到知道这个东西啊,知识来于课本理论与实践相结合的产物啊,我们只有把理论更好的运动到实践中学到了真正的知识经过这几周,我知道书本和实际操作还是很有差距的,而且自己的动手能力还是很差,而且电子这一行还要求的细心仔细和耐心,在这三周中暴露出来很多自己的不足,以后要多加练习,多锻炼自己的这些方面的能力。希望能够成为更加全面立体的电子类人才。附录1:电路原理图附录2:源程序#include #include flash unsigned char shu10=0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;flash u

16、nsigned int t16 = 0,1908,1700,1516,1433,1276,1136,1012,956,865,759,716,638,568,506,470;flash unsigned int d16 = 0,52,59,66,70,78,88,99,105,116,132,140,157,176,198,209;flash unsigned char music1150= 5,2,8,2,5,2,4,2,3,2,2,2,1,4, 1,2,1,2,2,2,3,2,3,2,1,2,3,2,4,2,5,8, 5,2,8,2,5,2,4,2,3,2,5,2,2,4, 4,2,3,2

17、,2,2,6,2,5,4,2,2,3,2,1,8, 5,4,3,2,6,4,8,4,7,4,6,2,7,2,5,4,3,4, 9,2,9,2,9,2,8,2,7,4,6,2,8,2,5,8, 5,4,3,2,6,4,8,4,7,2,6,2,7,2,8,2,9,6, 5,2,6,2,7,2,8,3,8,4,5,4,8,8;flash unsigned char music2100= 5,2,5,2,6,4,5,4,8,4,7,8, 5,2,5,2,6,4,5,4,9,4,8,8, 5,2,5,2,12,4,10,4,8,4,7,4,6,8, 11,2,11,2,10,4,8,4,9,4,8,8

18、;flash unsigned char music3100= 1,4,1,4,5,4,5,4,6,4,6,4,5,8, 4,4,4,4,3,4,3,4,2,4,2,4,1,8, 5,4,5,4,4,4,4,4,3,4,3,4,2,8, 5,4,5,4,4,4,4,4,3,4,3,4,2,8, 1,4,1,4,5,4,5,4,6,4,6,4,5,8, 4,4,4,4,3,4,3,4,2,4,2,4,1,8; flash unsigned char music4100=5,2,3,2,5,2,3,2,5,2,3,2,1,4, 2,2,4,2,3,2,2,2,5,8, 5,2,3,2,5,2,3,

19、2,5,2,3,2,1,4, 2,2,4,2,3,2,2,2,1,8, 2,2,2,2,4,2,4,2,3,2,1,2,5,4, 2,2,4,2,3,2,1,2,5,8, 5,2,3,2,5,2,3,2,5,2,3,2,1,4, 2,2,4,2,3,2,2,2,1,8;flash unsigned char music5150=3,2,3,2,4,2,5,2,5,2,4,2,3,2,2,2,1,2,1,2,2,2,3,2,3,2,2,1,2,8, 3,2,3,2,4,2,5,2,5,2,4,2,3,2,2,2,1,2,1,2,2,2,3,2,2,2,1,1,1,8, 2,2,2,2,3,2,1

20、,2,2,2,30,1,4,1,3,2,1,2,2,2,3,1,4,1,3,2,2,2,1,2,2,2,2,4, 3,2,3,2,4,2,5,2,5,2,4,2,3,2,2,2,1,2,1,2,2,2,3,2,2,2,1,1,1,8;flash unsigned char music6100=3,2,3,2,3,4,3,2,3,2,3,4, 3,2,5,2,1,2,2,2, 3,8,4,2,4,2,4,2,4,2,4,2,3,2, 3,2,3,2, 3,2,2,2,2,2,1,2,2,4,5,4, 3,2,3,2,3,4,3,2,3,2,3,4, 3,2,5,2,1,2,2,2,3,8, 4,

21、2,4,2,4,2,4,2, 4,2,3,2,3,2,3,2, 5,2,5,2,3,2,2,2,1,8;flash unsigned char music7150=1,2,2,2, 3,2,4,2, 5,2,5,2, 5,1,4,1,3,1, 4,2,4,2, 4,1,3,1,2,1, 1,2,3,2, 5,4, 1,2,2,2, 3,2,4,2, 5,2,5,2, 5,1,4,1,3,1, 4,2,4,2, 4,1,3,1,2,1, 1,2,3,2, 1,4, 6,2,6,2, 6,1,5,1,4,1, 5,2,5,2, 5,1,4,1,3,1, 4,2,4,2, 4,1,3,1,2,1,

22、1,2,3,2, 5,4, 6,2,6,2, 6,1,5,1,4,1, 5,2,5,2, 5,1,4,1,3,1, 4,2,4,2, 4,1,3,1,2,1,1,2,3,2, 1,4;flash unsigned char music8150=1,4, 1,2,2,2, 3,4, 3,2,4,2, 5,4, 6,2,5,2, 3,8, 5,4, 4,2,3,2,2,8, 4,4, 3,2,2,2, 1,8, 1,4, 1,2,2,2, 3,4, 3,2,4,2, 5,4, 6,2,5,2, 3,8, 5 ,4,4,2,3,2,2,4, 3,2,2,2, 1,16, 5,4, 4,2,3,2,

23、2,4, 1,2,1,2, 4,4, 3,2,2,2, 1,8,5,4, 4,2,3,2, 2,4, 1,2,1,2, 4,4, 3,2,2,2, 1,8, 1,4, 1,2,2,2, 3,4, 3,2,4,2, 5,4, 6,2,5,2, 3,8, 5 ,4,4,2,3,2,2,4, 3,2,2,2, 1,8 ;flash unsigned char music9200=8,2,8,2,8,2,10,2,13,2,10,2,12,4, 12,2,13,2,12,2,10,2,11,2,10,2,19,4, 9,2,9,2,9,2,11,2,14,2,14,2,13,2,12,2,12,2,1

24、2,2,12,2,11,2,7,4,8,4,9,8, 8,2,8,2,8,2,10,2,13,2,10,2,12,4, 12,2,13,2,12,2,10,2,11,2,10,2,19,4, 9,2,9,2,9,2,11,2,14,2,14,2,13,2,12,2,12,2,12,2,12,2,11,2,7,4,9,4,8,8, 13,4,13,2,12,2,11,1,12,1,13,1,12,2,9,2,10,2,11,2,9,2,12,4, 13,4,12,4,11,8,9,4,14,2,13,2,12,2,13,2,12,2,11,4,12,2,13,2,10,4,9,4,8,8;fla

25、sh unsigned char max9=128,50,84,96,124,98,140,146,172;int num=0,kai=1,pp;unsigned char note_n=0;unsigned int int_n=1;bit play_on,key_stime_ok;int key_stime_counter;interrupt TIM0_COMP void timer0_comp_isr(void) if (+key_stime_counter =5) key_stime_counter = 0; key_stime_ok = 1; interrupt TIM1_COMPA

26、void timer1_compa_isr(void) if (!play_on) if (-int_n = 0) TCCR1B = 0x08; if (note_n maxpp-1) switch (pp) case 1: OCR1A = tmusic1note_n; int_n = dmusic1note_n; note_n+; int_n = int_n * music1note_n*4; note_n+; TCCR1B = 0x09; break; case 2: OCR1A = tmusic2note_n; int_n = dmusic2note_n; note_n+; int_n

27、= int_n * music2note_n*4; note_n+; TCCR1B = 0x09; break; case 3: OCR1A = tmusic3note_n; int_n = dmusic3note_n; note_n+; int_n = int_n * music3note_n*4; note_n+; TCCR1B = 0x09; break; case 4: OCR1A = tmusic4note_n; int_n = dmusic4note_n; note_n+; int_n = int_n * music4note_n*4; note_n+; TCCR1B = 0x09

28、; break; case 5: OCR1A = tmusic5note_n; int_n = dmusic5note_n; note_n+; int_n = int_n * music5note_n*5; note_n+; TCCR1B = 0x09; break; case 6: OCR1A = tmusic6note_n; int_n = dmusic6note_n; note_n+; int_n = int_n * music6note_n*5; note_n+; TCCR1B = 0x09; break; case 7: OCR1A = tmusic7note_n; int_n = dmusic7note_n; note_n+; int_n = int_n * music7note_n*5; note_n+; TCCR1B = 0x09; break; case 8: OCR1A = tmusic8note_n; int_n = dmusic8note_n; note_n+; int_n = int_n * music8note_n*5; note_n+; TCCR1B = 0x09; break; case 9: OCR1A = tmusic9note_n; int_n = dmusic9note_n; note

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1