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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

微机原理电子琴设计.docx

1、微机原理电子琴设计目录一设计要求 - 2 -1.1 设计题目 - 2 -1.2 设计内容 - 2 -二 系统接线图及流程图 - 3 -2.1 设计系统框图 - 3 -2.2 接线图 - 4 -2.3 流程图 - 5 -三 芯片功能介绍 - 6 -3.1 芯片8255功能介绍 - 6 -3.2 芯片8254功能介绍 - 9 -四 设计原理及程序代码 - 10 -4.1 设计原理 - 10 -4.2 模块设计 - 10 -4.3 程序代码 - 10 -五 设计总结 - 16 -六 参考文献 - 17 - 一设计要求1.1 设计题目简易电子琴设计1.2 设计内容通过改变键盘输入来改变8254输出频率

2、,实现扬声器发音。1.2.1 设计目的通过课程设计使学生更进一步掌握微机原理与应用课程的有关知识,提高用汇编语言编程的能力,加深对汇编语言的理解。通过查阅资料,阅读程序,提高设计程序的能力及动手能力,使编程水平有一定的提高,同时也使学生通过动手进行硬件设计及程序设计从而提高解决实际问题的能力。1.2.2 设计要求利用微机原理试验箱,设计简易电子琴,要求至少可以弹出7个音阶。二 系统接线图及流程图2.1 设计系统框图图2.1 设计系统框图2.2 接线图图2.2 接线图右图Y组对应8255芯片的C口(Y值为1)与+5V连 L1 L2 L3 L413141516910111256781234Y4Y3

