单片机及DSP课程设计报告Word格式文档下载.docx

上传人:b****7 文档编号:22101885 上传时间:2023-02-02 格式:DOCX 页数:22 大小:303.25KB
下载 相关 举报
单片机及DSP课程设计报告Word格式文档下载.docx_第1页
第1页 / 共22页
单片机及DSP课程设计报告Word格式文档下载.docx_第2页
第2页 / 共22页
单片机及DSP课程设计报告Word格式文档下载.docx_第3页
第3页 / 共22页
单片机及DSP课程设计报告Word格式文档下载.docx_第4页
第4页 / 共22页
单片机及DSP课程设计报告Word格式文档下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

单片机及DSP课程设计报告Word格式文档下载.docx

《单片机及DSP课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机及DSP课程设计报告Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。

单片机及DSP课程设计报告Word格式文档下载.docx

软件部分的程序流程图,算法和使用的编程技巧;

1、总体思路

主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。

确定歌曲曲目后,数码管再进行显示。

然后,子程序对是否播放进行循环判断,得到播放中断的指令后再进行播放。

执行播放后,关闭数码管显示并调用查表子程序进行播放音乐。

在播放音乐的过程中,查表子程序循环判断音乐是否结束。

当音乐结束时,程序跳转回曲目识别子程序。

5、源程序清单

OUTBITP2.0;

定义音频输出端口,p2.0

NEQU3;

歌曲总数

OUT_NUMEQUP1;

数码管显视当前所放歌曲曲数

ORG0000H

AJMPMAIN

ORG0003H

AJMPLAST_SONG;

外部中断0用于接上一曲歌按键

ORG000BH

AJMPF_T0;

定时器0用于定时,作音符发生器用

ORG0013H

q4:

AJMPNEXT_SONG;

外部中断1接下一曲歌按键

ORG001BH

AJMPSTART_PAUSE;

定时器1用计数,这里用作中断,接开始/暂停键,初值为0ffH,方式2

ORG0030H

MAIN:

MOVSP,#60H

MOVDPTR,#TABLE;

DPRT指向每首歌曲的入口地址的地址。

MOVR0,#30H;

R0中存入数据30H,这里在以30H开始的单元存放每首歌曲的入口地址,其中30H,31H存放歌曲的节拍入口地址,32H,33H存放歌曲音符入口地址,每首歌占用四个存储存单元。

MOVR5,#00H;

R5中存放表TABLE中正在执行操作的序号

MOVR6,#1;

R6存放正在设置入口信息的歌曲数

SET_TAB:

MOVA,R5;

设置每首歌曲的入口信息,存放在以30H开始的存储单元中。

MOVCA,@A+DPTR

MOV@R0,A

INCR5

INCR0

MOVA,R5

INCR6;

设置完一首歌曲后,歌曲数加一

CJNER6,#N+1,SET_TAB;

是否设置完,没有便继续,否则进行下面的操作

;

***********************************对中断,计数器的相关参数进行设置

MOVTMOD,#61H;

计数器0工作方式1,计数器1工作方式2

MOVTH1,#0FFH;

给计数器1置初值0FFH,又由于是工作方式2,所以

MOVTL1,#0FFH;

计数器计数为1,相当于一外部中断。

SETBET1;

允许计数器1中断

SETBET0;

允许计数器具0中断

CLRPT0;

计数器0为低优先级

SETBPT1;

计数器1为高优先级

SETBIT0;

外部中断0为跳沿触发

SETBPX0;

高优先级

SETBIT1;

外部中断1为跳沿触发

SETBPX1;

SETBEX1;

允许外部中断1中断

SETBEX0;

允许外部中断定0中断

SETBEA;

开中断总开关

SETBTR1;

定时器1开始工作,作中断用

SETBOUT;

音频输出端口初始化

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

设置结束

CLRF0;

设置F0=0,用来作暂停/播放的标置位用

MOV22H,#01H;

22H单元中存放正在播放的歌曲编号

MOVDPTR,#OUT_TAB;

将正在播放的歌曲编号送数码管显视

MOVA,22H

MOVOUT_NUM,A

MOVR7,#00H;

R7中存放歌曲总信息的入口地址

START0:

MOVR4,#00H;

R4存放当前正在播放歌曲的第几个节拍数

MOVR0,#30H;

30H开始的单元中存放歌曲的入口信息

MOVA,R7;

将歌曲的节拍表的入口地址送到DPTR

ADDA,R0

MOVR0,A

MOVDPH,@R0

MOVDPL,@R0

MOVA,R4

INCR4

MOVCA,@A+DPTR;

取出第一节拍数,其实第一个节拍不是歌曲的第一个节拍,而是表示几分音符

;

****************************************************

MOV26H,A;

将取出的音符数+节拍数保存在职26H单元中

NEXT:

开始取出歌曲的第一个数据

MOVA,R7

MOVCA,@A+DPTR;

放在A中

****************************************************

JZEND0;

若为0,则表示为休止符,不唱,本次音符不唱,

MOVR1,A;

不为0,取出节拍数

ANLA,#0FH

MOVR2,A

MOVA,R1

SWAPA

JNZSING;

音符不为0,唱

CLRTR0;

为0,不唱,关频率发生器

SJMPSING1

SING:

DECA;

开始唱,进行相应的数据处理

MOVR3,A

RLA

MOV21H,A

MOVTH0,A

MOVA,R3

INCA

MOV20H,A

MOVTL0,A

SETBTR0;

开唱

SING1:

LCALLDELAY;

每个音符唱多久

JBF0,FOR;

是否暂停,

AJMPNEXT;

没有暂停,继续

FOR:

CLRTR0;

暂停,不唱

JBF0,$;

