单片机音阶设计.doc_第1页
单片机音阶设计.doc_第2页
单片机音阶设计.doc_第3页
单片机音阶设计.doc_第4页
单片机音阶设计.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

南湖学院课程设计报告课程名称:单片机原理及应用课程设计 系 部:机建系 专业班级:电气N112 学生姓名:冯倬程 完成时间:2013-7-10 报告成绩: 评阅意见:考勤20分设计完成度30分设计难度20分报告说明书30分总分100分 评阅教师 日期 音阶演奏一、任务设计:1、设计任务:以51单片机为核心,输出一段有14个音的音阶,音阶演奏由定时器控制完成。2、设计要求:在输出声音时如果连接了虚拟示波器,可观察到脉宽逐步减小,频率不断升高,如果CPU会因连接虚拟示波器而过载,导致声音播放失帧,这时可断开示波器再播放。二、方案论证:1、蜂鸣器:发音是蜂鸣器振动引起的,而振动则是对蜂鸣器电压断通引发的,控制电压的频率就是蜂鸣器振动的频率,取非则是对电压控制的断通控制,先是1,非后是0,再非又继续循环。有两种蜂鸣器,一种无源蜂鸣器吗,一种是有源,有源是指给它通上直流电,它就按本身固有的频率响(本身有震荡电路比如3K),而无源则相反,相当于喇叭,给喇叭通上直流电,是不会响的,需要交变的电压,这就是以上问题的蜂鸣器,这种蜂鸣器的振动频率是外部电路控制的,音调也即是可控的。改变高低电平的频率就是蜂鸣器的频率,可以通过定时器来改变。2、显示部分:采用LCD显示。LCD液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。3、单片机AT89C51:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。89C51仿真图三、总体方案:1. 单片机唱歌的基本原理:声音是空气的振荡,不同的振荡频率我们就可以听到不同声调的声音。音的频谱范围约在几十到几千赫兹。利用程序来控制单处机某个口线出一定频率的方波到蜂鸣器,蜂鸣器就可以发出一定音调的声音,若再利用不同的延时程序改变输出频率,就可以改变音调,进而就可让单片机发出“1”、“2”,“3”,“4”,“5”,“6”,“7”的音乐。 2. 软件设计:一、音调:输出不同频率的方波,以实现1、2、3、4等的不同音调;比如,发出200HZ的音频,其周期为1/200秒,即5ms。这样,当 P3.2的高电平或低电平的持续时间为2.5ms时,就能发出200HZ的音调。我们可以写一个延时子程序,用R3来提供参数,R3=1时,延时为20us,那么R3取2500/20=125(7DH)时,就可以发出200Hz的音调,提供不同的R3常数,可以得到不同的音调变化。附表给出了不同音阶对应的频率。类 型1234567音符C5D5E5F5G5A5B5频率/HZ523587659698784880987二、节拍:控制一个音符输出的时间,比如1拍、1/4拍。仅上所叙还不够,要准确奏出一首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。例如,一首曲子的节奏为每分种94拍,那么一拍就为60/94=0.64秒。音乐的节拍我们可用定时器来控制,简单的说,一个一拍的音符唱0.64秒,我们就设置一个定时器定时0.64秒,时间一到就换下一个音符。但是,由于单片机的T0,在12MHz晶振下最大定时时间只能为65毫秒,因此不可能直接用改变T0的时间初值来实现不同节拍。如何定时一个更大的时间,上节课我们已经讲了一个方法。我们可以用T0来产生10毫秒的时间基准,然后设置 一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。表2中也给出了各种节拍所对应的时间常数。例如对1/4拍音符,定时时间为0.16秒,相应的时间常数(中段计数器)为16(即10H);对3拍音符,定时时间为1.92秒,相应时间长数为192(即C0H)。HI=(8192-count)/32LO=(8192-count)%32方波宽度:t=1/f*1000000(us)定时器计数值:count=t/2程序中的数组HI_LIST和LO_LIST所保存的就是为产生频率为523HZ.587HZ分别需要的定时器的高字节和低字节。三、说明:本例的代码核心在于T0_INT定时器中断函数,从代码中可以看到,TH0与TL0是由音阶i决定的,需要播出不同频率的声音时,通过改变i值即可改变TH0与TL0的取值,这也同时影响了该函数的时间间隔,触发时间间隔越短,SPK=!SPK输出的频率越高。主程序中的for循环控制了14个音符的播放,TR0取1或0控制了声音的输出与暂停,delay(500)导致的主程序时延间,定时器会以一定的时间间隔持续触发,它使某个频率的音符输出能持续一定的时间,后一个delay(50)在一个音符输出结束后,形成一个较短的暂定间隔。四、仿真实图:等待时波形:播放时波形:五、源程序:/说明:本实验使用定时器演奏一段音阶,播放由K1控制。/#include#include#define uchar unsigned char#define uint unsigned intuchar i=0;/i:音符索引sbit SPK=p34;sbit K1=p10;/14个音符在方式2下的定时器值(TH0,YL0)uchar code HI_LIST=0,226,229,232,233,236,238,240,241,244,245,246,247,248;uchar code LO_LIST=0,4,13,10,20,3,8,6,2,23,5,26,1,4,3;/定时器0中断/viod T0_INT() interupt 1 TL0=HI_LISTi; TH0=HI_LISTi; SPK=!SPK; / /延时 / void delay(uint ms) uchar t;while(me-) for(t=0;t120;t+);/主程序/void main() IE=

温馨提示

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

评论

0/150

提交评论