单片机电子音调发声器资料Word文件下载.docx
- 文档编号:17075061
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:35
- 大小:132.28KB
单片机电子音调发声器资料Word文件下载.docx
《单片机电子音调发声器资料Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机电子音调发声器资料Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
FA15H
659
FD09H
1319
FE85H
4
349
FA67H
698
FD34H
1397
FE9AH
5
392
FB04H
784
FD82H
1568
FEC1H
6
440
FB90H
880
FDC8H
1760
FEE4H
7
494
FC0CH
988
FE06H
1976
FF03
总体框图如下:
首先,通过矩阵开关选择不同的音调,音乐播放开关选择不同的音乐;
然后,单片机识别出开关位置并跳到对应响应处;
最后,扬声器发声,同时数码管显示音符。
四、实验电路设计
图1扬声器发声电路
图1中扬声器工作由P1.6口产生的方波信号经NPN将电流放大后驱动发声。
在仿真过程中发现,当R1较大一点的时候,声音会很小,即放大能力不够,所以我选择了220的电阻。
图2矩阵键盘控制电路
图2中的21个开关分别对应低频的1-7、中频的1-7及高频的1-7。
一至三行开关的左端分别为单片机的P1.3、P1.4和P1.5端口,一至七列开关的右端分别为单片机的P3.1-P3.7端口。
在开关查询的过程中,按行查询,并在查询每一行的同时,使其左端电平置零,查询下一行之前再将本行左端清零。
在按下不同的开关的同时使其左右端对应端口均为低电平,这样就能通过不同的组合跳转到不同的响应处,即利用10个端口、21个开关来选择21个不同的音调。
实际上利用10个端口可以最多控制25个开关,但在本次实验中只需要扩展为21个就够了。
图3Proteus仿真电路图
从图3中可以看出,单片机89C52的左侧接了一个12MHz的晶振电路,一个复位电路,一个扬声器的驱动电路,右侧接了数码管的显示电路。
在下面为音乐的播放开关与电子琴的各音阶开关。
接上电源后,单片机复位,数码管显示为0。
按下矩阵中的开关可使扬声器发出不同音调的声音,按下音乐播放开关播放音乐,再次按下本开关,暂停播放,再按一下就能继续播放;
而在音乐播放的过程中,还添加了停止播放的功能,即返回开始查询处并清零。
播放歌曲1时音乐2开关为停止键,播放歌曲2、3时开关1为停止键。
五、单片机程序设计
1.音乐播放开关查询
M1:
JBP1.0,M2;
P1.0口为1时跳转
LCALLDELAY;
延时给开关消抖
JBP1.0,M2;
消抖后继续判断
LJMPMUSIC1;
P1.0口为0时播放曲目1
M2:
JBP1.1,M3;
P1.1口为1时跳转
JBP1.1,M3
LJMPMUSIC2;
P1.1口为0时播放曲目2
M3:
JBP1.2,L;
P1.2口为1时跳转
LJMPMUSIC3;
P1.2口为0时播放曲目3
2.音调开关查询
L:
CLRP1.3;
查询第一行之前,使其左端电平置零
K11:
JBP1.3,K12;
判断开关左端电平
JBP3.1,K12;
判断开关右端电平
延迟消抖
JBP3.1,K12
LJMPKEY11;
跳转到对应音调发生处
K12:
JBP1.3,K13
JBP3.2,K13
LCALLDELAY
LJMPKEY12
K13:
JBP1.3,K14
JBP3.3,K14
JBP3.3,K14
LJMPKEY13
K14:
JBP1.3,K15
JBP3.4,K15
LJMPKEY14
K15:
JBP1.3,K16
JBP3.5,K16
LJMPKEY15
K16:
JBP1.3,K17
JBP3.6,K17
LJMPKEY16
K17:
JBP1.3,M
JBP3.7,M
LJMPKEY17
此处只有低音的部分,其余可见附录。
3.音调发声
KEY11:
SETBP1.6;
音调1的方波发声
MOVR3,#50;
设循环初值,使音调1持续一定时间
LOP11:
MOVTMOD,#01H;
设置定时器T0工作方式1
MOVTL0,#8CH
MOVTH0,#0F8H;
音调1对应初值F88CH
SETBTR0;
启动T0工作
WT11:
JNBTF0,WT11;
定时未到,循环等待
CLRTF0;
定时到,清TF0
CPLP1.6;
由P1.6输出,信号取反
DJNZR3,LOP11
MOVA,#0F9H
MOVP2,A;
数码管显示音阶
JBP1.3,TT11;
JBP3.1,TT11;
LJMPKEY11
TT11:
LJMPSTART;
跳回开始查询
此处只有低音的音阶1的程序,其余可见附录。
4.音乐播放
MUSIC1:
MOVR0,#00H;
延时表指针置零
MOVR1,#00H;
音阶表指针置零
TAB11:
MOVA,R0
MOVDPTR,#YANSHI
MOVCA,@A+DPTR
MOVR2,A;
查表法将一个延时数据取出放R2计数器中
CJNER2,#0,TAB12;
歌曲播放完结束标号识别
LJMPSTART0
TAB12:
MOVA,R1
MOVDPTR,#YINJIE
MOVCA,@A+DPTR;
查表取出音阶数据
MOVR3,A;
取出音阶高8位
INCR1;
指针加1
MOVA,R1
MOVR4,A;
取出音阶低8位
输出相应音调的方波
LOOP1:
MOVR5,#40H
MA1:
MOVTMOD,#01H
MOVTL0,R4
MOVTH0,R3
SETBTR0
WT1:
JNBTF0,WT1
CLRTF0
CPLP1.6
JBP1.0,TINGZ1;
暂停播放判断
JBP1.0,TINGZ1
LCALLPULSE1;
若为暂停跳到暂停子程序
TINGZ1:
JBP1.1,LX1;
停止播放判断
JBP1.1,LX1
LJMPSTART0;
若为停止跳到停止子程序
LX1:
MOVA,R0
MOVDPTR,#LYRIC1
查表找到相应音阶
DECA
MOVDPTR,#CA1
MOVCA,@A+DPTR;
查表找到相应数码管显示码
MOVP2,A;
歌词显示
DJNZR5,MA1
DJNZR2,LOOP1;
没结束则继续放第一首歌
INCR0
两个表的指针都加1
LJMPTAB11;
继续下一个音阶查找
此处歌曲音阶、延时等相关数据省略,详见附录。
5.暂停及延时子程序
;
延时100ms子程序
DELAY:
MOVR0,#100
DL:
MOVTL0,#18H
MOVTH0,#0FCh
DL0:
JNBTF0,DL0
DJNZR0,DL
MOVR0,A
RET
歌曲1暂停子程序
PULSE1:
JBP1.0,PULSE1
歌曲2暂停子程序
PULSE2:
JBP1.1,PULSE2
JBP1.1,PULSE2
歌曲3暂停子程序
PULSE3:
JBP1.2,PULSE3
JBP1.2,PULSE3
六、实验设计中的问题
本次实验的仿真过程我使用了Proteus仿真软件,在仿真过程中,主要的问题出在扬声器的发声上,如果不接驱动电路,扬声器可以发声,蜂鸣器就不行。
而在实际焊接过程中,在没有接驱动电路部分时扬声器是无法发声的。
其次是在按住开关让他延长发声的时候,会有颤音,后来发现这是由于它在一次发声后跳回开始再次查询的时间差造成的,只要在发声程序中加入电平的判断,一直让它循环发声,不跳出即可。
最后是在矩阵开关设计的过程中,本想着是开关有一端接地,有两端接两个端口,让开关在按下时同时给两端置零,不按接高电平。
但对于我所使用的开关没法实现此功能,我只好在查询每一行的时候,通过程序给一端置零,这样就能满足实际要求了。
七、实验感想
本次单片机课程的设计过程我主要经历了两个大的过程,首先是在理论课结束的时候,那时还不是很忙,就抽出了一些时间去查资料,琢磨电路的设计与程序汇编的过程。
这也是我第一次接触Proteus与Keil软件,看了部分基础教程再加慢慢摸索,终于学会了它的使用。
在设计完电路、汇编完毕后,发现扬声器的声音会经常性的有杂音,试了很多方法都没能有效的解决,最后再焊完电路板之后发现是电脑的问题。
本课程的理论知识与微机原理还是有不少相同之处,所以理解起来比较容易,但在编写汇编程序的时候一些语法规则上有些出入,仔细研究了才弄明白。
这一阶段基本上解决了基本功能的实现。
之后有很多事要忙,一直没继续弄完,到快要交的前一周才弄它的扩展部分,我加入了电子键盘与音符显示的功能,还可以暂停、停止播放音乐。
总的收获非常的多。
实践检验真理。
这次的经历一定会为我今后的学习打下良好的基础。
八、参考文献
[1]《单片机原理与应用》,戴胜华等著,北京:
清华大学出版社、北京交通大学出版社,2006
附录
ORG0000H
MOVA,#0C0H;
开机初始清零显示
MOVP2,A
LJMPSTART
START0:
播放完歌曲或停止时初始清零
MOVR0,#10;
延迟
Q:
DJNZR0,Q
;
音乐开关查询
START:
SETBP1.3
SETBP1.4
SETBP1.5
M1:
低音查询
L:
CLRP1.3;
K13:
K17:
中音查询
M:
SETBP1.3
CLRP1.4
K21:
JBP1.4,K22
JBP3.1,K22
LJMPKEY21
K22:
JBP1.4,K23
JBP3.2,K23
LJMPKEY22
K23:
JBP1.4,K24
JBP3.3,K24
JBP3.3,K24
LJMPKEY23
K24:
JBP1.4,K25
JBP3.4,K25
LJMPKEY24
K25:
JBP1.4,K26
JBP3.5,K26
LJMPKEY25
K26:
JBP1.4,K27
JBP3.6,K27
LJMPKEY26
K27:
JBP1.4,H
JBP3.7,H
LJMPKEY27
高音查询
H:
SETBP1.4
CLRP1.5
K31:
JBP1.5,K32
JBP3.1,K32
LJMPKEY31
K32:
JBP1.5,K33
JBP3.2,K33
LJMPKEY32
K33:
JBP1.5,K34
JBP3.3,K34
JBP3.3,K34
LJMPKEY33
K34:
JBP1.5,K35
JBP3.4,K35
LJMPKEY34
K35:
JBP1.5,K36
JBP3.5,K36
LJMPKEY35
K36:
JBP1.5,K37
JBP3.6,K37
LJMPKEY36
K37:
JBP1.5,ST
JBP3.7,ST
LJMPKEY37
ST:
SETBP1.5
LJMPSTART;
查询完所有开关后返回开始重新查询
低音发声
JBP1.3,TT11;
JBP3.1,TT11;
KEY12:
SETBP1.6
MOVR3,#50
LOP12:
MOVTL0,#5BH
MOVTH0,#0F9H
WT12:
JNBTF0,WT12
DJNZR3,LOP12
MOVA,#0A4H
JBP1.3,TT12;
JBP3.2,TT12;
LJMPKEY12
TT12:
KEY13:
MOVR3,#50
LOP13:
MOVTL0,#15H
MOVTH0,#0FAH
WT13:
JNBTF0,WT13
DJNZR3,LOP13
MOVA,#0B0H
JBP1.3,TT13;
JBP3.3,TT13;
LJMPKEY13
TT13:
KEY14:
SETBP1.6
LOP14:
MOVTL0,#67H
WT14:
JNBTF0,WT14
DJNZR3,LOP14
MOVA,#99H
JBP1.3,TT14;
JBP3.4,TT14;
LJMPKEY14
TT14:
KEY15:
LOP15:
MOVTL0,#04H
MOVTH0,#0FBH
WT15:
JNBTF0,WT15
DJNZR3,LOP15
MOVA,#92H
JBP1.3,TT15;
JBP3.5,TT15;
LJMPKEY15
TT15:
KEY16:
LOP16:
MOVTL0,#90H
WT16:
JNBTF0,WT16
DJNZR3,LOP16
MOVA,#82H
JBP1.3,TT16;
JBP3.6,TT16;
LJMPKEY16
TT16:
KEY17:
LOP17:
MOVTL0,#0CH
MOVTH0,#0FCH
WT17:
JNBTF0,WT17
DJNZR3,LOP17
MOVA,#0F8H
JBP1.3,TT17;
JBP3.7,TT17;
TT17:
中音发声
KEY21:
MOVR3,#100;
LOP21:
MOVTL0,#44H
MOVTH0,#0FCH;
音调1对应初值FC44h
WT21:
JNBTF0,WT21;
DJNZR3,LOP21
JBP1.4,TT21;
JBP3.1,TT21;
LJMPKEY21
TT21:
KEY22:
MOVR3,#100
LOP22:
MOVTL0,#0ACH
WT22:
JNBTF0,WT22
CPL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 音调 发声器 资料