微机课程设计电子琴

上传人:hjk****65 文档编号:173648965 上传时间:2022-12-12 格式:DOC 页数:12 大小:99KB
收藏 版权申诉 举报 下载
微机课程设计电子琴_第1页
第1页 / 共12页
微机课程设计电子琴_第2页
第2页 / 共12页
微机课程设计电子琴_第3页
第3页 / 共12页
资源描述:

《微机课程设计电子琴》由会员分享,可在线阅读,更多相关《微机课程设计电子琴(12页珍藏版)》请在装配图网上搜索。

1、微机实验及课程设计报告 微机实验及课程设计课程设计报告电子琴姓 名: 学 号: 专 业: 实 验 室: 同组人员: 学 号: 设计时间: 2011年 9 月 19日 2011年 10 月 31日评定成绩: 审阅教师: 目 录一实验简介3二基本设计思想3三程序流程和程序实现3四测试方案和测试结果10五分析与总结10一实验简介 目的: 检验和提高我在原理与接口综合应用方面分析问题与解决问题的能力,同时也给我提供更多、更好的训练机会。根据设计要求,尽可能完成设计要求的功能,选择最合适的器件,构成最有效的硬件电路来完成。 基本实验要求:构造一模拟/数字电子琴、选择利用实验仪扬声器/PC机内8253驱动

