微机原理课程设计.doc_第1页
微机原理课程设计.doc_第2页
微机原理课程设计.doc_第3页
微机原理课程设计.doc_第4页
微机原理课程设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

17课 题: 电子音乐播放器 专 业: 电子信息工程班 级: 一班学 号: 20100167 20100174 姓 名: 李祥祥 刘文轩指导教师: 蔡学敬设计日期: 2012.12.172012.12.21成 绩:重庆大学城市科技学院电气学院目 录一设计目的及作用2二、设计要求2三、设计的具体实现23.1系统概述23.2单元电路设计与分析3四.接口电路原理图5四.设计总框图9五、程序流程图及接线图9(1流程图9 (2) 接线图11(3实物接线图11六、汇编程序代码12七、总结141.设计结果152.设计总结153.设计存在的问题和不足154.心得体会15八、附录16电子音乐播放器设计报告一设计目的及作用 1.学习使扬声器发声原理及发出不同音长和音调声音的编程方法2.学习用8254定时/计数器使扬声器发声的编程方法3.学习8255的各种工作方式及8255初始化应用4.掌握程序与硬件一一对应及线路的连接5.充分认识理论知识对应用的指导性作用,进一步加强理论知识与应用相结合的实践。6.通过这次设计实践能够进一步加深对本科专业知识和理论知识学习的认识和理解吸收, 使自己的设计水平和对所学知识的应用能力以及分析问题解决问题的能力得到全面提高二、设计要求用8254作为音阶频率发生器,先对三段音乐进行编码然后存入相应的音符表,并建立好音阶表,每段音符是自己熟悉的,也不要太过于短但也不能太过于长。并且使用8255作为控制开关的并行输入接口,输出开关选择不同音乐的信号。每次程序运行时,随意播下哪个键,不管音乐播放到什么位置,则马上就执行播放所对应的一段音符,当没有播下开关时,程序将会自动检测是否到曲末,然后自动播放下一首音符。(1) 用8254控制定时/计数器控制扬声器的发声 (2)用8255端口实现输入控制信息 (3)通过设置的开关来实现随意选择音乐 三、设计的具体实现3.1系统概述电子音乐播放器属于接口电路的连接使用此次设计是以8254芯片为核心的发生系统。8086cpu在形成系统总线后,通过和8254及8255的连接使用可以很好的驱动扬声器的发音。系统初始化后,8255通过A通道,从控制开关读取所需要的控制字,并送入8086cpu中进行判断,选择不同的播放音乐。使8254的通过0号计数器工作在“频率发生器”方式3,向发生器发出不同频率的方波。当给定不同的计数初值是可以使扬声器发出不同的音乐。3.2单元电路设计与分析本设计的音频的原理: (1)一个音符对应一个频率,将对应一个音符频率的方波通到扬声器上,就可以发出这个音 符的声音;将一段乐曲的音符对应的频率的方波依次送到扬声器,就可以演奏这段乐曲;利用8254的方式3“方波发生器”将相应的一种频率的计数初值写入计数器,就可以产生频率的方波。(2)计数初值的计算如下: 计数初值=输入时钟/ 输出频率 例如输入时钟采用1MHZ,要得到800HZ的频频率 计数初值即为1000000/800 。(3)分频:输出频率为250HZ的脉冲(方式3) NNFCLK(输入) FOUT(输出) N = FCLK(输入) / FOUT(输出) 若 FCLK = 1000Hz,则 FOUT = 250Hz, N = 4(4) 音长:对于每一个音符的演奏时间,都可以通过软件延时处理。首先确定好单位延时 时间用的子程序DALLYA,然后确定每个音符演奏需要延时几个单位时间。 单位延时子程序: DALLY PROC D0:MOV CX,0010H D1:MOV AX,0F00H D2:DEC AX JNZ D2 LOOP D1 RET DALLY ENDP 表1音名与频率对照表音名频率音名频率音名频率音名频率C265A3220F#5740D#72489C#269A#3233G5784E72637D273B3247G#5831F72794D#278C4262A5880F#72960E282C#4277A#5932G73136F287D4294B5988G#773322F#293D#4311C61047A73520G298E4330C#61109A#73729G#2104F4349D61175B73951A2110F#4370D#61245C84186A#2116G4392E61319C#84435B2123G#4415F61397D84699C3131A4440F#61480D#84978C#3139A#4466G61568E85247D3147B4496G#61661F85587D#3156中央C5523A61760F#85919E3165C#5554A#61865G86271F3175D5587B61976G#86645F#3185D#5622C72093A87040G3196E5659C#72217A#87459G#3208F5698D72349B87902 表2 音名频率对照表(4) 扬声器原理图 图. 电子发声单元四.接口电路原理图 8254的基本知识 8254占用4个端口,3个定时器各占1个,控制端口占1 个。8254的内部结构 如图所 示,它主要包括以下几个主要部分: 图 8254的内部结构 1.数据总线缓冲器实现8254与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8254的控制信息、数据信息以及CPU从8254读取的状态信息,包括某时刻的实时计数值。 2.读/写控制逻辑控制8254的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。 控制字寄存器在8254的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写 入,不能读出。 3.计数通道0#、1#、2#:这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含一个16位的计数寄存器,用以存放计数初始值,一个16位的减法计数器和一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取,读取完毕之后,输出锁存器又跟随减1计数器变化。 8254外部引脚8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:(1)D7D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。(2):来自于CPU的读控制信号输入引脚,低电平有效。(3):来自于CPU的写控制信号输入引脚,低电平有效。(4):芯片选择信号输入引脚,低电平有效。 图 8254的引脚 (5). 8254端口地址 图 8254端口地址 8254功能 8254 A既可作定时器又可作计数器: 计数:计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK 脉冲 对计数值进行减1 计数,每来一个脉冲减1,当计数值减至0时,由OUT 端输出 一个标志信号。 定时:计数器装入初值后,当GATE为高电平时,由CLK 脉冲触发开始自动计数, 当计数到零时,发计数结束定时信号。除上述典型应用外,8254A还可作频率发生 器、分频器、实时钟、单脉冲发生器等 系统的设计 1.控制字 8255利用端口A从音乐播放选择端口读入8位数据进行判断,同时8254选择通道0,方式3,二进制,先读低位/后高位读数。 则输入的控制字为:MOV DX, 0646H MOV AL,10010000B OUT DX,AL MOV DX,MY8254_MODE MOV AL,36H OUT DX,AL 2.演奏单音符8254芯片(口地址为06c0H06c6H)的0号计数器工作在方式3作为频率发生器发出方波。每一个音符对应一个频率,将与一个频率对应的计数初值写入0号计数器,扬声器就可以发出相应的音调。由于本实验采用的时钟是8086CPU时钟,其频率可选为1MHZ。故计数初值的计算公式如下: 计数初值=1M/输出频率1MHZ转换为16进制数为0F4240H,因此在打开扬声器的情况下执行以下子程序即可发出与输 出频率对应的音调。 MOV DX,0FH MOV AX,4240H DIV WORD PTR SI MOV DX,MY8254_COUNT0 OUT DX,AL MOV AL,AH OUT DX,AL 3 .演奏时间控制 通过控制每个音符的演奏时间可以使乐曲更加有节奏感。最直观的方法是按照乐谱为,每一个音符规定一个演奏时间,但是利用这种方法调试程序特别困难。特别是在遇到一首不熟 悉的歌曲时,初期很难确定每个音符的演唱时间,而调试程序的时候费时费力,效果很差。我们可以利用另外一种方法,即为每个音符规定一个“单位时间”。单位时间N=音符的演唱时间其中,N为调试参数,一首歌曲只有一个调试参数,它为常数。由于每个音符的节奏(即演唱时间)不同,所以各个音符的“单位时间”都不一样。每个音符演奏的 “单位时间”的确定:我们知道,音符的节奏分为一拍、半拍、1/4拍、1/8拍等等。如果在一首歌中,所有音符中演奏时间最短的为1/8拍,我们就规定1/8拍音符的 “单位时间”为1,1/4拍音符的“单位时间”为2,半拍音符的“单位时间”为4,一拍音符的“单位时间” 为8。调试参数N的确定:显然,如果能测出一段乐谱的总的时间t,用T(i)来表示第i个 音符的“单位时间”,那么: N=4. 频率表和时间表 设计程序时,数据段设这两张 “表”,一张是频率表,将与音符对应的频率值依次写入表中,另一张是时间表,依次存放每个音符的单位时间。当然频率表项和时间表项要一一对应,不能错位,频率表的最后一个表项为0,1,2,作为重复演唱或者跳转演唱的标志。在接通扬声器的情况下,依次取出频率表中的频率值,转换成计数初值写入0号计数器,依次取出时间表中的单位时间和调试参数N相乘,然后再调用延时子程序即可得到延时时间也就是音符的演奏时间。 四.设计总框图系统总线 五、程序流程图及接线图 (1). 流程图 开始初始化8254工作方式 初始化8255工作方式 装入频率表和时间表起始地址 读A口开关状态Y歌曲1地址A口=0?N Y歌曲2地址A口=1?YN歌曲3地址A口=2?N N否是原状态不等于现状态原状态等于现状态是否到曲末? 两个指针递增原开关状态与现状态比较取出演奏相对时间值调用延时子程序取出频率值计算出计数初值 并装入计数器1 (2).接线图 (3)实物接线图 六、汇编程序代码IOY0 EQU 06c0HMY8254_COUNT0 EQU IOY0+00H 计数器0端口地址MY8254_COUNT1 EQU IOY0+02H 计数器1端口地址MY8254_COUNT2 EQU IOY0+04H 计数器2端口地址MY8254_MODE EQU IOY0+06H 控制寄存器端口地址DATA SEGMENTFREQ_FIRST DW 523,523,784,784,880,880,784,698,698 频率表 DW 659,659,587,587,523,784,784,698,698 DW 659,659,587,784,784,698,698,659,659 DW 587,523,523,784,784,880,880,784,698 DW 698,659,659,587,587,523,0TIME_FIRST DB 4,4,4,4,4,4,8,4,4 时间表 DB 4,4,4,4,8,4,4,4,4 DB 4,4,8,4,4,4,4,4,4 DB 4,4,4,4,4,4,4,4,4 DB 4,4,4,4,4,4FREQ_MID DW 523,440,659,523,440,659 DW 659,659,523,440 DW 523,440,659,523,587,659,880,523,659,587,0TIME_MID DB 4,4,2,2,4,3 DB 1,2,2,4 DB 4,4,2,2,4,3,1,2,2,4FREQ_LIST DW 659,784,523,587,659,392 DW 523,587,659,784,587 DW 659,784,523,587,659,440 DW 587,392,587,659,523 DW 880,784,880,523 DW 659,440,659,784,587 DW 659,784,523,587,659,440 DW 587,392,587,659,523,0 TIME_LIST DB 2,2,4,2,2,4 DB 2,2,2,2,8 DB 2,2,4,2,2,4 DB 2,2,2,2,8 DB 4,4,4,4 DB 2,2,2,2,8 DB 2,2,4,2,2,4 DB 2,2,2,2,8 DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,MY8254_MODE 8254初始化工作方式 MOV AL,36H 定时器0, 方式3 OUT DX,AL MOV AL,10010000B 8255初始化 MOV DX,0646H OUT DX,AL PLAY: MOV DX,0640H A端口为输入端口 IN AL,DX MOV BL,AL CMP AL,0 判断执行哪一首歌曲? JE TT0 CMP AL,1 JE TT1 CMP AL,2 JE TT2 TT0: LEA SI, FREQ_FIRST 歌曲1的频率表首地址 LEA DI, TIME_FIRST 时间表的表首地址 JMP PL TT1: LEA SI, FREQ_MID 歌曲2的频率表首地址 LEA DI, TIME_MID 时间表的表首地址 JMP PL TT2: LEA SI, FREQ_LIST 歌曲3的频率表首地址 LEA DI, TIME_LIST 时间表的表首地址 JMP PL PL: MOV DX,0FH 输入频率为1MHZ,1M=0F4240H MOV AX,4240H DIV WORD PTR SI 取出频率计数初值,0F4240H/输出频率 MOV DX,MY8254_COUNT0 OUT DX,AL 装入计数初值 MOV AL,AH OUT DX,AL MOV DL,DI 取出演奏相对时间,调用延时子程序 CALL DALLY MOV DX,0640H 再次检测端口状态 IN AL,DX CMP AL,BL JNZ PLAY ADD SI,2 INC DI CMP WORD PTR SI,0 判断是否到曲末? JE PLAY JMP PL CMP WORD PTR SI,0 JE PLAY JMP PL CMP WORD PTR SI,0 JE PLAY JMP PL DALLY PROC 延时子程序 D0: MOV CX,0010H D1: MOV AX,0F00H D2: DEC AX JNZ D2 LOOP D1 DEC DL JNZ D0 RET DALLY ENDP CODE ENDS END START七、总结 1.设计结果 通过设计电子音乐播放器设计的要求,利用开关的闭合和断开状态设计出了歌曲的下一首和上一首的转换以及当没有按键时三首歌曲的循环播放。2. 设计总结 通过对电子音乐播放器的设计,从电路到汇编代码,再到对程序的调试,在整个的设计过程中学到了很多,例如,对8254发生原理的理解,其工作原理就是对输入相同的脉冲,通过计数器的控制作用,输出需要的不同频率的波。同时用到了8255的并行接口,将二进制的控制信息传入8086CPU中处理,选择是否对音乐播放进行调整。在使用8255和8254接口的时候,都要对其进行初始化,这初始化程序的编写,有助于对这些接口芯片的工作原理的理解。同时在调试过程中对不同音阶进行调试,加深了对发声原理的理解与掌握。总之,在实验中自己动手,把理论知识用于实践,从中能够领会很多。 3.设计存在的问题和不足 由于是初次设计这个微机课程设计,在设计中由于考虑不全或知识面的狭窄,导致了在 实验设计中出现一些不足和错误,主要有以下几点:1.实验箱里面的线路连接和接线接头不是很熟悉,在实验连线中偶尔出现错误。2.关于实验中的芯片的使用方法,存在问题,不能准确的合理使用芯片功能。3.写程序代码时,由于知识面的狭窄,会对一些步骤的编写出现错误,不过查资

温馨提示

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

最新文档

评论

0/150

提交评论