- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《微机实验及课程设计》报告
PAGE 2
《微机实验及课程设计》
课程设计报告
电子琴
姓 名: *** 学 号: ********
专 业: ******** 实 验 室: 电工电子实验中心 103
设计时间: 2009年 5 月 30日 —— 2009年 6 月 4日
评定成绩: 审阅教师:
目 录
一.实验简介……………………………………………………………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、机内电子琴
开始流程图:
开始
键盘读入一个字符
键盘读入一个字符
是ESC键吗?
是ESC键吗?
Y
Y
NN
N
N
返回DOS
返回DOS
是数字1~8键吗?
是数字1~8键吗?
Y
Y
求出音阶值保存
求出音阶值保存
赋相应频率值
赋相应频率值
延时
延时
程序:
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,
文档评论(0)