单片机设计项目讲义.docx

上传人:b****6 文档编号:6611811 上传时间:2023-01-08 格式:DOCX 页数:13 大小:154.51KB
下载 相关 举报
单片机设计项目讲义.docx_第1页
第1页 / 共13页
单片机设计项目讲义.docx_第2页
第2页 / 共13页
单片机设计项目讲义.docx_第3页
第3页 / 共13页
单片机设计项目讲义.docx_第4页
第4页 / 共13页
单片机设计项目讲义.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机设计项目讲义.docx

《单片机设计项目讲义.docx》由会员分享,可在线阅读,更多相关《单片机设计项目讲义.docx(13页珍藏版)》请在冰豆网上搜索。

单片机设计项目讲义.docx

单片机设计项目讲义

单片机设计项目报告书

设计项目题目:

单片机奏乐

项目概述:

利用51单片机内部T0的溢出中断编程方法,编制一首乐曲,并播放。

设计思路:

1.工作原理

通过控制单片机定时器的定时时间产生不同频率的音频脉冲,经放大后驱动蜂鸣器发出不同音节的声音。

用软件延时来控制发音时间的长短,控制节拍。

把乐谱中的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器当中,由程序得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出该音脉冲的持续时间。

乐曲中的音符,频率及定时常数之间对应关系可制成表格,如表1-1所列。

2.音调和节拍的确定方法

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

在音乐中所谓“音调”,其实就是我们常说的“音高”。

在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。

当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程,在音乐中1(do)与i……正好相差一个倍频程,在音乐学中称它相差一个八度音。

在一个八度音内,有12个半音。

以1—i八音区为例, 12个半音是:

1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。

这12个音阶的分度基本上是以对数关系来划分的。

如果我们知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。

知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?

一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。

那么怎样确定一个频率所对应的定时器的定时值呢?

以标准音高A为例:

A的频率f=440Hz,其对应的周期为:

T=1/f=1/440=2272μs

 

t=T/2=2272/2=1136μs

这个时间t也就是单片机上定时器应有的中断触发时间。

一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。

音符的节拍我们可以举例来说明。

在一张乐谱中,我们经常会看到这样的表达式,如1=C、1=G……等等,这里1=C,1=G表示乐谱的曲调,和我们前面所谈的音调有很大的关联,、就是用来表示节拍的。

以为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。

比如:

 

其中1、2为一拍,3、4、5为一拍,6为一拍共三拍。

1、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。

那么一拍到底该唱多长呢?

一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms。

我们以一拍的时长为400ms为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。

可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。

首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。

通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。

具体的实现方法为:

将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。

另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。

表1-1音符,频率及定时常数对应关系

C调音符

低1

低2

低3

低4

低5

低6

低7

频率

262

294

330

349

392

440

494

定时值

F894H

F95CH

FA1AH

FA6AH

FB00H

FB8CH

FC0EH

C调音符

1

2

3

4

5

6

7

频率

523

587

659

698

784

880

988

定时值

FC4AH

FCAEH

FD08H

FD30H

FD80H

FDC6H

FD02H

C调音符

高1

高2

高3

高4

高5

高6

高7

频率

1046

1175

1318

1397

1568

1760

1967

定时值

FE2AH

FE5CH

FE84H

FE98H

FEC0H

FEE8H

FF06H

 

实验器件:

1)PC机,WAVE6000仿真软件

2)单片机应用与仿真开发实验台

3)蜂鸣器放大器

软件设计:

本程序实现播放三首歌曲,并设有暂停键和复位键和选曲键。

spkbitP2.5;定义蜂鸣器编号

;********************************************

org0000h

sjmpstart

org0003h

sjmpint0

org000bh

sjmptime

org0030h

start:

movsp,#60h

movtmod,#01h;设定时器方式1

clrit0;外部中断电平触发

setbet0;开启T0计数器

setbex0;开外部中断

setbea;开总中断

mova,#0ffh

movp2,a

l1:

mova,p2

cjnea,#0ffh,l2

sjmpl1

l2:

jnbp2.0,l3;按下p2.0播放HappyBirthday

jnbp2.1,l4;按下p2.1播放Eyesonme

jnbp2.2,l5;按下p2.2播放北京欢迎你

sjmpstart

l4:

movdptr,#dat

sjmploop

l5:

movdptr,#tt

sjmploop

l3:

movdptr,#table;存表首地址

loop:

clra;清零

movca,@a+dptr;查表

movr1,a;定时器高8位存R1

incdptr;指针加一

clra;清零

movca,@a+dptr;查表

movr0,a;定时器低8位存r0

orla,r1;进行或运算

jznext1;如果为零则为休止符

mova,r0

anla,r1;进行与运算

cjnea,#0ffh,next;如果为FFH则乐曲结束

