单片机课程设计简易电子琴Word文档格式.docx

上传人:b****4 文档编号:8235248 上传时间:2023-05-10 格式:DOCX 页数:16 大小:211.33KB
下载 相关 举报
单片机课程设计简易电子琴Word文档格式.docx_第1页
第1页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第2页
第2页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第3页
第3页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第4页
第4页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第5页
第5页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第6页
第6页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第7页
第7页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第8页
第8页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第9页
第9页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第10页
第10页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第11页
第11页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第12页
第12页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第13页
第13页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第14页
第14页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第15页
第15页 / 共16页
单片机课程设计简易电子琴Word文档格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计简易电子琴Word文档格式.docx

《单片机课程设计简易电子琴Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计简易电子琴Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。

单片机课程设计简易电子琴Word文档格式.docx

音符

频率(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

370

64185

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

415

64331

高2RE

1175

65110

低6LA

440

64400

#2RE#

1245

65134

466

64463

高3M

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

1480

65198

554

64633

高5SO

1568

65217

中2RE

587

64684

1661

65235

622

64732

高6LA

1760

65252

中3M

659

64777

1865

65268

中4FA

698

64820

高7SI

1967

65283

采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:

低音0-19之间,中音在20-39之间,高音在40-59之间

用单片机播放音乐,或者弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。

为了输出合适的方波,首先应该知道音符与频率的关系。

2.音名

从常见的电子琴的键盘谈起。

主要分成低音、中音和高音三个区域,每个区域都有12个琴键。

其中的白键,简谱音符标为1、2、3、4、5、6、7,大家一般都读成哆、来、咪、发、嗦、拉、西。

按键

1

3

4

5

6

7

8

I

频率值

524

660

1048

3.音调数据表

单片机发出不同频率的方波,人听起来,就是不同的音调。

上表中的频率数值,有些过多,去掉不常用的黑键频率,只是把白键对应的数据存放在单片机中,即可满足绝大部分的应用需求。

定义音调数据表的程序如下:

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

64580,低音区:

1234567

DW64580,64671,64777,64820,64898,64968,6503065058中音区:

DW65058,65110,65157,65178,65217,65252,6528365312高音区:

把这个数据表,放在程序中,需要播音的时候,就从表中取出一个数据送到定时器,当定时器溢出中断的时候,再对输出引脚取反,那么,在扬声器中,即可听到上表中频率的声音。

音乐的音拍,一个节拍为单位(C调)

曲调值

DELAY

 

调4/4

125ms

62ms

调3/4

187ms

94ms

调2/4

250ms

三.设计电路图

1.晶振部分

本次采用12MHZ晶振,机器周期为1us,连接两个30pF的电容,连接到AT89C51的XATL1,XATL2 上面,连接电路图如下:

2.音频输出  本次只是简单的使用一个蜂鸣器连接到AT89C51的p1.0口上

3.高。

中。

低及音乐播放键:

检测高中低是否按下,来跳转到音阶键上输出不同频率的音阶音,检测播放是否按下,跳转到示范曲目播放

4.AT89C51

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

1.主要特性:

·

与MCS-51兼容

4K字节可编程闪烁存储器

寿命:

1000写/擦循环

数据保留时间:

10年

全静态工作:

0Hz-24Hz

三级程序存储器锁定

128*8位内部RAM

32可编程I/O线

两个16位定时器/计数器

5个中断源

可编程串行通道

低功耗的闲置和掉电模式

片内振荡器和时钟电路

5.音阶键部分

6.设计电路总体图样

4、设计流程图

1.音阶键识别

5、程序如下:

KEYBUFEQU30H

STH0EQU31H

STL0EQU32H

DELYEQU33H

NUMEQU34H

ORG0000H

AJMPMAIN;

跳转到主函数

ORG000BH

LJMPINT_T0;

音乐输出口

ORG0040H

MAIN:

MOVTMOD,#01H;

写出计时器控制字,T0方式计时

SETBEA;

开中断总开关

SETBET0;

允许T0中断

MOVNUM,#01H;

;

num置1

MOVR1,#00H

TEST:

;

低音检测

ANLTH0,#00H;

高位清零

ANLTL0,#00H;

低位清零

MOVA,P2;

P2进入

CJNEA,#0FEH,TEST1;

检测P2.0口低音键是否按下

MOVDPTR,#TABLE1;

低音键按下,进入低音表地址

AJMPWAIT;

跳转到音阶检测

TEST1:

;

中音检测

CJNEA,#0FDH,TEST2;

检测P2.0中音键是否按下

MOVDPTR,#TABLE2;

中音键按下,进入中音表地址

AJMPWAIT

TEST2:

高音检测

CJNEA,#0FBH,TEST3;

检测P2.0口高音键是否按下

MOVDPTR,#TABLE3;

高音键按下,进入高音表地址

TEST3:

音乐播放检测

CJNEA,#0F7H,TEST4;

检测音乐播放键是否按下若有按下则转至EXIT

LCALLDELAY10MS;

软件延时消抖

MOVA,P2

检测播放键是否再次按下

MOVA,NUM

CJNEA,#01H,EXIT;

检测高低中是否再次按下

MOVNUM,#00H

MOVDPTR,#TABLE4;

进入音乐播放表

AJMPWAIT1;

跳转至音乐播放入口

EXIT:

CLRTR0;

计数器停止,音乐播放结束

MOVR1,#00H;

清零

MOVNUM,#01H

TEST4:

CJNEA,#01H,WAIT2

LJMPTEST;

跳转至TEST重新检测

WAIT2:

LJMPWAIT1;

WAIT:

CLRTR0

MOVNUM,#01H

SCAN1:

MOVP3,#0F0H;

音阶按键检测程序入口

CLRTR0

MOVA,P3;

ANLA,#0F0H

CJNEA,#0F0H,TEE1

AJMPTEST;

TEE1:

CJNEA,#0F0H,TEE2

AJMPTEST

TEE2:

MOVA,#0FEH

SCAN2:

MOVP3,A

MOVA,P3

MOVB,A

CJNEA,#0F0H,CARRY

MOVA,B

RLA

CJNEA,#0BFH,SCAN2

LJMPSCAN1

CARRY:

ANLB,#0FH;

键值处理

ORLA,B

CJNEA,#0EEH,KEY1;

检测音符键1是否按下

MOVKEYBUF,#00H;

赋予键值

LJMPWAI;

调至按键处理程序

KEY1:

CJNEA,#0EDH,KEY2;

检测音符键2是否按下

MOVKEYBUF,#02H;

赋予键值

调至按键处理程序

KEY2:

CJNEA,#0EBH,KEY3;

检测音符键3是否按下

MOVKEYBUF,#04H;

KEY3:

CJNEA,#0E7H,KEY4;

检测音符键4是否按下

MOVKEYBUF,#06H;

KEY4:

CJNEA,#0DEH,KEY5;

检测音符键5是否按下

MOVKEYBUF,#08H;

KEY5:

CJNEA,#0DDH,KEY6;

MOVKEYBUF,#0AH;

KEY6:

CJNEA,#0DBH,KEY7;

检测音符键6是否按下

MOVKEYBUF,#0CH;

KEY7:

CJNEA,#0D7H,SCAN1

MOVKEYBUF,#0EH;

WAI:

MOVA,KEYBUF;

按键处理程序入口

MOVCA,@A+DPTR

MOVSTH0,A

INCKEYBUF

MOVA,KEYBUF

MOVSTL0,A

MOVTH0,STH0

MOVTL0,STL0

SETBTR0

LCALLDELAY100MS

WAIT1:

CJNER1,#00H,LOOP;

播放音乐程序入口

LOOP:

MOVA,R1

MOVSTH0,A

INCR1

MOVA,R1

CJNEA,#0FEH,NEXT1

LJMPLOOP

NEXT1:

MOVSTL0,A

MOVA,R1

MOVDELY,A

SETBTR0

NEXT2:

LJMPDELAY187MS;

节拍延时控制

NEXT3:

DJNZDELY,NEXT2

LJMPTEST

NOKEY:

LJMPTEST;

重新检测

DELAY10MS:

MOVR6,#10;

10ms延时

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET;

子程序返回

DELAY100MS:

MOVR5,#06EH;

100ms延时

DL0:

MOVR4,#0CFH

DJNZR4,$

DJNZR5,DL0

RET;

DELAY187MS:

MOVR3,#187;

187ms延时,用于节拍控制

DL1:

MOVR2,#248

DJNZR2,$

DJNZR3,DL1

LJMPNEXT3

INT_T0:

MOVTH0,STH0;

高8为输入

MOVTL0,STL0;

低8位输入

CPLP1.0;

音乐输出口启用

RETI;

中断返回

TABLE1:

DB0f8h,094h,0f9h,05ch,0fah,01Ah,0FAH,06AH;

低音调表值

DB0FBH,00H,0FBH,08CH,0FCH,0EH,0FCH,044H;

TABLE2:

DB0FCH,04AH,0FCH,0AEH,0FDH,008H,0FDH,030H;

中音调表值

DB0FDH,080H,0FDH,0C6H,0FEH,02H,0FEH,022H;

TABLE3:

DB0FEH,02AH,0FEH,05CH,0FEH,084H,0FEH,098H;

高音调表值

DB0FEH,0C0H,0FEH,0E8H,0FFH,006H,0FFH,029H;

•SONG1:

;

化蝶

•.DB-3,04H,-5,03H,-6,01H,1,03H,2,01H,-6,01H,1,01H,-5,02H

•.DB5,03H,+1,01H,6,01H,5,01H,3,01H,5,01H,2,08H

•.DB2,02H,2,01H,3,01H,-7,02H,-6,02H,-5,03H,-6,01H,1,02H,2,02H

•.DB-3,02H,1,02H,-6,01H,-5,01H,-6,01H,1,01H,-5,08H

•.DB3,03H,5,01H,-7,03H,2,01H,-6,01H,1,01H,5,05H

•.DB-3,02H,-5,01H,-3,01H,-5,01H,-6,01H,-7,01H,2,01H,-6,06H,-5,01H,-6,01H

•.DB1,03H,2,01H,5,02H,3,02H,2,02H,3,01H,2,01H,1,02H,-6,01H,-5,01H

•.DB-3,04H,1,04H,-6,01H,1,01H,-6,01H,-5,01H,-3,01H,-5,01H,-6,01H,1,01H

•.DB-5,08H,FFH,08H

6、心得体会

本次单片机课程设计,本身题目并没有多大难度,但对初学者得我来说还是有些小困难,但经过理论知识的进一步学习,查阅了大量资料之后,了解了设计思路,在参考了网上的一些程序及类似作品之后,仍将它安老师要求做了出来,中间花费了很大功夫,对程序及电路图做了多次修改,终于,一份还算令自己满意的完成品诞生了!

本次简易单片机设计,要求是能发出八个音阶声音,并能控制低,中,高三音变换,还能播放示范曲目。

我利用AT89C51单片机

这次我主要的设计是一个游戏型的电子琴,采用16个键分别代表16个音,通过对按键的随意按击从而产生不同的音乐,主要是通过每个按键所产生的频率不同来使得发出的各个音不同,从而产一音乐,虽然显得单一,但是至少很简单。

这次主要参考了网上的一个实例,再加上了一些自己的补充。

我主要针对了这个设计的原理和程序的编写,从而来更好的会习设计的方法和创新。

最后,通过这次的自主完成单片机的应用系统设计,虽说不完全是自己完成,但是至少有一点,让我们学会了如何去完成一个设计报告,让我更进一步了解了单片机,也让我感受到做出一个设计的开心,喜悦与担心。

相信这对以后的毕业设计也会有很大的帮助。

参与本次设计,我也有不少收获:

第一、系统而比较全面地检查了我所学的专业知识,补充了我未学的专业知识,对一个产品的开发的步骤有一定的认识。

“查漏补缺”的同时进一步巩固了专业知识,锻炼了自己。

第二、训练了我的动手能力。

电路板得读取,程序得编制等实际操作让我真正地理解了“学以致用”的含义。

第三、在学习怎样开发SPCE061A板的同时也使我们对相应的软件环境有了更进一步的认识和了解。

比如:

Protel99SE电路板的设计环境,IDE单片机的开发环境等。

第四、使我真正意识到团队合作的重要性。

一个产品的诞生,离不开设计参与者的文化素质,更离不开他们的团队精神。

所有的参与者都是优秀的,但谁都不是最优秀的。

第五、发掘自我潜能,重视能力,注重培养自己的兴趣与爱好。

学习分析和解决问题,不要因为困难而害怕困难,只有坚持才能够取得最后的成功。

.

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

当前位置:首页 > 解决方案 > 学习计划

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

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