51单片机电子琴
(完整版)基于51单片机的简易电子琴设计
(完整版)基于51单⽚机的简易电⼦琴设计基于51单⽚机的简易电⼦琴设计⼀.问题提出为什么选择简易电⼦琴设计?1.对于⾳乐的兴趣我们对⾳乐都有着浓厚的兴趣,喜欢听钢琴曲,如理查德·克莱德曼演奏的《思乡曲》《星空》《秋⽇的私语》等,⾳乐在我们的⽣活中扮演着很重要的⾓⾊。
有⼈曾说,喜欢⾳乐的⼈不会向恶。
以前不以为然,可是随着这些年来慢慢喜欢上阴郁,听了越来越多的钢琴曲之后,觉得这句话⾮常有道理。
⾳乐是⽤艺术家⽤⾳符记录世界,传达情感的⼀种艺术形式,⾳乐⾥有⼀种和谐之美,听⾳乐可以让⼈⼼情舒畅,与外界和谐统⼀。
⾳乐现在已经成为我⽣活中很重要的⼀部分,我们每周都会抽些时间去欣赏世界名曲,作为对精神的洗礼。
2.对于电⼦琴的好奇好奇是⼈的天性,⼈类对于⾃然的认识,对于科学的探索,⽆不始于好奇。
我们对电⼦琴如何实现其功能,如⾳⾊选择、声⾳强弱控制、节拍器、⾃动放⾳功能等等也很好奇,想通过学习单⽚机这个机会,深⼊了解电⼦琴的功能实现原理。
3.对于51单⽚机强⼤功能的信赖51单⽚机有基本特性:(1)⾯向控制的8位CPU和指令系统(2)4K字节的程序存储器(ROM或EPROM)(3)128字节的数据存储器(4)可编程的并⾏I/O⼝P0~P3,有32位双向输⼊/输出线(5)⼀个全双⼯串⾏⼝(6)两个16位定时器/计数器(7)五个中断源,两个优先级的中断结构(8)⼀个⽚内时钟振荡器和时钟电路(9)可以寻址64K字节的程序存储器和64K字节的外部数据存储器51单⽚机功能强⼤,性能⽇趋完善,在⼯业测控、智能仪器仪表、机电⼀体化产品、家电领域中应⽤⼴泛,因此基于51单⽚机设计简易的电⼦琴可⾏性⾮常⼤。
⼆.功能需求1.能够实现基本的琴键功能即每按下⼀个琴键,单⽚机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使蜂鸣器发出不同频率(⾳调)的声⾳,声⾳延迟⼀段时间,等到按键放开后,声⾳停⽌。
然后再继续扫描,看是否有键按下,如此循环下去,即可实现基本的琴键功能。
51单片机电子琴程序
#include<reg51.h>#include<absacc.h>#include<stdio.h>#include<math.h>#define uchar unsigned char#define uint unsigned intuchar STH0; //定时器计数初值uchar STL0;bit FY=0; //放乐曲时FY=1,电子琴弹奏时FY=0uchar Song_Index=0,Tone_Index=0; //放音乐的参数uchar k,key;sbit SPK=P3^7;sbit LED1=P1^0;sbit LED2=P1^1;uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6f,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79 ,0x71};uchar code Song[][50]={{1,2,3,5,7,8,4,3,4,3,4,5,4,6,3,4,5},{5,5,3,5,4,2,4,5,7,4,2,10,10,10,2,1,2,1,2,10,10},{5,5,10,9,8,5,5,5,5,10,9,8,6,6,6,11,12,9,6,8-1},{13,14,13,12,12,10,12,13,14,15,14,14},{6,6,11,10,9,12,12,12,12,13,12,11,9,8,10,10,10,-1},{9,13,13,13,13,8,13,13,13,13,14,15,14,13,13,14,12,13},};uchar code Len[][50]={{1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,2,2,2,1,2,2,1,2,2},{1,1,1,1,1,1,2,1,1,1,2,2,1,1,1,1,-1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},{1,1,2,0,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,2,0,1,2,1,2,1,2,1,2,1,2},{2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1},}; //音符与计数值对应表uint code tab[]={0,63628,63835,64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217,65252,65283};void delay1(uint ms) //播放歌曲时实现节拍的延时函数{uchar t;while(ms--) for(t=0;t<120;t++);}//键消抖延时函数void delay(void){uchar i;for(i=300;i>0;i--);}//键扫描函数uchar getkey(void){uchar scancode,tmpcode;if((P0&0xf0)==0xf0)return(0);scancode=0xfe;while((scancode&0x10)!=0){P0=scancode; //输入行扫描码if((P0&0xf0)!=0xf0) //本行有键按下{tmpcode=(P0&0xf0)|0x0f;return((~scancode)+~(tmpcode));}else scancode=(scancode<<1)|0x01;}}//外部中断0void EX0_INT() interrupt 0{FY=0;LED1=1;LED2=0;}//外部中断1,这里是播放按键void EX1_INT() interrupt 2{FY=1;LED1=0;LED2=1;}//定时器0中断服务子程序void time0_int(void) interrupt 1 using 0{TH0=STH0;TL0=STL0;SPK=!SPK;P2=DSY_CODE[k];void main(void){LED1=1;LED2=0;P2=0x3f;IE=0x87;TMOD=0x01;IT0=1;IT1=1;while(1){P0=0xf0;if((P0&0xf0)!=0xf0){delay();if((P0=0xf0)!=0xf0){key=getkey();switch(key){case 0x11:k=0;break;case 0x21:k=1;break;case 0x41:k=2;break;case 0x81:k=3;break;case 0x12:k=4;break;case 0x22:k=5;break;case 0x42:k=6;break;case 0x82:k=7;break;case 0x14:k=8;break;case 0x24:k=9;break;case 0x44:k=10;break;case 0x84:k=11;break;case 0x18:k=12;break;case 0x28:k=13;break;case 0x48:k=14;break;case 0x88:k=15;break;default:break;}if(FY==0){STH0=tab[k]/256;STL0=tab[k]%256;TR0=1;while((P0&0xf0)!=0xf0);TR0=0;}else{while(FY==1){if(Song[k][Tone_Index]==-1)Tone_Index=0;STH0=(tab[Song[k][Tone_Index]])/256;STL0=(tab[Song[k][Tone_Index]])%256;P2=DSY_CODE[Song[k][Tone_Index]];TR0=1;delay1(300*Len[k][Tone_Index]);Tone_Index++;TR0=0;}}}}}}关于“世上只有妈妈好”的单片机音乐演奏程序2009-11-22 21:45单片机演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。
基于51单片机的简单电子琴代码
基于51单片机的简单电子琴代码#include <AT89X52.h>sbit P10=P1^0;//高音阶,红灯sbit P11=P1^1;//中音阶,黄灯sbit P12=P1^2;//低音阶,绿灯sbit P13=P1^3;//蜂鸣器控制端口sbit P31=P3^0;//低音阶按键行sbit P32=P3^1;//中音阶按键行sbit P33=P3^2;//高音阶按键行sbit P35=P3^4;//播放音乐按键unsigned int i,j,k=0,l=0;unsigned char count1=0xff,count0=0x50;/*********************************数码管码表(P0)***********************************/unsigned char Tab[]={0XBF,0X06,0X5B,0X4F,0X66,//数码管0~40X6D,0X7D,0X07,0X7F,0X6F,//数码管5~90X77,0X7C,0X39,0X5E,0X79,0X71,0X00};//数码管A~F/************************************音阶控制**************************************/music_data_high[]={0xf8,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,//数组0~6 低音0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,//数组7~13 中音0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff};//数组14~20 高音music_data_low[]= {0xf3,0xb8,0x15,0xb9,0x4a,0xcf,0x0c,//数组0~6 低音0x44,0xac,0x09,0x34,0x82,0xc8,0x05,//数组7~13 中音0x4c,0x6d,0x94,0xad,0xd2,0xf3,0x02};//数组14~20 高音/******************************************************函数名:delayms*参数:n 延时毫秒数*功能:延时N毫秒*****************************************************/void delayms(unsigned char n){unsigned char a,b;for(a=100;a>0;a--)for(b=10*n;b>0;b--);}/******************************************************函数名:key_check*参数:无*功能:扫描按键并运行对应功能*****************************************************/void key_check(void){P2=0xff;P3=0xfe;if(P2!=0xff){ delayms(20);if(P2!=0xff){P10=1;P11=1;P12=0;switch(P2){case0xfe:EA=1;count1=0xf8;count0=0xf3;P0=Tab[1];delayms(50);bre ak;case0xfd:EA=1;count1=0xf9;count0=0xb8;P0=Tab[2];delayms(50);br eak;case0xfb:EA=1;count1=0xfa;count0=0x15;P0=Tab[3];delayms(50);bre ak;case0xf7:EA=1;count1=0xfa;count0=0xb9;P0=Tab[4];delayms(50);bre ak;case0xef:EA=1;count1=0xfb;count0=0x4a;P0=Tab[5];delayms(50);bre ak;case0xdf:EA=1;count1=0xfb;count0=0xcf;P0=Tab[6];delayms(50);bre ak;case0xbf:EA=1;count1=0xfc;count0=0x0c;P0=Tab[7];delayms(50);bre ak;defaule:break;}}}//else {EA=0;P13=1;}P2=0xff;P3=0xfd;if(P2!=0xff){ delayms(20);if(P2!=0xff){P10=1;P11=0;P12=1;switch(P2){case0xfe:EA=1;count1=0xfc;count0=0x79;P0=Tab[1];delayms(50);bre ak;case0xfd:EA=1;count1=0xfc;count0=0xbc;P0=Tab[2];delayms(50);bre ak;case0xfb:EA=1;count1=0xfd;count0=0x09;P0=Tab[3];delayms(50);br eak;case0xf7:EA=1;count1=0xfd;count0=0x44;P0=Tab[4];delayms(50);bre ak;case 0xef:EA=1;count1=0xfd;count0=0xa2;P0=Tab[5];delayms(50);break;case0xdf:EA=1;count1=0xfd;count0=0xd8;P0=Tab[6];delayms(50);br eak;case0xbf:EA=1;count1=0xfe;count0=0x05;P0=Tab[7];delayms(50);br eak;// defaule:break;}}}//else {EA=0;P13=1;}P2=0xff;P3=0xfb;if(P2!=0xff){ delayms(20);if(P2!=0xff){P10=0;P11=1;P12=1;switch(P2){case0xfe:EA=1;count1=0xfe;count0=0x4c;P0=Tab[1];delayms(50);bre ak;case0xfd:EA=1;count1=0xfe;count0=0x6d;P0=Tab[2];delayms(50);br eak;case0xfb:EA=1;count1=0xfe;count0=0x9f;P0=Tab[3];delayms(50);bre ak;case0xf7:EA=1;count1=0xfe;count0=0xad;P0=Tab[4];delayms(50);bre ak;case0xef:EA=1;count1=0xfe;count0=0xd2;P0=Tab[5];delayms(50);bre ak;case0xdf:EA=1;count1=0xfe;count0=0xf3;P0=Tab[6];delayms(50);bre ak;case0xbf:EA=1;count1=0xff;count0=0x02;P0=Tab[7];delayms(50);bre ak;// defaule:break;}}}if(P2==0xff) {EA=0;P13=1;}/******************************************************函数名:play_music*参数:无*功能:播放音乐*****************************************************/ void play_music(void){count1=music_data_high[0];count0=music_data_low[0]; EA=1;delayms(50);EA=0;delayms(5);}/******************************************************函数名:TIM0_init*参数:无*功能:定时器0初始化*****************************************************/ void TIM0_init(void){TMOD=0x01;TH0=count1;TL0=count0;EA=1;ET0=1;TR0=1;}void timer0(void) interrupt 1 using 0{TH0=count1;TL0=count0;P13=!P13;/***************************************************** *函数名:main*参数:无*功能:开跑程序*****************************************************/ void main(void){ P35=1;TIM0_init();//play_music();//while(1){ if(P35==0) {delayms(20);P35=1;play_music();} key_check();}}。
51单片机设计电子琴报告含代码
电子琴设计报告一、实验目的1.更深刻的了解、学习8051单片机的发声原理,利用定时器可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调。
2.其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,所以发出不同频率的脉冲。
3.进一步熟悉定时器的编程方法和定时初值的计算,进一步熟悉键盘扫描电路的工作原理和编程方法,了解单片机芯片的接口技术。
二、实验要求1.能够通过键盘演奏音符。
2.能够保存演奏的音乐,并实现回放。
3.有音调调整功能(如:C调,G调)。
4.自由发挥其他功能。
5.要求有单片机硬件系统框图,电路原理图,软件流程图。
三、实验基本原理简易电子琴有主控、蜂鸣器、键盘输入、电源四部分组成。
主控部分以AT89S52 为核心,用C 语言编程,充分运用AT89S52 的8k字节闪烁可编程可擦除只读存储器及其丰富的I/O 口,实现了对键盘数据的采集,和对蜂鸣器声音的控制;键盘输入部分采用4×4的键盘键盘输入,可以实现多个音调;供电部分可对整个电路进行供电。
经测试,整机基本实现预计功能,可以实现键盘演奏音符、调整音调、保存并回放的功能。
四、实验设计分析根据实验所要求实现的功能设计实现该项实验设计的软件电路及硬件电路。
五、实验要求实现A.电路设计1. 整体设计计划利用AT89S52 单片机的功能结合C 语言编程,实现电子琴播放音符等的简单功能,然后结合AT89S52 单片机的控制功能,利用蜂鸣器将输入表达出来,结合程序编制过程中,对各个I/O 的利用设置了键盘的扫描读入,结合电子琴需要多键位的现实,加入了4×4 键盘输入,达到了预期的效果。
2.分块设计1.控制模块AT89S52单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含有8kb的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
基于51单片机bluesky开发板的电子琴程序
#include<STC12C5A60S2.h>#include<LCD1602.h> //包含LCD1602的显示函数等#include<KEY_SCAN.h> //包含键值扫描函数,输出key_num#define FSCLK 11059200 //晶振频率sbit BEEP=P1^4; //蜂鸣器输出脚unsigned int fre[16]={100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1 400,1500,1600};//存好预定的频率值,可以设定任意想要的频率/********************************************************** ********************** 函数功能:延时函数,函数名Delay_ms() ** 函数说明:利用软件延时,占用CPU,经调试最小单位大约为1ms ** 入口参数:time:需要延时的时间,单位ms** 出口参数:无void Delay_ms(unsigned int time)unsigned int i,j;for(i = 0;i < time;i ++)for(j = 0;j < 930;j ++);** 函数功能:定时翻转跟蜂鸣器相连的引脚的电平,输出一定频率的脉冲信号** 函数说明:定时器0中断服务函数** 入口参数:无** 出口参数:无void time0() interrupt 1 //使用定时器0的工作方式2,定时器中断服务程序TH0 = (65536-FSCLK/(12*fre[piano]))/256; //每次中断,重新配置定时器的高8位TL0 = (65536-FSCLK/(12*fre[piano]))%256; //每次中断,程序配置定时器的低8位BEEP=!BEEP; //然后取反音乐输出,输出一个反电平} //短时间内多次取反则输出一定频率的脉冲/********************************************************** ********************** 函数功能:主函数** 入口参数:无** 出口参数:无void main()unsigned char piano=0,key=0; //初始值LCD_1602_Init(); //液晶显示前进行初始化TMOD = 0X01; //定时器使能TH0 = (65536-FSCLK/(12*fre[0]))/256; //配置定时器的高8位TL0 = (65536-FSCLK/(12*fre[0]))%256; //配置定时器的低8位ET0 = 1; //允许定时器0中断EA = 1; //打开总中断Write_1602_String("Welcome",0X80); //开机显示欢迎语:WelcomeWrite_1602_String("By 20192305007",0X80+0x40); //显示作者:20192305007Delay_ms(5000); //延时5s后开始进入正式程序LCD_1602_Init(); //液晶屏初始化Write_1602_String("Happy Play",0X80); //显示开始使用:Happy Playwhile(1){ //在这段函数中,不断扫描键值,每当键值不等于0时,说明有键被按下,//此时开始播放对应的音阶。
基于51单片机的电子琴设计【附原理图、PCB和程序】
课程设计说明书题目:基于单片机的电子琴设计院(系):电子工程与自动化学院专业:测控技术与仪器(卓越) 学生姓名:学号:指导教师:2013 年9 月21 日目录1 摘要 (1)2 关键字 (1)3 设计任务及要求 (1)4 方案可行性论证 (1)5 程序框图 (2)6 关键单元电路与程序介绍 (3)6.1 复位与震荡电路 (3)6.2 4x4矩阵键盘 (3)6.3数码管与LED灯 (4)6.4 蜂鸣器 (6)6.5 音乐相关知识 (7)7 调试过程 (11)8 总结与体会 (11)9 参考文献 (11)10 附录 (12)10.1 设备与仪器 (12)10.2 软件 (12)10.3 原件清单 (12)10.4原理图与PCB图 (13)10.5 总程序 (14)10.6 实物图 (31)【摘要】:打造一个多功能电子琴,核心是一块单片机。
单片机读取键值,为内置定时器赋初值,定时器每溢出一次,驱动蜂鸣器的引脚电平就取反一次,产生相应频率的方波,即音调;设好键值与数码管段码表的对应关系,键按下时,数码管显示对应音调。
一首音乐储存在一个表中,表中的数据是音调与节拍,单片机读取音符的音调与节拍,根据音调赋予定时器初值,根据节拍决定定时器工作的时间,也就是蜂鸣器响的时间,一个接一个地读取音符,即可播放一首歌曲。
节拍用led灯的点亮个数表示。
单片机读取音乐表中的节拍,控制led 灯的点亮个数,达到显示节拍的效果。
特别要注意的是:该方案采用了两个定时器,T0、T1。
T0作为驱动蜂鸣器的定时器,要给予高优先级,不然会被T1干扰,音质变差。
【关键字】:单片机、stc89c52、电子琴、C51、keil。
【设计任务及要求】:1.通过按键能够发出相应的音符并播放产生乐音,实现演奏;2.演奏的同时可数字显示当前的音调,利于培养乐感3.可以选定播放固定乐曲自动演奏,演奏时LED进行节拍指示;4.在自动演奏和奏乐的过程中按停止键则中断演奏;5.可以选择调节音或小。
基于51单片机的多功能电子琴的设计
基于51单片机的多功能电子琴的设计摘要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键、一排LED灯和扬声器。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
一、总体方案设计1、系统设计要求本系统分为三个部分,一个是音乐播放,一个是电子琴弹奏,和一个流水灯演示。
具体指标如下:1)要求达到电子琴的基本功能,可以用弹奏出简单的乐曲。
2.)用键盘作出电子琴的按键,每键代表一个音符。
3)各音符按一定的顺序排列,必须符合电子琴的按键排列顺序。
//4)固定音乐播放有按键控制:“播放”、“弹奏/停止”。
5)弹奏电子琴时能播放出准确的声音,不弹奏时可以播放内置音乐。
6)弹奏电子琴时,流水灯会不停的亮灭。
2、系统设计组成本系统分为两个部分,一个是音乐另一个就是电子琴。
音乐播放部分:乐音实际上是有固定周期的信号。
本文介绍用AT89C51的两个定时器(如T0,T1)控制,在P3.7脚上输出方波周期信号,产生乐音,通过矩阵键盘按键产生不同的音符,由此操作人员可以随心所欲的弹奏自己所喜爱的乐曲,同时,那排流水灯会不停的闪烁,当不想弹奏时通过按放歌键可以演奏事先存放在单片机中的几首动听的曲子供消遣。
当歌曲演奏完时,通过按复位键便可回到初始状态,这样就做出了一台微型电子琴。
由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
基于51单片机的简易电子琴设计
基于51单⽚机的简易电⼦琴设计基于51单⽚机的简易电⼦琴设计⼀、设计任务及要求1、在该简易电⼦琴设计中,设置8个按键,8个按键可以发出do、re、mi、fa、sol、la、si、Do 8个⾳阶。
2、设计三个拨码开关,三个拨码开关可以调节⾼⾳、中⾳、低⾳三个⾳调。
3、画出电路的总体⽅框图和电路原理图。
⼆、设计原理⾳乐由许多不同的⾳阶组成的,⽽每个⾳阶对应着不同的频率,这样,我们就可以利⽤不同的频率组合,构成我们想要的⾳乐。
简易电⼦琴是摁下拨码开关时,单⽚机AT89C51会发出声⾳,声⾳从P1.0端⼝经过LM386,经过放⼤以后传⼊喇叭。
声⾳主要是经过单⽚机4×4矩阵键盘的按键产⽣,这⾥只⽤到8个按键来产⽣⾼中低的8个⾳阶,来产⽣do re mi fa sol la si Do。
下⾯是计数初值:三、设计⽅案本次设计的电⼦琴主要是利⽤AT89C51单⽚机为核⼼控制元件,同时还包括键盘、拨码开关和扬声器等控制模块,由键盘选择⼋个⾳阶。
1、电路原理图的总体设计总体电路需要c51单⽚机⼀⽚,⾳乐按键及喇叭等外围电路,要进⾏⾳调控制和⾳频放⼤,设计好的电路图如下图所⽰:2、键盘控制模块的设计矩阵按键部分由8个轻触按键按照2⾏4列排列,连接到P3端⼝。
将⾏线所接的单⽚机的I/O⼝作为输出端,⽽列线所接的I/O,则作为输⼊。
⾏线输出是低电平,有健按下,则输⼊线就会被拉低,这样,通过读输⼊线的状态就可得知是否有键按下。
3、键盘消抖当⽤⼿按下⼀个键时,如图所⽰,往往按键在闭合位置和断开位置之间跳⼏下才稳定到闭合状态的情况;在释放⼀个键时,也回会出现类似的情况。
这就是抖动。
抖动的持续时间随键盘材料和操作员⽽异,不过通常总是不⼤于10ms。
⽤软件⽅法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,此后再读⼊键盘码。
⼀个单⽚机⼯作于12M晶振,它的时钟周期是1/12(微秒)。
它的⼀个机器周期是12*(1/12)也就是1微秒。
基于51单片机的电子琴设计说明
目录一、设计电子琴的作用与目的 (1)二、电子琴设计要求 (1)三、电子琴设计所用设备及软件 (2)四、电子琴系统设计方案 (2)五、电子琴系统硬件设计 (3)5.1 琴键控制电路 (3)5.1.1 矩阵式键盘 (3)5.1.2 独立式键盘 (4)5.1.3 方案比较 (4)5.2 数码管显示电路 (5)5.2.1 LED数码管显示原理 (5)5.2.2 LED数码管静态显示 (5)5.2.3 LED数码管动态显示 (6)5.2.4 方案比较 (7)5.3 音频功放电路 (7)5.4 时钟-复位电路 (8)5.4.1 时钟电路 (8)5.4.2 复位电路 (8)5.5 电源电路 (9)5.6 整体电路 (10)六、电子琴系统软件设计 (10)6.1 系统硬件接口定义 (10)6.2 主函数 (10)6.3 初始化函数 (11)6.4 数码管显示函数 (11)6.5 中断函数 (11)6.6 键值扫描函数 (12)6.7 音频处理函数 (13)七、电子琴设计调试 (14)7.1 调试工具 (14)7.2 调试结果 (14)7.3 电子琴设计中的问题及解决方法 (15)八、电子琴设计总结 (15)参考文献 (17)附录1:电子琴系统原理图 (18)附录2:源程序 (19)基于51单片机的电子琴设计在电子音乐领域,电子音调作为现代电子科技与音乐结合的产物,它在现代音乐中扮演着重要的角色。
目前,由于电子音乐的普及,电子音调合成器(合成器实际上就是一台声音的频率合成仪,可以制作各种声音,改变各种音色)可以解决相当一部分的歌唱及舞厅的伴奏问题。
其中,电子琴就是一种新型的键盘电子乐器。
一、设计电子琴的作用与目的音乐教育是学校美育的主要途径和最重要容,它在冶情操、提高素养、开发智力,特别是在培养学生创新精神和实践能力方面发挥着独特的作用。
近年来,我国音乐教育在理论与实践上都取得了有目共睹的成绩,探索并形成了具有中国特色的、较为完整的音乐教育教学体系。
基于51单片机实现的电子琴设计
目录摘要 (3)Abstract (3)1绪论 (4)1.1背景 (4)1.2目的 (4)1.3 意义 (4)1.4基本理论依据和主要工作内容 (4)2 设计方案简述 (6)2.1键盘模块 (6)2.2发声模块 (6)2.3 8X8点阵显示模块 (6)2.4系统技术指标和预期功能 (7)3 详细设计 (8)3.1主要IC芯片介绍 (8)3.2硬件设计 (11)4 设计结果及分析 (19)4.1 测试 (19)5总结 (20)参考文献 (21)附录主要程序代码 (22)摘要单片机的应用已经越来越贴近生活,用单片机来实现一些电子设计也变得容易起来。
本设计阐述的主要内容是一种基于51 单片机的电子琴的设计,其核心芯片AT89S52 单片机,内部电路包括4X4行列式键盘模块、音频放大模块和8X8LED点阵显示模块,本系统运行稳定,功能较为完善,控制系统可靠,性价比较高等,具有一定的实用价值。
对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,他可以显示字符、数字和简单图形,显示亮度较高,并且对环境条件要求比较低。
电子乐器的结构较为复杂,音源是由晶体管产生的电振动,并通过音色回路而产生各种音色;同时由周波数调制产生颤音效果,由振幅调制产生各种乐器的音效。
关键词:AT89S52单片机;音频放大模块;8X8点阵AbstractIts applications have become increasingly close to life, with a single chip to achieve a number of electronic design is becoming simpler. The main elements of the design described is based on 51 single-chip, the flower design, the core chip AT89S52 microcontroller Internal circuit including the 4X4 determinant keyboard module, audio amplifier module and 8X8LED dot matrix display module, the system is stable, function better, control system reliability, higher cost and so on, has some practical value. For those who need to display the amount of information is small, resolution is not high, they need to make the occasion a relatively low cost, using large and small screen, LED dot matrix display is more economical, and he can display characters, numbers and simple graphics, display brightness higher and lower demands on the environmental conditions. : The structure of more complex electronic instruments, the source is generated by the transistor electrical vibration, and sound loops generated by a variety of tone; also modulated by the frequency to produce vibrato effects, generated by the amplitude modulated sounds of various instruments.Keywords:AT89S52 Microcontroller;Audio Amplifier Module;8X8 matrix1绪论1.1背景单片机是随着大规模集成电路的出现极其发展,将计算机的CPU,RAM,ROM,定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机(single chipmicrocomputer).它拥有优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.主要应用于智能仪器仪表、工业检测控制、机电一体化等方面,并且取得了显著的成果。
基于51单片机的电子琴设计
以下内容根据各专业特点自行确定(如条件、资料、内容、任务、进度安排及要求等):1.设计主要内容及要求基于单片机的简易电子琴的设计。
1)简要说明用单片机设计出一个简易电子琴。
此电子琴完成产生中音Do到高音Do的8个音阶功能。
2)任务和要求设计一个简易电子琴,该电子琴基本功能:通过本系统的扬声器产生从中音Do到高音Do的8个音阶。
实现的具体要求:首先设置8个按键分别连到单片机的I/O口,通过按键按下改变单片机I/O口的电平,其次根据单片机检测到I/O口上的信号,在某个I/O 引脚输出不同频率的方波,最后此方波最后输出到扬声器中。
对于此题目学生首先研究不同音阶所对应的输出频率,根据所研究的内容,完成延时模块的设计、按键检测模块和波形输出模块的设计。
3)训练目标熟练使用Keil开发环境,具备使用C语言编写单片机程序的初步能力,通过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。
2.对设计说明书、论文撰写内容、格式、字数的要求1)课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。
2)学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。
课程设计说明书(论文)的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3)说明书(论文)手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
4)课程设计说明书(论文)装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。
3.时间进度安排;III摘要随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。
我们都会抽空欣赏世界名曲,作为对精神的洗礼。
本论文设计一个基于单片机的简易电子琴。
我们对于电子琴如何实现其功能,如声音强弱控制、节拍器、自动放音功能等等也很好奇。
基于51单片机的电子琴设计_论文 精品
电创“十年杯”电子设计竞赛论文触摸你心爱的旋律----电子琴设计目录摘要-------------------------------------------------------------3 引言-------------------------------------------------------------4一概述-------------------------------------------------------------------5系统开发意义------------------------------------------------------------5 设计目标-------------------------------------------------------------------------------------------------5系统组成及总框图--------------------------------------------------------6二、硬件设计-----------------------------------------------------------7系统的硬件电路设计 (7)2.1AT89C51 (7)2.2单片机的时钟振荡电路 (7)2.3.复位状态 (8)2.3.复位电路 (8)2.4 单片机最小系统 (9)2.5 键盘输入部分 (9)2.6音频功放电路 (10)TDA2030A放大电路----------------------------------------------------------------------------------112.8扬声器 (11)三、软件设计 (12)3.1如何用单片机实现音乐的节---------------------------------------------13音乐相关知识---------------------------------------------------------------------------------------133.1.1定时/计数器的设计和状态字定义: (14)3.2音调数据表 (16)3.3 软件流程 .................................................................... 错误!未定义书签。
基于51单片机的液晶显示电子琴设计
基于51单片机的液晶显示电子琴设计摘要单片机是一种集成电路芯片,是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口、中断系统和定时器/计数器等集成到一块硅片上构成一个小而完善的微型计算机系统。
单片机具有体积小、功耗低、速度快、控制能力强、扩展灵活和使用方便等优点,已渗透到我们生活的各个领域,广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制的领域。
音乐现在也成了人们生活的一部分,生活的压力,学习的压力,工作的压力,一切的不顺利可以在音乐声中放松下来,让人们心情舒畅,听着音乐放松心情,让我们提高生活质量。
本次课程设计是基于51单片机的简易电子琴系统设计。
电子琴是现代电子科技与音乐结合的产物,是一种键盘乐器。
本系统以STC89C52为主芯片,4*4矩阵键盘、1602液晶显示屏、扬声器等电路组成,完成显示输入信息、播放相应音符等基本功能。
关键词:STC89C52;LCD1602;电子琴系统Design Of Liquid Crystal Display Keyboard Based On51Single-chip MicrocomputerABSTRACTMCU is an integrated circuit chip,is the CPU,RAM,ROM,I/O interface, interrupt system and timer/counter,etc.integrated into a silicon chip to form a small and perfect micro-computer system.SCM has a small size,low power consumption,speed,control,strong,flexible and easy to expand and other advantages,has infiltrated all areas of our lives,widely used in instrumen -tation,household appliances,medical equipment,aerospace,special equipment of the intelligent management and process control areas.Music is now also a part of people's lives,the pressure of life,the pressure of learning,work pressure,everything is not smooth can relax in the music,let people feel comfortable,listening to music relax,let us improve the quality of life.This course design is based on the 51 single-chip simple keyboard system design.Keyboard is a combination of modern electronic technology and music products,is a keyboard instrument.This system is mainly composed of STC89C52 chip, 4*4 matrix keyboard,1602 LCD screen,speaker and other circuits to complete the display input information,play the corresponding notes and other basic functions.Keyword: STC89C52, LCD1602, keyboard system目录第一章引言 ........................................................................................................... - 1 -1.1 课题设计目的及其意义 ......................................................................... - 1 -1.2 课题设计的任务与主要内容 ................................................................. - 2 - 第二章系统总体方案设计.................................................................................. - 3 -2.1 系统设计要求 ......................................................................................... - 3 -2.2 系统电路框图 ......................................................................................... - 3 - 第三章硬件设计.................................................................................................. - 5 -3.1 STC89C52芯片 ....................................................................................... - 5 -3.2 1602LCD .................................................................................................. - 6 -3.3 矩阵键盘 ................................................................................................. - 7 -3.4 振荡电路 ................................................................................................. - 8 -3.5 复位电路 ................................................................................................. - 9 -3.6 扬声器模块 ........................................................................................... - 10 - 第四章软件设计与调试.................................................................................... - 11 -4.1 使用AltiumDesigner绘制电路图........................................................ - 11 -4.2 程序调试 ............................................................................................... - 11 - 第五章总结与致谢............................................................................................ - 13 -5.1 总结 ....................................................................................................... - 13 -5.2 致谢 ....................................................................................................... - 14 - 参考文献................................................................................................................ - 15 - 附录........................................................................................................................ - 17 - 附录A 实物图............................................................................................. - 17 - 附录B 程序代码......................................................................................... - 18 -第一章引言1.1 课题设计目的及其意义单片机(单片微型计算机)是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠等特点。
单片机设计-简易电子琴
电子设计报告——基于51单片机的多功能电子琴队别:地方生系一大队一队组长:冯硕组员:易森 20075401004冯硕 20075401086程远文 20075401046刘爽 20075401628一、作品简介:漂亮的外观,清澈洪亮的声音,闪闪发亮的彩灯,相信早已吸引住你的眼球!这是一款纯手工打造的电子琴,实为接近MM、生日礼物必备佳品。
二、作品功能:★可以演奏出基本的8种音调:Do、Re、Mi、Fa、SO、La、Si、高音Do;★演奏的同时会以数字显示出当前的音调,利于培养乐感;★可以自动演示这8个音调;★可以演奏内置生日快乐歌。
★自动演奏时,LED进行节拍指示。
使用方法:通过按下方的8个音调键演奏乐曲;按演示按钮可以自动演奏这8种音调;按奏乐按钮可以演奏生日快乐歌;在自动演示和奏乐的过程中按停止键则中断演奏;音量调节按钮可以选择音量大和小。
三、基本原理:一定频率产生声音,频率高低决定音调。
利用单片机输出脉冲信号经放大后送给喇叭,便可发出声音。
本制作中巧妙地利用了单片机的定时器,让定时器中断一次就对改变喇叭的状态一次,即形成矩形方波,这也是数字电路产生声音的方法。
本作品使用AT89S52型单片机,ISP在线下载使得修改芯片里面的内容相当简单,便于作品的升级与优化。
由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计数中7 SI 988 65030采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:TABLE DW 64580,64684,64777,64820,64898,64968,65030四、实验目的:(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。
c51单片机课程设计——电子琴
目录1.设计题目 (3)2. 设计目的 (3)3. 主要内容 (3)4. 音符频率与计数初值对照表 (3)5.定时/计数器的工作原理 (4)5.1 方式寄存器 (4)5.2启/停控制寄存器TCON (6)6. 中断控制 (6)6.1 TCON用于中断请求 (6)6.2 中断允许寄存器IE (7)7.系统分析 (7)7.1 系统组成 (8)7.2 系统工作原理 (8)8.系统硬件设计 (8)8.1 系统硬件总体设计 (8)8.2 LED显示模块 (9)8.3 扬声器模块 (9)8.4 子系统(模块)电路图 (10)8.4.1 共阳极电路图 (10)8.4.2 上位开关 (10)9.系统软件设计 (10)9.1 系统软件总体设计 (10)9.2 本系统总体代码 (11)10.课程设计成果 (15)11.个人总结 (15)参考文献 (17)一、设计题目:简易电子琴二、设计目的:(1)熟悉单片机的内部结构;(2)掌握C51编程方法;(3)掌握定时器与发声的关系;(4)掌握交流蜂鸣器的发声原理和程序控制方法;(5)掌握串行控制键盘键的识别方法;(6)掌握声音频率的计算方法。
三、主要内容本系统设计制作一个可演奏的电子琴。
综合应用了两项设计。
(1)能产生纯音,了解音调高低的控制方法。
(2)用键盘代替电子琴的键盘,控制演奏音乐。
(a)掌握串行控制键盘键的识别方法;(b)根据键值控制发声。
(3)至少演奏一支乐曲。
四、音符频率与计数初值对照表:低音7 370 0xf64c 中音6 740 0xfb29高音6 1480 0xfd98低音7 415 0xf75a 中音7 831 0xfbb1高音7 1661 0xfddc五、定时/计数器原理MCS-51单片机内部有2个16位的可编程定时/计数器,定时/计数器0由计数器TH0和TL0组成,定时/计数器1由计数器TH1和TL1组成,THX和TLX(X=0,1)分别为两个8位计数器,连接起来可组成16位计数器。
51单片机简易电子琴设计
系统整体安排如下: • 按下S1键发出1的声音。 • 按下S2键发出2的声音。 • 按下S3键发出3的声音。 • 按下S4键发出4的声音。 • 8051单片机根据不同的键产生不同的乐曲音符。系统整体软件结构
框图如下:
三、原理说明
1、频率、声音的实现和产生
单片机的频率和声音输出的原理是,利用琴键控制定时器 的开中断和闭中断,即实现发音和闭音。在此期间通过对定 时器的定时时间进行控制来产生不同频率的方波,使蜂鸣器 发出不同音阶的声音。把相应琴键对应的音符变换为定常数, 作为数据表格存放在储存器中。由程序查表得到定时常数, 用以控制定时器产生方波的频率。但下一个键按下时,再查 一下此琴键所对应音符的定时常数。依次进行下去,就可以 了。
四、模块描述
1、键盘模块: 本系统采用独立式键盘S1、S2、S3、S4。结构框图如下:
S1
S1
S2
S2
S3
Hale Waihona Puke S3S4S4
2、蜂鸣器模块:
按下不同的键,蜂鸣器会发出不同的音乐。结构框图如下:
五、主程序流程图
六、操作说明 将编好的电子琴的程序导入到单片机AT89S51上,按下 S1键,此时蜂鸣器发出的声音为1的声音;再依次按下S2、 S3、S4键,蜂鸣器会依次发出2、3、4的声音。
用定时器T0方式1来产生琴键对应音符的频率的方波,由 P1.1输出蜂鸣器。
2、音符频率表如下:
3、键盘的方案选择
此系统琴键输入是通过独立式键盘来实现的。 由于8051单片机的八为I/O口足以能实现控制各音阶 的输出,并且独立式键盘的编程容易易懂,结构简单, 实现起来方便,而且每个按键独立占有一根I/O接口 线,每个I/O接口线工作状态互不影响,所以采用独 立式键盘。P3.0~P3.3口分别对应S1、S2、S3、S4。
51单片机电子琴,支持弹奏14音、播放21音、支持重放弹奏曲目、支持节拍显示和音调显示资料
矩阵按键分布:K0 K1 K2 K3K4 K5 K6 K7K8 K9 K10 K11K12 K13 K14 K15按键功能介绍:弹奏模式下:K0:录制按键。
按下后,开始录制接下来弹奏的歌曲,再次按下录制结束。
按右下角的播放按键,播放刚才弹奏的歌曲。
K1~K3:低5音~低7音K4:0音K5~K11:中1音~中7音K12~K15 :高1音~高4音。
播放模式下:K12:上一首歌曲K13:暂停、再次播放K14:下一首歌曲K15:播放模式时功能是,退出播放程序:#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define PSMG P0 //数码管IO口#define PKEY P1 //定义4x4按键接的IO口行扫描#define PLED P2 //LED接的IO口sbit PLAY = P3^1;sbit SPK = P3^0;#define ALLSONG 3 //歌曲总数按实际写#define CODEMAX 30 //最大音符数uchar tone_h;uchar tone_l;uchar t1_flag = 0; //用于记录定时器1进入中断的次数uchar PressTime = 0; //按键按下的时间(节拍)uchar code chuzhi[3][16]={ //音调对应的计数初值0xff,0xff, //用任意值占0位,因为音调从1开始0xf8,0x8c,//低10xf9,0x5b,// 20xfa,0x15,// 30xfa,0x67,// 40xfb,0x04,// 50xfb,0x90,// 60xfc,0x0c,//低70xff,0xff,//占0位0xfc,0x44,//中10xfc,0xac,// 20xfd,0x09,// 30xfd,0x34,// 40xfd,0x82,// 50xfd,0xc8,// 60xfe,0x06,//中70xff,0xff,//占0位0xfe,0x22,//高10xfe,0x56,// 20xfe,0x85,// 30xfe,0x9a,// 40xfe,0xc1,// 50xfe,0xe4,// 60xff,0x03 //高7};//共阴数码管段码表uchar code YDTAB[23]={0x00, //各段全灭【0】0x77,0x7c,0x39,0x5e,0x79,0x71,0x3d, //a - g 【1~7】0x3f, //0 【8】0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //1 - 7 【9~15】0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87 //1. - 7. 【16~22】};//发光二极管闪烁表uchar code LEDTAB[9]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//****** 生日快乐******uint code srkl[] = {205,205,406,405,411,807,205,205,406,405,412,811,205,205,415,413,411,407,406,314,114,413,411,413,812,305,105,406,405,411,807,305,105,406,405,412,811,305,105,415,413,411,407,406,314,114,413,411,412,811,410,0xffff};//*******恋曲1990*******uint code lq1990[] = {613,213,412,411,613,213,412,411,613,213,412,411,1213, 110, //前奏215,215,215,215,413,412, //乌溜溜的黑眼珠613,211,211,212,413,1206, //和你的笑脸212,213,212,213,415,213,212, //怎么也难忘记612,211,211,206,405,1213,110, //你容颜的转变215,215,215,215,213,212, //轻飘飘的旧时613,211,211,212,213,1206, //光就这么溜走212,213,212,213,415,213,212, //转头回去看看612,205,213,212,413,1211,110, //时已匆匆数年215,215,215,215,413,412, //苍茫茫的天涯613,211,211,212,413,1206, //路是你的漂泊212,213,212,213,415,213,212, //寻寻觅觅长相612,211,211,206,405,1213,110, //守是我的脚步215,215,215,215,213,212, //黑漆漆的孤枕613,211,211,212,213,1206, //边是你的温柔212,213,212,213,415,213,212, //醒来时的清晨612,205,213,212,413,1211,110, //里是我的哀愁215,215,215,215,413,412, //轰隆隆的雷雨613,211,211,212,413,1206, //声在我的窗前212,213,212,213,415,213,212, //怎么也难忘记612,211,211,206,405,1213,110, //你离去的转变215,215,215,215,213,212, //孤单单的身影613,211,211,212,213,1206, //后寂寥的心情212,213,212,213,415,213,212, //永远无怨612,205,213,212,413,1211,110, //的是我的双眼615,213,415,416, //或许明日621,216,421,416, //太阳西下415,415,415,416,1213, //倦鸟已归时212,213,212,213,415,413, //你将已经踏上612,211,411,413,1212,210, //旧时的归途613,213,412,413, //人生难得615,213,415,416, //再次寻觅421,421,421,422,1216, //相知的伴侣221,221,221,221,416,415, //生命终究难舍212,412,212,412,413,1215,1610, 1610, //蓝蓝的白云天0xFFFF,};//==========================//粗略延时函数//==========================void delayms(uint ms)//延时?个ms{uchar a,b,c;while(ms--){for(c=1;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);}}//======================//定时器1 测量按键持续的节拍数//======================void Timer1_Init(void){EA = 1;ET1 = 1;TMOD &= 0x0F;TMOD |= 0x10;TH1 = (65536-25000)/256;TL1 = (65536-25000)%256; //25ms中断一次}void timer1() interrupt 3{TH1 = (65536-25000)/256;TL1 = (65536-25000)%256; //25ms中断一次t1_flag++;if(t1_flag == 5) //125ms{t1_flag = 0;if(PressTime < 16) //最多16 即最长4秒PressTime++;//8个LED显示节拍if(PressTime <= 8)PLED = LEDTAB[PressTime];else PLED = LEDTAB[8];}}//======================//按键扫描函数【行扫描】//低4位接行,高4位接列/*键值分布0 1 2 34 5 6 78 9 10 1112 13 14 15*///======================uchar keyScan(void){uchar hang;uchar key;uchar temp;for(hang = 0;hang < 4;hang++){PKEY = ~(1<<hang);temp = PKEY&0xF0; //取高4位的值temp >>= 4; //将高四位右移到低四位if(temp != 0x0F) //有按键按下{switch(temp){case 14: key = 4*hang+0;break; //temp:1110case 13: key = 4*hang+1;break; //temp:1101case 11: key = 4*hang+2;break; //temp:1011case 7: key = 4*hang+3;break; //temp:0111 }break; //有键按下,获取键值后,终止扫描}else //没有按键按下返回255key = 255;}return key;}//======================//节拍延时//======================void delay125ms(uint pai) //延时?*125ms 即?个节拍{uchar a,b,c;while(pai--){for(c=239;c>0;c--)for(b=104;b>0;b--)for(a=1;a>0;a--);}}//======================//定时器0 产生音调//======================void Timer0_Init(void){EA = 1;ET0 = 1;TMOD &= 0xF0;TMOD |= 0x01;PT0 = 1;TH0 = 255;TL0 = 255;}//======================//定时器0中断每进入一次,SPK取反//======================void timer0() interrupt 1{TH0 = tone_h;TL0 = tone_l;SPK = ~SPK;}//======================//存储弹奏的歌曲//0xffff代表歌曲结束//千位与百位表示节拍//十位:低中高音[分别是0,1,2]//个位:音调[0~7] [0代表不发声]//======================uint music[CODEMAX] ={215,215,215,215,413,412, //乌溜溜的黑眼珠613,211,211,212,413,1206, //和你的笑脸212,213,212,213,415,213,212, //怎么也难忘记612,211,211,206,405,1213,110, //你容颜的转变0xffff,};//====================================//播放函数//播放完毕后返回1,否则返回0//music:歌曲数组,note:发第几个音//====================================uchar PlayMusic(uint *music,uint note){uchar yin1; //低中高音0,1,2uchar yin2; //音调0~7 0代表不发声,但有节拍uchar jiepai;if(music[note] == 0xffff)return 1;else{if(music[note]%10 != 0) //音调不为0 【音调为0时表示不发声,但有节拍】{yin1 = music[note]%100/10;yin2 = music[note]%10;tone_h = TH0 = chuzhi[yin1][yin2*2 ]; //音调高位【二维数组第1维表示低中高音,第二维表示音调】tone_l = TL0 = chuzhi[yin1][yin2*2 + 1]; //音调低位TR0 = 1; //开启定时器0 开始发声//======数码管显示音调==================if(yin1 == 0) //低音{ PSMG = YDTAB[yin2]; }else if(yin1 == 1) //中音{ PSMG = YDTAB[8+yin2];}else if(yin1 ==2) //高音{ PSMG = YDTAB[15+yin2];}//================================== }else{ P SMG = YDTAB[8]; }jiepai = music[note]/100;//===此处利用定时器1中断中的节拍显示功能t1_flag = 0;PressTime = 0;TH1 = (65536-25000)/256;TL1 = (65536-25000)%256;//25ms中断一次TR1 = 1; //开启定时器1delay125ms(jiepai); //节拍TR0 = 0; //已经响够节拍数,停止发声。
基于51单片机的电子琴课程设计
基于51单片机的电子琴课程设计摘要本设计主要研究基于AT89C52单片机的简易电子琴设计。
它是以单片机作为主控核心,设置键盘、蜂鸣器等外围器件;另外还用到一些简单器件如:NPN型三极管及电阻等。
利用按键实现音符和音调的输入;用NPN型三极管8550实现低音频功率放大;最后用蜂鸣器进行播放“送别”。
本设计硬件部分主要由最小系统,按键系统模块和蜂鸣器模块组成。
其软件部分主要有主程序模块、定时中断程序、定时计数程序。
(1)最小系统:它是单片机应用系统的设计基础。
它包括单片机的选择、时钟系统设计、复位电路设计、简单的I/O口扩展、掉电保护等。
(2)按键系统模块:本设计采用10个按键,其中7个按键用来显示7个音调,其它3个按键可以进行高低中音的切换,并自动播放已存歌曲。
(3)蜂鸣器模块:此电子琴发音电路是通过三极管驱动蜂鸣器发音,经过上拉电阻提高驱动能力。
本次设计首先对单片机设计简易电子琴仔细分析,接着制作硬件电路和编写软件的程序,最后进行软硬件的调试运行。
并且从原理图,主要芯片,各模块的原理和各个模块的程序调试来阐述。
利用单片机产生不同频率来获得我们要求的音阶,实现高、中、低共21个音符的发音和音乐播放时的控制,并且能自动播放程序中编排的音乐。
系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比高等,具有一定的使用和参考价值。
目录1.概述 01.1设计背景 01.2设计意义 01.3 设计任务 02.系统总体方案及硬件设计 (1)2.1总体设计 (1)方案一:采用单个的逻辑器件组合 (1)方案二:用VHDL语言编程来实现 (1)2.2单片机选型 (2)2.3单片机的最小工作系统 (2) (2) (3)2.4 原理框图 (3)2.5 按键部分设计 (4)2.5.1操作键设计 (4) (4) (5)2.6发音部分设计 (6)3.系统软件设计 (6)3.1系统分析 (6) (6) (7)3.2 参数计算 (9) (9) (9) (9)3.3程序设计 (12) (12) (13)4. Proteus软件仿真 (15)4.1硬件调试 (15)4.2 软件调试 (15)4.3 仿真结果(任举一例) (16)4.4 结果分析 (16)5. 课程设计体会 (17)参考文献 (18)附1 源程序代码 (19)附2 系统原理图 (27)1.概述1.1设计背景随着电子科学技术的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们带来更多的生活乐趣。
基于51单片机的电子琴设计
基于51单片机的电子琴设计随着科技的不断发展,单片机技术已经成为了现代电子设备中的重要组成部分。
51单片机作为一种广泛应用的单片机系列,具有高性能、低功耗、高集成度等特点,被广泛应用于各种嵌入式系统开发中。
本文将介绍一种基于51单片机的电子琴设计。
一、系统硬件设计1、单片机选择本设计选用AT89C51单片机作为主控制器,AT89C51是一种低功耗、高性能的8位单片机,具有4K字节的可编程存储器和128字节的RAM,同时具有丰富的外设接口,如UART、SPI、I2C等。
2、电子琴设计电子琴采用8×8 LED点阵作为输出设备,通过单片机控制点阵的亮灭状态来展示音乐波形。
具体实现方式是将音频信号通过一个运放放大器放大,然后将其输入到LED点阵中,通过控制点阵的亮灭状态来展示音乐的波形。
3、存储模块设计为了实现电子琴曲目的存储和播放,本设计选用了一块AT24C02 EEPROM芯片作为存储设备。
AT24C02是一种串行E2PROM存储器,容量为256字节,可以通过I2C总线与单片机进行通信。
将曲目信息存储在AT24C02中,可以实现曲目的存储和播放功能。
4、按键模块设计本设计采用4×4矩阵键盘作为输入设备,通过扫描按键状态来实现音符的选择和节奏控制。
矩阵键盘的行线连接到单片机的P1口,列线连接到P2口,通过检测行列组合的变化来确定按下的键位。
二、系统软件设计1、音符解码本设计采用MIDI音符编码方式来存储和播放曲目信息。
在解码过程中,根据音符的频率和持续时间计算出对应的音高和节奏信息,然后将其用于驱动电子琴的输出设备展示音乐的波形。
2、演奏控制为了实现节奏控制,本设计采用了一种基于时间间隔的演奏方式。
在演奏过程中,单片机根据设定的节奏间隔时间来触发音符输出,从而实现对节奏的控制。
同时,为了实现曲目的停止和播放功能,我们需要在软件中加入相应的控制逻辑。
3、存储和播放在软件设计中,我们需要实现将曲目信息存储到AT24C02中以及从AT24C02中读取曲目信息的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要本设计对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。
并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。
电子琴音色优美,音域较宽,和声丰富,表现力极其丰富。
它可模仿多种音色,还可随意配上类似打击乐音响的节拍伴奏,适合于演奏节奏性较强的现代音乐。
它还能够作为独奏乐器出现,具有鲜明的时代特色,深受广大音乐爱好者的喜爱,又是我国广大中小学生学习音乐的重要工具,而且电子琴容易制作,价格便宜,有很好的市场前景。
随着科技的不断发展,电子产品也在不断的进步。
现在的电子产品越来越接近智能化,性能也精益求精。
现阶段,单片机发展日益成熟,且发展迅猛,以单片机为核心部件的电子琴将会比以555定时器为核心部件电子琴的性能更加稳定,而且依靠单片机强大的编程功能更易实现电子琴各音节所对应频率的产生。
所以此次设计具有很现实的意义。
本次设计的目的主要是复习并运用我们所学的单片机知识,同时通过本次设计能够对电子电路以及作图软件等方面的知识有进一步的认识并掌握;熟悉AT89S52 单片机的内部结构和功能,合理利用其功能实现简单设计,能够完成相关软件编程设计工作;掌握一般的简单电子电路的设计方法。
本次设计的主要内容是利用单片机编程设计出具有发出标准高中低的Dou,Ruai,Mi,Fa、Sou,La,Si,Dou(高音)21个音的功能并能通过9个按键控制的电子琴。
它包括数码显示电路、时钟电路、复位电路、发声电路以及键盘接口电路。
目录1 概述 ............................................................................................................... 错误!未定义书签。
电子琴功能模式介绍 ..................................................................... 错误!未定义书签。
系统设计的任务与要求.................................................................. 错误!未定义书签。
2 系统总体方案及硬件设计 ........................................................................... 错误!未定义书签。
2. 1 系统总体方案........................................................................... 错误!未定义书签。
定时/计数器的设计和状态字定义 .............................................. 错误!未定义书签。
音调数据表.................................................................................... 错误!未定义书签。
总体硬件组成框图......................................................................... 错误!未定义书签。
主要芯片简介................................................................................ 错误!未定义书签。
子系统模块一................................................................................ 错误!未定义书签。
子系统模块二................................................................................ 错误!未定义书签。
子系统模块三................................................................................ 错误!未定义书签。
AT89S52复位模块 ........................................................................ 错误!未定义书签。
AT89S52晶振模块 ........................................................................ 错误!未定义书签。
3 软件设计 ....................................................................................................... 错误!未定义书签。
系统软件设计 ................................................................................ 错误!未定义书签。
内置歌曲输出.................................................................................. 错误!未定义书签。
音阶键识别........................................................................................ 错误!未定义书签。
系统总流程图 ................................................................................ 错误!未定义书签。
4 Proteus软件仿真........................................................................................... 错误!未定义书签。
程序仿真 ....................................................................................... 错误!未定义书签。
proteus仿真 .................................................................................. 错误!未定义书签。
5课程设计体会 ................................................................................................ 错误!未定义书签。
参考文献............................................................................................................ 错误!未定义书签。
附1 源程序代码 ............................................................................................ 错误!未定义书签。
附2 系统原理图 ............................................................................................ 错误!未定义书签。
1 概述电子琴功能模式介绍本次设计提出了用AT89S52单片机为核心控制元件,设计一个简易的电子琴。
本方案以AT89S52单片机作为主控核心,与键盘、扬声器、显示等模块组成核心主控制模块在主控模块上设有7个按键和扬声器。
在弹奏模式方面,可根据使用者的操作随意弹奏想要表达的音乐。
而在播放音乐方面,一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,再加上一定的延时作为节拍,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。
查找想要播放歌曲的歌谱,翻译出对应的频率及延时节拍,存储到单片机存储单元里,再通过所编程序即可控制歌曲播放。
系统设计的任务与要求实现电子琴发声控制系统;要求电路实现如下功能:利用蜂鸣器作为发声部件,1个数码管作为显示部件,设置8个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。
并在存储一首歌曲的内容,可以实现自动播放。
用PROTEUS实现的电子琴仿真设计。
说明:单片机的工作时钟频率为12MHz。
2 系统总体方案及硬件设计本系统采用单片机AT89S52为电子琴的控制核心,系统主要包括播放模块、按键弹奏模块。
下面对各模块的设计逐一进行论证比较。
2. 1 系统总体方案本次设计提出了用AT89S52单片机为核心控制元件,设计一个简易的电子琴。
本方案以AT89S52单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块在主控模块上设有7个按键和扬声器。
根据使用者的操作随意弹奏想要表达的音乐。
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器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是想要产生的频率。