单片机设计项目讲义Word格式.docx
- 文档编号:19625562
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:13
- 大小:154.51KB
单片机设计项目讲义Word格式.docx
《单片机设计项目讲义Word格式.docx》由会员分享,可在线阅读,更多相关《单片机设计项目讲义Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
以为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。
比如:
其中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
1
2
3
4
5
6
7
523
587
659
698
784
880
988
FC4AH
FCAEH
FD08H
FD30H
FD80H
FDC6H
FD02H
高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播放北京欢迎你
l4:
movdptr,#dat
sjmploop
l5:
movdptr,#tt
l3:
movdptr,#table;
存表首地址
loop:
clra;
清零
movca,@a+dptr;
查表
movr1,a;
定时器高8位存R1
incdptr;
指针加一
clra;
清零
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 ;
循环次数
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
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
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
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,4ah,02h,0fch,4ah,04h
db00h,00h,04h,0fbh,8ch,02h
db00h,00h,04h,0fch,4ah,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
db0fdh,08h,02h,0fdh,30h,02h
db0fch,4ah,02h,0fdh,80h,04h
db0fch,0aeh,02h,0fch,4ah,02h
db0fch,4ah,04h,00h,00h,04h
db0fdh,08h,02h,0fdh,80h,02h
db0feh,02h,04h,0fdh,0c6h,02h
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
db00h,00h,02h,0fdh,08h,02h
db0fdh,80h,04h,0fdh,30h,02h
db0fdh,30h,04h,00h,00h,04h
db0fdh,30h,02h,0fdh,80h,02h
db0fdh,0c6h,04h,0fdh,80h,02h
db0fdh,80h,04h,00h,00h,04h
db0ffh,0ffh
北京欢迎你
tt:
db0fdh,08h,04h
db0fbh,08ch,02h,0fch,04ah,02h
db0fdh,08h,02h,0fch,0aeh,04h
db00h,00h,01h
db0fbh,08ch,02h,0fch,4ah,02h
db0fdh,80h,02h,0fch,0aeh,02h
db0fdh,08h,02h,0fdh,0c6h,02h
db0fdh,80h,02h,0fbh,00h,02h
db00h,00h,03h
db0fdh,80h,02h,0fdh,80h,02h
db0fdh,08h,02h,00h,00h,03h
db0fdh,08h,02h
db0fbh,8ch,02h,0fdh,08h,02h
db0fdh,08h,02h00h,00h,01h
db0feh2ah,02h,0fdh,80h,02h
db0fdh,0c6h,02h,00h,00h,02h
db0fdh,0c6h,02h
db0fdh,80h,02h,0fdh,08h,02h
db0feh2ah,02h,0feh,5ch,02h
db0fch,0aeh,02h,0fdh,80h,02h
db0fdh,08h,02h,00h,00h,02h
db0feh,2ah,02h,0fdh,80h,02h
db0fdh,0c6h,02h,0feh,2ah,02h
db0feh,5ch,02h,0feh,2ah,02h
db0fdh,80h,02h,0feh,2ah,02h
db0feh84h,02h,0feh,5ch,02h
db00h,00h,02h,0feh,2ah,02h
end
流程图:
主程序:
中断程序:
硬件连接电路:
参考文献:
[1]周向红.51系列单片机应用与实践教程[M].航空航天大学出版社,2008
[2]马光.单片机原理及应用[C].北京:
机械工业出版社,2008.
[3]谢嘉奎主编,宣月清,冯军编。
电子线路(线性部分)[C].北京:
高等教育出版社,1999.6
[4]马家辰编。
MCS-51单片机原理及接口技术[C].哈尔滨:
哈尔滨工业大学出版社1999.6
实验结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 设计 项目 讲义
![提示](https://static.bdocx.com/images/bang_tan.gif)