2、内扬声器与键盘1、2、3、4、5、6、7、8设计一个电子琴,通过按数字键响相应的乐符1、2、3、4、5、6、7、i,使能演奏简单的乐曲。按18数字键同时点亮相应的8个LED灯,使具有声、光效果;2、 利用实验仪DAC和喇叭,软件控制上述功能。选择机内还是实验仪由开关设置,课随时切换;3、在8*8点阵上表示音节高低;4、精确显示从第一个键按下后的时间(单位秒,要求精确到0.1秒,显示到秒)。 进一步设计要求:1.、能准确记录开始演奏到结束演奏的时间,在八段码上显示;2、 数字、模拟合奏,能同时指示音阶;3、自动录音,并具有回放功能(分两种水平、难易不等、即记录按键,同时记录按键和时间。 实现情况

3、:实现基本实验要求的13。二基本设计思想1、先分别设计机内电子琴和实验仪电子琴。机内电子琴参照实验五8253计数器/定时器的选做与探索中使用PC机内8253驱动声音接口;实验仪电子琴参照实验中演示实验的电子琴流程图;2、再把两者结合起来,用一个高低电平作开关控制是机内还是实验仪,可通过8255A口输入,判断10(二进制)则实验仪DAC,00则机内喇叭;3、点阵显示。根据输入的数字判断应显示点阵的哪一行。具体可先把点阵的8列全选通,输入为1某个数字时,判断显示相应的行;、LED灯显示。同样,根据输入的数字判断应显示哪一个LED灯。具体可设置8255B口为输出,根据输入的数字,输出控制LED灯相应

4、灯亮。三程序流程和程序实现1、机内电子琴开始流程图:键盘读入一个字符是ESC键吗?YNN返回DOS是数字18键吗?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 400num db ?dseg endssseg segment stack dw 256 dup(?)sseg endscseg segment assume cs:cseg,ds:dsegstart: mov ax,d

5、seg 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,axagain: mov di,fr

6、eqsi mov bx,tim call gen jmp sssexit: mov ah,4ch int 21hgen 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口设置初值 mov al,ah out 42h,al in al,61h ;读8255PB口 mov ah,al or al,3 out 61h,alwait1: mov cx,0hdelay3: mo

7、v ax,10 ;延时子程序delay2: nop dec ax jnz delay2 loop delay3 dec bx jnz wait1 mov al,ah out 61h,al retgen endp cseg endsend start2、实验仪电子琴流程图:实验电路:程序:data segmentioportequ 0d400h-0280hio8253aequ ioport+280hio8253bequ ioport+283hio8255aequ ioport+288hio8255bequ ioport+28bhio0832aequ ioport+290hdata1 db 80h

8、,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h;正弦波数据time db 120,106,94,89,79,70,63,59;发不同音时8253的计数器初值msg db Press 1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$num db ?;num为8253计数器初值的序号data endscode segment assume cs

9、:code,ds:datastart:mov ax,datamov ds,axmov dx,offset msgmov ah,9int 21h ;显示提示信息sss:mov ah,7int 21h ;从键盘接收字符,不回显cmp al,1bhje exit ;若为ESC键,则转EXITcmp al,31hjl ssscmp al,38hjg sss ;若不在1-8之间转ssssub al,31hmov num,al ;求出相应的时间常数的序号mov cx,60 ;取60次32个正弦波数据ddd:mov si,0lll:mov al,data1si ;取正弦波数据mov dx,io0832aou

10、t dx,al ;放音call delay ;调延时子程序inc sicmp si,32 ;是否取完32个数据jl lll ;若没有,则继续loop ddd ;总循环次数60是否完,没有,则继续jmp sssexit:mov ah,4chint 21hdelay proc near ;延时子程序ccc:mov bx,offset timemov dx,io8253b ;置8253通道0为方式0工作mov al,10hout dx,almov dx,io8255b ;设8255A口输入mov al,9bhout dx,almov al,num ;取相应的时间常数xlatmov dx,io8253

11、aout dx,al ;向8253通道0输出kkk:mov dx,io8255ain al,dx ;从8255A口读一字节test al,01 ;判PA0口是否为1jz kkk ;若不为1,则转KKKret ;子程序返回delay endpcode endsend start3.电子琴总设计流程图:开始键盘读入一个字符Y是ESC键吗?NN是数字18键吗?返回DOSY点亮点阵Y点亮LED灯N是机内吗?60个正弦波完了吗?YN求出音阶值保存正弦波个数计数器赋值60每个正弦波数据个数计数器赋初值取正弦波数据送DAC0832求出音阶值保存Y赋相应频率值一个正弦波完了吗?N延时延时电路图: 8个LED灯

12、PB7PB0 PA0PA1 CSCLK0GATE0 OUT0CS 8253 82551MHZ+5V DAC0832CS280H K0开关 288H 290H程序:data segmentioportequ 0c800h-0280hio8253aequ ioport+280h;8253通道0地址io8253bequ ioport+283h;8253控制字寄存器地址io8255aequ ioport+288h ;8255A口地址io8255bequ ioport+289h ;8255B口地址io8255dequ ioport+28bh;8255控制字寄存器地址io0832aequ ioport+2

13、90hproth equ ioport+2a8h ;点阵行选的地址protlr equ ioport+2b0h ;点阵列选的地址data1 db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h;正弦波数据time db 120,106,94,89,79,70,63,59;发不同音时8253的计数器初值banquan db 0dh,0ahdb*,0

14、dh,0ahdb* *,0dh,0ahdb* WELCOME TO USE dianziqin *,0dh,0ahdb* THIS PROGRAMME IS DESIGHED BY *,0DH,0AHdb* zhouqiuping 61007204 *,0DH,0AHdb* *,0dh,0ahdb*,0dh,0ah db Press 1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$num db ? ;num为8253计数器初值的序号freq dw 262,294,330,349,392,440,494,523 ;扬声器发声各频率值tim dw 400data endsstack s

15、egment stack dw 256 dup(?)stack endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,offset banquan ; 版权显示 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

16、al,31h mov num,al ;num求出相应的时间常数的序号dianzhen: mov al,0ffh ;点阵板的列全部选通 mov dx,proth out dx,al mov al,00000001 :点阵的行赋初值 shl al,num ;根据输入的数字,左移相应位数,即点阵亮相应行 mov num,al ;如输入3,则num为2,左移两位,第三行亮 mov dx,prothl out dx,alled: mov dx,io8255d mov al,99h ;设置8255A口入B口出 mov dx,io8255b out dx,num ;根据移位后的num点亮相应led灯kaig

17、uan: mov dx,io8255a ;判断机内机外 in al,dx ;从8255B口读一字节 test al,10b ;判断PA0口是否为10(二进制) jz jiwai ;是的话转实验仪 jmp nei ;否则转机内;-jiwaijiwai:mov cx,60 ;取60次32个正弦波数据ddd:mov si,0lll:mov al,data1si ;取正弦波数据mov dx,io0832aout dx,al ;放音call delay ;调延时子程序inc sicmp si,32 ;是否取完32个数据jl lll ;若没有,则继续loop ddd ;总循环次数60是否完,没有,则继续j

18、mp sssexit: mov ah,4chint 21hdelay proc near ;延时子程序ccc: mov bx,offset timemov dx,io8253b ;置8253通道0为方式0工作mov al,10hout dx,almov al,num ;取相应的时间常数xlatmov dx,io8253aout dx,al ;向8253通道0输出kkk:mov dx,io8255ain al,dx ;从8255A口读一字节test al,01 ;判PA0口是否为1jz kkk ;若不为1,则转KKKret ;子程序返回delay endp;-机内部分jinei: mov al,

19、num add al,al mov ah,00h mov si,axagain: mov di,freqsi mov bx,tim call gen jmp sss 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口设置初值 mov al,ah out 42h,al in al,61h ;读8255PB口 mov ah,al or al,3 out 61h,alwait1: mov cx,0hdelay3: mov ax,10 ;延时子程序delay2: nop nop dec ax jnz delay2 loop delay3 dec bx jnz wait1 mov al,ah out 61h,al retgen endp code endsend start四测试方案和测试结果

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!