




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2009级学生微机原理课程设计微机原理课程设计报告书课题名称电子琴音符产生程序设计姓 名学 号院、系、部物理与电信工程系专 业通信工程指导教师2011年 6 月20 日一、 设计任务及要求1.使用汇编语言设计一个能够用键盘运行的电子琴;2.设计一个电子琴,使用数字键1、2、3、4、5、6、7作为电子琴键;3.按下数字键发出相应的音调。 指导教师签名: 2011年 6 月 6 日 二、指导教师评语指导教师签名: 2011年 6 月 20 日 三、成绩验收盖章 2011年 6 月 20 日 电子琴音符产生程序设计0912402*19 李勇华1、设计目的1、进一步掌握8253定时器的编程和应用。2、了解微机利用定时器产生音乐的基本方法。3、掌握一定的汇编语言知识,培养自己的动手操作能力。4、学习程序设计的基本思路和方法。2、设计要求1、使用汇编语言设计一个能够用键盘运行的电子琴;2、设计一个电子琴,使用数字键1、2、3、4、5、6、7作为电子琴键;3、按下数字键发出相应的音调。3、设计思路1、用试验箱上的脉冲发生器输出一个8MHZ的信号,接入分频器74LS393,把T1接口与8253的CLK0连接提供2MHZ的时钟脉冲信号。用程序给8253进行初始化,由键盘取数值,后判断发音的频率,并送此分频数给8253,从8253输出相应的音频后,接音频功效电路,再接入硬件扬声器,扬声器接受到不同频率的波后发出不同的声音。2、用比较语句cmp和跳转指令来实现数字键和音调的一一对应。3、其中用一个延时程序,使得发一个音有一定的延时时间。从而能使得可以被听见。4、有个停止程序,使得晶振不能使得扬声器发生(在没有按键的情况下)。4、电路及连线设计 4.1连线逻辑框图分频电路8253音频功效8088CPU图4.1 连线逻辑框图4.2音频功效模块音频功效模块(如图4.2)是由无极性电容、有极性电解电容、LM386、JP、SP组成。连接插孔:VIN_音频输入; VOUT_音频输出;图4.2 音频功效模块图4.3 分频电路分频电路I(如图4.3)是由一片74LS393组成,T为脉冲输入端,T0T7为分频输出插孔。该计数器在加电时由RESET信号清零。当脉冲输入8.0MHZ时,T0T7输出脉冲频率依次为4.0MHZ、2.0MHZ、1.0MHZ、500KHZ、250KHZ、125KHZ、62500KHZ、31250HZ.连接插孔:T_脉冲输入端;T0T7_脉冲输出端;T0_4.0MHZ; T1_2.0MHZ; T2_1.0MHZ; T3_500KHZ;T4_250KHZ; T5_125KHZ; T6_62500HZ; T7_31250HZ; 图4.3 分频电路图 4.4设计原理图图4.4 电路连接图5、程序设计5.1 音阶表及对应的初值表5.1 音阶表音阶1234567频率(HZ)440.00493.88554.37587.33659.26739.99830.61初始值4545405036073405303427032408由系统提供的频率为2MHZ,得:初始值=2MHZ/音阶频率5.2 I/O地址分配表5.2 I/O地址分配5.3主程序流程通过键盘输入数字到赋给8253,然后根据8088的程序,将不同的分频数与数字键一一对应,通过程序从8088给8253赋个初值(即不同的分频数),用分频电路给8253提供一个2MHZ的时钟脉冲,将得到的音频数据通过8253传到扬声器,发出声音。设置定时器子程序保存音频数据设置定时器工作方式取出音频数据音频数据输出到定时器返回图5.1设置定时器子程序流程图Y调显示子程序是数字键17?用键值查表得到音频相关数据按音频数据设置计数器初值启动定时器,开始发声延时关闭定时,停止发声N开始图5.2 程序流程图 5.4 源程序设计CODE SEGMENT ;DZQ.ASMASSUME CS:CODE,DS:CODECONTROL EQU 43HCOUNT0 EQU 40HCOUNT1 EQU 41HCOUNT2 EQU 42HIOCONPT EQU 0FF2BH;控制口IOBPT EQU 0FF29H;扩展用IOAPT EQU 0FF28H;扩展用PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口ORG 18F0HSTART: JMP START0BUF DB ?,?,?,?,?,?KZ DB ?LTIME DB ?LKEY DB ?ZP DW ?DATA1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1HDB 86H,8EH,0FFH,0CH,89H,0DEH,0C7H,8CH,0F3H,0BFH,8FH,0F1H ;共阳极字形代码DATA3: DW 2273, 2024, 1805, 1704 DW 1517, 1353, 1205START0: MOV AX,CS MOV DS,AX CALL BUF1 MOV AL,88H MOV DX,IOCONPT;8255A初始化 OUT DX,AL MOV DX,IOBPT MOV AL,00 OUT DX,AL MOV ZP,OFFSET BUFREDIKEY:CALL DISPKEY;调用DISPKEY子程序 CMP KZ,09H;确定输入值为0至9之间 JNC REDIKEY CMP KZ,01H JC REDIKEY MOV BX,ZP MOV AL,KZ MOV BX,AL CMP BX,OFFSET BUF+5 JZ ZP1 INC BX MOV ZP,BX JMP OUTTONEZP1:MOV ZP,OFFSET BUFOUTTONE:MOV DX,IOBPT;发音子程序 MOV AL,0FFH OUT DX,AL MOV AL,KZ MOV AH,00H DEC AX SHL AX,1 MOV BX,OFFSET DATA3 ;置音频数据 ADD BX,AX MOV AX,BX CALL T8253 MOV CX,20HCON1: PUSH CX CALL DISP;调用数码管设置程序 POP CX LOOP CON1 MOV DX,IOBPT MOV AL,00 OUT DX,AL JMP REDIKEYT8253: PUSH AX ; 设置定时器子程序 MOV AL, 36H ; 写8253计数器0方式控制字。 MOV DX, CONTROL OUT DX, AL POP AX;置时常数 MOV DX, COUNT0 OUT DX, AL MOV AL, AH OUT DX, AL RETDISPKEY:CALL DISP ;调用显示程序CALL KEY ;调用键值子程序MOV AH,AL MOV BL,LTIME MOV BH,LKEY MOV AL,01HMOV DX,PA ;输出01H到A口OUT DX,ALCMP AH,BHMOV BH,AH ;BH=NEW KEYMOV AH,BL ;AL=TIMEJZ DISK4MOV BL,88HMOV AH,88HDISK4:DEC AHCMP AH,82H JZ DISK6CMP AH,0EHJZ DISK6CMP AH,00HJZ DISK5MOV AH,20HDEC BLJMP DISK7DISK5:MOV AH,0FH;给AH赋值DISK6:MOV BL,AHMOV AH,BHDISK7:MOV LTIME,BLMOV LKEY,BHMOV KZ,BHMOV AL,AHRETKEY:MOV AL,0FFHMOV DX,PB OUT DX,AL;输出0FFH到B口MOV BL,00HMOV AH,0FEHMOV CX,08HKEY1:MOV AL,AHMOV DX,PA OUT DX,AL;把AH输出到A口ROL AL,01HMOV AH,ALNOPNOPNOPNOPNOPNOPMOV DX,PC IN AL,DXNOT ALNOPNOPAND AL,0FH;高四位清零,低四位不变JNZ KEY2INC BLLOOP KEY1JMP NKEYKEY2:TEST AL,01H;测试位0JE KEY3MOV AL,00HJMP KEY6KEY3:TEST AL,02H;测试位1JE KEY4MOV AL,08HJMP KEY6KEY4:TEST AL,04H;测试位2JE KEY5MOV AL,10HJMP KEY6KEY5:TEST AL,08H;测试位3JE NKEYMOV AL,18HKEY6:ADD AL,BLCMP AL,10HJNC FKEYMOV BL,ALMOV BH,0H MOV SI,OFFSET DATA2MOV AL,BX+SIRETNKEY:MOV AL,20HFKEY:RETDATA2:DB 07H,04H,08H,05H,09H,06H,0AH,0BHDB 01H,00H,02H,0FH,03H,0EH,0CH,0DHDISP: MOV AL,0FFH ;显示子程序MOV DX,PAOUT DX,AL ;所有数码管不工作MOV CL,0DFH ;选最左边的数码管工作MOV BX,OFFSET BUFDIS1: MOV AL,BX;数码管显示子程序 MOV AH,00HPUSH BXMOV BX,OFFSET DATA1 ADD BX,AX MOV AL,BXPOP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,AL;从B口输出PUSH CXDIS2:MOV CX,0A0H LOOP $;延时 POP CXCMP CL,0FEH;是否显示第六个数码管JZ LX1INC BXROR CL,1JMP DIS1LX1: MOV AL,0FFH;灭灯MOV DX,PBOUT DX,ALRETBUF1: MOV BUF,11H;置显示代码 MOV BUF+1,10H MOV BUF+2,10H MOV BUF+3,10H MOV BUF+4,10H MOV BUF+5,10H RETCODE ENDSEND START5.5调试结果分别按下键盘上的数字键1、2、3、4、5、6、7,扬声器分别对应的发出DO、RE、MI、FA、SO、LA、SI的声音,按下其它键没有声音。6、设计总结经过这个课程设计,虽然时间比较短,但让我在课本的基础上,更深入的了解了8253芯片的用法和程序的完成过程,调试方法及技巧。刚开始觉得电子琴这个任务很有挑战,还觉得很有意思,所以想试着尝试。但是很久过去都没有思路,几乎想要放弃这个,选别的课题,看了很多的资料,研究了很多的程序。中途遇到了很多的困难,但是还是坚持一个人默默的继续加油,终于在星期三成功的把功能实现了。在设计中我了解了电子琴的不同音阶放音功能的实现,长短音的实现和8253的各种工作方式的不同应用,各种跳转指令的功能应用,8088的各种指令的作用。更深刻了解了微机这门课程的深奥和高端。在这次课程设计中我一直都是在循序渐进中完成的,一步步的在最简单程序中加深和完善,慢慢的实现要求的功能。每一步的设计和成功都给了我很大的鼓励和勇气,让我不断了继续设计和完善。在写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论