单片机电子琴制作16按键

《单片机原理》课程设计说明书专业名称:电气工程及其自动化班级:11-2学号:姓名:指导教师:日期:2013.6.21《单片机原理课程设计》评阅书摘要本文设计了一种基于STC12C5A32S2单片机的电子琴电路。

该方案利用单片机定时器产生固定频率的方波信号以驱动蜂鸣器发出一定的旋律,通过矩阵键盘中的相应的按键来输入使蜂鸣器发出相对音阶的单音。

同时设计还有自动存储所输入的单音,之后再一起自动演奏出来的功能。

本设计通过控制单片机定时器的定时时间产生不同频率的音频脉冲,经三极管放大信号后驱动蜂鸣器发出不同音节的声音。

要实现7个音符的各自的高、中、低音,需要建立三个表,分别存储高音、中音和低音的频率值;默认为中音输出,当二个按键开关中某一个按下,通过软件选择相应的音频。

按下弹奏键就可弹奏出不同的声音。

另外用软件延时来控制发音时间的长短,来控制节拍。

通过把乐谱中的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器中。

由程序查表得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出该音频脉冲的持续时间,这样就可以实现乐曲的演奏。

本设计为实物电路板设计开发,报告中详细的阐述了电子琴设计的方法和过程。

并经过软硬件的调试,该音乐发生器不但能通过键盘弹奏出很好的音调,而且还可以通过键盘选择播放不同的音乐。

本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

关键词:STC12C5A32S2 单片机定时器电子琴目录摘要 ....................................... 错误!未定义书签。

第一章引言 . (2)第二章电子琴电路硬件电路设计 .............. 错误!未定义书签。

2.1单片机的介绍与组成 (4)2.2单片机主控电路 (4)2.3 4×4矩阵键盘电路 (5)2.4 蜂鸣器电路 (5)第三章电子琴电路软件设计 .................. 错误!未定义书签。

3.1 程序设计流程图...................... 错误!未定义书签。

3.2音乐播放部分 (5)3.3电子琴弹奏部分 (5)3.4发音原理 (5)第四章程序 ................................ 错误!未定义书签。

心得体会 ................................... 错误!未定义书签。

参考文献 (11)附件错误!未定义书签。

第一章引言随着计算机在社会各领域的渗透,单片机的应用正在不断地走向深入,同时带动着工业、农业、商业、家电以及玩具的日新月异更新,极大地提高了电子电路及系统设计质量和效率。

单片机是指一个集成在一块芯片上的完整计算机系统。

尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。

单片机由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。

STC单片机是一款增强型51单片机,完全兼容MCS-51。

STC12C5A32S2可以代替AT89C51,而且功能更强,速度更快,寿命更长,价格更低。

该单片机具有40个引脚,采用双列直插式封装。

可以完成ISP在线编程功能。

本设计是以主控芯片STC12C5A32S2为中心器件,辅以小键盘、发光二极管、和蜂鸣器电路来设计电子琴系统,同时详细论述了该系统的设计过程及关键技术。

第二章电子琴硬件电路设计2.1 51单片机的介绍与组成51单片机是对所有兼容Intel 8031指令系统的单片机的统称。

该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。

很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。

51单片机是基础入门的一个单片机,还是应用最广泛的一种。

需要注意的是52系列的单片机一般不具备自编程能力。

组成:8位CPU·4kbytes程序存储器(ROM) (52为8K)·128bytes的数据存储器(RAM) (52有256bytes的RAM)·32条I/O口线·111条指令,大部分为单字节指令·21个专用寄存器·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)·一个全双工串行通信口·外部数据存储器寻址空间为64kB·外部程序存储器寻址空间为64kB·逻辑操作位寻址功能·双列直插40PinDIP封装·单一+5V电源供电CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。

最高振荡频率为12M《单片机原理课程设计》说明书2.2 单片机主控电路图5 单片机主控电路图6 单片机复位电路该电路采用的是STC12C系列的单片机,此系列单片机是宏晶科技生产的单时钟/机器周期单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

