ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:369.57KB ,
资源ID:10550607      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10550607.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编接口综合实验 简易电子琴实验.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编接口综合实验 简易电子琴实验.docx

1、汇编接口综合实验 简易电子琴实验简易电子琴键盘控制电子音响发声、8x8点阵LED灯显示实验报告12281166 崔雪莹 12281161 安容巧 12281183 张佳悦 一、 实验目的1. 了解小键盘的工作原理,学会如何使用小键盘进行控制,熟悉流程和代码编程;2. 了解电子音响的发声原理,会利用8253A级联方式控制其发出不同频率的声音;3. 了解8X8点阵LED灯的工作原理,学会显示想要显示的文字和图形;4. 实验结合8253,8259,8255和小键盘,8*8点阵的应用共同实现。5. 实验目的效果:小键盘触发按键,控制电子音响发出相应频率的声音,8X8点阵LED灯显示相应的内容。二、 实

2、验内容实验主要概述:键盘控制实现两个音部(高音部、低音部)的发声,即:当在键盘上按下0、1、2、3、4、5、6、7时,电子音响发出不同频率的低音调,当在键盘上按下8、9、A、B、C、D、E、F时,电子音响发出不同频率的高音调。同时,在8x8LED灯上显示相应音调对应的1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。1.小键盘按键的获取:图1 小键盘原理图小键盘按键获取原理:(1)判断是否有按键按下:若某行为低电平,此时该行某按键对应某列也为低电平,则说明该按键此时被按下。将8255A的A口PA0-PA3接行0到行3,B口的PB0-PB3接列0到列3。A口做输出,B口做输入。将A口输

3、出设置为0000读取B口的此时的值,若不是全为1则说明有按键按下。无按键按下则等待。(2)去抖动:延时,等待按键通断引起的抖动消失。延时后再读B端口,若还有按键闭合,则认为按键已确定。(3)找到被按下的按键:用逐行扫描的方法读出此时按键相应的值。从第0行开始,输出0,顺序逐行扫描。每扫描一行,读入列线值,从0列开始,逐列检查是否为0。若为0,则表示该列有键按下;若为1,则表示无键按下。这样按顺序扫描每一行及其列值,直到找到为0列值,则该键就是被按下的键。计算按键编号。(4)根据找到的键号,执行键号对应的程序。2.电子音响发声电子音响发声基本原理:8253A的1工作方式和3方式配合可以产生占空比

4、不同的输出方波,用这种波形可控制电子音响发出不同的音调。使用通道0和通道2,通道0 的输出OUT0作为通道2的GATE2的门控信号;通道0工作在3方式,产生一定周期的方波信号,通道2 工作在1方式;1方式虽然不是周期输出,但是在GATE2信号上升沿周期出现时,1方式可以重新计数。通过对这两种工作方式的计数初值的合理设置,通道2可以产生不同频率的周期性信号,来控制扬声器的发声。当3方式的方波周期大于1方式定时长度时,可通过改变1方式定时时间常数就可以改变方波的占空比(如下图2示);当3方式的方波周期小于1方式定时长度时,1方式总处于定时期间(发声停止)。图2 波形图3.8x8点阵LED灯显示8x

5、8LED灯的工作原理:只要在行线R1-R8加上高电平,在列线C1-C8加上低电平,则两线交叉点的LED就会发光。通过此原理我们计算出了1、2、3、4、5、6、7、8、9、A、B、C、D、E、F所对应的编码方案。并通过逐列扫描并延迟的方法实现字母的显示。图3-1 8x8点阵内部结构图图3-2 8x8点阵外部图举一个很简单的例子,将8X8点阵简化为1个平面有64个点 图像,来确定其显示的编码形式,如代码中DATA部分的那个大的显示矩阵 以“0”来举例说明显示8X8点阵显示过程: 图3-2 8x8点阵0显示 8X8点阵显示“0”是因为,我们将所有的列都置高电平,然后让需要显示的发光二极管对应的点的行

