课程设计简易电子琴设计.doc_第1页
课程设计简易电子琴设计.doc_第2页
课程设计简易电子琴设计.doc_第3页
课程设计简易电子琴设计.doc_第4页
课程设计简易电子琴设计.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

简易电子琴设计一 设计任务描述1.1设计题目:简易电子琴设计1.2设计目的通过本学期对微机原理的学习,掌握的知识还停留在理论的上。但是这是一门实践性较强的课程,让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。通过设计实践,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。具体要求如下:(1)可以弹出7个音阶;(2)弹奏简短音乐;(3)通过改变键盘输入来改变8254输出频率,实现扬声器发音。1.3设计要求1、总体内容:设计简易电子琴,能发出至少7种音阶;2、接口设计:根据题目和所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过;3、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释;4、前期完成的实验有: 8255并行接口实验。1.4简易电子琴电子琴简单功能实现以及利用由8255芯片控制的小键盘(含数码管、键盘阵列)实现控制电子琴。主程序由电子琴和键盘控制的两个程序有机组成,两个程序简单拼凑在一起是不能实现的。经过实际调试和修改,将原电子琴程序改为2个子程序:start(实现播放音阶)和delay(实现播放音阶时延时);将原键盘控制程序改为1个主程序:ccscan(实现键盘扫描)。各个子程序通过寄存器通信,寄存器存有当前输入的键盘码,同时为电子琴和键盘控制两子程序服务。调试后,主程序能实现课程设计要求的功能。二 设计概要2.1设计内容本次课程设计的内容为简易电子琴的设计与实现,利用8255将键盘输出值返回CPU,CPU通过分析命令8254输出相应频率的方波波形,再经过扬声器发出声音。由于PC计算机的时钟晶振为1.1931816MHz,可以利用微机实验箱里面的发生单元发出声音。表2.1 各音阶标称频率值:音符1234567重音对应频率(Hz)131147165175196220247低音对应频率(Hz)262294330349392440494中音对应频率(Hz)523587659698784880988高音对应频率(Hz)10641175131813971568176019752.2设计环境与器材(1)PC计算机一台 用于对程序的编译测试等,实现对实验设备进行控制,提供整个程序的运行平台,并且收集和释放硬件信号,实现程序功能。(2)微机原理实验箱一台 此设备提供了8255、8259等必要芯片。并且能通过接受计算机传来的信息,实现相应的功能。(3)导线若干条 用于电路和芯片之间的连接。2.3主要芯片功能 2.3.1 8255主要功能8255 可编程外围接口芯片是 Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU 和接口之间 的数据传送总是并行的,即可以同时传递8 位、16 位、32 位等。用+5V 单电源供电,能在以下三种方式下工作:方式0-基本输入/出方式、方式1-选通输入/出方式、方式2-双向选通工作方式。8255的内部结构及引脚如图2.1所示:图2.1 内部结构及引脚如图2.1所示,D0D7为双向数据信号线,用来传送数据和控制字。为读信号线,与其他信号线一起实现对8255接口的读操作。通常接系统总线的信号。为写信号线,与其他信号一起实现对8255的写操作,通常接系统总线的。为片选信号线,当它为低电平时,才能选中该8255芯片,也才能对8255进行操作。A0、A1为口地址选择信号线。本次设计使其分别与系统总线的XA1、XA2相连,它们的不同编码可分别寻址3个口和一个控制寄存器,具体规定如下:A1A0选择00A口01B口10C口11控制寄存器RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。 RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。这里的8255接口所占地址范围为0640H067FH。当对8255接口进行写操作时,各信号线的状态如下表所示:CSA1A0IORIOW操作00010写A口00110写B口01010写控制寄存器01110写C口8255在应用过程中,将不同的控制字装入芯片中控制寄存器,即可确定8255的工作方式。8255在应用过程中,将不同的控制字装入芯片中控制寄存器,即可确定8255的工作方式。8255的控制字由8位二进制数构成,各位的控制功能如下图:图2.2 置位/复位控制字格式2.3.2 8254主要功能8254具有3个独立的16位计数器,6种不同的工作方式。计数寄存器用来寄存计数初值,计数工作单元为16位减1计数器,它的初值便是计数寄存器内容,计数单元对CLK脉冲计数,每出现一个CLK脉冲,计数器减1,当减为零时,通过OUT输出指示信号表明计数单元已为零。当作为定时器工作时,每当计数单元为零时,计数寄存器内容会自动重新装入计数单元,而且CLK输入是均匀的脉冲序列,于是OUT输出频率是降低了的(相对于CLK信号频率)脉冲序列。当作为计数器工作时,表明只关心在CLK端出现(代表事件)的脉冲个数,当CLK端出现了规定个数的脉冲时,OUT输出一个脉冲信号。三 硬件接线图及流程图3.1 硬件接线图 系统的连线图主要由四个部分构成。系统总线、8255并口控制器、键盘及数码管显示单元、8254芯片。如下图所示:12键 X1盘 数 X4码 管 Y1显示 Y2单元PA0 D0PA3 D7PB0 A0PB3 A2 WR RD CS8255单元XD0 XD0XD7 XD7XA1 XA1XA2 XA2IOW IOWIOR IORIOY1 IOY2 CLK系统总线D0D7 GATE0A0A1 OUT0WRRDCSCLK08254单元电 子 发 声 单 元+5V.图3.1硬件接线图3.2流程图主程序的流程图是对整个程序的逻辑的图象表示。形象的描述了整个系统的工作过程。8254输出一定频率方波输出设置好的频率将位置交由CPU计算将声音延迟静音开始初始化8254,8255芯片键盘扫描是确定按键的位置否图3.2系统实现流程图四 简易电子琴设计源程序及注释MY8255_A EQU 0640HMY8255_B EQU 0642HMY8255_C EQU 0644H MY8255_MODE EQU 0646HMY8254_MODE EQU 0686HMY8254_B EQU 0680H ;进行宏定义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 AX,DATAMOV DS,AX ;实现段寄存器DS的初始化MOV DX,MY8255_MODE MOV AL,82HOUT DX,AL ;写8255芯片的控制字,实 现工作在方式0,A端口和C端口输出,B端口输入MOV DX,MY8254_MODEMOV AL,36HOUT DX,AL ;使8254工作在方式3,A 口输入,运用计数器0,二进制方式BEGIN: CALL CCSCAN ;扫描JNZ INK1 ;有键按下时跳到INK1JMP BEGIN ;没见按下时循环执行 BEGIN;=;确定按下键的位置;=INK1: CALL CCSCAN JNZ INK2 ; 有键按下时跳到INK2 JMP BEGIN;没见按下时循环执行BEGININK2: MOV CH,0FEH ;确定按下键在第一列 MOV CL,00H ;将CL清零COLUM: MOV AL,CH MOV DX,MY8255_A ;将8255的B口地址赋给DX OUT DX,AL ;将CPU中的AL值送到8255 的B口中,即送到x1、x2、 x3、x4中 MOV DX,MY8255_B ; 将8255的C口地址赋给DX IN AL,DX ;将C口的值送到AL中 L1: TEST AL,01H ;检验按下键是否在L1 JNZ L2 ;不是L1则跳到L2 MOV AL,00H ;为了后面用来与FREQ_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 ;为了后面用来与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 ;将8254的A口地址赋给DX OUT DX,AL ;输出商的低4位 MOV AL,AH OUT 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 ;将8254的A口地址赋给DX OUT DX,AL MOV AL,AH OUT DX,AL ;实现静音,结束一个音符的发音 JMP BEGIN ;跳转到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芯片B端口输出 为0,既使x1、x2、x3、 X4为0 MOV DX,MY8255_B IN AL,DX ;将从C端口输入的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 ;程序结束总结通过这一周的课程设计使我更加深刻的认识到了微机原理的广泛应用,同时也体会到它的多样和多变性,让我对这门课程保持了深深的兴趣!这一周的课程设计颇有收获,最重要的是让我能够更深刻的理解了书本上的知识,而且实际中的运用使得那些知识像活了一样地映入我的脑海。对于8254和8255等芯片我原来只是停留在书本上的认识,并不能在实际中灵活应用。刚开始进行课设的时候,看着那一片芯片实在不知道该怎么下手。后来经过老师的热心指导和同学们的帮助我有了自己的思路,将课设进行了下去。我的思路大概是这样的:调整8254及8255的工作方式,并且进行编程,然后连线。使得减胖的信号能够传到CPU里,通过CPU的计算控制8254芯片,最后8254芯片发出一定频率的方波传到发声装置,从而发出声音。在设计的过程中,每当有一个新想法我就会进行实验,虽然失败的多成功的少,但我还是从中获得了知识。而且再多的失败也打不倒我,因为我知道失败乃成功之母,实践出真知,只有在风雨过后的彩虹才是美丽的!就这样,在多次的实验之后,我做出了自己的作品。尽管还有些差强人意,但它还是我一点一滴做出来的。一周的课程设计终于圆满的结束了,兴奋之余,我觉得这是我收获最多的一个课程设计。因为原来的我真的是一个门外汉,通过老师的悉心讲解和自身的不断努力,反复查阅书籍,终于没有白白浪费这一周的时间,充实了自己。感谢老师的谆谆教诲和悉心的指导,使学生更好的掌握了所学的知识,并为以后的学习打

温馨提示

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

评论

0/150

提交评论