资源丰富。

复位电路采用的是按键手动复位。

时钟电路采用的是12M晶振,用内部振荡器。

2.3 4×4矩阵键盘电路图3 矩阵键盘电路矩阵键盘共有16个按键,其中s1-s7分别是中音的do-ti控制键,s8-s14分别是高音的do-ti的控制键,而s15和s16则是音乐的播放和控制键。

占用单片机的P1口。

2.3 蜂鸣器电路图4 蜂鸣器电路蜂鸣器电路主要是系统的发音电路。

用PNP三极管8550来驱动蜂鸣器发声。

第三章电子琴电路软件设计3.1程序流程图3.2 音乐播放部分音乐实际上是固定周期的信号。

本系统是用AT89S52 的定时器控制,在P3.6脚上输出方波周期信号,产生音乐。

乐曲中,每一音符对应着确定的频率,我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。

在输出中我们用蜂鸣器及其驱动电路实现发声。

3.3电子琴弹奏部分本系统设置了16个按键,其中三个按键为高音、中音、低音的选择按键,其余为发音按键,按下不同的按键产生不同的音符,通过按键时间的长短控制发音的长短,这样弹奏人员可以随心所欲的弹奏自己所喜爱的乐曲。

电子琴弹奏实际上就是把每个按键所对应的值经过处理后发给单片机,再在单片机内把数字当作指针指向所对应的音符。

我们运用单片机的最小系统,用P2口的低三位作高音、中音、低音的选择按键的接口,用P1口的低七位作发音按键的接口。

3.4 具体发音原理一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把各个音阶对应频率关系弄正确即可。

若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。

利用定时器计时半周期时间,每当计时终止后就将蜂鸣器端口反相,然后重复计时再反相。

就可在该引脚上得到此频率的脉冲实现发音。

利用AT89S52的内部定时器使其工作计数器模式(MODE1)下,改变计数初值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。

计数脉冲值与频率的关系式是:N=fi÷2÷fr式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr 是想要产生的频率。

其计数初值T的求法如下:T=65536-N=65536-fi÷2÷fr例如:设K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO (1046Hz)的计数值。

