




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机系统与接口课程设计目录一 设计任务描述21.1设计题目21.2设计目的21.3设计要求2二 设计概要32.1设计思路32.2 设计原理32.3设计内容32.4设计环境与器材42.5主要芯片功能42.5.1 8255主要功能42.5.2 8254主要功能7三 硬件接线图及流程图93.1 硬件接线图93.2 流程图93.3 键盘值对应图10四 简易电子琴设计源程序及注释12总结16参考文献17一 设计任务描述1.1设计题目简易电子琴设计1.2设计目的通过本学期对微机原理的学习,掌握的知识还停留在理论的上。但是这是一门实践性较强的课程,让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力,为以后学生结合专业从事微机应用设计奠定基础。通过设计实践,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具。通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。具体要求如下:(1)可以弹出7个音阶;(2)弹奏简短音乐;(3)通过改变键盘输入来改变8254输出频率,实现扬声器发音。1.3设计要求1、总体内容:设计简易电子琴,能发出至少7种音阶;2、接口设计:根据题目和所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过;3、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释;4、前期完成的实验有: 8254方波实验,8255并行接口实验。二 设计概要2.1设计思路电子琴简单功能的实现利用8255和8254来实现,由此将程序分成两部分。第一部是利用8255实现,为键盘扫描,用来确定按键位置,并给计数器赋初值。PB0PB4,PA0PA4它们分别与键盘单元的X1X4,Y1Y4相连,其中B口低4位为输出端,是用来输出到键盘上的行列值,A口低4位为输入端,就是用他们将键盘上按下的键值传到8255A口从而进一步工作。具体工作过程为:先给所有列线输入低电平,然后读取行线,检测行线是否为低电平,如果有某条行线输出低电平,则说明该键盘有按键被按下,否则,说明无按键被按下.采用这种方法可以快速判断键盘是否有键按下。在检查到有键按下后,再通过行扫描法判断按下的位置,从而确定按下的是什么键,经过计算得出计数器1#的初值,通过系统将该处值送到8254中。第二部是利用8254实现,为发声部分,由计数器1#的输出端产生一定频率的方波驱动扬声器发声。其CLK1端在微机内部已接好频率为1MHZ的方波信号(由系统自动提供),计数控制端GATE1接至+5V,计数器输出端OUT1接至发声单元。该芯片在系统中接收到8255传来的初值,发出不同的方波,从而使扬声器发出不同的声音。在这里调用了延时程序,从而使发出的声音长短不同。2.2 设计原理电子琴的设计运用8255芯片、8254芯片、键盘、扬声器等硬件设备。首先确定两个芯片的工作方式,然后将键盘的各个键值进行设定,设定各个频率到寄存器中。音调的大小是由声源的震动频率决定的。OUT1的输出频率就是喇叭的发声频率。通过让OUT1输出不同的频率信号,就可以使喇叭发出不同音调的声音。8254内部的计数器都有6种不同工作方式,其中的方式3输出的波形为方波,这样能引起发声。由于系统中8254的CLK端已固定接好频率为1MHZ的方波信号,所以要控制其输出端OUT1输出不同的频率只能通过写入不同的计数初值来实现。关系为:CLK1端的输入频率/OUT1端的输出频率=计数初值N。只要对8254进行编程,将对应频率的计数初值送入计数器1#的初值寄存器中,就可以使OUT1端输出不同的频率信号了。整体的工作的过程大致过程为键盘按下键后,其值传到8255A口,然后8255将其传到系统,CPU计算得到初值后通过通道1将其传到8254,然后8254发出方波促使扬声器发声。2.3设计内容本次课程设计的内容为简易电子琴的设计与实现,利用8255将键盘输出值返回CPU,CPU通过分析、计算、命令8254输出相应频率的方波波形,再经过扬声器发出声音。由于PC计算机的时钟晶振为1.1931816MHz,可以利用微机实验箱里面的发生单元发出声音寄存器中的各个键值就是依照这个表2.1为各音阶标称频率值设定的。表2.1 各音阶标称频率值音符1234567重音对应频率(Hz)131147165175196220247低音对应频率(Hz)262294330349392440494中音对应频率(Hz)523587659698784880988高音对应频率(Hz)10641175131813971568176019752.4设计环境与器材(1)PC计算机一台 用于对程序的编译测试等,实现对实验设备进行控制,提供整个程序的运行平台,并且收集和释放硬件信号,实现程序功能。(2)微机原理实验箱一台 此设备提供了8255、8254等必要芯片。并且能通过接受计算机传来的信息,实现相应的功能。(3)导线若干条 用于电路和芯片之间的连接。2.5主要芯片功能 2.5.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通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据,通常接系统总线的信号。为写信号线,与其他信号一起实现对8255的写操作,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。通常接系统总线的。为片选信号线,当它为低电平时,才能选中该8255芯片,也才能对8255进行操作。A0、A1为口地址选择信号线。本次设计使其分别与系统总线的XA1、XA2相连,它们的不同编码可分别寻址3个口和一个控制寄存器,具体规定如表2.2所示。表2.2 地址选择信号线的编码控制A1A0选择00A口01B口10C口11控制寄存器RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 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接口进行写操作时,各信号线的状态如下表2.3所示:表2.3 各信号线的状态CSA1A0IORIOW操作00010写A口00110写B口01010写控制寄存器01110写C口8255在应用过程中,将不同的控制字装入芯片中控制寄存器,即可确定8255的工作方式。8255在应用过程中,将不同的控制字装入芯片中控制寄存器,即可确定8255的工作方式。8255的控制字由8位二进制数构成,各位的控制功能如下图:图2.2 置位/复位控制字格式2.5.2 8254主要功能8254具有3个独立的16位计数器,6种不同的工作方式。计数寄存器用来寄存计数初值,计数工作单元为16位减1计数器,它的初值便是计数寄存器内容,计数单元对CLK脉冲计数,每出现一个CLK脉冲,计数器减1,当减为零时,通过OUT输出指示信号表明计数单元已为零。当作为定时器工作时,每当计数单元为零时,计数寄存器内容会自动重新装入计数单元,而且CLK输入是均匀的脉冲序列,于是OUT输出频率是降低了的(相对于CLK信号频率)脉冲序列。当作为计数器工作时,表明只关心在CLK端出现(代表事件)的脉冲个数,当CLK端出现了规定个数的脉冲时,OUT输出一个脉冲信号。8254的工作方式及端口寻址方式如下 方式0-计数结束产生中断;方式1-可编程单稳; 方式2-频率发生器; 方式3-方波发生器; 方式4-软件触发选通; 方式5-硬件触发选通。 8254内部有3个计数器:可选择计数器0、可选择计数器1、可选择计数器2,还有一个控制寄存器,它们由程序寻址。具体的寻址方式如下: A1 A0 选择 0 0 可选择计数器0 0 1 可选择计数器1 1 0 可选择计数器2 1 1 控制寄存器8254的控制字格式如下图2.3所示。765432101 BCD计数0 二进制计数工作方式选择:000方式0001方式1X10方式2X11方式3100方式4101方式5计数长度选择:00 将计数器中的数据锁存于缓冲器01 选择计数器低八位读或写10选择计数器高八位读或写11 选择先低后高两个字节读或写计数器选择00 计数器001 计数器110 计数器211 非法 图2.3 8254的控制字格式三 硬件接线图及流程图3.1 硬件接线图系统的连线图主要由四个部分构成。系统总线、8255并口控制器、键盘及数码管显示单元、8254芯片。具体连接线如图3.1所示。键 X1盘 数 X4码 管 Y1显 示 Y4单元PB0 D0 PB3 D7 PA0 A0 PA3 A1 WR RD CS8255单元XD0 XD0 XD7 XD7XA1 XA1XA2 XA2IOW IOWIOR IORIOY0 IOY3 CLK系统总线D0D7 GATE1A0A1 OUT1WRRDCSCLK18254单元电子发声单 元 +5V图3.1硬件接线图3.2 流程图主程序的流程图是对整个程序的逻辑的图象表示。形象的描述了整个系统的工作过程。流程图如图3.2所示。停止发声无条件转移程序结束开始程序定义8255,8254控制字键盘扫描有无键按下确定按键位置键值送处理取对应频率时钟频率除对应频率得初始值初始值送8254发出方波调用延迟控制发音长短图3.2系统实现流程图3.3 键盘值对应图右图Y组对应8255芯片的A口(Y值为1)与+5V连L1 L2 L3 L412345678910111213141516Y1X组对应8255芯片的B口(X值为0) 当有键按下时如5键,其对应的Y值 Y2Y2为0,则8255芯片由A口输入的数 Y3 值为1101给AL。 Y4 X1 X2 X3 X4 图3.3 键盘值对应图四 简易电子琴设计源程序及注释MY8255_A EQU 0600HMY8255_B EQU 0602HMY8255_C EQU 0604H MY8255_MODE EQU 0606HMY8254_MODE EQU 06C6HMY8254_B EQU 06C2H ;进行宏定义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,DATA MOV DS,AX ;实现段寄存器DS的初始化 MOV DX,MY8255_MODE MOV AL,90H OUT DX,AL ;写8255芯片的控制字,实 现工作在方式0,B端口输出,A端口输入MOV DX,MY8254_MODEMOV AL,76HOUT DX,AL ;使8254工作在方式3,A 口输入,运用计数器1,二进制方式BEGIN: CALL CCSCAN ;键盘扫描JNZ INK1 ;有键按下时跳到INK1JMP BEGIN ;没见按下时循环执行 BEGIN;=;确定按下键的位置;=INK1: CALL CCSCAN JNZ INK2 ;有键按下时跳到INK2 JMP BEGIN;没见按下时循环执行BEGININK2: MOV CH,0FEH ;确定按下键在第一列 MOV CL,00H ;从第一列开始测试,设初 ;值为零COLUM: MOV AL,CH MOV DX,MY8255_B ;将8255的B口地址赋给DX OUT DX,AL ;将CPU中的AL值送到8255 的B口中,即送到X1、X2、 X3、X4中 MOV DX,MY8255_A ; 将8255的A口地址赋给DX IN AL,DX ;将A口的值送到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 ;键盘的行值加列值得到键位数 MOV BL,AL ;把AL里的值先存入BL中 MOV DL,2D ;乘得双字节音频表中的 MUL DL ;偏移地址 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 ;时钟频率除以音符频率得到计数 ;器初值 OUT DX,AL ;把计数器初值给口输 MOV AL,AH ;出,先低后高双字节输出 OUT DX,AL MOV AL,BL ;把刚才存入BL中的数存入AL中 CMP AL,08H ;用键盘的按键值与8比较,使高 JG CY ;音发短音,低音发长音 MOV CX,32H JMP NEXT3 CY: MOV CX,5FH NEXT3: CALL DALLY ;调用延时子程序DALLYLOOP NEXT3 ;CX不为0重复执行NEXT3 MOV DX,0FH MOV AX,4240H ;被除数为0F4240H MOV SI ,30D DIV WORD PTRSI ;除数为SI=30所指的数据 MOV DX,MY8254_B ;用时钟频率除以-1得到极大的初 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_B OUT DX,AL ;使8255芯片B端口输出 为0,既使X1、X2、X3、X4为0 MOV DX,MY8255_A IN AL,DX ;由A口接收响应电平信号 NOT AL ;将AL取反 AND AL,0FH ;与0FH与,结果不为零则继续 RET;=;延时子程序;=DALLY: PUSH CX ;将CX压栈 MOV CX,000FH T1: MOV AX,009FHT2: DEC AX ;使AX减1 JNZ T2 ;AX不为0重复T2 LOOP T1 ;CX不为0重复T1 POP CX ;将CX出栈 RETCODE ENDS ;代码段定义结束END START ;程序结束总结一周的课程设计就在匆匆忙忙之间走过了,现在那种忙碌的心情还没有平息,总感觉自己还在课设之中,紧张的神经似乎并没有随着课设的结束而结束。这一周的课程设计颇有收获,最重要的是让我能够更深刻的理解了书本上的知识,而且实际中的运用使得那些知识像活了一样地映入我的脑海。对于8254和8255等芯片我原来只是会对他们进行简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工分公司安全培训计划课件
- 刺刺鬼的刺掉了课件
- 初级安全培训教材课件
- 内镜生物监测课件
- 化工产品检验课件
- 二手车贷款营销方案(3篇)
- 兴化工伤预防培训课件
- 母婴电商营销方案(3篇)
- 江口县营销优化方案(3篇)
- 内蒙消防与安全培训课件
- 2025年高压电工考试题库:基础理论知识要点
- 2025中秋国庆双节安全培训
- 刑事谅解协议书范本6篇
- 护理员安全培训内容课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- Starter Unit 1 Hello!单元测试(解析版)
- 金税四期培训
- 托管班安全培训课件
- 汽车制造生产知识培训课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 2025年县处级领导干部政治理论考试试题库(附答案)
评论
0/150
提交评论