c51单片机课程设计——电子琴.doc_第1页
c51单片机课程设计——电子琴.doc_第2页
c51单片机课程设计——电子琴.doc_第3页
c51单片机课程设计——电子琴.doc_第4页
c51单片机课程设计——电子琴.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告姓名:曹 飞 龙班级:101班学号:10101230课程设计名:简易电子琴指导老师:胡启龙一、概述:本系统设计制作一个可演奏的电子琴。综合应用了两项设计:(1)能产生纯音,了解音调高低的控制方法,用键盘代替电子琴的键盘,控制演奏音乐。(2)演奏一支乐曲(天空之城)。 那音阶要怎么使用C51单片机产生呢?C51在这项工作中运用它哪些资源呢?我们怎么实现一个按键对应一个音阶呢?二、系统描述:(1)我们从初中开始就知道,声音是由振动产生的,基本的这7个音阶的频率之间满足某种数学关系由低到高排列的自然音,所以我们可以通过改变单片机输出频率就可以得到不同的音阶;(2)为了得到精确的频率(周期的倒数),我们可以使用C51单片机定时中断模块。(3)通过判断按键是否被按下,然后执行该按键按下时的函数(在程序中是改变T1的初值得到实现)。需要注意的是,在该程序中让8051的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。记数脉冲值与频率的关系公式如下:N=Fi/2/Fr N:记数值Fi:内部计时一次为1微秒故其频率为1MHZ Fr;要产生的频率起记数值的求法如下:T65536N65536Fi2Fr例如:设K65536,F1000000Fi1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。T65536N65536Fi2Fr6553610000002Fr65536500000Fr低音D0的T6553650000026263627中音D0的T6553650000052364580低音D0的T65536500000104765059详细的音阶频率与计数初值可参考附录一;三、电路设计1单片机最小系统模块2.三极管信号放大模块扬声器发出对应音符模块如下:3.按键电路模块:四程序设计:本系统的程序流程图如下:开始模块初始化音乐控制按键是否按下?播放音乐音符按键是否按下?播放音符按键所对应的音符终止程序如下:#include #define uchar unsigned char#define uint unsigned intsbit kongzhi=P11;sbit fm=P10; /蜂鸣器输出的IO口uchar timeh,timel,i=8,t; /timeh,timel为定时器高低4位,i为演奏音符个数uchar code yinyue=0x63,0x71,0x83,0x71,0x82,0xA2,0x76,0x32,0x32,0x63,0x51,0x62,0x82,0x54,0x32,0x32,0x42,0x32,0x42,0x11,0x32,0x81,0x81,0x81,0x73,0x41,0x41,0x71,0x74,0x63,0x71,0x83,0x71,0x82,0xA2,0x74,0x31,0x31,0x63,0x51,0x62,0x82,0x54,0x31,0x42,0x83,0x71,0x71,0x83,0x91,0x91,0xA1,0x82,0x83,0x71,0x61,0x61,0x72,0x51,0x66,0xff;/-简谱-/1-7代表中音dosi,8代表高音douchar code yinfu=0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81,0xff;/-简谱音调对应的定时器初值-uchar code cuzhi= 0xff,0xff, /占位符0xFC,0x44,0xFC,0xAD,0xFD,0x0A,0xFD,0x34,0xFD,0x83,0xFD,0xC8,0xFE,0x06, /中音dosi的T计数初值0xFE,0x22,0xFE,0x57,0xFE,0x85,0xFE,0x9B,0xFE,0xC2,0xFE,0xE4,0xFF,0x03; /高音do的T计数初值void delay1ms(unsigned int ms); /延时ms毫秒子程序void delay165ms(uint z); /延时165ms,即1/4拍子程序void keysong(); /演奏子程序int key();void song();main()kongzhi=1;EA=1; /开总中断ET0=1; /开定时器0TMOD=0x01; /定时器0工作在方式1TH0=0;TL0=0;TR0=1;P3=0xff;while(1) if(kongzhi=0)song();elsekey(); keysong(); void song()uint temp;uchar jp; /jp是简谱18的变量t=0;while(1)temp=yinyuet; if(temp=0xff) break; /到曲终则跳出循环 jp=temp/16; /取数的高4位作为音调if(jp!=0)timeh=cuzhijp*2; /取T的高4位值timel=cuzhijp*2+1; /取T的低4位值elseTR0=0;fm=1; /关蜂鸣器delay165ms(temp%16); /取数的低4位作为节拍TR0=0; /唱完一个音停10msfm=1;delay1ms(10); TR0=1; t+;TR0=0;fm=1;void timer0() interrupt 1 /定时器0溢出中断子程序用于产生各种音调TH0=timeh;TL0=timel;fm=fm; /产生方波void keysong()uint temp;uchar jp; /jp是简谱18的变量i=key();delay1ms(50);if(i!=8)TR0=1;temp=yinfui; jp=temp/16; /取数的高4位作为音调if(jp!=0)timeh=cuzhijp*2; /取T的高4位值timel=cuzhijp*2+1; /取T的低4位值elseTR0=0;fm=1; /关蜂鸣器delay165ms(temp%16); /取数的低4位作为节拍TR0=0; /唱完一个音停10msfm=1;delay1ms(10); /TR0=1;/i+;TR0=0;fm=1;int key()switch(P2)case 0xfe: return 0;case 0xfd: return 1;case 0xfb: return 2;case 0xf7: return 3;case 0xef: return 4;case 0xdf: return 5;case 0xbf: return 6;case 0x7f: return 7;default: return 8;/函数名:delay165ms/函数功能:采用软件实现延时约z*165ms/形式参数:无 /返回值:无void delay165ms(uint z) /延时165ms,即1/4拍uint x;for(x=0;xz;x+) delay1ms(165);/函数名:delay1ms/函数功能:采用软件实现延时约ms*1ms/形式参数:无 /返回值:无void delay1ms(unsigned int ms) unsigned int i,j; for(j=0;jms;j+) for(i=0;i0x100;i+); 五制作与调试: 最后制作出的成品:六测试结果。该成品外观虽然不够美观,但是播放音乐功能,一个按键对应一个音阶的功能十分到位。总的来说,对于该成品老师和同学达成了同一共识:虽然丑了点,但很“温柔”(声音较小)。七结论。本次综合设计主要涉及硬件和软件两方面的内容,通过这次课程,我的硬件和软件开发能力都获得了提高。首先硬件方面,更加熟悉了51单片机的结构以及它的实用,基本了解了电子产品的开发流程和所要做的工作。 通过课程设计,我学到了很多,这些不仅仅局限于巩固复习了课本上知识点,还锻炼了自己分析问题以及动手实际操作的能力,将以前学过的零散的知识串到一起,学以致用。本系统基本上实现了按下键盘,扬声器播放对应的音符,同时单个程序也能播放歌曲,不足之处在于不能将按键和播放音乐的程序不能完美融合,只能在一定范围内满足按键或播放歌曲一种需要,且播放的声音太小,放大电路的选择方面的工作做得不是很好。附录一:音阶频率与计数初值对照表:音符频率计数处之音符频率计数初值音符频率计数初值低音12200xefa9中音14400xf7d8高音18800xfbef低音22470xf173中音24940xf8bd高音29880xfc

温馨提示

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

评论

0/150

提交评论