课程设计报告55751874.docx

上传人:b****8 文档编号:12941325 上传时间:2023-06-09 格式:DOCX 页数:19 大小:687.62KB
下载 相关 举报
课程设计报告55751874.docx_第1页
第1页 / 共19页
课程设计报告55751874.docx_第2页
第2页 / 共19页
课程设计报告55751874.docx_第3页
第3页 / 共19页
课程设计报告55751874.docx_第4页
第4页 / 共19页
课程设计报告55751874.docx_第5页
第5页 / 共19页
课程设计报告55751874.docx_第6页
第6页 / 共19页
课程设计报告55751874.docx_第7页
第7页 / 共19页
课程设计报告55751874.docx_第8页
第8页 / 共19页
课程设计报告55751874.docx_第9页
第9页 / 共19页
课程设计报告55751874.docx_第10页
第10页 / 共19页
课程设计报告55751874.docx_第11页
第11页 / 共19页
课程设计报告55751874.docx_第12页
第12页 / 共19页
课程设计报告55751874.docx_第13页
第13页 / 共19页
课程设计报告55751874.docx_第14页
第14页 / 共19页
课程设计报告55751874.docx_第15页
第15页 / 共19页
课程设计报告55751874.docx_第16页
第16页 / 共19页
课程设计报告55751874.docx_第17页
第17页 / 共19页
课程设计报告55751874.docx_第18页
第18页 / 共19页
课程设计报告55751874.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

课程设计报告55751874.docx

《课程设计报告55751874.docx》由会员分享,可在线阅读,更多相关《课程设计报告55751874.docx(19页珍藏版)》请在冰点文库上搜索。

课程设计报告55751874.docx

课程设计报告55751874

