




免费预览已结束,剩余6页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告( 20132014 年度第 一 学期)课 程: 微机原理及应用 题 目: 电子琴及电子播放器院 系: 自动化系 班 级: 自动化1103 学 号: 201111010122 201109010113 201102020331 学生姓名: 詹文超 靳朝阳 张晓 指导教师: 张妍 设计周数: 一周 成 绩: 日期:2014年 1 月 10 日微机原理及应用课程设计报告一、 目的与要求1 通过对微机系统分析和具体设计,使学生加深对所学课程的理解。2 掌握汇编语言程序设计的基本方法和典型接口电路的基本设计方法。3 培养学生分析问题、解决问题的能力。4 培养学生对微型计算机应用系统的基本设计能力。5 提高学生的实践动手能力和创新能力。二、 主要内容1. 电子琴及电子播放器2. 系统介绍 本设计不仅可以实现小键盘电子琴演奏,还可以通过拨码开关播放不同的电子音乐,主要有小星星,两只老虎和欢乐颂。硬件设计用到8253和8255芯片,8253工作在方式3,产生一定的频率方波,同时对应着不同音调;8255为可编程接口芯片,用于整个系统的开关控制功能。3. 系统实现的功能 系统主要实现三个功能: 1、自动演奏3首歌曲; 2、利用小键盘手动演奏; 3、歌曲之间的相互切换。4.所用芯片的工作原理 (1)8253原理 8253有3个独立的计数通道,每个通道结构相同,例若clk0给定频率,向控制字寄存器写入控制字,并向计数器0写入计数初值,采用不同的方式即可产生不同的频率。8253的内部结构(1)数据总线缓冲器实现8253与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8253的控制信息、数据信息以及CPU从8253读取的状态信息,包括某时刻的实时计数值。(2)读/写控制逻辑控制8253的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。(3)控制字寄存器在8253的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。(4)计数通道0#、1#、2#:这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含一个16位的计数寄存器,用以存放计数初始值,一个16位的减法计数器和一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取,读取完毕之后,输出锁存器又跟随减1计数器变化。(5)8253外部引脚8253芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8253芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:1D7D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。2:来自于CPU的读控制信号输入引脚,低电平有效。3:来自于CPU的写控制信号输入引脚,低电平有效。4:芯片选择信号输入引脚,低电平有效。 (6). 8253端口地址(2)8255原理8255有3种工作方式:方式0,方式1,方式3,本次设计用方式0。在这种方式下,任何一个端口可以通过方式控制字规定作为输入口,也可作为输出口; 8255A有两个控制字:方式选择控制字和端口C置位/复位控制字。方式选择控制字的最高位总是1,而端口C置位复位控制字的最高位总是0,用来区分两个控制字。 8255初始化方式如下图5.系统分析(1)系统原理 在了解8253,8255工作原理之后,我们利用2个开关从8255芯片A口输入不同数值,00,01,10,11.利用编程区分4中状态,跳入4个循环,即可演奏3首歌曲和手动电子琴。8253则是事先算好初值,送如计数器。每个频率可产生不同的音。每个音之间停顿相应时间,每个句子之间停顿相应时间,即可演奏完每首歌曲。 每首歌曲和每个句子末尾有数字1,2判断是否停顿或者跳入下一首歌,实现每首歌之间的转换。 小键盘演奏则是利用一些算法得知每个健的值会存入al寄存器中,利用al中的值,判断al大小,设置数据段7个健值,取出响应频率设置循环即可弹奏。(2)系统思路分析 系统从实现一个音开始,到完成一首歌的编曲,之后加入判断语句,进行第二首,第三首歌的编曲即已完成自动播放部分。之后单独进行小键盘分析,取出主要部分,判断出运作原理利用最终al的值进行频率换算。融入前一部分完成的歌曲中,反复调试完成。6. 系统流程图判断键入? 否 是统一取节奏偏移地址01,10,11电子播放器00:电子琴程序 00:电子琴键盘 01:小星星 10:两只老虎 11:欢乐颂判断开关状态8253、8255初始化开始歌曲结束,判断开关8253计数器0赋初值,得频率,发声,延时读入键码并判断17之间? 否是 歌曲结束,判断开关关闭扬声器一次,延时28253计数器0赋初值,得频率,发声,延时1 3 实验总结1. 实验要点和问题分析(1)计数值足够,所以只采用1个计数器,计数初值在程序中计算不便,所以定义数据段,根据clk0的频率和要产生的频率,计算初值,写入数据段;(2)改变开关状态,读入数据相应跳转,3首固定歌曲都跳入同一循环W1进行演唱,简短程序;(3)演唱完一首歌曲才可以进入下首歌曲,所以要在这首歌曲演唱完之前,改变开关状态;(4)每首歌曲句末为1,2是判断是否加停顿和换歌;(4)为防止程序太长,超出跳转地址,每次判断都跳到Wo处,简短程序;(6)小键盘的程序需要看懂如何判别是那个健,最终值存入al中,根据al的值为1-7定义数据段1-7的频率,用si+al*2的值作为地址即可取出相应频率。(7)1-7之外的数据不要等待,1-7的键入后,去掉停顿,按键长按则一直发生,可控制长短调。2.实验心得 本次试验从最开始的尝试到最后全部完成,历经很长时间,做了很多努力,让我们都非常欣慰,在做实验的过程中,不断尝试,优化,大大提高了我们的团队合作能力和专业知识的掌握,关键是学和玩相结合,设计的过程虽然有点辛苦,但都很开心,我认为这点很重要。希望每次的实验都可以从兴趣而发,以乐趣结束,不再为书本而苦恼。相信我们会越做越好。另外感谢老师的耐心指导,给了我们很大的帮助。本次课设圆满成功。四参考文献微机原理及应用 马平 姚万业 王柄谦 中国电力出版社 2003年4月第一版附录程序代码设计DATA SEGMENTTIME_CTR EQU 0A003H ;8253地址TIME_R0 EQU 0A000HTIME_R1 EQU 0A001HOUTBIT equ 09002h ; 位控制口IN_KEY equ 09001h ; 键盘读入口Music dw 0,3816,3401,3030,2865,2551,2273,2024KeyTable: ; 键码定义 db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07hFREQ1 DW 2,3816,3816,2551,2551,2273,2273,2551,2 ;小星星 DW 2865,2865,3030,3030,3401,3401,3816,2 DW 2551,2551,2865,2865,3030,3030,3401,2 DW 2551,2551,2865,2865,3030,3030,3401,2 DW 3816,3816,2551,2551,2273,2273,2551,2 DW 2865,2865,3030,3030,3401,3401,3816,1FREQ2 DW 2,3816,3401,3030,3816,3816,3401,3030,3816,2 ;两只老虎 DW 3030,2865,2551,2,3030,2865,2551,2 DW 2551,2273,2551,2865,3030,3816,2 DW 2551,2273,2551,2865,3030,3816,1FREQ3 DW 2,3030,3030,2865,2551,2551,2865,3030,3401,3816,3816 ;欢乐颂 DW 3401,3030,3030,3401,3401,2 DW 3030,3030,2865,2551,2551,2865,3030,3401,3816,3816 DW 3401,3030,3401,3816,3816,1DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,00110111B ;8253初始化 MOV DX,TIME_CTR OUT DX,AL MOV DX,8003H ;8255初始化 MOV AL,90H OUT DX,AL W0: MOV DX,8000H ;开关判断 IN AL,DX AND AL,03H CMP AL,0 JNA MLoop ;电子琴 CMP AL,01H JNA SONG1 ;歌曲1 CMP AL,02H JNA SONG2 ;歌曲2 JMP SONG3 ;歌曲3 SONG1: LEA SI,FREQ1 JMP W1 SONG2: LEA SI,FREQ2 JMP W1 SONG3: LEA SI,FREQ3 JMP W1W1: MOV AX,SI ;取节奏 MOV DX,TIME_R0 OUT DX,AL MOV AL,AH OUT DX,AL INC SI INC SI CALL DELAY1 MOV AX,2 ;关扬声器一次 MOV DX,TIME_R0 OUT DX,AL MOV AL,AH OUT DX,AL CALL DELAY2 CMP SI, 2 ;判断句停顿 JZ W2 CMP SI,1 ;判断歌曲是否结束 JNZ W1 JMP W0 ;若歌曲结束 重新判断 W2: CALL DELAY2 JMP W1DELAY1 PROC NEAR ;音长 MOV BX,400 LP1:MOV CX,200 LP2:LOOP LP2 DEC BX JNZ LP1 RET DELAY1 ENDPDELAY2 PROC NEAR ;字间隔 MOV BX,100 LP11:MOV CX,200 LP22:LOOP LP22 DEC BX JNZ LP11 RET DELAY2 ENDPMLoop: call TestKey ; 有键入? je MLoop ; 无键入, 继续显示 call GetKey ; 读入键码 cmp al,1 ;判断键盘是否为17 jl MLoop cmp al,7 ja MLoop mov si,offset Music ;取键盘节奏首地址 mov ah,0 mov bx,ax add bx,bx ;dw字 mov ax,bx+si mov dx,0a000h ;8253计数器0初值 out dx,al mov al,ah out dx,al call delay MOV AX,2 ;关扬声器一次 MOV DX,0a000h OUT DX,AL MOV AL,AH OUT DX,AL JMP W0 ;判断开关TestKey proc near mov dx, OUTBIT mov al, 0 out dx, al ; 输出线置为0 mov dx, IN_KEY in al, dx ; 读入键 not al and al, 0fh ; 高四位不用 retTestKey endpGetKey proc near mov ch, 00100000b mov cl, 6KLoop: mov dx, OUTBIT mov al, ch ; 找出键所在列 not al out dx, al shr ch, 1 mov dx, IN_KEY in al, dx not al and al, 0fh jne Goon_ ; 该列有键入 dec cl jnz KLoop mov cl, 0ffh ; 没有键按下, 返回 0ffh jmp Exit1Goon_: dec cl shl cl, 2 ; 键值 = 列 X 4 + 行 mov ch, 4LoopC: test al, 1 jnz Exit1 shr al, 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中职学校工作总结模版
- 冲压工艺与模具设计课件-第三章
- 人群恐惧症的临床护理
- 统编人教版三年级语文下册《口语交际:春游去哪儿玩》教学课件
- 北京高考一二模政治哲学试题总结模版
- 统编人教版三年级语文下册《口语交际:春游去哪儿玩》示范教学课件
- 黑龙江省哈尔滨六十九中学2025届八下数学期末联考试题含解析
- 高中数学选修2-3计数原理概率知识点总结模版
- 吉林省长春市第七十二中学2025年七年级数学第二学期期末综合测试模拟试题含解析
- 设备管理润滑培训
- 寄生虫的预防 小学生
- 公司危化品管理的关键要素与成功因素
- 手术室氩气刀操作规程
- 电线电缆投标文件
- 原始凭证粘贴单(模板)
- 学校安全管理责任分解图
- 畜牧微生物学课件
- 注塑模具成本计算
- 洗煤加工合同
- 民法典合同编解读之违约责任
- 空调采购服务投标方案
评论
0/150
提交评论