基于单片机的电子琴设计Word文档下载推荐.docx

上传人:b****6 文档编号:21552914 上传时间:2023-01-31 格式:DOCX 页数:19 大小:143.50KB
下载 相关 举报
基于单片机的电子琴设计Word文档下载推荐.docx_第1页
第1页 / 共19页
基于单片机的电子琴设计Word文档下载推荐.docx_第2页
第2页 / 共19页
基于单片机的电子琴设计Word文档下载推荐.docx_第3页
第3页 / 共19页
基于单片机的电子琴设计Word文档下载推荐.docx_第4页
第4页 / 共19页
基于单片机的电子琴设计Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于单片机的电子琴设计Word文档下载推荐.docx

《基于单片机的电子琴设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子琴设计Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

基于单片机的电子琴设计Word文档下载推荐.docx

单片机晶振频率为12MHZ时,乐曲中的音符、频率及定时常数之间的对应关系可制成表格。

本次设计中,定时常数是有16定时器T0根据不同的音符,装入不同的初值实现延时的,而延时常数是在自动播放音乐部分使用,控制不同音符的节拍,其延时常数是通过16位定时器T1实现的。

根据设计要求给出的各音符频率,我们只需要的各音符频率与计数值T的关系如表

(1)所示

(1):

C调各音符频率与计数值T的关系

音符

频率(Hz)

半周期(ms)

简谱码T值

定时值(H)

定时值(D)

1Do

262

1.90

F894H

62628

2Re

294

1.70

F95CH

63835

3Mi

330

1.51

FA1AH

64021

4Fa

349

1.43

FA6AH

64103

5So

392

1.28

FB00H

64260

6La

440

1.14

FB8CH

64400

7Si

494

1.01

FC0EH

64524

3.2键盘扫描原理

先将1×

8矩阵键盘的行(P2.0)和列(P1口)全部置为高电平,然后再逐行置为低电平,当有键按下时P1口的值会发生相应的改变,通过与给定数的比较,判定是否有键按下和是否键已松开。

并给定列号并保存,根据所给的列号的值,一方面通过P0口给LED送入确定好的段码数值,从而相对应地在LED上显示音符数字,另一方面从TABLE表中取出相应的值,给此时作为16位定时器的T0装入初值,不同的音符给T0装入的初值不同,即定时器的定时时间将不相同,将产生不同频率的音频脉冲,转换成声音播出的频率也将不同,从而实现7个不同的音符。

同时,通过示波器可查看P3.7的音频输出方波。

3.3硬件电路设计分析

因为AT89CXX系列与MCS-51系列单片机相比,有两大优势:

第一,片内程序存储器采用闪速存储器,使程序的写入更方便;

第二,提供了更小尺寸的芯片,使整个硬件电路的体积更小。

它以较小的体积、良好的性能价格比倍受青睐。

本次综合实验设计采用89C52单片机。

3.3.1按键模块的设计

如图

(2)所示为1×

8矩阵键盘模块,其行接P2.0口,其列逐一与P1口相接

(2)

因为不同的音符对应的频率是不同的,当按到不同的按键,发出的声音不一样,所以其产生的方波频率信号也会不一样,如下列7个小图①~⑦对应着7个不同音符的方波频率信号。

图①1Do图②2Re

图③3Mi图④4Fa

图⑤5So图⑥6La

图⑦7Si

3.3.2LED数码管显示模块的设计

如图(3)所示,为LED数码显示模块电路的设计部分

图(3)一位共阳数码管

本系统用单片机的P0口的P0.0~P0.6来控制LED显示器的数字显示。

当有7个音符按键1~7中有被按下,LED数码管将对应显示出该音符的数字,从而可以通过手动和眼看来确定所按的是哪个音符,应该发出哪个音符的声音。

而最后一个功能转换键一旦被按下,程序将会调用倒计3秒子程序,LED数码管将从3开始倒数到0,紧接着进入自动播放音乐子程序,播放程序中通过表格数据形式存放在ROM的音乐代码而形成的乐曲

3.3.3扬声器模块的设计

如图(4)所示为扬声器模块电路

图(4)扬声器模块电路

电磁式蜂鸣器由振荡器、电磁线圈、磁铁振动膜片及外壳等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。

振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

本设计的蜂鸣器通过驱动电路与单片机的P3.7连接,单片机就可以通过P3.7的输出信号频率就行控制。

令外,通过示波器接到P3.7可方便我们观察波形。

3.3.4复位和晶振等其他附属部分的电路设计

如图(5)所示,为复位和晶振等其他附属部分的电路

图(5)复位和晶振等其他附属部分的电路

XTAL1、XTAL2分别是系统时钟信号fosc的输入和输出端。

晶振电路的设计可以两个电容与一个晶振即可,用来产生一个约等于12MHZ的稳定的频率。