sjmpstart;从头开始循环演奏

next:

movth0,r1;装入高8位定时值

movtl0,r0;装入低8位定时值

setbtr0;启动定时器T0

sjmpnext2;转移至next2处

next1:

clrtr0  ;关闭定时器停止发声

next2:

clra;清零

incdptr     ;指针加一

movca,@a+dptr  ;查表(延时常数)

movr2,a     ;延时常数存R2

loop1:

acalldelay;调用延时子程序

djnzr2,loop1  ;循环次数

incdptr;指针加一

jmploop     ;转移至loop处

time:

movth0,r1    ;重装定时值

movtl0,r0

cplspk;反相输出

mova,p1

cpla

movp1,a

reti;中断返回

delay:

movr7,#02;延时187ms

d2:

movr6,#187

d3:

movr5,#248

djnzr5,$

djnzr6,d3

djnzr7,d2

ret

;********************************************

;外部中断程序,实现暂停功能

;********************************************

int0:

clrtr0

reti

;********************************************

;生日快乐

;********************************************

table:

db0fdh,80h,03h,0fdh,80h,01h

db0fdh,0c6h,04h,0fdh,80h,04h

db0feh,2ah,04h,0fdh,02h,04h

db00h,00h,04h

db0fdh,80h,03h,0fdh,80h,01h

db0fdh,0c6h,04h,0fdh,80h,04h

db0feh,5ch,04h,0feh,2ah,04h

db00h,00h,04h

db0fdh80h,03h,0fdh,80h,01h

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

db00h,00h,04h

db0ffh,0ffh

;********************************************

;Eyesonme

;********************************************

dat:

db00h,00h,01h,0fbh,00h,04h

db0fch,4ah,04h,0fch,0aeh,04h

db0fdh,08h,04h,0fdh,80h,02h

db0fdh,08h,02h,0fdh,08h,04h,

db00h,00h,02h,00h,00h,02h

db00h,00h,02h,0fch,0aeh,02h

db0fdh,08h,02h,0fch,4ah,04h

db00h,00h,02h,0fbh,8ch,02h

db0fch,4ah,02h,0fch,4ah,02h

db0fch,0aeh,02h,0fch,0aeh,02h

db00h,00h,02h,0fbh,00h,02h

db0fch,4ah,04h,0fch,0aeh,04h

db0fdh,08h,04h,0fdh,80h,02h

db0feh,02h,02h,0feh,02h,03h

db00h,00h,03h,00h,00h,03h

db00h,00h,03h,0feh,02h,02h

db0feh,2ah,02h,0fdh,0c6h,03h

db0fdh,80h,02h,0fdh,0c6h,02h

db0fdh,80h,02h,00h,00h,03h

db00h,00h,03h,00h,00h,02h

db0fdh,80h,02h,0feh,2ah,04h

db0feh,2ah,04h,0feh,2ah,04h

db0feh,02h,03h,0fdh,0c6h,02h

db0fdh,0c6h,02h,0fdh,0c6h,02h

db0fdh,80h,02h,0fdh,80h,04h

db00h,00h,03h,0fdh,08h,03h

db0fdh,80h,03h,0fdh,0c6h,04h

db0fdh,0c6h,02h,0fdh,80h,04h

db0fdh,30h,04h,0fdh,30h,02h

db0fch,0aeh,02h,0fdh,08h,04h

db00h,00h,04h,00h,00h,02h

db0fdh,08h,02h,0fdh,08h,04h

db0fch,0aeh,02h,0fdh,08h,02h

db0fdh,30h,04h,0fdh,08h,02h

db0fch,0aeh,02h,0fch,0aeh,02h

db0fch,4ah,02h,0fch,4ah,04h

db00h,00h,04h,0fbh,8ch,02h

db0fch,4ah,02h,0fch,4ah,04h

db00h,00h,04h,0fch,4ah,02h

db0fch,0aeh,02h,0fdh,08h,02h

db0fdh,80h,03h,0fch,0aeh,04h

db00h,00h,04h,00h,00h,04h

db00h,00h,02h,0fdh,80h,02h

db0fdh,0c6h,04h,0fdh,0c6h,02h

db0fdh,80h,02h,0fdh,30h,02h

db0fch,4ah,02h,0fdh,08h,02h

db0fdh,08h,02h,0fch,0aeh,02h

db0fch,0aeh,04h,00h,00h,04h

db00h,00h,02h,0fbh,00h,02h

db0fch,4ah,04h,0fch,0aeh,04h

db0fdh,08h,02h,0fdh,30h,02h

db0fdh,80h,02h,0fdh,80h,04h

db00h,00h,04h,00h,00h,02h

db0fdh,80h,02h,0fdh,30h,02h

db0fch,4ah,02h,0fdh,80h,04h

db00h,00h,04h,00h,00h,04h