等待播放

AJMPNEXT;

开始播放

END0:

CLRTR0;

不唱

MOVA,22H;

唱完处理

CJNEA,#N,WW;

是不是全部歌曲都唱完

全部唱完,则从第一首开始再唱

MOVR7,#00H

MOVOUT_NUM,#06H;

数码管显视第一首歌曲编号

AJMPWWW

WW:

MOVA,R7;

没有全部唱完,唱下一首,歌曲的入口信息调整

ADDA,#4

MOVR7,A

INC22H

CLREA

PUSHDPH

PUSHDPL

MOVDPTR,#OUT_TAB

MOVOUT_NUM,A;

数码管显视相应的歌曲编号

POPDPL

POPDPH

WWW:

SETBEA

AJMPSTART0;

开始下一首的演唱

F_T0:

MOVTH0,21H;

定时器0置初值

MOVTL0,20H

CPLOUT;

频率产生

RETI

NEXT_SONG:

PUSHACC;

下一曲中断程序处理,保护现场

CLREA;

关中断

CJNEA,#N,Q;

是最后一首吗?

是最后一首,则R7指向第一首,演唱第一首

MOV22H,#01H

AJMPBACK

Q:

INC22H;

不是最后一首,唱下一首,R7内容加4,歌曲数加1

BACK:

MOVR4,#00H;

********************************************

MOVB,R0;

对下首要演唱的歌曲的几分拍进行调整,同时对R0中的内容进行保护

MOVR4,#00H

MOVR0,#30H

MOV26H,A;

结果存入26H单元中

DECR4

MOVR0,B;

恢复R0中的内容

********************************************

POPDPL;

恢复现场

POPACC

RETI;

中断返回

LAST_SONG:

PUSHACC;

上一曲中断程序处理开始,保护现场

CLREA;

曲目数送A

CJNEA,#1,QQ;

是否是第一首

MOV22H,#N;

是第一首歌曲

MOVB,#4;

将R7指向最后一首歌曲

MOVA,#N-1

MULAB

AJMPBACK2;

处理结束

QQ:

DEC22H

MOVA,R7;

R7减4

SUBBA,#4

BACK2:

MOVR4,#00H

数码管显视相应歌曲的编号

MOVB,R0;

MOVR0,B;

R0中的内容恢复

********************************************

POPDPL;

START_PAUSE:

CPLF0;

开始/暂停中断处理程序,将标置位取反

JBF0,RETURN;

为1返回

为0则播放

RETURN:

DELAY:

MOV27H,26H;

音符演奏时间控制

D2:

MOV28H,#125

D3:

MOV29H,#248

DJNZ29H,$

DJNZ28H,D3

DJNZ27H,D2

DJNZR2,DELAY

RET

OUT_TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,73H;

共阴数码管显视用

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH;

共阳

TABLE:

DWSONG1,TABLE1,SONG2,TABLE2,SONG3,TABLE3

TABLE1:

DW64580,64684,64777,64820,64898,64968,65030

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

SONG1:

DB04H;

1=C2/4军港之夜

DB32H,54H,52H,32H,54H,52H,32H,12H,12H,32H,32H,54H,52H,32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H

DB0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24H

DB34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4H

DB22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,31H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32H

DB32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52H

DB32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H

DB32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H

DB32H,52H,52H,32H,32H,21H,31H,24H,74H,0D2H,0C2H,14H,14H,14H,14H

DB00H

TABLE2:

DW63835,64021,64103,64260,64400,64524,64580,64684,64777

DW64820,64898,64968,65030,65058,65110,65157,65178

SONG2:

DB02H;

1=C4/4死了都要爱

DB04H,94H

DB0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H

DB0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H

DB04H,0C2H,0C2H,0D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92H

DB0A4H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8H

DB0C8H,0C8H,08H,08H,78H,28H,38H,34H,24H

DB24H,64H,64H,24H,64H,72H,72H,78H,58H,54H,44H,38H,34H,14H,34H,84H,74H,74H,62H,62H,0D8H,78H,28H,38H,34H,24H

DB24H,64H,64H,24H,64H,72H,72H,72H,94H,92H,94H,0A4H,58H,58H,54H,44H;

#音不准

DB58H,58H,58H,58H,0A8H,0A8H,0A4H,0B4H,0A4H,84H,0A4H,94H,98H,98H,08H

DB84H,82H,82H,82H,82H,94H,0A2H,94H,92H,82H,74H,72H,74H,72H,72H,72H,72H,92H,91H,91H,94H,54H,74H,94H

*************************************************

DB0A8H,0A4H,0A2H,0B2H,0C4H,0B4H,0A4H,0A4H,0A4H,92H,92H,98H,82H,72H,78H,04H,0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H

DB04H,0C4H,0D4H,0C4H,0C8H,04H,94H

DB0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02

DB0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H

*************

DB0A4H,0A2H,0B2H,0B3H,0C4H,0E8H,0D8H

DB0C8H,0C8H,0C8H,08H

DB00H

TABLE3:

DW64898,64968,65030,65086,65135,65158,65199,64260,64400,64524,64580,64684,64777,64862

SONG3:

DB03H;

G=2/4中华人民共和国国歌

DB04H,04H,0C2H,14H,12H,12H,12H,11H,11H,0C2H,0D1H,0E1H,14H,14H,02H,32H,12H,21H,31H,52H,51H,51H,54H

DB32H,31H,31H,12H,11H,31H,52H,51H,31H,24H,24H,24H,64H,54H,24H,34H,52H,34H,52H,32H,21H,31H,12H,11H,21H,34H,04H

DB52H,51H,0D1H,12H,12H,32H,31H,31H,52H,51H,5

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

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

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

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