T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr低音DO的T=65536-50000/262=63628中音DO的T=65536-50000/523=64580高音DO的T=65536-50000/1046=65058因此,可以通过计算求得各音阶的简谱码T值如下:1 Do的T=65536-50000/262.1=636282 Re的T=65536-50000/293.7=638363 Mi的T=65536-50000/329.6=640214 Fa的T=65536-50000/349.2=641045 So的T=65536-50000/392.0=642616 La的T=65536-50000/440.0=644007 Si的T=65536-50000/493.9=64524相应求得在要发出不同音符时先给定时器T0装入的初值如下表:第四章程序#include <REG52.H>#define SYSTEM_OSC 24000000 //定义晶振频率12000000HZ#define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔sbit BeepIO= P3^7; //定义输出管脚#define uchar unsigned charuchar code a[4]={0xfe,0xfc,0xfb,0xf7};#define uint unsigned intuchar code b[4]={0xef,0xdf,0xbf,0x7f};unsigned int code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440, 466,494 }; //原始频率表unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 }; //1~7在频率表中的位置unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 };unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存void InitialSound(void){BeepIO = 0;Sound_Temp_TH1 = (65535-(1/2400)*SYSTEM_OSC)/256; // 计算TL1应装入的初值(10ms的初装值)Sound_Temp_TL1 = (65535-(1/2400)*SYSTEM_OSC)%256; // 计算TH1应装入的初值TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TMOD |= 0x11;ET0 = 1;ET1 = 0;TR0 = 0;TR1 = 0;EA = 1;}char num;void BeepTimer0(void) interrupt 1 //音符发生中断{BeepIO = !BeepIO;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0;}void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,u nsigned int Speed){unsigned int NewFreTab[12]; //新的频率表unsigned char i,j;unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T, SoundLength;unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;for(i=0;i<12;i++) // 根据调号及升降八度来生成新的频率表{j = i + Signature;if(j > 11){j = j-12;NewFreTab[i] = FreTab[j]*2;}elseNewFreTab[i] = FreTab[j];if(Octachord == 1)NewFreTab[i]>>=2;else if(Octachord == 3)NewFreTab[i]<<=2;}SoundLength = 0;while(Sound[SoundLength] != 0x00) //计算歌曲长度{SoundLength+=2;}Point = 0;Tone = Sound[Point];Length = Sound[Point+1]; // 读出第一个音符和它时时值LDiv0 = 24000/Speed; // 算出1分音符的长度(几个10ms)LDiv4 = LDiv0/4; // 算出4分音符的长度LDiv4 = LDiv4-LDiv4*SOUND_SPACE; // 普通音最长间隔标准TR0 = 0;TR1 = 1;while(Point < SoundLength){SL=Tone%10; //计算出音符SM=Tone/10%10; //计算出高低音SH=Tone/100; //计算出是否升半C urrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出对应音符的频率if(SL!=0){if (SM==1) CurrentFre >>= 2; //低音if (SM==3) CurrentFre <<= 2; //高音Temp_T = 65536-(50000/CurrentFre)*10/(24000000/SYSTEM_OSC);//计算计数器初值Sound_Temp_TH0 = Temp_T/256;Sound_Temp_TL0 = Temp_T%256;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿}SLen=LengthTab[Length%10]; //算出是几分音符XG=Length/10%10; //算出音符类型(0普通1连音2顿音)FD=Length/100;LDiv=LDiv0/SLen; //算出连音音符演奏的长度(多少个10ms)if (FD==1)LDiv=LDiv+LDiv/2;if(XG!=1)if(XG==0) //算出普通音符的演奏长度if (SLen<=4)LDiv1=LDiv-LDiv4;elseLDiv1=LDiv*SOUND_SPACE;elseLDiv1=LDiv/2; //算出顿音的演奏长度 elseLDiv1=LDiv;if(SL==0) LDiv1=0;LDiv2=LDiv-LDiv1; //算出不发音的长度if (SL!=0){TR0=1;for(i=LDiv1;i>0;i--) //发规定长度的音{while(TF1==0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;}}if(LDiv2!=0){TR0=0; BeepIO=0;for(i=LDiv2;i>0;i--) //音符间的间隔{while(TF1==0);TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TF1=0;}}Point+=2;Tone=Sound[Point];Length=Sound[Point+1];}BeepIO = 0;}void Delay1ms(unsigned int count){ unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<240;j++);}void scan(){ uchar i,j,c,temp;i=j=0;while(i<4){P2=a[i];temp=P2;if(temp!=a[i]){delay(10);temp=P2;if(temp!=a[i]){while(j<4){c=b[j]&a[i];if(P2==c)num=4*i+j+1;j++;}}}i++;}}unsigned char code Music_Girl[]={0x17,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x19,0x0D, 0x16,0x03, 0x17,0x03, 0x1A,0x03, 0x19,0x03, 0x10,0x03,0x16,0x03, 0x15,0x66, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x17,0x03, 0x1A,0x03, 0x19,0x0D, 0x17,0x03, 0x17,0x03, 0x1A,0x03, 0x19,0x03, 0x1A,0x03, 0x19,0x0D, 0x17,0x66, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x19,0x03, 0x1A,0x03, 0x19,0x0D, 0x17,0x03, 0x10,0x03, 0x17,0x03, 0x17,0x17, 0x16,0x17, 0x17,0x02, 0x17,0x02, 0x19,0x02, 0x1F,0x03, 0x19,0x03, 0x1A,0x16, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x19,0x02, 0x19,0x02, 0x17,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x20,0x03, 0x1F,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x19,0x0D, 0x19,0x66, 0x17,0x0D, 0x17,0x7A, 0x17,0x03, 0x19,0x03, 0x1F,0x03, 0x19,0x03, 0x1A,0x15, 0x1F,0x03, 0x20,0x03, 0x1F,0x03, 0x19,0x04, 0x17,0x04, 0x19,0x04, 0x1F,0x03, 0x1A,0x15, 0x17,0x04, 0x16,0x04, 0x17,0x04, 0x19,0x04, 0x21,0x04, 0x20,0x0C, 0x20,0x02, 0x1F,0x03, 0x1F,0x0D, 0x1F,0x15, 0x17,0x04, 0x16,0x04, 0x17,0x04, 0x19,0x03, 0x21,0x03, 0x20,0x02, 0x20,0x02, 0x1F,0x02, 0x1F,0x02, 0x1F,0x16, 0x17,0x04, 0x16,0x04, 0x17,0x04, 0x19,0x03, 0x21,0x03, 0x20,0x03, 0x20,0x01, 0x20,0x01,}; unsigned char code Music_a1[]={ 0x15,0x02, 0x00,0x00 }; unsigned char code Music_a2[]={ 0x16,0x02, 0x00,0x00 }; unsigned char code Music_a3[]={ 0x17,0x02, 0x00,0x00 }; unsigned char code Music_a4[]={ 0x18,0x02, 0x00,0x00 }; unsigned char code Music_a5[]={ 0x19,0x02, 0x00,0x00 }; unsigned char code Music_a6[]={ 0x1A,0x02, 0x00,0x00 }; unsigned char code Music_a7[]={ 0x1B,0x02, 0x00,0x00 }; unsigned char code Music_b1[]={ 0x0b,0x02, 0x00,0x00 }; unsigned char code Music_b2[]={ 0x0c,0x02, 0x00,0x00 }; unsigned char code Music_b3[]={ 0x0d,0x02, 0x00,0x00 }; unsigned char code Music_b4[]={ 0x0e,0x02, 0x00,0x00 }; unsigned char code Music_b5[]={ 0x0f,0x02, 0x00,0x00 }; unsigned char code Music_b6[]={ 0x10,0x02, 0x00,0x00 }; unsigned char code Music_b7[]={ 0x11,0x02, 0x00,0x00 };main(){ uchar k=1;InitialSound();while(1){ scan();if(!k) Play(Music_Girl,0,3,360);if(k){if(num==1)Play(Music_a1,0,3,360);if(num==2)Play(Music_a2,0,3,360);if(num==3)Play(Music_a3,0,3,360);if(num==4)Play(Music_a4,0,3,360);if(num==5)Play(Music_a5,0,3,360);if(num==6)Play(Music_a6,0,3,360);if(num==7)Play(Music_a7,0,3,360);if(num==9)Play(Music_b1,0,3,360);if(num==10)Play(Music_b2,0,3,360);if(num==11)Play(Music_b3,0,3,360);if(num==12)Play(Music_b4,0,3,360);if(num==13)Play(Music_b5,0,3,360);if(num==14)Play(Music_b6,0,3,360);if(num==15)Play(Music_b7,0,3,360);}if(num==16){if(k==1)k=0;else k=1;}num=0;}}心得体会经过一个星期的课程设计,过程曲折可谓一语难尽,感想颇多。

