WWW电子琴的设计-修改提交版.doc_第1页
WWW电子琴的设计-修改提交版.doc_第2页
WWW电子琴的设计-修改提交版.doc_第3页
WWW电子琴的设计-修改提交版.doc_第4页
WWW电子琴的设计-修改提交版.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

课程题目:电子琴的设计 姓 名:王绍文 学 号: 201282250231 专业班级:电气1202班 指导老师:贺勇老师 课程时间:2014年11.15-12.03课程设计任务书一、课程设计初始条件:1.用于调试程序的宏基兼容PC机一台;2.安装DOS/WIN98操作系统或运行于DOS/ WIN98兼容方式;3. EDIT 等文本编辑器输入80x86汇编程序,MASM 5.0编译及链接程序。二、要求完成的主要任务: 1.使用汇编语言设计一个运行于计算机的电子琴软件,软件应实现弹奏 功能。弹奏即用户每按一琴键弹奏相应音符。三、时间安排: 1.程序框图设计:3天 2.编程:4天 3.调试:3天 4.编写设计报告:4天四、人员安排: 1.流程图:孟雪巍、王绍文、李灯、柏衡祁、陈泽坤 2.电路图:章宇轩、张思扬、梁振、廖博斌 3.程序设计:孟雪巍、李灯(发音);周燕生、张思扬(关扬声器); 廖博斌、柏衡祁(弹奏)、 4.调试:梁振、王绍文、章宇轩、孟雪巍、周燕生第 0 页 共 12 页长沙理工大学微机原理与接口技术课程设计目 录摘 要3一、设计任务和思路41.设计任务42.设计思路4二、硬件部分工作原理51. 8255工作原理52. 8253工作原理6三、程序流程图7四、各部分功能实现说明71. 发音部分功能实现72.弹奏功能的实现8结 束 语9本科生课程设计成绩评定表10摘 要汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。利用汇编语言能够直接访问与硬件相关的存储器或I/O端口,从而最大限度地发挥硬件的功能。本文主要介绍了利用汇编语言设计一个运行于计算机的电子琴软件,软件能够实现弹奏的功能,当按下弹奏键时,实现弹奏功能,发出音符对应频率的声音。首先介绍了PC机内扬声器的控制电路,接着介绍了相关接口芯片8255和8253的内部结构和工作原理,接着讲述了各部分功能的具体实现方法。关键词:汇编语言,8255,8253,扬声器 电子琴的设计一、设计任务和思路1.设计任务使用汇编语言设计一个运行于计算机的电子琴软件,软件应实现弹奏功能。弹奏即用户按照1-8按键则扬声器发出对应声音的音符。2.设计思路 电子琴的设计实际上就是要设计一个程序,能够通过该程序控制PC机内扬声器的发声规律,按下相应的按键后,扬声器能发出指定频率的声音。PC机内的扬声器是通过并行接口芯片8255和定时芯片8253来控制发音的,其电路连接方式如下图所示。 8255A PB1 PB0 CLK2 8253GATE2 OUT2 &扬声器1.19318MHZ 图1 PC机内扬声器控制电路由图可知,扬声器是由8253通道2产生的方波信号和8255的PB1 相与后驱动发声的,且通道2的门信号由8255的PB0提供,要想让扬声器发声,PB0和PB1必须同时为高电平,因此,可以通过对8255的PB0和PB1的设置来控制扬声器的开通和关断,而其发音频率可以通过对8253通道2的计数初值的设置来控制。所设计程序的任务就是要通过对按键的判断来设置8255的PB0和PB1输出电平的高低,以及8253通道2计数初值的设置。计数初值N=时钟频率/音阶频率.各音阶的频率如下表所示。表1 各音符频率表音符1234567频率262294330349392440494二、硬件部分工作原理1. 8255工作原理8255的内部结构图如图2所示,它有3个数据端口,分为两组,A组由A口和C口高四位组成,B组由B口和C口低四位组成。其方式控制字如图3所示。图2 8255内部结构图图3 8255方式控制字方式控制字的特征位D0D7D6D5D4D3D2D1 1 A组工作方式0 0方式00 1方式11 方式2B组工作方式0方式01方式1A口输入/输出1输入0输出PC7PC4输入/输出1输入0输出B口输入/输出1输入0输出PC3PC0输入/输出1输入0输出 PC机内8255的A口,B口,C口和控制口的端口地址分别为:60H,61H,62H,63H。2. 8253工作原理 8253芯片中有3个计数通道,称为通道0,1,2,它们与外部电路相连的信号线有3根:CLK,GATE,OUT,CLK是脉冲输入端,GATE是门控信号,OUT是输出信号,计数器工作在减1状态。其内部结构图和方式控制字格式如图4,图5所示。其中当计数器工作在方式3时,输出信号为方波信号。内部总线A1GATE0CLK0OUT0GATE1CLK1OUT1GATE2CLK2OUT2D0-D7计数器0计数器2计数器1控制寄存器A0数据总线缓冲器R/W逻辑电路图4 8253内部结构图D7D6D5D4D3D2D1D0计数器选择00 计数器001计数器110 计数器211 不用00 计数器锁存01 读写低8位10 读写高8位11 读写16位工作方式选择000 方式0001 方式110 方式211 方式3100 方式4101 方式5计数方式0 二进制1 BCD计数图5 8253控制字格式PC机内8253的通道0,通道1,通道2,控制口的端口地址分别为:40H,41H,42,43H。因为扬声器是由通道2来控制的,故应选择通道2,工作方式选为方式3,输出的信号则为方波信号。三、程序流程图 软件流程图如下图所示:计算初值查表的相应的频率8253初始化开扬声器延时关扬声器结束读取按键开始图10 发音子程序流程图四、各部分功能实现说明1. 发音部分功能实现由更件的连接形式可知,扬声器的开断是由8255的PB0和PB1以及8253通道2同时控制的,PB0和PB1同时为高电平时,扬声器开,有一个为低电平时,扬声器关断,又知8255 B口地址为61H,8253通道2地址为42H,控制口地址为43H。具体程序编写如下。 8253初始化程序段: mov al,10110110b ;选择8253的通道2,并设置为工作方式3out 43h,al mov ax,bxout 42h,al ;将计数初值的低8位写入计数通道mov al,ahout 42h,al ;将计数初值的高8位写入计数通道开扬声器程序段:in al,61h ;读入B口数据or al,03h ;将PB0 和PB1置1out 61h,al ;将设置好的数据送回B口关扬声器程序段:in al,61h ;读入B口数据 and al,0fch ;将PB0 和PB1置0out 61h,a ;将设置好的数据送回B口2.弹奏功能的实现当按键为数字1-8时,选择弹奏功能,通过对按键的判断,求得其偏移地址,然后通过查表得其相应频率值,再由上述计算计数初值的方法求得计数初值,然后将计数初值送人8253的通道2,最后调用发音子程序即实现弹奏功能。具体程序段如下: sub al,31h ;求偏移量 shl al,1 mov bl,al ;保存偏移量 mov bh,0 mov ax,num1 ;计算计数初值 mov dx,num2 div word ptrtab+bx mov bx,ax ;保存计数初值结 束 不知不觉,微机原理与接口技术课程已经结束了。回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写,期间也听老师讲过,微机原理这门课程是比较偏硬件一点的。正是因为这一点我还是对它比较喜欢的,因为它和我的专业方向“电气工程及其自动化”有很大的联系,在电气工程领域很多场合要应用到微机,本着想就业好的心态,因此对该课程的学习还是有浓厚的兴趣的。下面谈谈这期学习该课程的心得与体会: 刚开始接触这门课程的时候,感觉到它似乎非常的容易,尤其是第一章,它讲到的都是一些计算机的发展历程,听的是津津有味的,知道原来计算机是那么来的啊!这时我有一个感想,当初发明出第一台计算机的人是多么的伟大啊,使人在计算复杂问题上,速度得到了很大的提高,随着时代的发展,计算机的运行速度也越来越快,CPU由原来的M级发展到了G级,是多么令人惊奇的一个进步,到了21世纪,计算机得到了充足的发展,IT行业也成为了一个热门的行业,起初,我认为学习计算机有点吃亏了,但是听老师一说,不论是什么专业,如果你把技术学精了,一样也可以拿到很高的工资,就像这个计算机,专业技能强的话,一般比其它行业拿的工资都要高,同时也就增添了我对它学习的信心。就像我们学的这个微机原理与接口技术课,如果能把它融会贯通的话,对机电工程的学习和深造都会有很大的益处,对将来的就业也会有极大的帮助。 其实我觉得,在学习微机原理这一块,最让我觉得棘手就是这个汇编语言了,在学它的过程中,觉得还是有点吃力,尤其是它的指令很多的,有时候总是把它给记混了,加上又没有实验课,所以在做练习的时候这个问题最突出了,如果是自己写程序的话,总是写不对,到计算机上也运行不了,唯一的解决办法就是看参考书上的程序再模仿编写,但是自己的编程能力上没有得到有效的提高。这也有可能是自己学习方法上的不足吧!在今后的学习中要针对性的改变这种不足。 汇编语言,对于学习机电工程的自动控制和计算机都是很重要的,因为它是和机器语言最接近的了,如果用它来编程序的话,会比用其它高级语言要快得多,我觉得老师说的一句话很有道理,学习计算机的要掌握两门语言:“一门低级的和一门高级的。”而一般情况下,高级的大多数人会!低级的就不一样了,所以说如果把它学好了,以后找工作是不成问题的。在市场上汇编语言程序设计的人才是很缺的。 应该说,在这一学习中,汇编语言程序设计就占了很大的篇幅在讲,可见它的重要性了!在学习的不可末尾,讲到微机的总线及接口,而在这其中,主要是概念占大多数,记的东西还是挺多,怎样实现总线互相的配合,加快计算机的运行速度,总之在有些地方还是用到了汇编的知识,汇编语言始终是学习微机原理的主流! 通过了这一学期对微机原理的学习,真的对它有了一个全新的认识,虽然说,这门课已经结束了,但是我会坚持对它的学习,使自己在汇编语言上有一个长足的提高!力争在掌握一门高能语言基础上掌握一门汇编语言,这就是我这期学习微机原理与接口技术课程的心得体会!本科生课程设计成绩评定表

温馨提示

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

评论

0/150

提交评论