




免费预览已结束,剩余13页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大学2006级硬件课程设计18计算机科学与技术学院硬件课程设计报告组 长: 学 号: 专 业: 信息安全 班 级: 设计题目: 可存储式电子琴 成 员: 指导教师: 职 称: 副教授 2008年 7月 徐州课程设计指导教师评阅书指导教师评语:成 绩: 指导教师签字: 年 月 日摘 要在这次的硬件实验中,我们利用学习的微机原理与接口技术这门课程课上我们学到的一些计算机硬件工作的基本原理, 汇编语言程序设计方法,微型计算机接口技术,建立微型计算机系统的整体概念,初步形成微机系统软硬件开发的能力。为了能够学以致用,同时也为了更深入的了解熟悉可编程定时器8253和8255可编程并行通信控制器。在汇编语言环境下,利用上述两种芯片,编程让8255通过识别键盘产生键值,8253识别发声从而实现计算机按照按键的不同而发出不同频率的声音。可存储式电子琴可用于设计小型发声玩具,由于本电子琴设计简单,稍加修改便可用于其它地方,如报警防盗器部件,音乐门铃等,具有一定的商业价值。 关键词: 可存储电子琴;8255;8253;门控信号;程序代码目 录总体设计部分1设计任务与要求1 2 总体方案1 3分工与协作14硬件方案15软件方案36 流 程 图47 程序源代码88分析与测试139实验体会1310参考文献14 总体设计部分1 设计任务与要求 本次硬件课程设计的任务和要求是通过居于8255A芯片和8253芯片上的电路设计和电路连接并通过对它们进行编程实现一个具有可存储音乐和电子琴的基本功能的小器件。该器件不仅具有基本的弹奏功能(输入不同的键能发出不同频率的声音即音符),还具有弹奏存储功能(在先后输入不同的键后,它能将这些键存储起来,然后一并输出)。1.1 本次硬件课程设计是为了实现一个可以存储音乐且具有一般电子琴的基本功能的小器件。1.2 通过硬件设计熟悉并掌握微型计算机与接口技术课程中的关于各个芯片的知识和一些具体应用;1.3 通过此次硬件课程设计培养自己的对于微型计算机与接口技术课程的兴趣;1.4 通过此次硬件课程设计培养自己的动手能力和创新精神,培养自己的提出问题并解决问题的能力;1.5 通过此次课程设计锻炼同学们的彼此配合,彼此合作的能力和意识;2总体方案:2.1 用PC机的键盘数字键对应电子琴的8个琴键和2功能键。2.2 8255A和8253配合构成音频发生器。8255A的PB0口控制扬声器的开关,8253控制扬声器的发声频率。2.3 8255A门控信号与8253的频率控制信号经与门后驱动扬声器发出各种音频和音长声音。3 分工协作一个好的团队是完成工作作业最前提的前提,团队之间需要共同协作,而分工也是更好完成作业的前提,这次设计我们小组先经过协商完成功能分析、总体硬件规划、程序总体设计,然后小组成员各自情况进行分工如下:组长王宣魁:实现,编写存储子程序部分和播放子程序部分及程序的调试。搜集资料、硬件8253部分功能的连接、及相关程序初始化,编写总体实验报告。4硬件设计方案 4.1可存储式电子琴硬件课程设计主要是居于8255A芯片和8253芯片的基本功能进行设计的。我们将8255A芯片的A端口作为输出端口,而B端口作为输入端口,两个端口都与键盘相连接:A端口的低四位连在键盘的行线上,B端口的高四位连在键盘的列线上。再将它的输出端口PC0与8253相应门控信号GATE0相连接。这样可以通过控制PC0来控制8253的输出:当PC0为“1”时,GATE0有效,8253能够输出频率方波;当PC0为“0”时,GATE0无效,OUT0无法输出频率方波。而8253的时钟输入引脚CLK0与相应的时钟发生器相连接,8253的0通道的OUT0信号与8255A的PC1通过与门以后与蜂鸣器相连接,从而驱动并控制蜂鸣器发音的发音和终端:当PC1为“1”时蜂鸣器连通,能够发出声音;当PC1为“0”时蜂鸣器被中断,不能发出声音。这样,我们在硬件上实现了通过8255A芯片输入设备的输入信号并通过它传送给8253,让8253进行相应的处理后输出给蜂鸣器的功能。我们要通过对8255A的初始化和编程控制它的相关工作,使其能够实现上面提到的相应功能。然后,我们对8253进行编程,使其初始化,并根据从8255A芯片传递来的信息的种类为8253的运行编写不同的程序段,使其在运行中根据8255A芯片传递来的信息的不同执行不同的程序(输出不同的音频)。 4.2可存储式电子琴硬件课程设计中的各键所对应的音符及频率和N值如下表:键值01H02H03H04H05H06H07H08H音符1234567中止频率5245886606987848809881048N值381734013030286525512273202419084.3可存储式电子琴硬件课程设计的电路图设计如下:图2-1 8255A芯片与键盘的连接PC1PC0CS 8253GATE0OUT0 CSU87接扬 声器频率发生器Y0 Y1 74LS138 8255A地址为300H303H8253 地址为308H30BH图2-2 8255A与8253芯片之间的连接5 软件设计方案5.1对8255A及8253芯片进行初始化。8255A的A,B,C以及控制字端口的地址分别是300H,301H,302H,303H;8255A的初始化控制字为10000010B。8253的0,1,2通道以及控制字端口的地址分别为308H,309H,30AH,30BH;8253的初始化控制字为00110111B。5.2从8255A芯片的端口中确认是键盘中的哪一个键被按下,并进行编码。从8255A的B端口中读入键盘的状态,进行一系列的比较。确认是哪一个键按下了,接着再通过着不同的键被按下进行执行不同的程序段。将不同的键所对应的频率的N值送入8253的0通道。这样,就产生了不同频率的方波。在送入扬声器后就能发出不同音频和音长的声音。6 流程图开始初始化8255A和8253检测键盘是否有键按下,对键进行编码,并跳转PLAY子程序执行PLAY子程序结束 图4-1总体流程图开始 保存所按下的键8255A中输出8253的0通道的门控允许信号并记时8253的OUT0中输出键值所对应的音符的频率键盘是否仍按着? 是 否8255A中输出8253门控禁止信号,保存时间结束返回图4-2 PLAY子程序流程开始所有键都松开有键按下消除抖动,确认按下,编码跳转ENCODE按键松开?Y 图4-3键盘检测流程图YDO键?LEI键?NYNYMI键?NFA键?YNSO键?YLA键?NYNXI键?YNZONZI键Y跳转PLAY子程序N跳转回放回放键?N Y跳转文件播放N文件播放?Y返回继续检测键盘状态 图4-4 编码流程图 7 程序源代码,-,数据段定义,-DATA SEGMENT KEY_TABLE DW 7634,6802,6061,5764,5102,4545,4049,3759 ,定义各音符所对应的N值表 KEY_NUM DB 100 DUP(?) ,键盘存储数组的定义 KEY_TIME DB 100 DUP(?) , TWOTIGERS_FRE DW 2 DUP(3817,3401,3030,3817,0) , 音乐文件的定义 DW 2 DUP(3030,2865,2551,0) DW 2 DUP(2551,2273,2551,2865,3030,3817,0) DW 2 DUP(3344, 5102,3817,0) TWOTIGERS_TIME DW 10 DUP(100),200,100,100,200 DW 2 DUP(50,50,50,100,100) DW 2 DUP(100,100,200) KEY_LONG EQU $-KEY_NUM FILE_LONG EQU $-TWOTIGERS_FRE DATA ENDS,-,代码段定义,- CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,303H MOV AL,10000010B ,8255初始化 ,控制字为10000010B OUT DX,AL MOV DX,30BH MOV AL,00110111B ,8253初始化,控制字为00110111B OUT DX,AL MOV DX,300H MOV AL,00H ,初始化8255的A端口 OUT DX,AL MOV DX,301H WAIT_OPEN: IN AL,DX ,检测键盘是否松开,若无则循环检测 AND AL,0FH CMP AL,0FH ,检测各列是否还有键按下 JNE WAIT_OPEN WAIT_PRES: IN AL,DX ,检测键盘的键是否有键按下,若无这循环检测 AND AL,0FH CMP AL,0FH ,检测列上是否有键按下 ,即是否又不唯一的列 JE WAIT_PRES MOV CX,16EAH ,消除抖动 DELAY: LOOP DELAY MOV DI,OFFSET KEY_NUM MOV SI,OFFSET KEY_TIME IN AL,DX AND AL,0FH CMP AL,0FH ,确认有键按下 JE WAIT_PRES MOV AL,0FEH MOV CL,AL NEXT_ROW: MOV DX,300H ,检查是哪一行的键按下 OUT DX,AL MOV DX,301H IN AL,DX AND AL,0FH CMP AL,0FH ,检测是否是这一行的键按下 JNE ENCODE,-,编码确认是哪一个键按下,- ENCODE: CMP AL,11101110B JZ DO CMP AL,11101101B JZ LEI CMP AL,11101011B JZ MI CMP AL,11100111B JZ FA CMP AL,11011110B JZ SO CMP AL,11011101B JZ LA CMP AL,11011011B JZ XI CMP AL,11010111B JZ ZONZI CMP AL,10111110B JZ BACK_PLAY CMP AL,10111101B JZ FILE_PLAY,-,确认哪一键被按下后,跳转这一个键所对应的键的功能程序段实现其功能,- DO: MOV BX,7634 CALL PLAY ,调用PLAY 子程序 JMP WAIT_PRES LEI: MOV BX,6802 CALL PLAY JMP WAIT_PRES MI: MOV BX,6061 CALL PLAY JMP WAIT_PRES FA: MOV BX,5764 CALL PLAY JMP WAIT_PRES SO: MOV BX,5102 CALL PLAY JMP WAIT_PRES LA: MOV BX,4545 CALL PLAY JMP WAIT_PRES XI: MOV BX,4049 CALL PLAY JMP WAIT_PRES ZONZI: MOV BX,3759 CALL PLAY JMP WAIT_PRES BACK_PLAY: MOV CX,KEY_LONG ,回放键所对应的程序段 ,实现回放功能 MOV DI,OFFSET KEY_NUM MOV SI,OFFSET KEY_TIME MOV BX,0 NEXT: MOV AX,KEY_TABLEBX ,按顺序调出在输入时被按下的键 MOV DX,308H OUT DX,AL MOV AL,AH OUT DX,AL MOV AL,SI DEC_AL: DEC AL ,发出跟该键被按下的时间一样长的音长 JNZ DEC_AL INC DI INC SI INC BX INC BX LOOP NEXT JMP WAIT_PRES ,转回等待键盘的输入 FILE_PLAY: MOV DI,OFFSET TWOTIGERS_FRE ,音乐文件的播放程序段 MOV BX,OFFSET TWOTIGERS_TIME MOV CX,FILE_LONG NEXT_PLAY: MOV DX,308H MOV AL,DI OUT DX,AL INC DI MOV AL,DI ,调出音乐文件中的各个音符所对应的 N 值 OUT DX,AL MOV DL,BX INC BX MOV DH,BX DX_DEC: DEC DX ,各个音符所对应的音长控制 JNZ DX_DEC INC DI INC BX LOOP NEXT_PLAY JMP WAIT_PRES ,转回等待键盘的输入,-,PLAY 子程序的定义,- PLAY PROC MOV DI,AL ,将当前被按下的键进行保存 INC DI MOV AH,AL OR AL,03H ,形成8253门控信号 MOV DX,302H ,输出门控信号 OUT DX,AL MOV DX,308H MOV AL,BL ,在8253中输出各音符的频率 OUT DX,AL MOV AL,BH OUT DX,AL MOV DX,301H MOV BL,00H ,初始化计时器 TEST_OPEN: INC BL ,给按键进行计时并检测键盘是否松开 IN AL,DX AND AL,0FH CMP AL,0FH JNZ TEST_OPEN MOV SI,BL ,存储计时器中的时间 INC SI MOV AL,AH AND AL,11111000B ,输出门控信号使8253停止输出 MOV DX,302H OUT DX,AL RET PLAY ENDP CODE ENDS END START,-,代码段定义结束,-8 分析与测试可存储式电子琴的关键在于存储和播放两个模块,这次的课程设计过程我们经过精心的准备与设计,通过资料的查询和自己思维的创造,所完成的作品能够达到课程设计的要求,但是由于设备条件的限制,我们只设计了10个按钮键实现乐音的演奏与播放,从8个开关按钮来输入控制演奏过程,设计过程中程序能够无错运行,唯一遗憾的就是器材所限,没有扬声器来实现最后的演奏过程,只能用LED灯来模拟演示.9 实验体会XXXX在此次项目开发中,我担任组长,同时也负责软件主要部分的编程。由于在平时我都有认真学习,上课时都有认真听讲,因此,我在接到这一个课题后,觉得非常简单,因此,马上就进行硬件和软件的设计,设计出来后满以为能马上完成设计,但是令我很失落的是在调试程序时,程序出现非常多的奇奇怪怪的错误。后来找了好久才找出来,改正后,才知道很多错误都是因为自己对汇编语言的一些语法只是一些模糊的概念导致的。当等到所有的错误都改正后,我又有些困惑了。在调试系统时,小灯泡根本不会像我想象的那样发亮。我调试了很久,后来经过我跟组员的探讨和问老师,问同学后才解决。才把试验完成。心里挺高兴的。下面我谈谈我的体会:在一些工作或生活中,当我们遇到问题时不要感到恐惧也不要轻视,否则,小小的问题都有可能让你陷入僵局中。在遇到这些问题时,我们要充分利用我们身边的可利用的资源。比如说:请求他人的帮助;在处理问题时,我们要努力的拉动团队的积极性,培养和促进团队的合作精神。因为队伍的力量非常大。一些问题只能通过团队来来解决。并且当今社会团队精神越来越重要了。XXX在做这次大作业之前,我对计算机地了解只限于计算机系统地各个主要组件,比如主板,内存,硬盘,光驱等,是在微机原理课上我才开始真正接触计算机的基本工作方式,知道了几种最简单但是也很常用的几种接口芯片,让我深切地感受到计算机地奇妙,尤其是我们这次地题目:可存储式电子琴,让我知道了竟然不用音箱竟然也可以听歌,编写一个简单的程序竟然还可以弹奏!于是我就开始积极准备这个大作业。但在准备的过程中,我深感自己所学有限,很有一种书到用时方恨少的感觉,于是就一有空就钻进图书馆查资料,在完成过程中,我们还充分地利用了网络,通过它获取了不少知识,解决
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交通运输控烟领导小组成员及职责
- 换药室感染控制关键措施探讨
- 茶艺师初级培训教学大纲及计划
- 八年级语文下册期末复习方案计划
- 农业物联网在2025年精准种植中的产业链上下游协同发展分析报告
- 市政工程施工管理的重点难点及保证措施
- 2025年师德师风与心理健康心得体会
- 数字货币在金融市场风险管理中的作用与实证分析报告
- 2025年新能源汽车在城市公共交通中新能源电池回收利用技术研究与发展报告
- 2025版彩钢瓦屋顶绿化设计与施工承包合同
- 2025安全生产月安全生产隐患查找培训课件
- 《信息技术与小学数学教学融合的创新实践》
- 行政事业单位差旅费培训
- 2025-2030中国新能源汽车行业发展分析及发展趋势预测与投资风险研究报告
- 安全生产双重预防机制
- 爬架工程监理细则
- (2025)辅警招聘考试题题库及答案
- 企业财务报表分析与管理策略
- 初中生自主学习计划制定
- 2025年高考数学核心考点归纳第25讲、函数的零点问题特训(学生版+解析)
- 宅基地行政执法培训课件
评论
0/150
提交评论