网站大量收购独家精品文档,联系QQ:2885784924

《单片机课程设计-单片机演奏乐曲试验》.doc

《单片机课程设计-单片机演奏乐曲试验》.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《单片机课程设计-单片机演奏乐曲试验》

单片机课程设计 课程设计题目:单片机演奏乐曲试验 课程设计组: 08电子信息工程 姓名: 单片机演奏乐曲实验 摘要:本文是应用16F877A单片机原理和控制理论设计音乐的硬件电路,并利用进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟来控制发音时间的长短。把乐谱转化成相应的定时常数发音设备演奏出悦耳动听的音乐。性高,应用性强;软件程序适应范围广,对于不同的音乐只需要改变相应的定时常数即可。 音乐产生的方法: 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表4.1所示: 表4.1 高中低音符与单片机计数T0相关的计数值 音符 对应的PR2值 音符 对应的PR2值 M_1 119 M_2 105 M_3 94 M_5 79 M_6 70 H_1 59 L_5 158 L_6 141 如表4.2所示:音乐的音拍,一个节拍为单位(C调) 表4.2 音乐的音拍 曲调值 DELAY 曲调值 DELAY 调4/4 125ms 调4/4 62ms 调3/4 187ms 调3/4 94ms 调2/4 250ms 调2/4 125ms 对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。发音部分代码在程序中实现,靠单片机的一个管脚输出,考虑到声音可能不够大所以我们加入了功放电路,利用LM386来对声音信号进行放大。音频输出信号由ADU OUT引出,信号可经功放电路LM386输出到扬声器或耳机。 软件流程图 程序代码如下所示: ;乐曲名:友谊天长地久******************************* ;文件名“3.ASM” ;功能:单片机演奏乐曲实验 ;*********************************************************************** #include p16f877a.inc #DEFINE youyi 0X2100 ;乐谱编号 #define L_5 .158 #define L_6 .141 #define M_1 .119 #define M_2 .105 #define M_3 .94 #define M_5 .79 #define M_6 .70 #define H_1 .59 #define M_0 .0 ; tone[8]={158,141,119,105,94,79,70,59};声调的高低,实际上是PWM的周期值 ;计算方法是CCP的时钟1MHz除以预分频比16,再除以要产生的频率,最后再减去1。 PORTD_D EQU 20H ;显示缓冲器COUNT COUNT1 EQU 21H COUNT2 EQU 22H COUNT3 EQU 23H COUNT4 EQU 24H SAVEW EQU 25H ;W保护寄存器 SAVES EQU 26H ;STATUS保护寄存器 COUNT5 EQU 27H ;节拍数 H EQU 28H ;地址寄存器 HANG EQU 29H ;行寄存器 LIE EQU 30H ;列寄存器 TMP1 EQU 31H ;TMP1缓存寄存器 Byte EQU 32H ;缓存 Count6 EQU 33H ;节拍数 Count7 EQU 34H ;节拍数 DD_RAM_ADDR EQU 35H ; 第一行显示地址寄存器 DD_RAM_UL EQU 36H ; 第二行显示地址寄存器 COUNT EQU 37H Count EQU 38H ;计数寄存器 Count2 EQU 39H ;**************************

您可能关注的文档

文档评论(0)

lovehome + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档