dianziqin.docx

上传人:b****1 文档编号:2461340 上传时间:2023-05-03 格式:DOCX 页数:12 大小:238.18KB
下载 相关 举报
dianziqin.docx_第1页
第1页 / 共12页
dianziqin.docx_第2页
第2页 / 共12页
dianziqin.docx_第3页
第3页 / 共12页
dianziqin.docx_第4页
第4页 / 共12页
dianziqin.docx_第5页
第5页 / 共12页
dianziqin.docx_第6页
第6页 / 共12页
dianziqin.docx_第7页
第7页 / 共12页
dianziqin.docx_第8页
第8页 / 共12页
dianziqin.docx_第9页
第9页 / 共12页
dianziqin.docx_第10页
第10页 / 共12页
dianziqin.docx_第11页
第11页 / 共12页
dianziqin.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

dianziqin.docx

《dianziqin.docx》由会员分享,可在线阅读,更多相关《dianziqin.docx(12页珍藏版)》请在冰点文库上搜索。

dianziqin.docx

dianziqin

 

阜阳师范学院

课程设计

 

课程单片机原理及应用课程设计

题目简易电子琴设计  

院系物电学院

专业班级电子08级2班

学生姓名谢正俊、张沥蕾、章衾

学生学号200840620236

200840620242

200840620246

指导教师

 

2010年12月25日

阜阳师范学院课程设计书

课程单片机原理及应用课程设计

题目简易电子琴的设计

主要内容、基本要求、主要参考资料等

1、主要内容:

根据单片机课程所学内容,结合其他相关课程知识,设计一个简易八键电子琴系统。

2、基本要求:

本设计以MCS-51系列单片机为核心,采用常用电子器件设计。

要求当按钮开关on时,将可由其连接的输入口读取到低电平(即0)。

若按S1,则发出中音的Do;

若按S2,则发出中音的Re;

若按S3,则发出中音的Mi;

若按S4,则发出中音的Fa;

若按S5,则发出中音的So;

若按S6,则发出中音的La;

若按S7,则发出中音的Si;

若按S8,则发出高音的Do;

则实验结束。

3、主要参考资料:

[1]丁元杰.单片机原理及应用[M].北京:

机械工业出版社,2010.

[2]张义和,王敏男,许宏昌,余春长.例说51单片机(C语言版)[M].北京:

人民邮电出版社,2008.

完成日期2010年12月25日

指导教师王宪菊

2010年12月25日

 

目录

第1章系统设计1

1.1简易电子琴系统1

第2章设计原理及过程4

2.1硬件准备4

2.2运行环境4

2.3实验原理4

第3章软件程序设计6

总结8

参考文献9

附录1整体电路图10

附录2源程序10

第1章系统设计

1.1简易电子琴系统

如图1.1所示为一八键电子琴系统电路框图。

该课程设计将以单片机控制的8051发声系统为主,利用单片机完成发声的实验,实现按键控制内正常发声,从左向右依次发出中音Do至高音Do结束。

图1.1系统电路框图

 

(1)发声电路

声音的产生是一个音频振动的效果。

一般音响电路是用正弦波信号驱动喇叭,从而产生悦耳的音乐;在数字电路里,则是数字信号驱动喇叭,从而产生声音。

如果声音的频率相同,人类的耳朵很难区分出哪个是脉冲信号产生的声音,哪个是正弦波信号产生的声音。

若要用8051产生声音,可用程序产生频率,送到输出入端口(p1.0)再把该点连接到喇叭的驱动电路,即可驱动喇叭。

如图1.2所示。

图1.2喇叭驱动电路(达林顿对)

(2)按键电路

要求当按钮开关on时,将可由其连接的输入口读取到低电平(即0)。

若按S1,则发出中音的Do;

若按S2,则发出中音的Re;

若按S3,则发出中音的Mi;

若按S4,则发出中音的Fa;

若按S5,则发出中音的So;

若按S6,则发出中音的La;

若按S7,则发出中音的Si;

若按S8,则发出高音的Do;

电路如图1.3所示。

图1.3按键电路

第2章设计原理及过程

2.1硬件准备

PC机及相关软件,89C51芯片1个,10KΩ电阻若干,CS9013三极管2个,扬声器一个,开关按钮若干.

