51单片机的简易电子琴设计.docx

上传人:b****6 文档编号:7742227 上传时间:2023-01-26 格式:DOCX 页数:12 大小:180.63KB
下载 相关 举报
51单片机的简易电子琴设计.docx_第1页
第1页 / 共12页
51单片机的简易电子琴设计.docx_第2页
第2页 / 共12页
51单片机的简易电子琴设计.docx_第3页
第3页 / 共12页
51单片机的简易电子琴设计.docx_第4页
第4页 / 共12页
51单片机的简易电子琴设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

51单片机的简易电子琴设计.docx

《51单片机的简易电子琴设计.docx》由会员分享,可在线阅读,更多相关《51单片机的简易电子琴设计.docx(12页珍藏版)》请在冰豆网上搜索。

51单片机的简易电子琴设计.docx

51单片机的简易电子琴设计

 

课程设计

 

课程设计名称:

单片机课程设计

专业年级:

电子信息科学与技术

学生姓名:

学号:

指导教师:

课程设计时间:

2013.9.30-2013.10.7

 

10级电科专业课程设计任务书

学生姓名

专业班级

电科

学号

题目

51单片机的简易电子琴设计

课题性质

工程设计

课题来源

自拟

指导教师

同组姓名

主要内容

设计一个51单片机系统,实现简易电子琴操作的电路。

要求:

1设计51单片机最小系统;

2.设置至少8个按键,能发出doremifasollaSIDO;

能播放示范曲;

3.能够调节低音、高音和中音。

任务要求

1.根据功能要求选择设计方案,并进行论证。

2.画出电路的总体方框图和电路原理图。

3.说明系统工作原理,对系统进行调试。

4.写出课程设计报告。

参考文献

1.单片机技术有关教材

2.电路设计手册

3.其他资料

审查意见

指导教师签字:

教研室主任签字:

年月日

说明:

本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页

 

1 任务及要求

1.1设计任务

1.设计一个2X4的8个按键矩阵,并且每个键对应一个音。

2.设计一个3个按键来控制低,中,高三种频段的声音。

3.设计完整的原理图电路,包括时钟电路、复位电路以及键盘接口电路等。

4.用AT89C51将键盘连接设计成为电子琴。

5.编写电子琴的程序,要达到可以随意弹奏想要表达的音乐的目的。

6.程序的分析与调试。

1.2设计要求

1.用C语言编程实现程序设计。

2.利用查表,定时中断等方式实现目的。

3.系统的各各功能模块要清楚,有序。

2 设计思想

2.1硬件设计思想

电子琴的原理框图如图一所示。

它由以下几个部件组成:

单片机AT89C51、2*4的8个按钮矩阵、3个频段控制开关,时钟电路,复位电路,音频放大模块。

2.2软件设计思想

本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整或定时设置程序三大模块。

定时器初始化函数:

voidInit_timer0()

{

TMOD=0x01;//使用定时器0的16位工作模式

TR0=0;

ET0=1;

EA=1;

P2=0XFF;

P3=0XFF;

}

定时器溢出中断函数:

voidtimer0()interrupt1

{

TL0=tl0_f;

TH0=th0_f;//调入预定时值

BEEP=~BEEP;//取反音乐输出IO

}

3 电路原理与电路图

3.1电路原理

主要分为二个部分:

4.放大电路分析

此部分的放大电路简单容易实现。

可以采用一个小功率PNP型硅管9012,利用“分压偏置式工作点稳定直流通路”,达到了对静态工作点的稳定。

分压电阻分别选择1K和5.5K。

蜂鸣器一端接+5V电压,一端接晶体管的发射极。

由P1.0

输出预定的方波,加到晶体管进行放大,再输出到嗡宁器,很好的实

现了频率、声音的转换。

 

放大电路输出原理图

 

5.时钟电路分析

此系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。

MCS-51内部有一个用于构成振荡器的高增益反相放大器。

引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。

这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。

外接晶体谐振器以及电容CX1和CX2构成并联谐振电路,接在放大器的反馈回路中。

对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。

因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为30pF。

在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。

下图为复位电路的原理图。

复位电路原理图

MSC-51片内振荡电路

时钟电路原理图

6.复位电路的论证和分析:

MS-51的复位是由外部的复位电路来实现的。

片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。

复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路,如图所示。

当时钟频率选用12MHz时,C取1μF,R1约为10KΩ。

(1)2X4行列式键盘识别;

(2)音乐产生的方法;

①一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

现在以单片机12MHZ晶振为例,列出高中低音符与单片机计数T0相关的计数值如表3.1所示.

下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:

低音0-15之间,中音在16-31之间,高音在32-47之间

 