合集下载

基于51单片机的16键电子琴课程设计报告.docx

基于51单片机的16键电子琴课程设计报告.docx

基于51单片机的16键电子琴课程设计报告.docx
本课程设计旨在设计一款基于51单片机的16键电子琴,利用该电子琴进行乐器演奏
练习。

课程设计的目标是通过51单片机的控制,使乐器的按键实现发声功能,即在按下按
键后,将发出相应的音调,且声音质量较为清晰、拒绝杂音;同时,设计外设及程序使乐
器美观并能在一定程度上体现主人的个性操作习惯,体现出一定程度上的可定制性和稳定性。

课程设计使用MCS-51单片机作为核心芯片,搭建计算机与电子琴模块之间的桥梁,
通过控制要求,配备8位延时定时器、8位计数器/比较器和定时/计数器模块的硬件模块,通过定时/计数器去控制音色的发声数量,再加以PCB板设计,完成各模块的焊接、网络
接线,通过连接各功能模块,实现51单片机控制芯片,实现程序控制电子琴的具体功能。

最后,课程设计尝试完成女声、爵士电子琴等曲目,通过实验,充分验证设计的可行性,并发现一些在设计过程中的不足,如欠缺外设模块,无法实现一些特殊功能等,给出
相应的改善思路,以供设计实现。