复位是单片机的初始化操作,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。

本系统采用上电与按键复位电路,为了防止干扰串扰复位端,所以再接一个去耦电容。

 

4实验数据

1、利用AT89C52的内部定时器T0使其工作在方式1的定时方式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音符。

计数脉冲值与频率的关系式是:

N=fi÷

fr 

式中,N是计数值,fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz),fr是想要产生的频率。

其计数初值T的求法如下:

T=65536-N=65536-fi÷

fr

实验中的K=65536,fi=1MHz,根据设计要求中给出的音阶频率表,可求出各自的计数初值。

T=65536-N=65536-fi÷

fr=65536-1000000÷

fr=65536-500000/fr

因此,可以通过计算求得各音阶的简谱码T值如下:

1Do的T=65536-500000/262.1=63628

2Re的T=65536-500000/293.7=63836

3Mi的T=65536-500000/329.6=64021

4Fa的T=65536-500000/349.2=64104

5So的T=65536-500000/392.0=64261

6La的T=65536-500000/440.0=64400

7Si的T=65536-500000/493.9=64524

相应求得在要发出不同音符时先给定时器T0装入的初值如下表:

音阶

频率(HZ)

261.1

293.7

329.6

349.2

392.0

440.0

493.9

初值

63628

63836

64

61

2、因为实验中用到的LED数码显示管是共阳极的,所以0~7八个数字的段码分别为:

数字

0

1

2

3

4

5

6

7

段码

40H

79H

24H

30H

19H

12H

02H

78H

5结束语

在这一周里,一有空余时间都把时间花在本次实验。

其过程很艰苦,有时候做到深夜,但收获是颇多。

一开始拿到题目,关于不同频率的音符,我就知道肯定需要用到定时中断来实现,可是自己学习的进度很慢,大多数时间都是自学。

不过后来用大量时间去细看每一章节,做起实验来就容易多了。

本次设计性实验让我无论是在硬件还是软件方面都有了很大的提高,同时也增强了自己的信心和对学习的兴趣。

这些也是老师严格要求我们做好每一个实验的好处。

参考文献

[1] 潘永雄.新编单片机原理与应用(第二版).西安电子科技大学出版社,2007

[2] 杨欣.51单片机应用从零开始:

清华大学出版社,2008

[3] 彭伟.单片机C语言程序设计实训100例——基于8051+proteus仿真.电子工业出版社,2010

附录1:

总体电路图

附录2:

程序流程图设计

附录3:

源程序代码

KEYBUFEQU30H

STH0EQU31H

STL0EQU32H

TEMPEQU33H

SPKEQUP3.7;

发声器所在端口

ORG0000H

LJMPSTART

ORG000BH

LJMPINT_T0;

定时器0放置弹奏乐曲程序

ORG001BH

LJMPTIME0

START:

MOVTMOD,#11H;

设置定时器的工作方式,定时器T0和T1都是方式1,作为16为定时计数器使用(定时方式)

SETBET0;

开各中断开关

SETBET1

SETBEA;

开放中断总允许和源允许

ACALLSAOMIAO;

进入手动弹奏程序

SJMPSTART

;

********手动弹奏程序********

SAOMIAO:

MOVP2,#0FFH;

手动弹奏程序

MOVP1,#0FFH;

先将键盘的行和列全部置为高电平,然后再逐行置为低电平

CLRP2.0

MOVA,P1

XRLA,0FFH

CJNEA,#00H,NEQ;

判断有没键按下

LJMPNOKEYS;

没有按键按下即跳转到NOKEYS

NEQ:

;

有按键按下即跳到NEQ

LCALLDELY10MS;

延时10ms

MOVA,P1;

消除扰动和干扰

XRLA,0FFH

CJNEA,#00H,NEQ1

LJMPNOKEYS

NEQ1:

判断是否按下#0键

CJNEA,#0FEH,NK1;

按下#0键即顺序执行程序,否则跳到NK1检查下一键位

MOVKEYBUF,#0;

保存列号#0

MOVP0,#79H;

让LED显示为1

LJMPDK1

NK1:

CJNEA,#0FDH,NK2;

判断是否按下#1键

MOVKEYBUF,#1;

保存列号#1

MOVP0,#24H;

让LED显示为2

NK2:

CJNEA,#0FBH,NK3;

判断是否按下#2键

MOVKEYBUF,#2;

保存列号#2

MOVP0,#30H;

让LED显示为3

NK3:

CJNEA,#0F7H,NK4;

判断是否按下#3键

MOVKEYBUF,#3;

保存列号#3

MOVP0,#19H;

让LED显示为4

NK4:

CJNEA,#0EFH,NK5;

判断是否按下#4键

MOVKEYBUF,#4;

