基于51单片机的复音电子琴课程设计.doc





《基于51单片机的复音电子琴课程设计.doc》由会员分享,可在线阅读,更多相关《基于51单片机的复音电子琴课程设计.doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于51单片机的复音电子琴课程设计刘汇鹏课程组1班指导老师:宋荣摘要:本设计是基于数字电路为基础,以单片机技术为核心,软件设计采用模块化结构,采用C语言编程,通过按键控制,可以发出两个不同的声音,并实现音乐盒的功能。内容上首先描述系统硬件工作原理,介绍各个接口模块的功能,而后介绍软件上的各个功能模块。关键字:单片机,电子琴,STC90C51一 绪论 随着科学技术的迅速发展,尤其是在电子领域上的发展,让电器走进千家万户,越来越多的物件可以用电器用品代替,电子乐器渐渐代替传统乐器出现在众人眼前,电子乐器相比于传统乐器更轻便,也更加便宜,让乐器走进千家万户,这次制作的核心在于单片机,单片机体积小,性
2、能好,造价便宜。并且能实现强大的功能。复音电子琴不仅能够实现复音效果,还能成为一个音乐盒,这也是得益于单片机的强大功能。二 设计要求与方案(一) 设计要求1能够实现电子琴的复音功能。2能够实现音乐盒的功能(二) 设计方案1. 关于电子琴的发声原理本作品采用了用单片机模块产生的频率进行输出,蜂鸣器作为输入,蜂鸣器收到来自单片机控制端口的不同频率的信号,会发出对应的声音频率,这就完成了从电信号转换成声音信号的过程。2. 关于电子琴的复音功能复音是指由许多纯音组成的声音。复音的频率用组成这个复音的基音的频率来表示。一般乐器发出的声音都是复音。由于单片机程序执行是按照顺序执行,所以本作品利用两个单片机
3、模块,一个单片机模块控制一个蜂鸣器,再用8个独立按键作为键盘,当两个不同按键被按下的时候,两个蜂鸣器能几乎同时发出这两个声音。在空间中产生和弦效果。使之相比于单音电子琴能使旋律变得更加丰富。3. 关于音乐盒功能按下按键后能够播放音乐。利用单片机片内存储功能,通过软件编程的方式,将一些曲目编写在片内ROM里,通过按下控制键加普通按键,实现8个独立按键的功能转换。4. 关于单片机芯片的选择方案一:采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电
4、路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二: 采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用AT89S52作为主控制系统。三 硬件设计(一) 系统硬件概述1. 硬件电路设计框图蜂鸣器单片机A单片机B蜂鸣器独立按键图1 硬件电路设计框图2.
5、硬件电路设计概述硬件电路由两片AT89C52单片机芯片为核心,接上复位电路,晶振电路,按键电路以及发声电路组成的。通过软件编程,编写代码烧写到单片机芯片里,配合复位电路和晶振电路组成单片机最小系统,晶振产生的频率由单片机进行程序控制,得到想要的电信号频率。通过两个单片机控制端,使单片机能够准确得到两个按键信号,并使对应的蜂鸣器发声。(二) 主要单元电路设计1. 晶振电路设计晶振电路如图2所示图2 晶振电路2. 复位电路设计复位电路如图3所示,使两片单片机芯片共用一个复位按键,相比互相独立的两个复位按键的单片机模块更加便捷。图3 复位电路设计3. 按键电路设计按键电路如图4所示,使两片单片机共同
6、对独立按键的信号进行实时扫描,读取信号进行下一步操作。图4 按键电路设计四 软件设计(一) 单片机发音原理1音调的确定 音调就是我们常说的音高。它是由频率来确定的!我们可以查出各个音符所对应的相应的频率,那么现在就需要我们来用51来发出相应频率的声音!我们常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢? 以标准音高A为例:A的频率f=440Hz,其对应的周期为:T=1/f=1/440=2272s那
7、么,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t=T/2=2272/2=1136s,也就是清零、置位在一个周期内完成。这个时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定:t=12*(TALLTHL)/f0式中TALL=216=65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为:TH=THL/256=(TALL-t*f0/12)/256TL=THL%256=(TALL-t*f0/12)%256将t=1136s代入上面两式(注意:计算时
8、应将时间和频率的单位换算一致)即可求出标准音高A。在单片机晶振频率f0=12Mhz,定时器在工作方式1下的时器高低计数器的予置初值为:TH440Hz=(655361136*12/12)/256=FBHTL440Hz=(655361136*12/12)%256=90H就这样,我们通过延时,发出了我们所需要的频率,同理可求出其他音频。如图5所示:图5 音符频率表(二) 软件流程图软件流程图如图6,图7所示开始开始 N N 判断是否有按键按下? 判断是否有按键按下? Y Y 延时去抖 延时去抖 发出对应按键的声音 发送标志位为1的命令 判断标志位是否为1? 发出对应按键的声音 N N 判断是否松手
9、Y 结束图6 电子琴流程图开始 N 判断控制位是否为1 Y N 判断是否有按键按下 Y 播放音乐 结束 图7 音乐盒程序流程图(三) 程序代码1. 主单片机程序代码#include unsigned char temp;/unsigned char key;unsigned char STH0;unsigned char STL0;unsigned int code tab= /音符表0,/DO DO# RE RE# MI FAFA# SOSO# LA LA# SI63628,63731,63853,63928,64021,64103,64185,64260,64331,64400,64463
10、,64524,64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,64994,65030,65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,65297,65311,65323,65335,65346,65357,65367,65377,65385,65394,65402,65409;void delaymusic(unsigned char d) unsigned long e,f;for(e=0;ed;e+)for(f=0;f100
11、0;f+);/音符定义void x0(unsigned char g)EA=0;STH0=tab0/256;STL0=tab0%256;TR0=1;delaymusic(g);TR0=0;void m1(unsigned char g)EA=1;STH0=tab1/256;STL0=tab1%256;TR0=1;delaymusic(g);TR0=0;void m1_(unsigned char g)EA=1;STH0=tab2/256;STL0=tab2%256;TR0=1;delaymusic(g);TR0=0;void m2(unsigned char g)EA=1;STH0=tab3/
12、256;STL0=tab3%256;TR0=1;delaymusic(g);TR0=0;void m2_(unsigned char g)EA=1;STH0=tab4/256;STL0=tab4%256;TR0=1;delaymusic(g);TR0=0;void m3(unsigned char g)EA=1;STH0=tab5/256;STL0=tab5%256;TR0=1;delaymusic(g);TR0=0;void m4(unsigned char g)EA=1;STH0=tab6/256;STL0=tab6%256;TR0=1;delaymusic(g);TR0=0;void m
13、4_(unsigned char g)EA=1;STH0=tab7/256;STL0=tab7%256;TR0=1;delaymusic(g);TR0=0;void m5(unsigned char g)EA=1;STH0=tab8/256;STL0=tab8%256;TR0=1;delaymusic(g);TR0=0;void m5_(unsigned char g)EA=1;STH0=tab9/256;STL0=tab9%256;TR0=1;delaymusic(g);TR0=0;void m6(unsigned char g)EA=1;STH0=tab10/256;STL0=tab10%
14、256;TR0=1;delaymusic(g);TR0=0;void m6_(unsigned char g)EA=1;STH0=tab11/256;STL0=tab11%256;TR0=1;delaymusic(g);TR0=0;void m7(unsigned char g)EA=1;STH0=tab12/256;STL0=tab12%256;TR0=1;delaymusic(g);TR0=0;void n1(unsigned char g)EA=1;STH0=tab13/256;STL0=tab13%256;TR0=1;delaymusic(g);TR0=0;void n1_(unsig
15、ned char g)EA=1;STH0=tab14/256;STL0=tab14%256;TR0=1;delaymusic(g);TR0=0;void n2(unsigned char g)EA=1;STH0=tab15/256;STL0=tab15%256;TR0=1;delaymusic(g);TR0=0;void n2_(unsigned char g)EA=1;STH0=tab16/256;STL0=tab16%256;TR0=1;delaymusic(g);TR0=0;void n3(unsigned char g)EA=1;STH0=tab17/256;STL0=tab17%25
16、6;TR0=1;delaymusic(g);TR0=0;void n4(unsigned char g)EA=1;STH0=tab18/256;STL0=tab18%256;TR0=1;delaymusic(g);TR0=0;void n4_(unsigned char g)EA=1;STH0=tab19/256;STL0=tab19%256;TR0=1;delaymusic(g);TR0=0;void n5(unsigned char g)EA=1;STH0=tab20/256;STL0=tab20%256;TR0=1;delaymusic(g);TR0=0;void n5_(unsigne
17、d char g)EA=1;STH0=tab21/256;STL0=tab21%256;TR0=1;delaymusic(g);TR0=0;void n6(unsigned char g)EA=1;STH0=tab22/256;STL0=tab22%256;TR0=1;delaymusic(g);TR0=0;void n6_(unsigned char g)EA=1;STH0=tab23/256;STL0=tab23%256;TR0=1;delaymusic(g);TR0=0;void n7(unsigned char g)EA=1;STH0=tab24/256;STL0=tab24%256;
18、TR0=1;delaymusic(g);TR0=0;void x1(unsigned char g)EA=1;STH0=tab25/256;STL0=tab25%256;TR0=1;delaymusic(g);TR0=0;void x1_(unsigned char g)EA=1;STH0=tab26/256;STL0=tab26%256;TR0=1;delaymusic(g);TR0=0;void x2(unsigned char g)EA=1;STH0=tab27/256;STL0=tab27%256;TR0=1;delaymusic(g);TR0=0;void x2_(unsigned
19、char g)EA=1;STH0=tab28/256;STL0=tab28%256;TR0=1;delaymusic(g);TR0=0;void x3(unsigned char g)EA=1;STH0=tab29/256;STL0=tab29%256;TR0=1;delaymusic(g);TR0=0;void x4(unsigned char g)EA=1;STH0=tab30/256;STL0=tab30%256;TR0=1;delaymusic(g);TR0=0;void x4_(unsigned char g)EA=1;STH0=tab31/256;STL0=tab31%256;TR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 复音 电子琴 课程设计

限制150内