3、 X组对应8255芯片的A口(X值为0)Y2 当有键按下时如5键,其对应的Y值Y2为0,则8255芯片由B口输入的数 Y1 值为1101给AL。 X1 X2 X3 X4 图2.3 键盘等效图2.3 流程图图2.4 流程图三 芯片功能介绍3.1 芯片8255功能介绍8255特性(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.(2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4PC7),B组包括B口及C口(低4位,PC0PC3).A组可设置为基本的I/O口,

4、闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.8255引脚功能RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输. RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。

5、 WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。 D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每

6、个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择;当A0=1.A1=1时,控制寄存器被选择.3.1.1 8255工作方式表这些工作方式分别为工作方式0,工作方式1和工作方式2。1:工作方式0,又称为基本工作方式。在此方式下,可分别将A口的8条线,B口的8条线,C口高4位对应的4条线和C口的低四位对应的四条线定义为输入或输出。故它们的输入输出共有16种不同

7、的组合,如表3-1所示。表3-1 工作方式表A 组B组A口(PA0-PA7)C口(PC4-PC7)B口(PB0-PB7)C口(PC0-PC3)入入入入入入入出入入出入入入出出入出入入入出入出入出出入入出出出出入入入出入入出出入出入出入出出出出入入出出入出出出出入出出出出图3.1 8255工作方式表2:工作方式1,既选通输入输出方式。在这种方式下,A口和B口仍作为数据的输出口和输入口,同时还要利用C口的某些位作为控制和状态信号。3:工作方式2,又称双向输入输出方式。这种方式只有8255的口A才有。在A口工作于双向输入输出方式时,要利用C口的5条线才能实现。因此,B口只能工作在工作方式0或工作方式

8、1,而C口剩下的3条线可以作为输入输出线使用或B口方式1下的控制线。3.1.2 8255的控制字8255的控制字格式,如图3.2所示。76543210 图3.2 8255的控制字格式图说明:当控制字bit71时,控制字的bit6bit3这4位用来控制A组,即A口的8位和C口的高4位,而控制字的低3位bit2bit0用来控制B组,包括B口的8位和C口的低4位。3.2 芯片8254功能介绍8254特性intel8254是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异。 8254内部有三个计数器,分别成为计数器0、计数器1和计数器2,

9、他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作

10、8位寄存器来用。 计数寄存器用来寄存计数初值,计数工作单元为16位减1计数器,它的初值便是计数寄存器内容,计数单元对CLK脉冲计数,每出现一个CLK脉冲,计数器减1,当减为零时,通过OUT输出指示信号表明计数单元已为零。当作为定时器工作时,每当计数单元为零时,计数寄存器内容会自动重新装入 计数单元,而且CLK输入是均匀的脉冲序列,于是OUT输出频率是降低了的(相对于CLK信号频率)脉冲序列。 当作为计数器工作时,表明只关心在CLK端出现(代表事件)的脉冲个数,当CLK端出现了规定个数的脉冲时,OUT输出一个脉冲信号。四 设计原理及程序代码4.1 设计原理本实验是利用微机原理试验箱、8255芯片

11、、8254芯片、键盘、扬声器等硬件设备,设计简易电子琴。首先利用了编程程序,编辑了8255芯片控制字, 对其进行初始化,使其工作在方式0,即基本输入输出状态,将8255的A端口设置为输出,经CPU运算后,由B端口输出到8254芯片的A端口中,由此实现对其的初始化。将8254芯片设置为工作在方式3,即输出对称方波状态。A端口为输入,“OUT”指令可将输出对应一定频率的方波送到扬声器中,由此实现发声。本实验通过频率大小控制发出声音的高低,通过对延时程序的调用控制发出声音的长短。并通过所编程序实现对键盘的重复扫描,从而可以弹奏多个音符的试验目的。4.2 模块设计主程序 键盘扫描子程序 按键延时子程序

12、4.3 程序代码程序代码:MY8255_A EQU 06C0HMY8255_B EQU 06C2HMY8255_C EQU 06C4H MY8255_MODE EQU 06C6HMY8254_MODE EQU 0686HMY8254_B EQU 0682H ;进行宏定义DATA SEGMENTFREQ_LIST DW 441D,495D,556D,589D,661D,742D,833D,882D,262D,294D,330D,373D,402D,450D,494D,-1DDATA ENDS ;建立数据段CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV

13、AX,DATA MOV DS,AX ;实现段寄存器DS的初始化 MOV DX,MY8255_MODE MOV AL,82H OUT DX,AL ;写8255芯片的控制字,实 现工作在方式0,A端口和C端口输出,B端口输入 MOV DX,MY8254_MODE MOV AL,76H OUT DX,AL ;使8254工作在方式3,A 口输入,运用计数器1,二进制方式BEGIN: CALL CCSCAN ;扫描 JNZ INK1 ;有键按下时跳到INK1 JMP BEGIN ;没见按下时循环执行 BEGIN;=;确定按下键的位置;=INK1: CALL CCSCAN JNZ INK2 ; 有键按下时

14、跳到INK2 JMP BEGIN ;没见按下时循环执行BEGININK2: MOV CH,0FEH ;确定按下键在第一列 MOV CL,00H ;将CL清零COLUM: MOV AL,CH MOV DX,MY8255_A ;将8255的A口地址赋给DX OUT DX,AL ;将CPU中的AL值送到8255 的A口中,即送到x1、x2、 x3、x4中 MOV DX,MY8255_B ; 将8255的B口地址赋给DX IN AL,DX ;将B口的值送到AL中 L1: TEST AL,01H ;检验按下键是否在L1 JNZ L2 ;不是L1则跳到L2 MOV AL,00H ;为了后面用来与FREQ_

15、LIST 数据段中数对应 JMP KCODE ;强制跳转到KCODEL2: TEST AL,02H ;检验按下键是否在L2 JNZ L3 ;不是L2则跳到L3MOV AL,04H ;为了后面用来与FREQ_LIST 数据段中数对应。JMP KCODE ;强制跳转到KCODEL3: TEST AL,04H ;检验按下键是否在L23 JNZ L4 ;不是L3则跳到L4MOV AL,08H ;为了后面用来与FREQ_LIST 数据段中数对应。JMP KCODE ;强制跳转到KCODEL4: TEST AL,08H ;检验按下键是否在L4 JNZ NEXT ;不是L4则跳到NEXTMOV AL,0CH

16、 ;为了后面用来与FREQ_LIST 数据段中数对应。KCODE: ADD AL,CL ;实现AL与CL的无进位加法 MOV DL,2D MUL DL ;将AL乘以2结果保存到AX中 PLAY: MOV SI,OFFSET FREQ_LIST ;使SI指向 FREQ_LIST的首地址 ADD SI,AX ;通过SI加AX 实现指针SI的移动 MOV DX,0FH MOV AX,4240H ;被除数为0F4240H DIV WORD PTRSI ;除数为SI所指的数据 MOV DX,MY8254_B ;将8255的B口地址赋给DX OUT DX,AL ;输出商的低4位 MOV AL,AH OUT

17、 DX,AL ;输出商的高4位 MOV CX,8D ;输入计数值CX NEXT3: CALL DALLY ;调用延时子程序DALLY CALL DALLYCALL DALLYCALL DALLYCALL DALLYLOOP NEXT3 ;CX不为0重复执行NEXT3 MOV DX,0FH MOV AX,4240H ;被除数为0F4240H MOV SI ,30D DIV WORD PTRSI ;除数为SI=30所指的数据 MOV DX,MY8254_B ;将8255的B口地址赋给DX OUT DX,AL MOV AL,AH OUT DX,AL ;实现静音,结束一个音符的发音 JMP BEGIN

18、 ;跳转到BEGIN,重复扫描NEXT: INC CL ;使CL加1,为了后面用来与FREQ_LIST数据段中数对应 MOV AL,CH TEST AL,08H JZ KERR ;无键按下时跳转到KERR ROL AL,1D ;向左移位 MOV CH,AL JMP COLUM ;强制跳转到COLUMKERR: JMP BEGIN ;跳到BEGIN重新开始扫描;=;键盘扫描子程序;=CCSCAN: MOV AL,00H MOV DX,MY8255_A OUT DX,AL ;使8255芯片A端口输出 为0,既使x1、x2、x3、 X4为0 MOV DX,MY8255_B IN AL,DX ;将从B

19、端口输入的y1、y2、y3、y4送到AL中 NOT AL ;将AL取反 AND AL,0FH ;将AL前4位清零 RET;=;延时子程序;=DALLY: PUSH CX ;将CX压栈 MOV CX,000FH T1: MOV AX,0009FHT2: DEC AX ;使AX减1 JNZ T2 ;AX不为0重复T2 LOOP T1 ;CX不为0重复T1 POP CX ;将CX出栈 RETCODE ENDS ;代码段定义结束END START ;程序结束五 设计总结一周的课程设计过去了,使我感受颇深。在整个过程中,我真正的感受到了集体的力量。刚开始做一个题目时,我感到很困难,但是在王老师,踪老师以

20、及同学们的帮助下,每次的任务都能按照老师的要求完成。在这里向老师及同学表示感谢。在这期间,通过实践使我对微机这门课有了新的认识,感受到了微机这门课对我们的重要性。所以自己也下决心要通过这次实训掌握更多的微机知识。我们小组在设计中,针对实训题目、设计的具体情况进行了细致的分工。每个人负责一块任务,其他人协助设计。设计的每个阶段都是紧密相连的,所以需要大家互相协调工作。然而在实验中我们组也遇到了不少的问题,但是我们并没有放弃,通过大家一起讨论,以及老师和同学们的热心帮助,才使我们最后完成了老师交给的任务。在这次的实验中使我了解到了微机实践的重要性。这使我在以后的学习工作中能更好更快的去了解理论知识

21、,做一个理论和实践相结合的人才。这次实训给还未走出校园的我们提供了一个很好的实践平台,在学习理论的同时,通过实践使我们更好地理解课堂上所学到的知识,也为今后走到工作岗位奠定了很好的基础。使我在以后在找工作的竞争中多了一个制胜的筹码。总而言之,这次课程设计不仅使我们巩固了所学的理论知识、锻炼了大家动手能,更重要的是通过设计使我们认识了自己在实践设计方面的缺点与不足,在以后的学习中有针对性地加强自己的设计能力,打下良好、扎实的基础,给将来的工作与学习带来更多的帮助。六 参考文献王 萍编 微机原理应用实践 机械工业出版社,2001 周明德编 微机原理与接口技术实验指导与习题集 人民邮电出版社,200

22、2 周明德编 微型计算机系统原理及应用 清华大学出版社,1998 周 斌编 微机计算原理及应用(第三版) 清华大学出版社,2001 王 颐编 微机原理及应用实验教程 重庆大学出版社,1998 潘 峰编 微型计算机原理与汇编语言 电子工业出版社,1997 李伯成编 微型计算机原理及应用 西安电子科技大学出版社,2006李兰友编 微型计算机原理与接口技术 清华大学出版社,2003郑学坚编 微型计算机原理及应用实验指导 清华大学出版社,2002朱玉春编 微机原理与接口技术 大连理工大学出版社,2004仇玉章编 微型计算机技术实验及指导教程 清华大学出版社,2003戴梅萼编 微型计算机技术及应用 清华大学出版社,2003

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2