在设计过程中,综合运用硬件电路设计、程序设计思维,构建整个系统的总体构架,
实现相应的电子琴演奏功能,使得本次课程设计取得了一定的成果。

基于51型单片机的十六音键电子琴设计

基于51型单片机的十六音键电子琴设计

基于单片机的十六音键电子琴设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

基于51单片机的16键电子琴课程设计报告

基于51单片机的16键电子琴课程设计报告
编写程序与编译
PROTEUS
绘制硬件电路图、数字仿真
Microsoft Visio
绘制程序流图与框图
1、3、2设计思路
(1)功能按键触发外部中断,以完成不同曲目得得切换。
(2)设置定时器产生不同频率得方波,I/O口输出,经功放后扬声器发声.
(3)采用4×4矩阵键盘弹奏16个音(低XI到高DO)。
2、电子琴得设计方案及原理
在此次课设中,我学到了很多,也通过不断纠正自己得错误,意识到自身得不足,我对知识得掌握还没有实现深层次得理解记忆,我相信这些教训都为我以后得学习奠定了良好得基础,时刻牢记团队合作、坚持与努力得重要性.
参考文献
[1]王思明,张金敏,苟军年、单片机原理及应用系统设计[M]、北京:人民邮电出版社,2008、
1、2设计要求
本设计主要就是用AT89C52单片机为核心控制元件,设计一个微缩版得电子琴。单片机与按键构成主控制模块,在主控制模块上设置有9个按键,分别达成不同目标。本系统主要为了完成电子琴得三大功能:电子琴弹奏与音乐播放及录音。
1、3电子琴设计方法
1、3、1设计工具
表1软件简介
软件名称
设计作用
KeiluVision4
3、1琴键控制电路
琴键控制电路作为人机联系得输入部分,也就是间接控制数码显示与音频功放得重要组成部分.键盘按照连接方式可以分为独立式与矩阵式键盘两类。
3、1、1矩阵式键盘
如图2所示为4X4矩阵式键盘电路,由一个4X4得行、列结构可以构成一个16个按键键盘.
矩阵中无按键按下时,行线为高电平;当有按键按下时,行线电平状态将由与此行线相连得列线得电平决定。列线得电平如果为低,则行线电平为低;列线得电平如果为高,则行线得电平也为高,这就是识别按键就是否按下得关键所在.

单片机电子琴制作按键

单片机电子琴制作按键

《单片机原理》课程设计说明书专业名称:电气工程及其自动化班级:11-2 _____________________学号:________________姓名:____________________指导教师:______________________日期:2013621《单片机原理课程设计》评阅书摘要本文设计了一种基于STC12C5A32S单片机的电子琴电路。

该方案利用单片机定时器产生固定频率的方波信号以驱动蜂鸣器发出一定的旋律,通过矩阵键盘中的相应的按键来输入使蜂鸣器发出相对音阶的单音。

同时设计还有自动存储所输入的单音,之后再一起自动演奏出来的功能。

本设计通过控制单片机定时器的定时时间产生不同频率的音频脉冲,经三极管放大信号后驱动蜂鸣器发出不同音节的声音。

要实现7个音符的各自的高、中、低音,需要建立三个表,分别存储高音、中音和低音的频率值;默认为中音输出,当二个按键开关中某一个按下,通过软件选择相应的音频。

按下弹奏键就可弹奏出不同的声音。

另外用软件延时来控制发音时间的长短,来控制节拍。

通过把乐谱中的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器中。

由程序查表得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出该音频脉冲的持续时间,这样就可以实现乐曲的演奏。

本设计为实物电路板设计开发,报告中详细的阐述了电子琴设计的方法和过程。

并经过软硬件的调试,该音乐发生器不但能通过键盘弹奏出很好的音调,而且还可以通过键盘选择播放不同的音乐。

