基于51单片机的音乐盒实验_第1页
基于51单片机的音乐盒实验_第2页
基于51单片机的音乐盒实验_第3页
基于51单片机的音乐盒实验_第4页
基于51单片机的音乐盒实验_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

基于51单片机的音乐盒实验实验时间:1实验目的学习使用51单片机的蜂鸣器实现:开关选择进入电子琴模式或者点歌模式:电子琴模式:按键发声(不同按键对应不同频率,理想为标准音阶)点歌模式:按键选择不同的预设的歌曲,播发选择的预设的音乐,并在LED点阵上面滚动显示歌词。2实验原理1.蜂鸣器原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器。通过编写程序改变电平与加入延时过程产生不同频率的方波,使其连接B5区的蜂鸣器BUZZ接线柱,则可播放该频率对应的声音。led点阵显示的原理点阵显示器每一列的阴极连在一起,对每一列而言相当于一个共阴显示器。同时每一行的阳极连在一起,相当于七段显示器的笔划。这样,可以把5X7的发光二极管点阵看作一个五位显示器。可采用动态显示电路,以笔划锁存器控制行信号,以位锁存器控制列信号。使用两片8位输出锁存移位寄存器74HC595(三态输出、串入并出),将单片机I/O口发出的串行数据转换为并行数据LD_QA~LD_QP,作为16×16LED点阵显示器的行线,使用另外两片8位74HC595作为16×16LED点阵显示器的列线LD_1~LD_16。当行输出高电平、列输出低电平时,可以点亮点阵。音乐频率计算原理简谱中的1234567对应这CDEFGAB,也就是doremi....根据下表可以知道音阶对应的频率:音名c1 #c1 d1 #d1 e1 f1#f1g1#g1a1#a1b1

频率261.6277.2293.7311.1329.6349.2370.0392.0415.3440.0466.2493.9

音名c2#c2d2 #d2 e2 f2#f2 g2 #g2a2#a2 b2

频率523.3554.4587.3622.3659.3698.5740.0784.0830.6880.0932.3987.8由简谱第一个音5即g1找到对应的频率为392.0hz1/392/2*100=127.55≈128,其中除以2是因为每个周期里方波需要翻转2次,*100是因为需要以10US为单位,方便程序编写。可得下表3实验内容单独测试几个独立模块的程序效果:电子琴模块,按键发音

,按下不同的按键会是蜂鸣器发出不同频率的声音。点歌模块,按键选择不同的预设的歌曲,播放预设音乐。点阵水平滚动显示歌词。测试成功后,将几个模块结合在一起,完成音乐盒的设计。4Protel原理图5流程图开始开始存储下一对字模和扫描信号存储下一对字模和扫描信号将下一位字模信号和扫描信号分别送到P1.0P1.1将下一位字模信号和扫描信号分别送到P1.0P1.1锁存入移位寄存器锁存入移位寄存器还原首行次行变成首行还原首行次行变成首行16位输出完毕?N16位输出完毕?Y锁存入数据计数器锁存入数据计数器16行输出完毕?N16行输出完毕?N循环次数到?YN循环次数到?字符显示完毕?Y字符显示完毕?Y7源程序1.//标准音阶测试程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitBEEP=P3^7;sbitK1=P0^0;sbitK2=P0^1;sbitK3=P0^2;sbitK4=P0^3;sbitK5=P0^4;sbitK6=P0^5;sbitK7=P0^6;//延时voidDelay10US(uintx){uchart;for(t=0;t<1.10592*x;t++);}//按周期t发音voidPlay(uchart){uchari;for(i=0;i<100;i++){BEEP=~BEEP;Delay10US(t);}BEEP=0;}voidmain(){P1=0xff;BEEP=0;while(1){if(K1==0)Play(191);if(K2==0)Play(170);if(K3==0)Play(152);if(K4==0)Play(143);if(K5==0)Play(128);if(K6==0)Play(114);if(K7==0)Play(101);}}2.//标准音阶测试成功后,则用来测试生日歌#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitBEEP=P3^7;//生日快乐歌的音符频率表,不同频率由不同的延时来决定ucharcodeSONG_TONE[]={128,128,114,128,96,101,128,128,114,128,85,96,128,128,64,76,96,101,114,72,72,76,96,85,96,0};//生日快乐歌节拍表,节拍决定每个音符的演奏长短ucharcodeSONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0};//延时xMSvoidDelayMS(uintx){uchart;while(x--)for(t=0;t<110.592;t++);}//延时x*10USvoidDelay10US(uintx){uchart;for(t=0;t<1.10592*x;t++);}//播放函数voidPlayMusic(){uinti=0,j,k;while(SONG_LONG[i]!=0||SONG_TONE[i]!=0){//播放各个音符,SONG_LONG为拍子长度for(j=0;j<SONG_LONG[i]*20;j++){BEEP=~BEEP;//SONG_TONE延时表决定了每个音符的频率Delay10US(SONG_TONE[

温馨提示

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

评论

0/150

提交评论