6、置低电平,其他行的则置高电平,然后把置低电平的行码记为1其他的记0,再从左向右读,则可以得到一个8位的2进制数。 如上图所示,第1行和第8行是00H,第2行和第7行是18H,第3、4、5行都是24H则“0”显示的编码是:00H,18H,24H,24H,24H,18H,00H三、 实验分析与设计1.硬件思路小键盘部分:因为小键盘的读入用的扫描法,4行必须使用输入,4列必须输出,所以我们用到8255的PA0-PA3作为输出,PB0-PB3作为输入。8255片选接200H。扬声器发声部分:8253使用级联方式,OUT0接GATE2,OUT2接扬声器,片选接210H。点阵显示部分:8X8阵列行接A口,

7、列接B口。中断部分:PC6接MIR5中断。2.软件分析查询流程图如下: 图4-1 主程序 图4-2 小键盘子程序 图4-3 发声子程序 图4-4 8x8LED灯子程序四、 实验硬件连线图根据以上描述的硬件设计思路,电路连接线应如下图所示。图5-1 发声子程序实验连线图图5-2 小键盘子程序(含数码管)实验连接图图5-3 8X8LED灯子程序实验连接图五、 实验创意我们应用了小键盘模块、扬声器和8x8点阵LED模块,同时结合8253A定时计数模块,8255并行接口模块,8299中断模块将整个实验联系起来,实现了一个简易电子琴的装置。同时在8x8点阵显示了按键对应的字符显示,让这个电子琴看起来更加

8、炫!8*8点阵我们最初想随着音调的高低变化亮度和点的多少,在实现的时候发现效果并不明显,所以我们改成随着按键发声来显示对应的字符,效果比之前好得多。另外,发声频率由8253A写入计数控制,基本音有7个,加上一个高一调,而键盘可控制16个,所以我们分为高音部和低音部,实现了一个转换音的效果,更加人性化。其实,我们有更高的愿望,比如,我们希望可以小键盘弹奏一首歌后按键实现自动播放整首歌曲的功能,这样就更加完整了,但是因时间和能力关系没能实现。我们还想用128x64LCD实现一个音阶才的实时变化,希望我们在今后的学习之余回顾这个实验时可以补上这些功能。六、 实验结果演示1. 实际实验连线图黄线825

9、5的A口连8*8点阵的行18,小键盘的行03,红线B口连点阵的列18,小键盘的列03。绿线表示8253的级联和cs接法,黑线连接扬声器SIN和out2,中断MIR5接PC6。2. 8x8点阵 各字母显示图(部分举例,未全部贴图)(2589ABDE) 3. 声音视频见文件“实验效果视频”。七、 实验体会崔雪莹:本次实验我主要负责程序代码的编写和整个实验的设计,通过此次实验,我对于硬件编程有了更为深入的了解,懂得了怎样编写硬件的较大一点的程序,尤其是写代码的时候一定要思路清晰,明确的知道自己到底想要做些什么,怎么去设计这个实验,通过此次试验对于今后的硬件学习打下了很好的基础。经过这次试验,我对82

10、55等芯片以及小键盘、8X8LED灯、电子音响的工作原理有了更为全面、更为深刻的理解,锻炼自己独立的利用手上芯片进行独立编程的能力。实验还有继续改进的地方,我会继续学习,更加深入的去学习和研究。安容巧:本次试验是接口课中最复杂的一次实验,第一次实验课之前我们小组就去实验室讨论试验内容,确定了试验内容之后开始代码的初步编写。经过实验课和老师的指导,我们完善了设计方案,经过多次课下小组自己找时间自己做实验,最终完成了试验。经过这次试验,我们队8255等芯片以及小键盘、8X8LED灯、电子音响的工作原理有了更为全面、更为深刻的理解。小组一起做实验,一起讨论,让我们学会了团队合作,对以后的学习工作很有

11、帮助。张佳悦:本实验考查的内容很多,不仅有课堂上所学习的汇编与接口的知识,还对我们团队小组的分工协作提出了很高的要求。我们小组成员分工明确、各尽所能,为整个设计性实验的完成作出了贡献。同时,在和小组成员的交流中,我也强化了自己对汇编程序的理解以及对接口知识的巩固。最后的成果,我个人感到非常满意,达到了预期的效果。汇编与接口方面还有很多我们不太会用但的确重要的东西需要我们在接下来的学习中深入研究和探索。_附件:程序清单(加注释).model small.386DATA SEGMENTKEY_NO DB ? ;用来存储按键编号;8*8点阵显示时字符D0 DB 00H,18H,24H,24H,24H

