电子琴实验报告

电子琴实验报告

一, 实验目的

1.进一步巩固和加深理论课基本知识的理解,提高综合运用所学知识的能力。

2.能根据需要选择参考书,查阅资料,通过独立思考,深入钻研有关问题。

3.学会自己独立分析问题、解决问题。

4.学习按键扫描及蜂鸣器应用和单片机设计方法。

5. 设计任务及要求 利用实验平台上矩阵键盘和蜂鸣器及单片机设计实现要求的电子琴。

二,实验要求

A.基本要求:

1:能够通过键盘演奏音符。

2:能够保存演奏的音乐,并实现回放。

3:有音调调整功能(如:C调,G调)。

三,实验基本原理

1.键盘接口必须具有去抖动、按键识别基本功能。

(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5—20mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问 题可通过软件延时或硬件电路解决。

(2)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。

2. 利用键盘扫描原理分别设4×4矩阵键盘组成1—7数字键演奏音符,蜂鸣器发声,高电平发声,低电平不发声,并通过延迟程序控制输入的频率,不同的频率发出不同的音符,

四,实验设计分析

针对要实现的功能,采用AT89S52单片机进行设计,AT89S52 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 52指令系统及80C52引脚结构。这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为键盘演奏程序、音乐播放程序、音调调整程序,保存音乐程序,延时程序等。运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。最后进行功能扩展,在已经正确的设计基础上,添加额外的功能!

五,实验要求实现

A.电路设计

1. 整体设计

2. 分块设计

模块电路主要分为:键盘输入部分、播放部分、复位电路。

2.1键盘输入模块

键盘接入单片机P3接口,

2.2播放模块

播放模块是蜂鸣器构成。蜂鸣器是一种一体化结构的电子讯响器,采用直流

图2-3 发声模块电路图

电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子 设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。

2.3 复位电路

AT89S52复位模块

AT89S52晶振模块

各模块拼接组合,电路总体设计图如下:

B.程序设计

B.1 程序总体设计

本实验用C程序完成.

流程图如下:

结合电路图,程序设计的整体思路为:

电子琴按键方式:

1. 按1键——发声音符为‘1’。

2. 按2键——发声音符为‘2’。

3. 按3键——发声音符为‘3’。

4. 按4键——发声音符为‘4’。

5. 按5键——发声音符为‘5’。

6. 按6键——发声音符为‘6’。

7. 按7键——发声音符为‘7’。

8. 按8键——播放保存的音乐。

9. 按9键——开始录音。

10. 按10键——播放录音。

11. 按11键——调整音调。

B.2 程序主要模块

主程序:

#include

#define uchar unsigned char

#define uint unsigned int

uchar i,j,x=0,y=0,temp=0,u=0;

uchar code c[]={3,3,4,5,5,4,3,2,1,1,2,3,3,2,2,0,3,3,4,5,5,4,3,2,1,1,2,3,2,1,1,0,2,2,3,1,2,3,4,3,1,2,3,4,3,1,1,2,5,0,3,3,4,5,5,4,3,2,1,1,2,3,2,1,1};

uchar m[100];

void delay(uint a)

{while(a--);}

void music(uchar b)

{

switch(b){

case(1):for(i=0;i

case(2):for(i=0;i

case(3):for(i=0;i

case(4):for(i=0;i

case(5):for(i=0;i

case(6):for(i=0;i

case(7):for(i=0;i

}

void musicH(uchar b)

{

switch(b)

{

case(1):for(i=0;i

case(2):for(i=0;i

case(3):for(i=0;i

case(4):for(i=0;i

case(5):for(i=0;i

case(6):for(i=0;i

case(7):for(i=0;i

}

void scan()

{

P3=0x0f;

if(P3==0x0e)

{

P3=0xf0;

switch(P3)

{

case(0x70):if(u==0)music(1); else musicH(1);if(y==1){m[x]=1;x++;}break;

case(0xb0):if(u==0)music(2); else musicH(2);if(y==1){m[x]=2;x++;}break;

case(0xd0):if(u==0)music(3); else musicH(3);if(y==1){m[x]=3;x++;}break;

case(0xe0):if(u==0)music(4); else musicH(4);if(y==1){m[x]=4;x++;}break;

}

}

else if(P3==0x0d)

{

P3=0xf0;

switch(P3)

{

case(0x70):if(u==0)music(5); else musicH(5);if(y==1){m[x]=5;x++;}break;

case(0xb0):if(u==0)music(6); else musicH(6);if(y==1){m[x]=6;x++;}break;

case(0xd0):if(u==0)music(7); else musicH(7);if(y==1){m[x]=7;x++;}break;

case(0xe0):for(j=0;j

}

}

else if(P3==0x0b)

{

P3=0xf0;

switch(P3)

{

case(0x70):if(y==0){y=1;x=0;music(1);}else {y=0;music(1);}break;//录音开始和停止

case(0xb0):for(j=0;j

case(0xd0):if(temp==0){u=1;temp++;} else {u=0;temp=0;}break;//调节音调 }

}

}

void main()

{

while(1){

P2=0xff;

scan();

}

}

C. 程序调试及仿真

本程序通过Keil单片机开发平台实现程序的编译,链接,生成HEX文件。程序再编译过程中可以发现错位,并及时改正,在设计时非常重要,使错误被扼杀在摇篮中。

通过Keil和硬件仿真平台Proteus的联合,可以将设计效果仿真出来,根据效果,有目的的改变设计,优化程序。

c.1 利用Keil软件实验过程截图:

1,建一个工程,并设定与Proteus仿真相关的参数

2,编译程序,并生成HEX文件

c.2利用Proteus仿真实验过程截图:

五.实验总结及感想

本次实验制作简易电子琴,虽然花费了我们很多精力,但收获颇丰,一方面,将自己的理论知识与实践相结合起来,进一步巩固了专业基础知识和相关专业课程知识;另一方面,也培养了自己独立自主、综合分析的思维与创新能力,更让我知道了团队的力量是巨大的。

实验中将程序烧入芯片,调试成功后,可任意弹奏自己想要的旋律。本研究通过制作电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。

思考:可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度。音色不可调,只有一种波形的频率输出。可以在外围电路设计滤波电路,接在不同的输出口,通过软件实现不同端口的输出,从而接入不同的滤波电路,输出不同的波形,从而获得不一样的音色。不能以和弦形式演奏,只能单个键按下输出单个的音阶。

设计的过程不是一帆风顺,遇到过各种各样的问题。特别是设计软件时,一些很细小的问题都可能导致功能性的错误,修改了多次才通过仿真。在设计过程

中我发现自己对以前所学过的知识理解得不够深刻,掌握得不够牢固,所以也利用图书馆、网络资源查阅了大量文献资料,也请教了老师和同学。同时在具体的制作过程中我们发现一些书本上的知识与实际的应用存在着一定的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方面的问题,这也让我更深刻地体会到在今后的学习工作中也要注重理论联系实际。

六、参考书目

[1] 李群芳,肖看,《单片机原理、接口及应用》,北京,清华大学出版社,2005年

[2] 戴佳,戴卫恒 ,《51单片机C语言应用程序设计实例精讲》 , 电子工业出版社,2005年

[3] 刘海成,《单片机及应用系统设计原理与实践》,北京,北京航空航天大学出版社,2009年

电子琴实验报告

一, 实验目的

1.进一步巩固和加深理论课基本知识的理解,提高综合运用所学知识的能力。

2.能根据需要选择参考书,查阅资料,通过独立思考,深入钻研有关问题。

3.学会自己独立分析问题、解决问题。

4.学习按键扫描及蜂鸣器应用和单片机设计方法。

5. 设计任务及要求 利用实验平台上矩阵键盘和蜂鸣器及单片机设计实现要求的电子琴。

二,实验要求

A.基本要求:

1:能够通过键盘演奏音符。

2:能够保存演奏的音乐,并实现回放。

3:有音调调整功能(如:C调,G调)。

三,实验基本原理

1.键盘接口必须具有去抖动、按键识别基本功能。

(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5—20mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问 题可通过软件延时或硬件电路解决。

(2)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。

2. 利用键盘扫描原理分别设4×4矩阵键盘组成1—7数字键演奏音符,蜂鸣器发声,高电平发声,低电平不发声,并通过延迟程序控制输入的频率,不同的频率发出不同的音符,

四,实验设计分析

针对要实现的功能,采用AT89S52单片机进行设计,AT89S52 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 52指令系统及80C52引脚结构。这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为键盘演奏程序、音乐播放程序、音调调整程序,保存音乐程序,延时程序等。运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。最后进行功能扩展,在已经正确的设计基础上,添加额外的功能!

五,实验要求实现

A.电路设计

1. 整体设计

2. 分块设计

模块电路主要分为:键盘输入部分、播放部分、复位电路。

2.1键盘输入模块

键盘接入单片机P3接口,

2.2播放模块

播放模块是蜂鸣器构成。蜂鸣器是一种一体化结构的电子讯响器,采用直流

图2-3 发声模块电路图

电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子 设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。

2.3 复位电路

AT89S52复位模块

AT89S52晶振模块

各模块拼接组合,电路总体设计图如下:

B.程序设计

B.1 程序总体设计

本实验用C程序完成.

流程图如下:

结合电路图,程序设计的整体思路为:

电子琴按键方式:

1. 按1键——发声音符为‘1’。

2. 按2键——发声音符为‘2’。

3. 按3键——发声音符为‘3’。

4. 按4键——发声音符为‘4’。

5. 按5键——发声音符为‘5’。

6. 按6键——发声音符为‘6’。

7. 按7键——发声音符为‘7’。

8. 按8键——播放保存的音乐。

9. 按9键——开始录音。

10. 按10键——播放录音。

11. 按11键——调整音调。

B.2 程序主要模块

主程序:

#include

#define uchar unsigned char

#define uint unsigned int

uchar i,j,x=0,y=0,temp=0,u=0;

uchar code c[]={3,3,4,5,5,4,3,2,1,1,2,3,3,2,2,0,3,3,4,5,5,4,3,2,1,1,2,3,2,1,1,0,2,2,3,1,2,3,4,3,1,2,3,4,3,1,1,2,5,0,3,3,4,5,5,4,3,2,1,1,2,3,2,1,1};

uchar m[100];

void delay(uint a)

{while(a--);}

void music(uchar b)

{

switch(b){

case(1):for(i=0;i

case(2):for(i=0;i

case(3):for(i=0;i

case(4):for(i=0;i

case(5):for(i=0;i

case(6):for(i=0;i

case(7):for(i=0;i

}

void musicH(uchar b)

{

switch(b)

{

case(1):for(i=0;i

case(2):for(i=0;i

case(3):for(i=0;i

case(4):for(i=0;i

case(5):for(i=0;i

case(6):for(i=0;i

case(7):for(i=0;i

}

void scan()

{

P3=0x0f;

if(P3==0x0e)

{

P3=0xf0;

switch(P3)

{

case(0x70):if(u==0)music(1); else musicH(1);if(y==1){m[x]=1;x++;}break;

case(0xb0):if(u==0)music(2); else musicH(2);if(y==1){m[x]=2;x++;}break;

case(0xd0):if(u==0)music(3); else musicH(3);if(y==1){m[x]=3;x++;}break;

case(0xe0):if(u==0)music(4); else musicH(4);if(y==1){m[x]=4;x++;}break;

}

}

else if(P3==0x0d)

{

P3=0xf0;

switch(P3)

{

case(0x70):if(u==0)music(5); else musicH(5);if(y==1){m[x]=5;x++;}break;

case(0xb0):if(u==0)music(6); else musicH(6);if(y==1){m[x]=6;x++;}break;

case(0xd0):if(u==0)music(7); else musicH(7);if(y==1){m[x]=7;x++;}break;

case(0xe0):for(j=0;j

}

}

else if(P3==0x0b)

{

P3=0xf0;

switch(P3)

{

case(0x70):if(y==0){y=1;x=0;music(1);}else {y=0;music(1);}break;//录音开始和停止

case(0xb0):for(j=0;j

case(0xd0):if(temp==0){u=1;temp++;} else {u=0;temp=0;}break;//调节音调 }

}

}

void main()

{

while(1){

P2=0xff;

scan();

}

}

C. 程序调试及仿真

本程序通过Keil单片机开发平台实现程序的编译,链接,生成HEX文件。程序再编译过程中可以发现错位,并及时改正,在设计时非常重要,使错误被扼杀在摇篮中。

通过Keil和硬件仿真平台Proteus的联合,可以将设计效果仿真出来,根据效果,有目的的改变设计,优化程序。

c.1 利用Keil软件实验过程截图:

1,建一个工程,并设定与Proteus仿真相关的参数

2,编译程序,并生成HEX文件

c.2利用Proteus仿真实验过程截图:

五.实验总结及感想

本次实验制作简易电子琴,虽然花费了我们很多精力,但收获颇丰,一方面,将自己的理论知识与实践相结合起来,进一步巩固了专业基础知识和相关专业课程知识;另一方面,也培养了自己独立自主、综合分析的思维与创新能力,更让我知道了团队的力量是巨大的。

实验中将程序烧入芯片,调试成功后,可任意弹奏自己想要的旋律。本研究通过制作电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。

思考:可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度。音色不可调,只有一种波形的频率输出。可以在外围电路设计滤波电路,接在不同的输出口,通过软件实现不同端口的输出,从而接入不同的滤波电路,输出不同的波形,从而获得不一样的音色。不能以和弦形式演奏,只能单个键按下输出单个的音阶。

设计的过程不是一帆风顺,遇到过各种各样的问题。特别是设计软件时,一些很细小的问题都可能导致功能性的错误,修改了多次才通过仿真。在设计过程

中我发现自己对以前所学过的知识理解得不够深刻,掌握得不够牢固,所以也利用图书馆、网络资源查阅了大量文献资料,也请教了老师和同学。同时在具体的制作过程中我们发现一些书本上的知识与实际的应用存在着一定的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方面的问题,这也让我更深刻地体会到在今后的学习工作中也要注重理论联系实际。

六、参考书目

[1] 李群芳,肖看,《单片机原理、接口及应用》,北京,清华大学出版社,2005年

[2] 戴佳,戴卫恒 ,《51单片机C语言应用程序设计实例精讲》 , 电子工业出版社,2005年

[3] 刘海成,《单片机及应用系统设计原理与实践》,北京,北京航空航天大学出版社,2009年


    相关文章

    电子商务模拟软件实验教学大纲

    电子商务模拟软件实验教学大纲 目 录 实验教学大纲 .............................................................................................. ...

    [电子商务实务]课程实验实训指导书

    <电子商务实务>课程实验实训指导书 3<电子商务实务>课程实验实训指导书 一.课程基本信息 二.课程任务和目的 <电子商务实务>是一门讲授利用计算机技术和网络技术等现代信息技术所进行的包括货物贸易.服务贸 ...

    电子商务实训指导书

    <电子商务实训>指导书 课程代码: 英文名称:Practice of Electronic Business 适用对象:电子商务.国际贸易等专业学生 一.实验目的 <电子商务实训>是的一门实践性课程.主要让学生了解和 ...

    (行业报告)[电子商务物流管理]实验报告(报告范文模板)

    <电子商务物流管理>实验报告 I 实验要求 1.通过实验操作,根据所学理论知识熟悉并掌握电子商务物流的流程及相关的技术和管理. 2.上机之前应作好充分的准备工作,以提高上机效率. 3.具备团队合作意识,小组成员之间互相帮助,共同 ...

    电子政务实验报告(实验一.三)

    <电子政务> 实践教学指导书 编 写 说 明 电子政务是传统行政管理方式的一场深刻变革,其实质是对现有的与工业文明相适应的政府形态的一种改造,即利用信息技术来构造更适合信息时代要求的政府治理结构和权力运行方式.现有的政府组织形态 ...

    电子政务上机实验报告二

    上机实验分析报告二 实验名称 学生姓名 学生学号 专业年级 院 系 指导教师 教研室主任 政府电子服务的应用 2011年 5月 25 日 一.实验名称:政府电子服务的应用 二.实验地点:实验室 三.实验目的:通过上机实验,使学生理解电子服务 ...

    电工技术实验教学大纲--北京科技大学

    附件3: 课程教学大纲模版 < 电工技术实验 >教学大纲 课程编号:2050110 开课院系:自动化学院 课程类别:学科基础必 适用专业:物流, 机械, 环境, 安全等 课内总学时:16 学分:1 实验学时:16 设计学时: 上 ...

    高频电子线路实验报告

    高频电子线路实验报告 姓 名:易洋院 系:工学院电子系年 级:专 业:应用电子技术教育学 号:任课教师:陈素纯开课时间: 12级 2012180310 2014~2015学年第二学期 目录 1.高频谐振功率放大器实验 2.变容二极管调频实验 ...

    电子技术课程设计指导

    电子技术课程设计指导 长安大学电工电子教学部 目 录 一.课程设计指导 二.数字频率计的设计实例 三.集成直流稳压电源的设计 四.电容数字测量仪的设计 五.多路数据采集系统的设计 附录: 参考文献 软件: word .visio. prot ...

    [企业经营决策电子沙盘模拟]实验报告撰写要求

    <企业经营决策电子沙盘模拟>实验报告撰写要求 1. 要求写两份报告.一份报告为实验小组集体撰写的实验报告, 报告建议内容如下: ① 要求有完整的企业战略规划和虚拟企业中的各岗位的岗 位说明书 ② 要求详细说明每期的经营决策模拟过 ...