本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

关键词:STC12C5A32S单片机定时器电子琴目录摘要....................... 错误!未指定书签。

第一章引言.................... 错误!未指定书签。

第二章电子琴电路硬件电路设计 02.1单片机的介绍与组成.............. 错误!未指定书签。

简易16键电子琴

简易16键电子琴
其中:one_Delay_Table[]={63628,63835,64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110};/*低3MI(1)低4FA(2)低5SO(3低6LA(4)低7SI(5)中1DO(6)中2RE(7)中3MI(8)中4FA(9)中5SO(10)中6LA(11)中7SI(12)高1DO(13)高2RE(14)高3MI(15)*/
DelayMS(255);
DelayMS(255);
}
}
}
DelayMS(2);
}
}
}
//******************结束******************//
8,8,9,9,9,9,7,7,7,7,8,8,8,8,8,8,8,8,9,9,8,8,8,8,8,8,7,7,7,4,5,5,6,6,8,8,14,14,14,14,17};//解放军军歌
void DelayMS(uchar x)//延时X毫秒
{
uchar i;
while(x--) for(i=0;i<120;i++);
TL0=Tone_Delay_Table[key[0]]%256;
BEEP0=~BEEP0;
}
void play_Tone_T1() interrupt 3 using 1//定时器1,键2的发音
{
TH1=Tone_Delay_Table[key[1]]/256;
TL1=Tone_Delay_Table[key[1]]%256;
BEEP1=~BEEP1;
}
uchar AutoPlay(void)//播放音乐

基于51单片机16音键电子琴设计

基于51单片机16音键电子琴设计

基于51单片机16音键电子琴设计作者:何奕飞来源:《中小企业管理与科技·上旬刊》2016年第01期摘要:本设计以51系列单片机为核心,由矩阵键盘、LED数码管、扬声器组成系统,通过脉冲信号触发产生出电子音调,系统具有显示输入信息、播放相应音符等基本功能。

系统的优点是通过软件编程控制简单的硬件电路实现设计,控制性能高,性价比高,具有一定的实用价值。

关键词:单片机;矩阵键盘;流程图电子琴是现代电子技术应用于音乐而制作的电子乐器。

单片机具有强大的控制及逻辑运算功能,以单片机为核心的电器设备已融入人们的日常生活中,如电视机、电冰箱、洗衣机、DVD、汽车音响等。

本文的主要内容是以单片机为核心器件,设计一个电子琴。

以单片机为核心与键盘、扬声器等组成电路作为核心控制模块,在控制模块上设有16个按键和扬声器。

本设计是简易电子琴的设计,当按下键盘矩阵中的按键时数码管会显示当前按钮并通过扬声器播放对应的音符。

通过本设计可掌握单片机的基本功能。

对单片机的应用会有一个质的提高。

1 系统框图及整体设计概述系统由单片机STC89C52、矩阵键盘模块、功率放大模块、扬声器、USB供电电源所组成。

系统主要完成对键盘的响应、数码管显示等功能的控制,起到总控和协调各模块之间工作的作用。

单片机通过检测键盘输出对应频率的方波,后级通过LM386对功率进行扩大从而驱动扬声器发响。

2 系统的总体方案设计根据所要实现的功能划分,系统一共需要以下几个模块:主控模块、显示模块、时钟模块、功率放大模块,以下就针对这几个模块进行讨论。

主控模块采用51系列的单片机,该单片机是一个高可靠性,超低价,无法解密,高性能的8位单片机,32个I/O口,且STC系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。

显示模块采用LED数码管,数码管价格便宜,具有显示数字的功能,而本系统显示设计也只需要显示数字,采用动态扫描法使数码管与单片机I/O口相连占用单片机口线少。

基于单片机的简易电子琴的设计