12、,24H,18H,00H ;0D1 DB 00H,18H,18H,18H,18H,18H,18H,00H ;1D2 DB 00H,3CH,20H,20H,3CH,04H,04H,3CH ;2D3 DB 00H,3CH,20H,20H,3CH,20H,20H,3CH ;3D4 DB 00H,24H,24H,24H,3CH,20H,20H,20H ;4D5 DB 00H,3CH,04H,04H,3CH,20H,20H,3CH ;5D6 DB 00H,3CH,04H,04H,3CH,24H,24H,3CH ;6D7 DB 00H,3CH,20H,20H,20H,20H,20H,20H ;7D8 DB

13、 00H,3CH,24H,24H,3CH,24H,24H,3CH ;8D9 DB 00H,3CH,24H,24H,3CH,20H,20H,3CH ;9DA DB 18H,3CH,66H,66H,7EH,66H,66H,66H ;ADB1 DB 00H,1CH,24H,24H,14H,24H,24H,14H ;BDC DB 00H,18H,24H,04H,04H,24H,18H,00H ;CDD1 DB 00H,1CH,24H,24H,24H,24H,1CH,00H ;DDE DB 00H,3CH,04H,04H,3CH,04H,04H,3CH ;EDF DB 00H,3CH,04H,04H,3

14、CH,04H,04H,04H ;FNUMER DB 7FH,5BH,6DH,6FH,40H,77HDIPIN DW 0EE8H,0D49H,0BD6H,0B41H,9F7H,8E1H,7E8H,778H,7A6H,700H,66BH,600H,55BH,500H,454H,400H ;频率表即计数器计数初值DATA ENDS ;前8个低音,后8个高音CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX, DATA MOV DS, AX CLI MOV DX, 21H ;设置主片中断屏蔽字 IN AL, DX AND AL, 11011111B ;使用

15、MIR5 OUT DX, AL CALL PREPARE ;调用PREPARE子程序,写入中断向量表 LOP: CALL INKEY ;调用INKEY子程序,检测按键CALL SHOWALPHA ;调用SHOWALPHA子程序, 8X8点阵显示字母JMP LOP ;循环 MOV AX, 4CH ;程序结束 INT 21H ;中断服务程序INTER PROC ;中断服务程序,进中断发声 PUSH DX ;保护寄存器 PUSH AX CLI ;关中断 CALL LOUD ;调用发声子程序 MOV DX, 20H ;发EOI中断结束命令MOV AL, 20H ;OCW2,非自动结束 OUT DX,

16、AL STI ;开中断 POP AX POP DX IRETINTER ENDP;发声子程序LOUD PROC PUSH AX PUSH DX MOV DX, 213H ;初始化8253 通道0 MOV AL, 00110110B ;命令字,通道0,3方式 OUT DX, AL MOV DX, 210H MOV AX, 0FF40H ;通道0,赋初值8000 OUT DX, AL ;先写低字节 MOV AL, AH OUT DX, AL ;再写高字节 MOV DX, 213H ;初始化8253 通道2 MOV AL, 10110010B ;命令字,1方式,方波 OUT DX, AL MOV D

17、X, 212H ;通道2 MOV SI, OFFSET DIPIN ;频率表首地址送SI MOV AL, KEY_NO ;取键盘编号 MOV AH, 0 ADD SI, AX ;相加得到键盘编号对应的计数初值 MOV AX, SI ;取得对应的计数初值,送扬声器发声 OUT DX, AL MOV AL, AH OUT DX, ALCALL DELAY ;调用延时子程序 MOV DX, 213H ;将通道0的周期改成小于通道二让发声停止 MOV AL, 00110110B ;通道0 3方式 OUT DX, AL MOV DX, 210H MOV AX, 00F4H ;通道0赋初值500 OUT

18、DX, AL ;先写低字节 MOV AL, AH OUT DX, AL ;再写高字节 POP DX POP AX RETLOUD ENDP ;检测键盘子程序INKEY PROC MOV DX, 213H ;按键之前不发声 MOV AL, 00110110B ;通道0,3方式 OUT DX, AL MOV DX, 210H MOV AX, 01F4H ;通道0赋初值500 OUT DX, AL ;先写低字节 MOV AL, AH OUT DX, AL ;再写高字节CLI MOV DX, 203H ;初始化8255 MOV AL, 10000010B ;A输出,B读入 OUT DX, AL MOV