(此文档为word格式,下载后您可任意编辑修改!

河南理工大学

《单片机应用与仿真训练》设计报告

 

基于单片机的电子琴设计

 

姓名:

郭鹏超王芳

学号:

专业班级:

电气08-6班

指导老师:

王莉   

所在学院:

电气工程与自动化学院

 

2012年5月19日

摘要

当代,爱好音乐的人越来越多,有不少人自己练习弹奏乐器作为业余爱好和一种放松的手段,鉴于一些乐器学习难度大需要太多的学习时间,且其价格又太过于高昂,使得一部分有这种想法的人不得不放弃这种想法。

而一些简易的电子乐器价格相对便宜,学习上手快,一般人容易负担的起,能够满足一般爱好者的需求,故简易电子琴的研制具有一定的社会意义。

本次课程设计主要研究基于AT89S52单片机的简易电子琴设计。

整个系统主要包括以下几个部分组成:

(1)单片机的最小系统:

最小应用系统设计是单片机应用系统的设计基础。

它包括单片机的选择、时钟系统设计、复位电路设计、简单的I/O口扩展、掉电保护等。

(2)矩阵键盘:

当按键数目较多时,为了节省I/O口线,通常采用矩阵式键盘接口电路。

本设计采用5*8矩阵键盘(共40个按键,其中36个按键用来显示高中低音的1、1#、2、2#、3、4、4#、5、5#、6、6#、7的36个音调,其它4个按键可以随意的播放已存歌曲)。

(3)产生外部中断的系统:

它由两个四输入与非门74LS20和一个两输入或非门74LS02组成,把矩阵的五行与与非门74LS20和或非门74LS02相接后接在了单片机的P3.2口,下降沿触发产生中断INT0。

(4)发音电路:

此电子琴发音电路是由或非门来驱动扬声器发音的,控制单片机的P2.7口产生不同频率使扬声器发出不同的音调。

本文主要对单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴的硬件组成。

并且从原理图,主要芯片,各模块的原理和各个模块的程序调试来阐述。

利用单片机产生不同频率来获得我们要求的音阶,最终可以随意弹奏想要表达的音乐,还设计了一按键用来自动播放一首曲子。

系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比高等,具有一定的使用和参考价值。

 

目录

1概述1

1.1本次课程设计的目的意义1

1.2本次课程设计的任务及要求1

2系统总体方案及硬件设计2

2.1设计原理分析2

2.2设计方案2

2.2.1原理框图2

2.2.2定时/计数器的设计和状态字定义:

3

2.2.3矩阵键盘设计及相关应用技术5

2.2.4LED显示设计及相关应用技术5

2.2.5发音电路设计6

2.2.6产生外部中断电路设计6

2.2.7单片机最小系统设计7

3软件设计8

3.1系统分析8

3.1.1系统软件的组成8

3.1.2系统程序总体流程图8

3.2参数计算9

3.3程序设计10

3.3.1弹奏程序流程图10

3.3.2自动播放歌曲程序流程图11

4实验仿真测试13

5课程设计体会14

1概述

1.1本次课程设计的目的意义

本论文是基于单片机的电子琴设计,电子琴是现代科技与音乐结合的产物,是一种新型的键盘乐器。

它是现代音乐扮演着的重要角色,单片机具有强大的控制功能和灵活的编程实现特性,它融入现代人们的生活中,成为不可替代的一部分。

因此说,学会运用单片机做一些简单的课程设计是我们工程技术人员必需掌握的一向技能。

本次设计要求我们综合利用所学单片机知识完成一个单片机应用系统设计并仿真实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下基础。

另外,通过本次课程设计,对我们还有以下帮助:

1、进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤

2、掌握单片机仿真软件Proteus的使用方法;

3、掌握键盘和显示器在的单片机控制系统中的应用。

4、掌握撰写课程设计报告的方法。

1.2本次课程设计的任务及要求

实现电子琴发声控制系统,要求电路实现如下功能:

利用扬声器或者蜂鸣器作为发声部件,两个数码管作为显示部件,设置多个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。

并在存储一首歌曲的内容,可以实现自动播放。

说明:

单片机的工作时钟频率为12MHz。

 

2系统总体方案及硬件设计

2.1设计原理分析

一定频率产生声音,频率高低决定音调。

利用单片机输出脉冲信号经放大后送给喇叭,便可发出声音。

利用单片机的定时器,让定时器中断一次就对改变喇叭的状态一次,即形成矩形方波,这也是数字电路产生声音的方法。

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

2.2设计方案

2.2.1原理框图

原理图如下图所示

2.2.2定时/计数器的设计和状态字定义:

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

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

若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。

利用定时器计时半周期时间,每当计时终止后就将P2.7反相,然后重复计时再反相。

就可在P2.7口引脚上得到此频率的脉冲。

利用AT89S52的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。

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

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

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

T=65536-N=65536-fi/2/fr

例如:

设K=65536,fi=1MHz,求中音DO(261Hz)。

T=65536-N=65536-fi/2/fr=65536-/2/fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。

单片机12MHZ晶振,音符与计数T0相关的计数值如表所示:

C调音符

频率/Hz

THTL

C调音符

频率/Hz

THTL

C调音符

频率/Hz

THTL

低音1

262

F88B

1

523

FC43

高音1

1045

FE21

低音1#

277

F8F2

1#

553

FC78

高音1#

1106

FE3C

低音2

293

F95B

2

586

FCAB

高音2

1171

FE55

低音2#

311

F9B7

2#

621

FCDB

高音2#

1241

FE6D

低音3

329

FA14

3

658

FD08

高音3

1316

FE84

低音4

349

FA66

4

697

FD33

高音4

1393

FE99

低音4#

370

FAB9

4#

739

FD5B

高音4#

1476

FEAD

低音5

392

FB03

5

783

FD81

高音5

1563

FEC0

低音5#

415

FB4A

5#

830

FDA5

高音5#

1658

FED2

低音6

440

FB8F

6

879

FDC7

高音6

1755

FEE3

低音6#

466

FBCF

6#

931

FDE7

高音6#

1860

FEF3

低音7

494

FC0B

7

987

FE05

高音7

1971

FF02

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

低音0-11之间,中音在12-23之间,高音在24-35之间

TABLE:

0xF8,0x8B,0xF8,0xF2,0xF9,0x5B,0xF9,0xB7,0xFA,0x14,0xFA,0x66,0xFA,0xB9,0xFB,0x03,0xFB,0x4A,0xFB,0x8F,0xFB,0xCF,0xFC,0x0B,//低音

0xFC,0x43,0xFC,0x78,0xFC,0xAB,0xFC,0xDB,0xFD,0x08,0xFD,0x33,0xFD,0x5B,0xFD,0x81,0xFD,0xA5,0xFD,0xC7,0xFD,0xE7,0xFE,0x05,//中音

0xFE,0x21,0xFE,0x3C,0xFE,0x55,0xFE,0x6D,0xFE,0x84,0xFE,0x99,0xFE,0xAD,0xFE,0xC0,0xFE,0xD2,0xFE,0xE3,0xFE,0xF3,0xFF,0x02//高音

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

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

曲调值

DELAY

 

曲调值

DELAY

调4/4

125ms

 

调4/4

62ms

调3/4

187ms

 

调3/4

94ms

调2/4

250ms

 

调2/4

125ms

对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。

在这个程序中用到了两个定时/计数器来完成的。

其中T0用来产生音符频率延时函数用来产生音拍。

2.2.3矩阵键盘设计及相关应用技术

采用5X8行列式键盘识别;

(1)把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“5X8行列式键盘”区域中的列C1-C8端口上,把P2.0-P2.4端口连接到“5X8行列式键盘”区域中的行R1-R5上;

(2)把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“7段数码显示模块”区域中的任一个a-h端口上;要求:

P0.0对应着a,P0.1对应着b,……,P0.7对应着h。

2.2.4LED显示设计及相关应用技术

LED显示模块,是采用两位一体的数码管显示的。

利用AT89S52单片机的P0端口的P0.0-P0.7连接到一个七段数码管的a-h的笔段上,数码管的公共端接地。

第一个显示0、1、2,分别表示高、中、低音,第二个用来显示1、1#、2、2#、3、4、4#、5、5#、6、6#、7等十二个音调,分别用0、1、2、3、4、5、6、7、8、9、A、b显示出来。

(1)LED数码显示原理:

七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。

LED数码管的a~g七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码表:

“0”

3FH

“8”

7FH

“1”

06H

“9”

6FH

“2”

5BH

“A”

77H

“3”

4FH

“b”

7CH

“4”

66H

“C”

39H

“5”

6DH

“d”

5EH

“6”

7DH

“E”

79H

“7”

07H

“F”

71H

(2)由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。

这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!

建立的表格如下所示:

TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。

2.2.5发音电路设计

如左图所示,发音电路是由扬声器、或非门74LS02构成。

由或非门来驱动扬声器发音的,可通过控制单片机的P2.7口产生不同频率使扬声器发出不同的音调。

2.2.6产生外部中断电路设计

它由两个四输入与非门74Ls20和一个两输入或非门74LS02组成,把矩阵的五行与与非门74LS20和或非门74LS02相接后接在了单片机的P3.2口,下降沿触发产生中断INT0。

矩阵键盘的列在程序中初始化为低电平,当有按键按下,行与列接通,行也变为低电平,即使P2.0-P2.4为“0”,通过上面电路,使INT0端口为“0”,产生中断。

利用程序控制,作用与发音电路发出声音。

2.2.7单片机最小系统设计

最小应用系统设计是单片机应用系统的设计基础。

它包括单片机的选择、时钟系统设计、复位电路设计、简单的I/O口扩展、掉电保护等。

本次设计采用的是AT89S52,其特点是8字节FLASH闪速存储器,256字节,32个I/O口线,3个16位定时/计数器,掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.主演的是它与C51系列产品指令和引脚完全兼容.

最小系统的时钟电路采用12MHZ晶振,机器周期为1us,连接两个30pF的电容,连接到AT89S52的XATL1,XATL2上面,如左图所示。

复位电路采用的是上电+按钮电平复位,是利用电容充电来实现上电复位。

当按钮按下后,电源施加在单片机复位端RST上,实现单片机复位功能。

3软件设计

3.1系统分析

3.1.1系统软件的组成

(1)键盘扫描程序:

检测是否有按键按下,有按键按下则记录按下键的键值,并跳转至功能转移程序;无按键按下,则返回键盘扫描程序继续检测。

(2)功能转移程序:

对检测到的按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲的功能。

(3)琴键处理程序:

根据检测到的按键值,查询音调表,给计时器赋值,使发出相应频率的声音。

(4)自动播放歌曲程序:

检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有按键按下。

3.1.2系统程序总体流程图

3.2参数计算

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

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

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

T=65536-N=65536-fi/2/fr

例如:

设K=65536,fi=1MHz,求中音DO(261Hz)。

T=65536-N=65536-fi/2/fr=65536-/2/fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。

3.3程序设计

3.3.1弹奏程序流程图

3.3.2自动播放歌曲程序流程图

4实验仿真测试

5课程设计体会

这次设计从软件方面来讲不是很难,程序相对长一点,但都是书本上所学的知识,主要是中断及其服务程序的编写。

在protues上仿真,则起到很好的效果,因为元器件都是理想状态的,但做出实物来却不是那么简单啦。

经过多次调试、修改才得以出结果。

将程序载入芯片,调试成功后,可任意弹奏自己想要的旋律。

同时可以播放一首示例歌曲,但是也有不足之处的,声音杂音时而有点大,不稳定。

经过本次课程设计,我们比较好的把理论知识与实践相结合,而我们在也本次设计中收获不少。

设计过程中,首先,对于C语言多了一层了解,其次,还有硬件的接线,还有单片机AT89S52芯片的引脚方面,都让我们收获不少。

加强了自身的动手能力。

参考文献

参考文献格式:

期刊论文:

[序号]主要责任者.文献题名.刊名,年,卷(期):

起止页码

如:

[1]金显贺,王昌长,王忠东,等.一种用于在线检测局部放电的数字滤波技术.清华大学学报(自然科学版),1993,33(4):

62-67

书、专著:

[序号]主要责任者.文献题名.出版地:

出版社,出版年.起止页码

如:

[1]刘国钧,陈绍业,王凤翥.图书馆目录.北京:

高等教育出版社,1957.15-18

电子文献:

[序号]主要责任者.电子文献题名.电子文献的出处或可获得地址,发表或更新日期/引用日期

如:

[1]王明亮.关于中国学术期刊标准化数据库系统工程的进展.

/

附1源程序代码

#include

#defineucharunsignedchar

#defineuintunsignedint

voidPlayKey(uchar,uchar);//运行按键

voidRun();//运行

voidKeyScan();//扫描键盘

voiddelay_1ms(uchar);//1ms延时

voidPlayMusic(ucharcode*p);//演奏音乐

voidDisplay(uchar);

sbitSpeaker=P2^7;

sbitG=P2^6;

sbitD=P2^5;

sbitLed=P1^0;

ucharKeyValue;//按键值

ucharTh0,Tl0;//TH0,TL0

ucharKeyPinlv;//按键对应频率

ucharflag;

ucharcodetable_d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管编码

//音调频率

ucharcodepinlv[]={

0xF8,0x8B,0xF8,0xF2,0xF9,0x5B,0xF9,0xB7,0xFA,0x14,0xFA,0x66,0xFA,0xB9,0xFB,0x03,0xFB,0x4A,0xFB,0x8F,0xFB,0xCF,0xFC,0x0B,//低音

0xFC,0x43,0xFC,0x78,0xFC,0xAB,0xFC,0xDB,0xFD,0x08,0xFD,0x33,0xFD,0x5B,0xFD,0x81,0xFD,0xA5,0xFD,0xC7,0xFD,0xE7,0xFE,0x05,//中音

0xFE,0x21,0xFE,0x3C,0xFE,0x55,0xFE,0x6D,0xFE,0x84,0xFE,0x99,0xFE,0xAD,0xFE,0xC0,0xFE,0xD2,0xFE,0xE3,0xFE,0xF3,0xFF,0x02//高音

};

ucharcodemusic[]={xFF};

voidDisplay(ucharKey)

{

P0=table_d[Key/12];

G=0;D=1;

delay_1ms(10);//P2.5低位P2.6高位

P0=table_d[Key%12];

G=1;D=0;

delay_1ms(10);

}

voiddelay_1ms(uchari)//1ms延时

{

ucharx,j;

for(j=0;j

for(x=0;x<=148;x++)

;

}

voidKeyScan()//检测按键

{

uchari,j;

uchartemp;

uchartable0[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

EX0=0;//扫描键盘,关外部中断

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

{

P1=table0[j];//delay();

temp=0x01;

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

{

if(!

(P2&temp))

{

KeyValue=i*8+j;

EX0=1;//开外部中断

P1=0x00;

return;

}

temp<<=1;

}

}

EX0=1;

}

voidRun()//运行

{

ucharcode*p;

if(KeyValue<36)

{

PlayKey(pinlv[KeyValue*2],pinlv[KeyValue*2+1]);

}

else

{

p=music;

PlayMusic(p);

}

}

voidPlayKey(ucharPLH,ucharPLL)//运行按键

{

Th0=PLH;

Tl0=PLL;

TR0=1;

delay_1ms(187);

TR0=0;

Speaker=1;

}

voidPlayMusic(ucharcode*p)

{

uinti,j;

flag=0;

for(i=0;p[2*i]!

=0xFF;++i)

{

j=p[2*i];

if(j!

=0)

{

while(j--)

{

if(flag==1)

return;

PlayKey(pinlv[p[2*i+1]*2],pinlv[p[2*i+1]*2+1]);

}

}

if(j==0)

{

delay_1ms(187);

}

}

}

voidDevice_init()//初始化

{

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

TR0=0;

ET0=1;//定时器0中断

EX0=1;

IT0=1;//下降沿中断

EA=1;//打开总中断

flag=0;//没有按键

P1=0x00;

}

timer0()interrupt1using0//定时器中断

{

TH0=Th0;TL0=Tl0;

Speaker=!

Speaker;

}

Int0()interrupt0using1//外部中断

{

EX0=0;

flag=1;

P1=0x00;

EX0=1;

}

voidmain()

{

Device_init();

while

(1)

{

if(flag)

{

KeyScan();

Run();

flag=0;

}

Display(KeyValue);

}

}

附2系统原理图

设计仪器、设备和材料清单:

主要仪器设备:

个人计算机和相关的软件

主要元器件:

按键40个、单片机芯片AT89S52一片

12MHz晶振一个

不同阻值电阻数个

开关一个

USB电源插口一个

喇叭一个10uF、30pF电容数个

电路板一块

电烙铁一个等

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

当前位置:首页 > 临时分类 > 批量上传

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

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