db0fch,0aeh,02h,0fch,4ah,02h

db0fch,4ah,04h,00h,00h,04h

db00h,00h,04h,00h,00h,04h

db00h,00h,04h,00h,00h,04h

db0fch,4ah,02h,0fdh,08h,02h

db0fdh,08h,02h,0fdh,80h,02h

db0feh,02h,04h,0fdh,0c6h,02h

db0fdh,0c6h,04h,00h,00h,04h

db0fdh,0c6h,04h,00h,00h,04h

db0fdh,0c6h,02h,0feh,02h,02h

db0feh,02h,02h,0feh,2ah,02h

db0fdh,0c6h,04h,0fdh,80h,01h

db0fdh,80h,04h,00h,00h,04h

db0fdh,0c6h,04h,00h,00h,04h

db00h,00h,02h,0fdh,08h,02h

db0fdh,08h,02h,0fdh,30h,02h

db0fdh,80h,04h,0fdh,30h,02h

db0fdh,30h,04h,00h,00h,04h

db0fdh,30h,04h,00h,00h,04h

db0fdh,30h,02h,0fdh,80h,02h

db0fdh,80h,02h,0fdh,0c6h,02h

db0fdh,0c6h,04h,0fdh,80h,02h

db0fdh,80h,04h,00h,00h,04h

db0ffh,0ffh

;********************************************

;北京欢迎你

;********************************************

tt:

db0fdh,08h,02h,0fdh,80h,02h

db0fdh,08h,02h,0fch,0aeh,02h

db0fdh,08h,02h,0fch,0aeh,02h

db0fdh,08h,04h

db0fdh,08h,02h,0fch,0aeh,02h

db0fbh,08ch,02h,0fch,04ah,02h

db0fdh,08h,02h,0fch,0aeh,04h

db00h,00h,01h

db0fch,0aeh,02h,0fch,4ah,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fch,0aeh,02h,0fdh,08h,02h

db0fdh,80h,02h,0fch,0aeh,02h

db0fdh,08h,02h,0fdh,0c6h,02h

db0fdh,80h,02h,0fbh,00h,02h

db0fch,0aeh,02h,0fch,4ah,02h

db00h,00h,03h

db0fch,0aeh,02h,0fch,4ah,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fch,0aeh,02h,0fdh,08h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,80h,02h,0fch,0aeh,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,08h,02h,0fdh,0c6h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,80h,02h,0fdh,80h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,08h,02h,00h,00h,03h

db0fbh,08ch,02h,0fch,4ah,02h

db0fch,0aeh,02h,0fdh,08h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fch,0aeh,02h,0fch,4ah,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,80h,02h,0fdh,0c6h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,08h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fbh,8ch,02h,0fdh,08h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,08h,02h,0fch,0aeh,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,08h,02h00h,00h,01h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,08h,02h,0fdh,80h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0feh2ah,02h,0fdh,80h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,0c6h,02h,00h,00h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,0c6h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,80h,02h,0fdh,08h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db00h,00h,03h

db0fdh,08h,02h,0fdh,80h,02h

db0fdh,80h,02h,0fdh,08h,02h

db0fdh,80h,02h,0fdh,0c6h,02h

db0feh2ah,02h,0feh,5ch,02h

db0fdh,80h,02h,0fdh,08h,02h

db0fch,0aeh,02h,0fdh,80h,02h

db0fdh,08h,02h,00h,00h,02h

db0fdh,08h,02h,0fdh,80h,02h

db0feh,2ah,02h,0fdh,80h,02h

db0fdh,0c6h,02h,0feh,2ah,02h

db0feh,5ch,02h,0feh,2ah,02h

db0fdh,80h,02h,0fdh,08h,02h

db0fdh,80h,02h,0feh,2ah,02h

db0fdh,0c6h,02h,00h,00h,02h

db0fdh,08h,02h,0fch,0aeh,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0fdh,08h,02h,0fdh,80h,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0feh84h,02h,0feh,5ch,02h

db0fbh,08ch,02h,0fch,4ah,02h

db0feh,5ch,02h,0feh,2ah,02h

db0fbh,08ch,02h,0fch,4ah,02h

db00h,00h,02h,0feh,2ah,02h

db0ffh,0ffh

end

流程图:

主程序:

 

中断程序:

 

硬件连接电路:

 

参考文献:

[1]周向红.51系列单片机应用与实践教程[M].航空航天大学出版社,2008

[2]马光.单片机原理及应用[C].北京:

机械工业出版社,2008.

[3]谢嘉奎主编,宣月清,冯军编。

电子线路(线性部分)[C].北京:

高等教育出版社,1999.6

[4]马家辰编。

MCS-51单片机原理及接口技术[C].哈尔滨:

哈尔滨工业大学出版社1999.6

 

实验结果:

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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