19、 DX, 200H ;输出PA为0以便下面获得是否有按键按下 MOV AL, 0 OUT DX, AL WAIT1:MOV DX, 201H ;读入PB的值 IN AL, DX AND AL, 0FH ;屏蔽无关位 CMP AL, 0FH ;检测是否有列线为0JZ WAIT1 ;没有按键输入就退出函数 CALL DELAY ;调用延时子程序 BEGIN2: ;检测按下的是哪一个按键MOV CH, 04H ;循环检测4行 MOV CL, 0FFH ;-1,保存按键编码 MOV BL, 0EH ;行屏蔽码 LOP2: MOV AL, BL ;从第0行开始扫描 MOV DX, 200H ;把AL指示

20、的行线置零 OUT DX, AL MOV DX, 201H IN AL, DX ;读入列线状态 AND AL, 0FH ;屏蔽无关位 CMP AL, 0FH ;若某位为0,则表明检测到按键 JNZ SAVE ADD CL, 4 ;无按键,跳过一行键盘编号 SHL BL, 1 ;移动到下一行 DEC CH ;行数减一 JNZ LOP2 ;继续扫描 JMP BEGIN2 ;检测完4行,无按键按下,跳转到等待按键SAVE: ;保存按键号INC CL SHR AL, 1 JC SAVE ;得到键盘编号 ADD CL, CL MOV KEY_NO, CL ;保存键盘编号 STI MOV DX, 203H

21、 ;PC6按位置位触发中断 MOV AL, 00001101B OUT DX, AL ;发高电平 NOP NOP MOV AL, 00001100B ;发低电平 OUT DX, AL RETINKEY ENDP;写中断向量表子程序PREPARE PROC NEAR PUSH AX CLI CLD MOV AX, 0 MOV ES, AX MOV DI, 4*35H MOV AX, OFFSET INTER STOSW MOV AX, SEG INTER STOSW STI POP AX RETPREPARE ENDP;8x8点阵显示子程序SHOWALPHA PROC PUSH AX PUSH

22、BX PUSH CX PUSH DX MOV BL, KEY_NO ;判断是否有按键按下CMP BL, -1 ;寄存器BL中数据与-1比较;大于1则证明有按键,反之则无按键 MOV BH, 3FH ;将3FH送到BH中,代表了8X8点阵有64个 JZ END1 ;初始化8255 MOV DX, 203H MOV AL, 10000000B ;A输出,B输出OUT DX, AL NEXT1: MOV BL, 00000001B MOV SI, OFFSET A ;得到偏移量 MOV AL, 8 MUL LED_NO ADD SI, AX MOV CL, 8NEXT: MOV DX, 201H M

23、OV AL, BL OUT DX, AL MOV DX, 200H MOV AL, SI OUT DX, AL CALL DELAY1 CALL DELAY1 CALL DELAY1 CALL DELAY1 INC SI SHL BL, 1 DEC CL ;刷完8列后就跳出 JNZ NEXT DEC BH JNZ NEXT1END1:POP DX POP CX POP BX POP AX RET SHOWALPHA ENDP;延时子程序DELAY1 PROC PUSH AX MOV AX,0FFHL: DEC AX JNZ L POP AX RETDELAY1 ENDP;延时子程序DELAY

24、PROC NEAR PUSH AX MOV AX, 0FFFFHW: DEC AX JNZ W MOV AX, 0FFFFHW2: DEC AX JNZ W2 POP AX RETDELAY ENDPCODE ENDSEND START八、 成员分工崔雪莹(第一完成人):整体代码框架,小键盘、中断、8255、显示8x8点阵等代码,撰写的实验报告包括实验目的,实验原理小键盘部分和电子琴发声部分,绘制全部实验原理图、实验流程图和实验连接图,实验分析,实验结果分析和图片,实验的全部代码及注释,实验报告的排版等。安容巧(第二完成人):8x8点阵字符代码部分,字母常数值计算,8x8字母显示调试,实验连线,撰写的实验报告部分:8x8点阵流程图设计, 8x8点阵代码注释,拍照及录制实验视频。张佳悦(第三完成人):8253代码,8x8点阵字符代码部分,字母常数值计算,8x8字母显示调试,实验连线,撰写的实验报告部分:8x8部分代码注释,实验感想。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1