保存列号#4

MOVP0,#12H;

让LED显示为5

NK5:

CJNEA,#0DFH,NK6;

判断是否按下#5键

MOVKEYBUF,#5;

保存列号#5

MOVP0,#02H;

让LED显示为6

LJMPDK1

NK6:

CJNEA,#0BFH,NK7;

判断是否按下#6键

MOVKEYBUF,#6;

保存列号#6

MOVP0,#78H;

让LED显示为7

NK7:

CJNEA,#7FH,NK8

NK8:

LJMPCHOICE

DK1:

MOVA,KEYBUF

MOVB,#2

MULAB;

对应读取表格TABLE1的数据

MOVTEMP,A

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVSTH0,A

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVSTL0,A

MOVTL0,A

SETBTR0;

开启定时器T0,T0开始计数

DK1A:

XRLA,#0FFH

JNZDK1A

MOVA,P2

ANlA,#0f0H

MOVP2,A

CLRTR0

NOKEYS:

RET

*******功能转换程序********

CHOICE:

功能转换程序

MOVP1,#0FFH

CJNEA,#7FH,NEXT1111;

按下了P1.7键后,顺序执行,否则则跳转到NEXT1111

NEXT111:

MOVP2,#0FFH

JNZNEXT111;

如果A不为0,即按键有变化,继续循环

ACALLDISPLAY;

如果按键没变化,即调用DISPLAY

MOVSP,#60H

MOVDPTR,#TABLE

ACALLMUSIC

NEXT1111:

LJMPSAOMIAO

*******自动播放音乐程序********

MUSIC:

MOV21H,#00H

JNBACC.7,AA1

SETB21H.7

AA1:

XRLA,#0FFH

JNZAA1

JNB21H.7,NEXT1111

CLRA

MOVR1,A

INCDPTR

MOVR0,A

ORLA,R1

JZNEXT1

MOVA,R0

ANLA,R1

CJNEA,#0FFH,NEXT

SJMPMUSIC

NEXT:

MOVTH1,R1

MOVTL1,R0

SETBTR1

SJMPNEXT2

NEXT1:

CLRTR1

NEXT2:

MOVR2,A

LOOP1:

ACALLDELAY

DJNZR2,LOOP1

REP12:

TIME0:

CPLP3.7

RETI

DEL1S:

MOVR5,#30

D1:

MOVR6,#100

D2:

MOVR7,#80

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

DEL:

NOP

DEL3:

MOVR4,#02H

DEL4:

DJNZR4,DEL4

DJNZR3,DEL3

********延时10ms子程序******

DELY10MS:

MOVR6,#10

D3:

MOVR7,#248

DJNZR6,D3

*******T0中断服务子程序**********

INT_T0:

MOVTH0,STH0

MOVTL0,STL0

******倒计3秒进入自动播放音乐子程序********

DISPLAY:

MOVDPTR,#table0

MOVR0,#0

LOOP10:

MOVA,R0

MOVP0,A

LCALLDELAY0

INCR0

CJNER0,#4,LOOP10

*******数码显示DISPLAY9*********

DISPLAY9:

MOVDPTR,#table8;

数码管显示数字

LOOP15:

MOVP0,A;

送到P0口显示数字

CJNER0,#10,LOOP15

DELAY0:

MOVR7,#50

DELA:

DEL12:

MOVR5,#100

DJNZR5,$

DJNZR6,DEL12

DJNZR7,DELA

*******延时子程序DELAY********

DELAY:

MOVR7,#02

D5:

MOVR6,#187

D6:

MOVR5,#248

DJNZR6,D6

DJNZR7,D5

table0:

DB30h,24h,79h,40h;

倒计时3秒

table8:

DB10h,00h,78h,02h,12h,19h,30h,24h,79h,40h;

9,8,7,6,5,4,3,2,1,0

TABLE1:

DW62628,63835,64021,64103,64260,64400,64524;

定时器TO初值

TABLE:

DB0FDH,80H,03H,0FDH,80H,01H;

音乐代码

DB0FDH,0C6H,04H,0FDH,80H,04H

DB0FEH,2AH,04H,0FEH,02H,04H

DB00H,00H,04H

DB0FDH,80H,03H,0FDH,80H,01H

DB0FEH,5CH,04H,0FEH,2AH,04H

DB0FEH,0C0H,04H,0FEH,84H,04H

DB0FEH,2AH,04H,0FEH,02H,04H

DB0FDH,0C6H,04H

DB0FEH,98H,03H,0FEH,98H,01H

DB0FEH,84H,04H,0FEH,2AH,04H

DB0FEH,5CH,04H,0FEH,2AH,04H

DB0FFH,0FFH

END

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

当前位置:首页 > 成人教育 > 远程网络教育

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

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