logo资料库

微机接口课程设计 电子琴.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
电子琴 一、实验目的 1. 通过 D/A 转换器产生模拟信号,使 PC 机作为简易电子琴 2. 了解利用数模转换器产生音乐的基本方法 二、实验内容 实验电路如图所示,8253 的 CLK0 接 1MHz 时钟,GATE0 接+5V,OUT0 接 8255 的 PA0,J1 接喇叭,编程使计算机的数字键 1、2、3、4、5、6、7 作为电子琴按键, 按下即发出相应的音阶。 三、编程提示 1.对于一个特定的 D/A 转换接口电路,CPU 执行一条输出指令将数据送入 D/A, 即可在其输出端得到一定的电压输出,给 D/A 转换器输入按正弦规律变化的数 据,在其输出端即可产生正弦波,对于音乐,每个音阶都有确定的频率。 各个音阶标称频率值: 音阶 1 2 3 4 5 6 7 261.1 293.7 329.6 349.2 392.0 440.0 493.9 频率:(单位 Hz) 2.产生一个正弦波的数据可取 32 个(小于亦可),不同频率的区别,可通过调 节向 A/D 转换器输出数据的时间间隔,例如:发“1”频率为 261.1Hz 周期为 1/261.1=3.83.ms,输出数据的时间间隔为 3.83/32=0.12ms,定时时间可以由 8253 配合 8255 实现,按下某键后发音时间的长短可以由发出的正弦波的个数多 少来控制。 3.程序流程 4.源程序 data data1 db segment 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh;正弦波数据数据区 db db db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h 80h,66h,4eh,38h,25h,15h,09h,04h 00h,04h,09h,15h,25h,38h,4eh,66h db 120,106,94,89,79,70,63,59;发不同音时的计数器初值 1,2,3,4,5,6,7,8,Esc:',0dh,0ah,'$' ;8253 计数器初值的序号 time msg num data 'Press ? db db ends code segment assume cs:code,ds:data start:
sss: mov mov mov int mov int cmp je cmp jl cmp jg sub mov mov ax,data dx,offset ah,9 21h msg ;显示提示信息 ah,7 21h al,1bh ;从键盘接收字符不回显 exit ;若为 Esc 键,则转 Exit al,31h sss al,38h sss ;若不在'1'~'8'之间转 sss al,31 num,al cx,60 ;求出相应的时间常数的序号 ;取次个正弦波数据 ddd: lll: mov si,0 al,data[si] dx,290h dx,al ;取正弦波数据 ;放音 ;调延时子程序 ;是否取完个数据 ;总循环次数是否完,若没有,则继续 mov mov out call inc cmp jl loop jmp delay si si,32 lll ddd sss exit: mov int ah,4ch 21h delay ccc: proc near ;延时子程序 mov bx,offset time mov mov out mov mov out mov xlat mov out dx,283h al,10h dx,al dx,28bh al,9bh dx,al al,num dx,280h dx,al kkk: ;设 A 口输入 ;取相应的时间常数 ;向计数器输出
dx,288h al,dx al,01 kkk mov in test jz ret ;从 A 口读一个字节 ;判 PA0 口是否为 ;子程序返回 ends endp delay code end start 四、实验现象 在 DOS 环境下,用汇编程序进行汇编,生成 DZQ.EXE 可执行程序,并运行可执行 程序。分别按下 1、2、3、4、5、6、7 分别发出哆、唻、咪、发、唆、喇、嘁等 键音。 五、实验体会 本次实验的主要难处在于汇编程序的编写,但编译通过后看到运行的结果便感到 由衷的高兴。 在接好电路,运行程序后,注意按下键后,声音延长作用的长短的变化。同时增 大取正弦波,可以看到延长变大,减小次数,则声音变短,这正是由于取了正弦 波数变了的原因。说明正弦波的个数使声音延长时间的关键。 同时我深入了解了 8253 等芯片的工作方式、作用,锻炼了自己的动手能力和分 工协作能力,使我对微机接口课程产生了更大的兴趣。
分享到:
收藏