51单片机 电子琴.doc_第1页
51单片机 电子琴.doc_第2页
51单片机 电子琴.doc_第3页
51单片机 电子琴.doc_第4页
51单片机 电子琴.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理B实训报告 -实训题目: 实训电子琴 学 号: 姓 名: 时 间: 2013-6-20 0目 录单片机原理B实训报告1一、 设计内容1二、硬件与软件环境1三、设计原理、思路及流程图1 3.1 设计原理及思路13.2 硬件框图和硬件连接图2四、 软件设计34.1 流程图设计34.2 相关程序3五、系统调试165.1 硬件调试165.2 软件调试16六、 心得体会16七、 参考资料161、 设计内容设计一个电子琴,可以实现手动演奏和自动演奏。在手动演奏状态下,七个按键分别控制七个音符 1、2、3、4、5、6、7。在自动演奏状态下,在前三个按键下分别控制播放三首不同歌曲。二、硬件与软件环境1 硬件 MPC82G516单片机1片,按键8只,蜂鸣器1只,8050三极管1只。2 软件 Keil V4 ,Proteus 7.5,COM_Port_ISP_v2.01三、设计原理、思路及流程图3.1 设计原理及思路 利用单片机的P1口控制按键,P10P17各端口所接一次为音符键1,2,3,4,5,6,7。P18端口所接为状态切换按键,控制手动演奏和自动演奏两种状态切换。将蜂鸣器连在P27端口上,从而实现按键电子琴的自动演奏和手动演奏。利用单片机串行口进行程序下载。 原理:控制程序中设置两路中断,一路控制音调发声,另一路控制每个音符发声的节拍。设置按键识别程序,判断是否有按键按下。设置键函数,当有按键按下时执行键函数,当状态键状态不同时,分别控制手动演奏和自动演奏。设置初始状态为0,手动演奏状态,按下七个不同按键分别产生不同音音调。按下状态切换按键,此时状态为1,自动演奏状态,一次按下前三个按键,分别播放三首不同歌曲。在按下状态切换键时,状态为0,切换为手动演奏。依次循环。 3.2 硬件框图和硬件连接图 仿真图 硬件图4、 软件设计 开始4.1 流程图设计T0初始化并开中断允许T0中断按键按下是否成功? N识别按键功能 Y根据按键功能,装入音符计数初值到T0中启动T0工作按键释放是否成功? N Y停止T0工作T0中断入口重装TH0,TL0初值P1口,取反中断返回4.2 相关程序#include/低音区#define L3 1804#define L4 1703#define L5 1517#define L6 1304#define L7 1204/中音区#define Z1 1136 #define Z2 1012 #define Z3 902 #define Z4 851 #define Z5 758 #define Z6 676#define Z7 602/高音区#define G1 568#define G2 506#define G3 451#define G4 426#define G5 379sbit beep=P27; /端口功能定义sbit key1=P10;sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit key5=P14;sbit key6=P15;sbit key7=P16;sbit key8=P17;unsigned int T,cnt,k,sec1,cnt1,lock1,lock3,lock2; /定义变量unsigned char i,keymark,state,state1;int f;unsigned int code s=Z1,Z2,Z3,Z4,Z5,Z6,Z7; /定义七个音调数组unsigned int code s1=Z5,3,Z5,1,Z6,2,Z5,2,G1,2,Z7,6,Z5,3,Z5,1,Z6,2,Z5,2,G2,2,G1,6,0; /生日快乐unsigned int code s2=Z1,1,Z1,1,Z5,1,Z5,1,Z6,1,Z6,1,Z5,4,0; /一闪一闪亮晶晶unsigned int code s3=Z6,1,G1,1,Z6,1,G1,1,Z6,1,Z5,1,Z3,1,Z5,1,Z6,8,Z6,1,G1,1,Z6,1,G1,1,Z6,1,Z5,1,Z3,1,Z5,1,Z6,2,G3,4,Z6,1,G1,1,G2,2, Z6,1,G1,1,G2,2,Z6,1,G1,1,G2,1,G3,1,G2,1,G1,1,Z6,4,Z6,1,G1,1,G2,2, Z6,1,G1,1,G2,1,G3,1,G5,8,0; /忐忑void delay(); /函数声明void T0Ser() interrupt 1 /中断服务函数T0 TH0=-T8;TL0=-T;beep=!beep; void delay(n) /延时函数char i,j;for(i=0;i10;i+)for(j=0;j8;TL1=-20000; if(+cnt12) cnt1=0;sec1=1; void key() /键函数if(!key8) /状态切换键if(+state1)state=0; if(state=0) /状态0时手动演奏 if(!key1)TR0=1;T=s0;else if(!key2)TR0=1;T=s1;else if(!key3)TR0=1;T=s2;else if(!key4)TR0=1;T=s3;else if(!key5)TR0=1;T=s4;else if(!key6)TR0=1;T=s5;else if(!key7)TR0=1;T=s6;else if(state=1) /状态1时自动演奏if(!key1)f=2; TR0=1;TR1=1;lock1=1;else if(!key2)f=2;TR0=1;TR1=1;lock2=1;else if(!key3)f=2;TR0=1;TR1=1;lock3=1;void main()TMOD=0X11; /定时器T0,T1工作方式为1IE=0X8A; /开定时中断 T0,T1 P2=0xff;P2=0x3f;P3=0x00;while(1)if(!key1 | !key2 | !key3 | !key4 | !key5 | !key6 | !key7 | !key8) &!keymark) /按键识别delay(1); /去抖动if(!key1 | !key2 | !key3 | !key4 | !key5 | !key6 | !key7 | !key8) key(); keymark=1;else if(key1 & key2 & key3 & key4 & key5 & key6 & key7 & key8)keymark=0;if(state=0) TR0=0; beep=1; /当没按下键时,beep=1,防止蜂鸣器烧坏 if(lock1) /音乐 生日快乐 if(sec1) sec1=0;if(+cnt3*s1f+1) /判断节拍是否完成 TR0=0;delay(4); /不同音节间短暂停顿TR0=1; cnt=0; T=s1f;f=f+2; if(s1f=0) /如果遇到结束标志 TR0=0;TR1=0;beep=1;lock1=0; if(lock2) /音乐 一闪一闪亮晶晶 if(sec1) sec1=0;if(+cnt4*s2f+1) /判断节拍是否完成 TR0=0;delay(3); /不同音节间短暂停顿TR0=1; cnt=0; T=s2f;f=f+2; if(s2f=0) /如果遇到结束标志 TR0=0;TR1=0;beep=1;lock2=0; if(lock3) /音乐 忐忑 if(sec1) sec1=0;if(+cnts3f+1) /判断节拍是否完成 TR0=0;delay(2); /不同音节间短暂停顿TR0=1; cnt=0; T=s3f;f=f+2; if(s3f=0) /如果遇到结束标志 TR0=0;TR1=0;beep=1;lock3=0; 五、系统调试 5.1 硬件调试在焊接硬件电路完成后依次用万用表检查焊点是否焊接牢固,正负极,单片机最小系统电路,按键电路,三极管、蜂鸣器,各线路是否正确连通,连接二极管和三极管的时候要注意的正负引脚问题,以免造成失误。在以上问题检查无误后接通电源和串行口,通过计算机软件进行对单片机下载程序。程序下载完成后,根据设计功能进行检验。检验无误后,电子琴实现电子琴手动演奏和自动演奏设计完成。5.2 软件调试利用PROTEUS的模拟仿真功能,按照电子琴设计功能绘制仿真电路图,进行软

温馨提示

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

评论

0/150

提交评论