22. 电子琴1 •实验任务(1 •由4X4组成16个按钮矩阵,设计成16个音 (2.可随意弹奏想要表达的音乐。

2. 电路原理图图 4.22.13. 系统板硬件连线(1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区 域中的SPK IN 端口上;5-IK Is s£ 52 嶺E 曾s B 9一10VLS 自rnrr空a §s ss §s 5S <區£§■& ■ss:官益CKHFC d §2R STTL CflFz i ■Air氏疽氐氐M w &氏u>'sS.WOiw-rsswo(2.把“单片机系统“区域中的 P3.0 — P3.7端口用8芯排线连接到“ 4X4行列式键盘”区域中的C1— C4 R1— R4端口上; 4.相关程序内容1 . 4X4 行列式键盘识别; 2. 音乐产生的方法;一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我 们就可以利用不同的频率的组合, 即可构成我们所想要的音乐了, 当然对于单片 机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这 样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

现在以单片机12MHZ 晶振为例,例出高中低音符与单片机计数 T0相关的计数值 如下表所示低音 0—19之间,中音在 20—39之间,高音在 40—59之间TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0音符 频率(HQ 简谱码(T 值)音符 频率( HZ ) 简谱码(T 值) 低 1 DO 26263628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低 2 RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA69864820高 7 SI196765283下面我们要为这个音符建立一个表格, 的数据有助于单片机通过查表的方式来获得相应DW 0,63731,63928,0,64185,64331,64463,0,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0DW 0,65058,65110,65157,65178,65217,65252,65283,0,0DW 0,65085,65134,0,65198,65235,65268,0,0,0DW 02、音乐的音拍,一个节拍为单位(C调)曲调值DELAY 曲调值DELAY调4/4 125ms 调4/4 62ms调3/4 187ms 调3/4 94ms调2/4 250ms 调2/4 125ms对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。

51单片机16键电子琴汇编程序

KEYL EQU 30H ; 定义KEYL变量,用于键盘扫描KEYR EQU 31H ; 定义KEYR变量,用于键盘扫描VAL EQU 32H ; 定义键值变量VALORG 00HJMP START ; 主程序入口ORG 0BHJMP INT_T0 ; Timer 0中断入口START:MOV TMOD,#01H ; Timer 0作定时器,模式1LSCAN: ; 键盘按键判断MOV P2,#0F0H ; 列全为1L1: ; 判断第1行JNB P2.0,L2CALL DELAYJNB P2.0,L2MOV KEYL,#00HJMP RSCANL2: ; 判断第2行JNB P2.1,L3CALL DELAYJNB P2.1,L3MOV KEYL,#01HJMP RSCANL3: ; 判断第3行JNB P2.2,L4CALL DELAYJNB P2.2,L4MOV KEYL,#02HJMP RSCANL4: ; 判断第4行JNB P2.3,L1CALL DELAYJNB P2.3,L1MOV KEYL,#03HRSCAN:MOV P2,#0FH ; 键盘行输出1C1: ; 判断第1列JNB P2.4,C2MOV KEYR,#00HJMP CALCUC2: ; 判断第2列JNB P2.5,C3MOV KEYR,#01HJMP CALCUC3: ; 判断第3列JNB P2.6,C4MOV KEYR,#02HJMP CALCUC4: ; 判断第4列JNB P2.7,C1MOV KEYR,#03HCALCU: ; 计算按键号MOV A,KEYLMOV B,#04HMUL ABADD A,KEYRMOV VAL,AMOV DPTR,#TABLE ; 装表MOV B,#2MUL ABMOV R1,AMOVC A,@A+DPTR ; 把表中计数初始值装入累加器AMOV TH0,AINC R1MOV A,R1MOVC A,@A+DPTRMOV TL0,AMOV IE,#82H ; 使能Timer 0中断SETB TR0 ; 启动TimerW0: ; 等待按键释放MOV A,P2CJNE A,#0FH,W1CLR TR0 ; TRO清0JMP LSCANW1:MOV A,P2CJNE A,#0F0H,W2MOV P0,#00HCLR TR0JMP LSCANW2:JMP W0;Timer 0中断服务程序,输出某一频率的方波.INT_T0:MOV DPTR,#TABLEMOV A,VALMOV B,#2MUL ABMOV R1,AMOVC A,@A+DPTRMOV TH0,AINC R1MOV A,R1MOVC A,@A+DPTRMOV TL0,ACPL P1.0 ; 清P1.0口RETIDELAY:MOV R6,#10D1:MOV R7,#250DJNZ R7,$DJNZ R6,D1RETTABLE: ; 16个琴键发音频率的计数初始值DW 64021,64103,64260,64400DW 64524,64580,64684,64777DW 64820,64898,64968,65030DW 65058,65110,65157,65178END。

单片机电子琴制作16按键

《单片机原理》课程设计说明书专业名称:电气工程及其自动化班级:11-2学号:姓名:指导教师:日期:2013.6.21《单片机原理课程设计》评阅书摘要本文设计了一种基于STC12C5A32S2单片机的电子琴电路。

该方案利用单片机定时器产生固定频率的方波信号以驱动蜂鸣器发出一定的旋律,通过矩阵键盘中的相应的按键来输入使蜂鸣器发出相对音阶的单音。

同时设计还有自动存储所输入的单音,之后再一起自动演奏出来的功能。

本设计通过控制单片机定时器的定时时间产生不同频率的音频脉冲,经三极管放大信号后驱动蜂鸣器发出不同音节的声音。

要实现7个音符的各自的高、中、低音,需要建立三个表,分别存储高音、中音和低音的频率值;默认为中音输出,当二个按键开关中某一个按下,通过软件选择相应的音频。

按下弹奏键就可弹奏出不同的声音。

另外用软件延时来控制发音时间的长短,来控制节拍。

通过把乐谱中的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器中。

由程序查表得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出该音频脉冲的持续时间,这样就可以实现乐曲的演奏。

本设计为实物电路板设计开发,报告中详细的阐述了电子琴设计的方法和过程。

并经过软硬件的调试,该音乐发生器不但能通过键盘弹奏出很好的音调,而且还可以通过键盘选择播放不同的音乐。

本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

关键词:STC12C5A32S2 单片机定时器电子琴目录摘要 ....................................... 错误!未定义书签。

第一章引言 . (2)第二章电子琴电路硬件电路设计 .............. 错误!未定义书签。

2.1单片机的介绍与组成 (4)2.2单片机主控电路 (4)2.3 4×4矩阵键盘电路 (5)2.4 蜂鸣器电路 (5)第三章电子琴电路软件设计 .................. 错误!未定义书签。

51单片机简易电子琴设计

毕业设计(论文)课题名称:指导教师:系别:专业:班级:姓名:摘要音乐一直都是人类情感表达的一个重要媒介,随着社会的进步与发展,音乐在人类的生活与学习中的作用越发不可忽视。

电子琴也是实现播放音乐的一个途径。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器,它在音乐演奏中已成为不可缺少的一部分。

单片机是一个具有功能强大和编程灵活性的控制器,它已广泛应用于现代人们的生活中,扮演着重要的角色。

本设计主要是使用AT89C51单片机及单片机C语言,用AT89S51单片机为核心控制元件,设计一个电子琴。

以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。

在PROTEUS 仿真平台上实现功能仿真,同时还增加了音乐播放功能。

本文中给出了该系统设计的硬件电路,软件设计等。

其次,详细阐述了程序的各个模块和实现过程。

本设计具有硬件电路简单、功能完善、控制可靠、运行稳定等特点,具有一定的实用性。

关键词: 单片机;电子琴;PROTEUS;KEIL;C语言1.引言单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。

它的应用必定导致传统的控制技术从根本上发生变革。

因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。

它在现代音乐扮演着重要的角色。

简易电子琴是电声乐队的中坚力量,常用于独奏主旋律并伴以丰富的和声。

还常作为独奏乐器出现,具有鲜明时代特色。

但电子琴的局限性也是十分明显:旋律与和声缺乏音量变化,过于协和、单一;在模仿各类馆、弦乐器时,音色还不够逼真,模仿提琴类乐器的音色时,失真度更大,还需要不断改进。

单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。

本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档