2.2运行环境

KeilμVision2,Proteus7Professional

2.3实验原理

(1)音调的产生

通常以Do、Re、Mi、Fa、Sa、La、Si、Do分别代表某一个频率的声音,我们称之为“音调”,及Tone。

若要产生这些音频,可使用延迟函数来实现。

voiddelay(unsignedcharx)

{unsignedchari,j;

for(i=0;i

for(j=0;j<1;j++);

}

注意:

内循环一次,最小延迟时间8.3us

(2)常用的音阶编号

简谱

音阶

频率

参数

按键

1

Do

523

108

S1

2

Re

587

102

S2

3

Mi

659

91

S3

4

Fa

698

86

S4

5

So

784

77

S5

6

La

880

68

S6

7

Si

988

61

S7

8

Do

1046

57

S8

第3章软件程序设计

系统源程序见附录2。

软件流程图如下所示:

 

S2被按下

Sound

(1)

S1被按下

Sound(0)

 

图3.1软件流程图

(1)发声函数

voidsound(unsignedcharx)//发声函数开始

{chari;//声明变量

for(i=0;i<60;i++)//执行60次

{speaker=1;//输出高电平

delay8(tone[x]);//延迟

speaker=0;//输出低电平

delay8(tone[x]);//延迟

}

}

(2)音阶定义

#include

sbitspeaker=P1^0;//声明喇叭位置

unsignedcharkeys;

/*声明音阶数组--DoReMiFaSoLaSiDo#*/

unsignedchartone[]={108,102,91,86,77,68,61,57};

voidsound(unsignedchar);//声明发声函数

voiddelay8(unsignedchar);

(3)按键程序

main()

{P2=0xff;//将p2规划成输入口

while

(1)

{keys=~P2;//读取按键

switch(keys)

{case0x01:

sound(0);break;//按下S1,发Do音

case0x02:

sound

(1);break;//按下S2,发Re音

case0x04:

sound

(2);break;//按下S3,发Mi音

case0x08:

sound(3);break;//按下S4,发Fa音

case0x10:

sound(4);break;//按下S5,发So音

case0x20:

sound(5);break;//按下S6,发La音

case0x40:

sound(6);break;//按下S7,发Si音

case0x80:

sound(7);break;//按下S8,发Do#音

}

}

}

总结

(1)程序运行中出现参数错误,经过修改延迟函数,delay8μs修改为delay8,程序运行正常。

(2)在本实验里,是由p1.0端口输出音频的,若要改由其他端口(如p1.7)只需在程序中修改喇叭位置即可。

(3)本次实验还可以用定时器方式设计此电子琴,同学们有兴趣可以自己尝试设计。

(4)通过本次实验,我们加深了对51单片机的了解,认识到理论与实践联系的重要性。

体会到团队合作的意义。

参考文献

[1]丁元杰.单片机原理及应用[M].北京:

机械工业出版社,2010.

[2]张义和,王敏男,许宏昌,余春长.例说51单片机(C语言版)[M].北京:

人民邮电出版社,2008.

 

附录1整体电路图

 

附录2源程序

/*ch9-1.c-简易电子琴实验*/

#include

sbitspeaker=P1^0;

unsignedcharkeys;

/*声明音阶数组--DoReMiFaSoLaSiDo#*/

unsignedchartone[]={108,102,91,86,77,68,61,57};

voidsound(unsignedchar);

voiddelay8(unsignedchar);

main()

{P2=0xff;

while

(1)

{keys=~P2;

switch(keys)

{case0x01:

sound(0);break;

case0x02:

sound

(1);break;

case0x04:

sound

(2);break;

case0x08:

sound(3);break;

case0x10:

sound(4);break;

case0x20:

sound(5);break;

case0x40:

sound(6);break;

case0x80:

sound(7);break;

}

}

}

voidsound(unsignedcharx)

{chari;

for(i=0;i<60;i++)

{speaker=1;

delay8(tone[x]);

speaker=0;

delay8(tone[x]);

}

}

voiddelay8(unsignedcharx)

{unsignedchari,j;

for(i=0;i

for(j=0;j<1;j++);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2