还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
、课程设计的任务和目的课程设计题目音乐播放器课程设计的实现目的本课程设计主要是通过汇编语言用软件编程的方法实现简单的音乐播放功能通过在《微机原理与接口技术》课程上所学的汇编知识和监芯片相关知识,来完成825254本课程设计;用汇编程序完成键控音乐播放器的,用的定时器来产生声音该播放器有若825254干首歌曲可以选择,开始时输出说明,要用户选择要播放的歌曲,然后根据用户按键进行播放、退出或出错提示通过课程设计环节来加强对所学知识的理解和应用
二、课程设计相关知识定时/计数器羽
2.18258254在微机及控制系统中,经常要用到定时信号如系统的日历时钟,动态存储器刷新对外部执行机构控制时也需要定时中断、定时检测、定时查询等定时的方法主要是两种软件定时利用指令的执行时间设计循环程序,使执行延迟子程序的时间就是定时时间CPU缺点执行延迟时,一直被占用,降低了的效率CPU CPU硬件定时用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间延迟突出优点为计数时不占用时间,如利用定时器/计数器产生中断信号,可建立多作业环境,提CPU高了效率CPU作为定时器可用或者二者功能基本相同,知识工作的最高频率不一样本实验就采82538254,用了其主要功能为8254,⑴每片上有个独立的位的减计数器通道316对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制2来计数⑶每个通道都有种工作方式,都可以通过程序设置或改变6每个计数器的速率可高达410MHzo主要部分有数据总线缓冲器、读/写控制逻辑、控制字寄存器、计数通道、、内部0#1#2#结构如下图INF07DB THANKYOU FORYOUR USE,0DH,0AH,$;;INFO8DB----------------------------\0DH,0AH PRESSTHE KEY TO SELECT SONG!ODH,OAH,$;;INFO9DB0DH,0AH---------------------,0DH,0AH|INVALID;SELECTION],ODHQAH----------------,0DH,0AH,$FREG1DW2dup262,294,262,349,262,262,294,262,392,249,262,262,523,440,349;曲1的频率DW330,294,466,266,440,349,392,349,-1TIME1DW1,1,2,224,1,1,2,2,2,4」」,2,2,2,2,4」」,2,2,2,4;曲1的时间FREG2DW330,294,262,294,3DUP330;曲2的频率DW3DUP294,330,392,392DW330,294,262,294,4DUP330DW294,294,330,294,262,-1TIME2DW6DUP1,2;曲2的时间DW2DUPU,2DW12DUP1,4FREG3DW330,392,330,294,330,392,330,294,330,330,392,330,294,262,294,330,392,294;曲3的频率DW262,262,220,196,220,262,294,332,262,-1TIME3DW3DUP2,1,1,21,1,4;曲3的时间DW2DUP2,2,1,1,4DW3DUP2,1,1,1,4DSEG ENDSCSEGSEGMENTassume cs:CSEG,ds:DSEG,es:DSEG,ss:SSEGINIT PROCmov ax,dseg movds,ax moves,ax;初始化程序INIT ENDPMAINPROCcall INITRE:MOV DX,28BHMOV AL,89H;程序入口OUT DX,AL;关闭扬声器MOV DX,28AHIN AL,DXMOV DX,288H OUTDX,ALLEA DXJNFO1MOV AH,09H INT21H;输出说明信息LEA DXJNF02INT21HLEA DXJNF03INT21HLEA DXJNF04INT21HLEA DXJNF05INT21HLEA DXJNF08INT21HMOV AH,01H;读取按键INT21HCMP AL,T JE MUSIC1;根据不同的按键播放不同的曲子CMP AL,2JE MUSIC2CMP AL,3JEMUSIC3CMP AL,O JEEXITLEA DXJNFO9MOV AH,09HINT21H JMPRE;指向曲1的表MUSIC1:MOV SI,OFFSET FREG1MOV BP,OFFSET TIME1CALL PLAYJMPRE;指向曲2的表MUSIC2:MOV SI,OFFSET FREG2MOV BP,OFFSET TIME2CALL PLAYJMPRE;指向曲3的表MUSIC3:MOV SI,OFFSET FREG3MOV BP,OFFSET TIME3CALL PLAYJMPRE;关闭扬声器EXIT:MOV DX,28BH;无效选择,输出错误提示MOV AL,89HOUT DX,ALMOV DX,28AHIN AL,DXMOV DX,288HOUT DX,ALLEA DXJNFO7;输出欢迎使用信息,增加界面友好度MOV AH,09HINT21Hmov ax,4c00h;The endof theprogram,return tothe systemint21hMAIN ENDPPLAYPROC;PLAY子程序,功能上面介绍过LI:MOV BX,DS:[SI];取频率CMP BX,-1;看是否有效JE L0;无效就退出MOV CX,DS:[BP];读取时间MOV DL,CL;保存时间ADD DL,30HMOV AH,02HINT21HMOV DX,0FH;计算计数初值,1M的十六进制为OF4240HMOV AX,4240HDIV BXMOVBX,AXMOV DX,283H;设置计数器工作方式MOV AL,36HOUT DX,ALMOV DX,280H;输入计数初值MOV AX,BXOUT DX,ALMOV AL,AHOUT DX,ALMOV DX,28BH;开扬声器MOV AL,89HOUT DX,ALMOV DX,28AHIN AL,DXNOT ALMOV DX,288HOUT DX,ALROD:CALL DELAY;延时LOOP RODMOVDX,28BH;关扬声器MOV AL,89HOUT DX,ALMOV DX,28AH INAL,DXMOV DX,288HOUT DX,AL;音节间延时CALL DELAY.OFFADD SI,2ADD BP,2JMPL1LO:RETPLAY ENDP;延时子程序DELAY PROCPUSHAXPUSH BXPUSH CXPUSH DXMOVBX,09FH;循环这么多次LL1:MOV CX,0FFFFHLOP:LOOP LOPDEC BXJNZ LL1POP DXPOPCXPOP BXPOPAX RETDELAYENDPDELAY_OFF PROCPUSHAXPUSH BXPUSHCXPUSHDXMOV BXQFHLL2:MOV CX,0CFFFHLOP2:LOOP LOP2DEC BXJNZLL2POP DXPOPCXPOP BXPOPAXRETDELAY_OFF ENDPCSEGENDSEND MAIN、各个音符的对应频率表:2音符频率/HZ半周期/us音符频率/HZ半周期/us低1D02621908#4FA#7400676#1DO#2771805中5S07840638低2RE2941700#5S0#8310602#2RE#3111608中6LA8800568低3M3301516#6LA#9320536低4FA3491433中7SI9880506#4FA#3701350高1D010460478低5S03921276#00#11090451#5S0#4151205高2RE11750426低6LA4401136#2RE#12450402#6LA#4661072高3M13180372低7SI4941012高4FA13970358中1D05230956#4FA#14800338#1DO#5540903高5so15680319中2RE5780842#5S0#16610292#2RE#62208046LA17600284IWJ中3M6590759#6LA#18650268中4FA6980716高7sl19760253数据总线计数器-CLKOD-Do GATE缓冲器号O—*-OUTO里一读/写CLK1而一逻辑GATE1Ao—»•AL—―*-OUTl~CS—控制字-CLK2寄存器*-GATE2―A0UT2内部结构8254外部弓|脚
2.28254芯片是具有个引脚的双列直插式集成电路芯片,其引脚分布如图所示芯片的825424825424三二CLKDGATED计数器三—»-OUTO号0CLK1念GATE1计数器—»-OUTl号1行地电源的情况,介绍如下个引脚分为两组,一组面向另一组面向外部设备,各个引脚及其所传送信号CPU,的引脚8254数据线控制线VDVCC12S456DDDDD87654321222319202124121O5438671双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态D7-D02来自于的读控制信号输入引脚,低电平有效RD CPU3来自于的写控制信号输入引脚,低电平有效WR CPU4芯片选择信号输入引脚,低电平有效CS、地址信号输入引脚,用以选择芯片的通道及控制字寄存器5A1A
082546.VCC及电源及接地引脚GND+5V第个通道的计数脉冲输入引脚,规定,加在引脚的输入时7CLKi:i=0,l,2,i8254CLK钟信号的频率不得高于即时钟周期不能小于
2.6MHZ,380nso()8第个通道的门控信号输入引脚,门控信号的作用与通道的工作方式GATEi:i=0,1,2,i有关()9第个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工OUTi i=0,l,2,i作方式确定,此输出信号可用于触发其它电路工作,或作为向发出的中断请求信号CPU()端口地址108254/CS/RD/WR AlA2寄存器选择与操作0£000写入计数器枸0If001写入计数器#10I010写入计数器#201011写入控制寄存器00;100读计数器楣00101读计数器#100110读计数器#
200111.无操作(二念)禁止(二态)1X X X X011无操作(二态)XX控制字825476543210—00选计数器0数制控制:0=二进制,1=BCD—01选计数器1——10选计数器2L-工作方式选择:0口方式011非法001方式1xlO方式2-00计数器锁存命令xll方式3—01只读百砥8位,高8位自动置0100方式4—10只读得高8位低8位自动置0101方式5-11先写低8位,后写高8位说明⑴每个通道对输入按二进制或二十进制从预置值开始减计数,减到时从8254CLK10输出一个信号OUT()编程时先写控制字,再写时间常数28254工作方式
2.48254方式计数结束产生中断方式10当写入控制字后,变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电OUT平方式可编程单次脉冲方式21当初值装入后且由低变高时,变为低电平,计数结束变为高电平GATE OUT⑶方式频率发生器方式2当初值装入时,变为高;计数结束,变为低该方式下如果计数未结束,但为OUT OUT GATE低时,立即停止计数,强制变高,当再变高时,便启动一次新的计数周期OUTGATE方式方波发生器43当装入初值后,在上升沿启动计数,输出高电平;当计数完成一半时,输出低GATE OUTOUT电平方式与方式的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不32同⑸方式软件出发选通方式4进入工作方式输出高电平装入计数值后,如果为高电平,则立即开始减4,OUTi n GATE“1”计数,直到计数值减到为止,输出宽度为一个周期的负脉冲由软件装入的计数值“0”OUTi CLKi只有一次有效,如果要继续操作,必须重新置入计数初值如果在操作的过程中,变为无效,nGATE0则停止减计数,到再次有效时,重新从初值开始减计数“1”GATE“1”方式硬件触发方式计数65进入工作方式输出高电平,硬件触发信号由端引入因此,开始时应输入5,OUTi GATEGATE为装入计数初值后,减计数并不工作,一定要等到硬件触发信号由端引入一个正阶跃0,n“1”GATE信号,减计数才会开始,待计数值计到,将输出负脉冲,其宽度固定为一个周期,“1”“0OUTi CLKi表示定时时间到或计数次数到
三、程序设计思路所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率通过对定时器的通道端口地址为进行编程,使其寄存器接收一个控制声音频率CPU242I/O的位计数值,端口的最低控制通道门控的开断以产生特殊的音响当166m2定时器接收的计数值为时,能产生的声音,因此产生其他频率的计数值就可算出来533H896Hz义频率频率533Hz896+=1234DC+在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是码其位组合的格式如BCD下当通道用于发声时,采用的是模式在模式下,输出线为和为的时间各占计数时间23,3“1”“0”的一半,因而产生一系列间隔均匀的脉冲产生指定频率声音的程序段如下MOV AL,0B6H;43H为8254的控制字端口OUT43H,ALMOVDX,1211MOV AX,34DCH;DI二频率DIV DI;42H为8254的通道2端口OUT42H,ALMOV AL,AHMOV42H,AL从定时器输出的方波信号,经功率放大和滤波后驱动扬声器送到扬声器的信号还受到了从并行接口芯片端口地址为来的双重控制,端口的最低位控制通道的门控开8255611161112断,以产生特殊的音频信号,端口的位和定时器的输出信号同时作为与门的输入,和61PA1PAO位可由程序决定为还是为显然只有和都是时,才能使扬声器发出声音控制PA101PAO PA11音长的时间可以简单地通过反复执行指令来得到我们知道执行次指令约需要的2801LOOP10MS时间因此用的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了实现程序如10MSIN AL,61HMOV AH,ALOR AL,3OUT6111,AL;开扬声器LMOV CX,2801DYLOOP DY下DECBXJNZLMOV AL,AHOUT61H,AL;关扬声器功能流程图及子程序说明、总流程图1程序:程序是总程序,输出说明,等待用户按键并读取键值根据不同的按键选择MAIN MAIN调用播音子程序播放不同的歌曲、音乐播放子程序流程图2子程序:子程序是播音子程序,指向音节表中的频率,指向音节表中的时间PLAY PLAYSI BP从的指向的音节表中取一个频率,只要不是-即有效就再读取时间,然后计算计数初值送入计SI1,数器,产生各种频率开启扬声器,根据所取的时间调用若干次延时子程序这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序最后修改和指向SI BP,下一个频率,重复上面的工作子程序和子程序:两个都是子程序,采用空操作循环多次的方法,只是第DELAY DELAY_OFF丫二个延时时间较短,大概为5ms播音流不呈性I
五、试验结果截屏:初始界面:E:\汇编编\l\masm50\
123.EXE Jg|X THERE ARE3SONGS
1.HAPPY BIRTHDAY
2.SHEEP瓦P-RIUER EXITPRESS THE KEYTO SELECT SONG如果按错了键,会出现如下界面:汇鲂编~二]□E:\1\masm50\
123.EXE XTHERE ARE3SONGS
1.HAPPY BIRTHDAV
2.SHEEPB.RIUER
6.EXITPRESS THEKEV TO SELECT SONG7HNUALID SELECTION!THERE ARE3SONGS瓦
1.HAPPY BIRTHDAYE.SHEEP
3.RIUEREXITPRESS THEKEV TOSELECTSONG如果选择正确,将出现如下界面:S3E:\汇编编~l\masm50\
123.EXE THERE ARE3SONGSl.HAPPV BIRTHDAV
2.SHEEP
3.RIUER
0.EXITPRESSTHE KEYTOSELECTSONGTHEREARE3SONGSl.HAPPV BIRTHDAV
2.SHEEP瓦
3.RIUER EXITPRESSTHEKEYTOSELECTSONG
六、参考文献李长青.微机原理与接口技术.徐州中国矿业大学出版社,[112006【】沈美明.汇编语言程序设计实验教程.北京清华大学出版社,年22002【】周明德.微机原理与接口技术.北京人民邮电出版社,年32002
七、总结在本次设计中,可以说是一次成功的经验在我们学完了《微型计算机原理与接口技术》这门课的基础上来做这个设计,通过设计后,使我们对这门课的理论知识的理解有很大程度上的加强微机原理这门课程本身是一门实验性和工程性很强的专业技术课,因此不仅要重视理论教学,更应注意实践技能的培养和训练课程设计是这门课程的一个重要环节,通过课程设计,巩固、加深和拓宽了学习的理解,本课程设计的重点目标是使用汇编语言,而不过多涉及硬件方面的太多知识在编程方面我通过本次课程设计学到了很多一开始面对很长的程序往往有畏难情绪,感觉无法下手,没办法只能硬着头皮啃下去,多看几个和音乐播放有关的汇编程序,然后我就能慢慢看懂了并理解了别的作者的设计思路然后再根据自己的思路,对照本人在图书馆借的汇编语言指导书慢慢编写符合自己思路的程序一次写出来的程序肯定不会是正确的,还需要进一步调试它检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序调试程序中,学习了的使用,DEBUG DEBUG对检查程序的错误作用很大同时,也要灵活使用各种调试方法,来缩小寻找错误的范围书到用时方恨少在课程设计过程中,我才体会到这句话的深意课堂上学的的知识和8254汇编语言都太少,还不足以完成本次课设,为此我经常跑图书馆借了各种各样的工具书有的书用处较大,有的书仅能用到一小块知识,就是这样,一步步在知识的海洋里我寻觅着自己需要的东西,确实克服了不少困难,解决了不少问题或许坎坷才能更好的使人成长在这次的课程设计中,我的收获是不但做出了一个符合要求的音乐播放器,而且为自己积累了一些宝贵的经验同时我也对音乐方面的频率知识有了一些认识,我想如果不是本次课程设计中用到这方面知识,我这辈子可能没有机会去接触这方面的知识了这,或许也是我比别的同学多出的一点收获吧!
六、附录、源程序代码:1SSEG SEGMENTPARA STACKstackdw lOOhdupO;Resize thestack bychanging thenumber100SSEG ENDSDSEGSEGMENT;;坪INFO1DB0DH,0AH-------------------------,0DH,0AH,THEREARE3SONGS:ODH,OAH,ODH,OAH;INFO2DB
1.HAPPY BIRTHDAY\0DH,0AH$;INFO3DB2SHEEP0DH,0AH,$;INFO4DB
3.RIVER,0DH,0AH$,INFO5DB O.EXITODHQAH,INFO6DB YOUHAVE CHOSEN$。
个人认证
优秀文档
获得点赞 0