ucharcodefreq[]={0xf8,0x8c,0xf9,0x5b,0xfa,0x15,0xfa,0x67,

0xfb,0x04,0xfb,0x90,0xfc,0x0c,0xfc,0x44,

 

0xfc,0x44,0xfc,0xac,0xfd,0x09,0xfd,0x34,

0xfd,0x82,0xfd,0xc8,0xfe,0x06,0xfe,0x22,

 

0xfe,0x22,0xfe,0x56,0xfe,0x85,0xfe,0x9a,

0xfe,0xc1,0xfe,0xe4,0xff,0x03,0xf8,0x8c};

 

表3.1高中低音符与单片机计数T0相关的计数值表

音符

频率(HZ)

简谱码(T值)

 

音符

频率(HZ)

简谱码(T值)

低1 DO

262

63628

#4FA#

740

64860

#1 DO#

277

63731

中5SO

784

64898

低2 RE

294

63835

#5SO#

831

64934

#2RE#

311

63928

中6LA

880

64968

低3M

330

64021

#6

932

64994

低4FA

349

64103

中7SI

988

65030

#4FA#

370

64185

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

#5SO#

415

64331

高2RE

1175

65110

低6LA

440

64400

 

#2RE#

1245

65134

#6

466

64463

高3M

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

#4FA#

1480

65198

#1DO#

554

64633

高5SO

1568

65217

中2RE

587

64684

#5SO#

1661

65235

#2RE#

622

64732

高6LA

1760

65252

中3M

659

64777

#6

1865

65268

中4FA

698

64820

高7SI

1967

65283

3.2电路原理图

4 流程图与算法描述

4.1流程图

 

图4.1系统主程序流程图

图4.2

4.3 程序清单

#include

#include"intrins.h"

#defineucharunsignedchar

#defineuintunsignedint

sbitBEEP=P1^0;

sbitb1=P3^5;

sbitb2=P3^6;

sbitb3=P3^7;

sbitp20=P2^0;

sbitp21=P2^1;

ucharkey;

ucharcodefreq[]={0xf8,0x8c,0xf9,0x5b,0xfa,0x15,0xfa,0x67,

0xfb,0x04,0xfb,0x90,0xfc,0x0c,0xfc,0x44,

0xfc,0x44,0xfc,0xac,0xfd,0x09,0xfd,0x34,

0xfd,0x82,0xfd,0xc8,0xfe,0x06,0xfe,0x22,

0xfe,0x22,0xfe,0x56,0xfe,0x85,0xfe,0x9a,

0xfe,0xc1,0xfe,0xe4,0xff,0x03,0xf8,0x8c};

ucharth0_f,tl0_f;

voidtimer0()interrupt1

{

TL0=tl0_f;

TH0=th0_f;//调入预定时值

BEEP=~BEEP;//取反音乐输出IO

}

voidkeyscan()

{

uchari,j;

key=0;

i=0xef;

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

{

P2=i;

if(p20==0)

break;

key++;

if(p21==0)

break;

key++;

i=_crol_(i,1);

}

}

voidspeak()

{

uinti;

keyscan();

if(b1==0&&key!

=8)

{

th0_f=freq[2*key];

tl0_f=freq[2*key+1];

TL0=tl0_f;

TH0=th0_f;

TR0=1;

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

}

if(b2==0&&key!

=8)

{

th0_f=freq[2*key+16];

tl0_f=freq[2*key+17];

TL0=tl0_f;

TH0=th0_f;

TR0=1;

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

}

if(b3==0&&key!

=8)

{

th0_f=freq[2*key+32];

tl0_f=freq[2*key+33];

TL0=tl0_f;

TH0=th0_f;

TR0=1;

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

}

TR0=0;

}

voidInit_timer0()

{

TMOD=0x01;//使用定时器0的16位工作模式

TR0=0;

ET0=1;

EA=1;

P2=0XFF;

P3=0XFF;

}

voidmain()

{

Init_timer0();

while

(1)

{

speak();

}

}

4.4仿真图

图4.3

4.5结果分析

本设计主要是通过对电子琴主体部分的电路进行设计,达到电子琴固有的基本功能,故叫简易电子琴。

利用定时器可发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。

其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的脉冲,若此时又有键被按下,若被按下的仍为原键则声音不变,否则键盘会译出被按下的另一个键的音调。

最后,下载到实验板上测试发出不同音调

5 总结

通过这次设计,我感觉收获了很多,我加深了对单片机系列知识及其系统的认识。

这个设计题目并不怎么新颖,但从中体现到了个系统开发设计的过程,足以让我们受益匪浅。

在这次的设计中,让我更进一步的提高了动手能力,也重新复习了一次单片机的程序编程能力,在这期间,让我更加深刻了体会到了汇编程序的思路,加强了对编程能力的理解和对相应资料的查阅。

另外,我们还要在下面多动手实践,来提高自己的实战能力,已达到学以致用。

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1