基于单片机设计电子琴diy小制作

上传人:F****n 文档编号:100793090 上传时间:2019-09-25 格式:DOC 页数:18 大小:170.50KB
返回 下载 相关 举报
基于单片机设计电子琴diy小制作_第1页
第1页 / 共18页
基于单片机设计电子琴diy小制作_第2页
第2页 / 共18页
基于单片机设计电子琴diy小制作_第3页
第3页 / 共18页
基于单片机设计电子琴diy小制作_第4页
第4页 / 共18页
基于单片机设计电子琴diy小制作_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《基于单片机设计电子琴diy小制作》由会员分享,可在线阅读,更多相关《基于单片机设计电子琴diy小制作(18页珍藏版)》请在金锄头文库上搜索。

1、电子设计任务书摘要:电子琴又称作电子键盘,属于电子乐器。我们根据电子琴发音的基本原理,用8个按键代表8个基本音符,从左到右分别代表“Do Re Mi Fa Sol La Si Do”。为了更直观的让弹奏着感觉音调的变化,采用了若干个发光二极管,将其与按键相连接,当我们弹奏时,发光二极管也会根据音符的不同而表现出不同二极管的闪亮。可谓是比一般常见的电子琴多了视觉的冲击,也因此,我们取名为屏幕式声光电子琴。关键词:电子琴,直观,按键,发光二极管一、 设计任务与要求1. 设计目的运用课程等相关知识,根据题目要求进行控制电路原理设计、电路板设计与制作、控制软件设计、系统调试,从而加深对本课程知识点的理

2、解,使学生综合应用知识能力、设计能力、调试能力及报告撰写能力等得到显著提高。2. 设计要求利用51系列单片机、按键、扬声器等器件,设计一个电子琴。具体功能要求如下:设计键盘电路,使其具有数字键1、2、3、4、5、6、7、8、作为电子琴按键,用8个按键代表8个基本音符,从左到右分别代表“Do Re Mi Fa Sol La Si Do”。再使用一个键控制发光二极管的闪亮。用单片机某一接口发出音频脉冲,驱动扬声器发音。二、 方案设计与论证要想实现电子琴的功能,大致分为最小系统、键盘电路、发声部分等几个单元电路;(1)最小系统电路图工作原理:采用的是STC89C52单片机,18、19脚分别为时钟电路

3、引脚XTAL1和XTAL2;XTAL1:接外部晶体的一端,是片内振荡器反向放大器的输入端;XTAL2:接外部晶体的另一端,是片内振荡器反向放大器的输出端。振荡电路的频率是晶体振荡频率,我们采用的振荡频率为12MHz。单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。这次最小系统起振电容C2、C3采用的是30Pf。(2)键盘电路图工作原理:单片机的输入输出引脚(P0、P1、P2和P3端口引脚)我们这次实验采用了p3.0p3.7八个引脚来控制八个开关。(3)发声部分电路图工作原理:蜂鸣器是电子电路中最基本的发生装置。无缘蜂鸣器通过一定频率的震荡波产生不同的声音。本次试验,

4、我们选用的是2W、0.5欧的蜂鸣器。三、 软件程序设计具体程序:sfr P4=0xe8;/定义P4组I0口#include#define uint unsigned int#define uchar unsigned charsbit speaker=P14;/喇叭接30脚sbit key1=P10;/流水灯按键(暂时)sbit key2=P11;/播放音乐按键(暂定)uchar a,b,num1,s1num,n1,n2;char num;/定义num为可以负数uchar code yinfu=0xfb,0xe9, /Do 0xfc,0x5c, /Re 0xfc,0xc1, /Mi 0xfc,

5、0xef, /Fa 0xfd,0x45, /So 0xfd,0x92, /La 0xfd,0xd0, /Si 0xfd,0xee, /Do# 0x00,0x00, /间隔;uchar code shengri_tone= 1,0,1,2,1,4,3,0, /生日快乐音调 1,0,1,2,1,5,4,0, 1,0,1,8,6,4,3,2,0, 7,0,7,6,4,5,4,0 /0代表不发声,即停顿;数字即为音调; uchar code shengri_beat= 24,1,24,48,48,48,72,5,/节拍 24,1,24,48,48,48,72,5, 24,1,24,48,48,48,4

6、8,72,5, 24,1,24,48,48,48,72,5 /节拍,即tone表各音调的延时;uchar code ledtable=0x7f,0xbf,0xdf,0xef, /取反0xf7,0xfb,0xfd,0xfe;/P0组口的发光二极管代码(焊接过程可能会相反,具体更改)uchar code ledtable2=0x7f,0xbf,0xdf,0xef, /取反0xf7,0xfb,0xfd,0xfe;/P2组口发光二极管代码,相反!void check_key();/改为P3组为按键void keyscan();void turn();/顺时针流动void back();void qia

7、nhou();void dangshuang();void delay(uint z);/延时函数声明void delay1(void);/声明第二个延时函数void play1(void);/播放生日快乐void main()s1num=0;/流水灯种类标志key1=1;key2=1;TMOD=0x01;TH0=a;TL0=b;ET0=1;/打开定时器,但是未允许中断TR0=1;while(1)check_key();keyscan();void time0() interrupt 1TH0=a;TL0=b;speaker=speaker;void check_key()P3=0xff;/先

8、赋给P2组口高电平switch(P3)/按下一个键相应4个灯亮case 0xfe:P0=0xee;P2=0x77;a=0xfb;b=0xe9;EA=1;break;/P0,P2组为发光二极管组case 0xfd:P0=0xdd;P2=0xbb;a=0xfc;b=0x5c;EA=1;break;/注意:EA不能改为TR0case 0xfb:P0=0xbb;P2=0xdd;a=0xfc;b=0xc1;EA=1;break;case 0xf7:P0=0x77;P2=0xee;a=0xfc;b=0xef;EA=1;break;case 0xef:P0=0xee;P2=0x77;a=0xfd;b=0x4

9、5;EA=1;break;case 0xdf:P0=0xdd;P2=0xbb;a=0xfd;b=0x92;EA=1;break;case 0xbf:P0=0xbb;P2=0xdd;a=0xfd;b=0xd0;EA=1;break;case 0x7f:P0=0x77;P2=0xee;a=0xfd;b=0xee;EA=1;break;default:EA=0;speaker=0;/P0=0xff;P2=0xff ; void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void keyscan() if(key1=0) delay(5)

10、;if(key1=0)s1num+;while(!key1);if(s1num=1)turn();if(s1num=2)back();if(s1num=3)qianhou();if(s1num=4)dangshuang();if(s1num=5)s1num=1; if(key2=0)delay(5);while(key2);play1(); void delay1(void)/第二个延时函数 uchar n=15; while(n-) uchar i; for(i=0;i=33) return; /数值是shengri相关表中的元素数量 /*以下为N种流水灯流动花式*/void turn()/流水灯顺时针走动(5次) for(num1=0;num18;num1+) for(num=0;num-1;num-) P2=ledtable2num;delay(30); P2=0xff;/之后关闭P2组 void back()/逆时针流动for

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号