微机课程设计电子琴.doc
文本预览下载声明
《微机实验及课程设计》
课程设计报告
电子琴
目 录
一.实验简介……………………………………………………………3
二.基本设计思想………………………………………………………3
三.程序流程和程序实现………………………………………………3
四.测试方案和测试结果………………………………………………10
五.分析与总结…………………………………………………………10
一.实验简介
目的:
检验和提高我在原理与接口综合应用方面分析问题与解决问题的能力,同时也给我提供更多、更好的训练机会。根据设计要求,尽可能完成设计要求的功能,选择最合适的器件,构成最有效的硬件电路来完成。
基本实验要求:
构造一模拟/数字电子琴
1、选择利用实验仪扬声器/PC机内8253驱动内扬声器与键盘1、2、3、4、5、6、7、8设计一个电子琴,通过按数字键响相应的乐符1、2、3、4、5、6、7、i,使能演奏简单的乐曲。按1~8数字键同时点亮相应的8个LED灯,使具有声、光效果;
2、 利用实验仪DAC和喇叭,软件控制上述功能。选择机内还是实验仪由开关设置,课随时切换;
3、在8*8点阵上表示音节高低;
4、精确显示从第一个键按下后的时间(单位秒,要求精确到0.1秒,显示到秒)。
进一步设计要求:
1.、能准确记录开始演奏到结束演奏的时间,在八段码上显示;
2、 数字、模拟合奏,能同时指示音阶;
3、自动录音,并具有回放功能(分两种水平、难易不等、即记录按键,同时记录按键和时间。
实现情况:
实现基本实验要求的1~3。
二.基本设计思想
1、先分别设计机内电子琴和实验仪电子琴。机内电子琴参照实验五8253计数器/定时器的选做与探索中使用PC机内8253驱动声音接口;实验仪电子琴参照实验中演示实验的电子琴流程图;
2、再把两者结合起来,用一个高低电平作开关控制是机内还是实验仪,可通过8255A口输入,判断10(二进制)则实验仪DAC,00则机内喇叭;
3、点阵显示。根据输入的数字判断应显示点阵的哪一行。具体可先把点阵的8列全选通,输入为1~8某个数字时,判断显示相应的行;
4、LED灯显示。同样,根据输入的数字判断应显示哪一个LED灯。具体可设置8255B口为输出,根据输入的数字,输出控制LED灯相应灯亮。
三.程序流程和程序实现
1、机内电子琴
流程图:
程序:
dseg segment
freq dw 262,294,330,349,392,440,494,523
;扬声器发声各频率值
msg db Press 1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$
tim dw 400
num db ?
dseg ends
sseg segment stack
dw 256 dup(?)
sseg ends
cseg segment
assume cs:cseg,ds:dseg
start: mov ax,dseg
mov ds,ax
mov dx,offset msg
mov ah,9
int 21h ;显示提示信息
sss: mov ah,7
int 21h
;等待从键盘接收字符,不回显al=asc码
cmp al,1bh
je exit;若为ESC键,则转EXIT退出
cmp al,31h
jl sss ;小于31h
cmp al,38h ;大于38h
jg sss ;不在1-8之间转sss
sub al,31h
mov num,al ;num求出相应的时间常数的序号
jinei: mov al,num
add al,al
mov ah,00h
mov si,ax
again: mov di,freq[si]
mov bx,tim
call gen
jmp sss
exit: mov ah,4ch
int 21h
gen proc near
mov al,0b6h ;设置8253通道2方式3二进制计数
out 43h,al
mov dx,12h
mov ax,12928
; DX AX=896*533h=18*65536+12928=1.19M
div di
out 42h,al ;8253通道2口设置初值
显示全部