ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:210.22KB ,
资源ID:4805338      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4805338.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子琴设计.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子琴设计.docx

1、电子琴设计微机原理课程设计报告题 目: 简易电子琴设计 学院(系):武汉理工大学华夏学院信息工程系 年级专业: 电子信息工程1073班 学 号: 10211807306 学生姓名: 张孝勇 指导教师: 甘泉 课程设计任务书学生姓名: 张孝勇 专业班级: 电信1073班 指导教师: 甘泉 工作单位: 华夏学院 题 目: 简易电子琴的设计 初始条件:1 运用所学的微机原理和接口技术知识;2 微机原理和接口技术实验室的实验箱设备。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)使用汇编语言设计一个能够用键盘运行的电子琴,(实现一个以上功能):1.弹奏:用户每按一个键

2、盘琴键就弹奏相应的音符;2.演奏:按下键盘上某一个指定的建后自动弹奏预存琴谱功能;3.变调:按下键盘上某一指定键后,再弹奏和演奏时琴键相应的音符频率变高;按下另一指定键后,再弹奏和演奏时琴键相应的音符频率变低;4.严格按照课程设计说明书要求撰写课程设计说明书。时间安排:序号阶 段 内 容所需时间(天)1设计思路、原理电路设计12编程,调试33撰写课程设计报告1合 计5指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日一、摘要4二、课题设计任务52.1课程设计环境52.2设计任务 5三、方案设计63.1方案的论证与比较 63.2方案确定 63.3主要芯片功能介绍 63.5硬件电路设

3、计9四、软件设计104.1 主程序流程图 104.2 发声程序设计 114.3 按键程序设计 124.4 声调定义 13五、系统电路的安装与调试145.1 硬件调试 145.2 软件调试 145.3 调试过程 14六、设计体会与小结15七、参考文献16八、附录178.1完整电路图178.2完整程序17一、摘要本文主要介绍了现代微机原理与接口技术的应用-简易电子琴系统的设计与实现过程的设计。电子琴是我们日常生活接触的比较多的电子器件,因此掌握他的基本原理对于我们专业技术的学习有很好的提升作用。系统采用8086微处理器作为处理器和可编程的8255A芯片为主设计简易电子琴。设计重点在于产生特定频率的

4、脉冲从而驱动蜂鸣器发出相应的声音。本次设计主要使用8255作为普通IO端口产生相应频率脉冲,通过实验计算得计算机系统的程序执行时间长度,编写一定时长的延时函数。便可在特定时长内改变8255某个输出口的电平状态,从而获得相应频率值的脉冲信号。将并行接口芯片8255的B端口连接上按键,编写按键查询函数设定相应按键功能,当查询到按键时便可执行相应的发声程序,即弹奏相应音符,或发出特定的乐曲。并在发声的过程中穿插查询按键函数,当查询到相应的按键后改变声调数据,实现音调的改变。从而实现电子琴的设计。 二、课题设计任务与要求2.1课程设计环境:1.运用所学的微机原理和接口技术知识;2.微机原理和接口技术实

5、验室的实验箱设备。唐都实验箱TDN 86/88wmd86软件2.2设计任务: 使用汇编语言设计一个能够用键盘运行的电子琴,(实现一个以上功能):1.弹奏:用户每按一个键盘琴键就弹奏相应的音符;2.演奏:按下键盘上某一个指定的建后自动弹奏预存琴谱功能;3.变调:按下键盘上某一指定键后,再弹奏和演奏时琴键相应的音符频率变高;按下另一指定键后,再弹奏和演奏时琴键相应的音符频率变低;三、方案设计3.1方案的论证与比较方案一、利用可编程定时/计数器接口芯片8253和可编程并行接口芯片8255A控制产生我们所需的频率。8253可编程定时/计数器是Inter公司生产的通用外围芯片之一。它有3个独立的十六位计

6、数器,计数频率范围为0-8MHz。它所有的计数方式和操作方式都通过编程控制。系统中,8253的0通道输出线与8259的0中断请求线,作为实时钟中断信号。1通道入口接1.8432MHz的信号源,输出接8251的收发时钟端,供串行通迅使用,这里的1计数器仅当作一个分频器使用。2通道以排针形式引出,开放给用户使用。因此我们可以使用8253的2计数器产生相应的频率脉冲信号,连接到蜂鸣器电路。8255芯片连接按键,编写相应的按键查询程序,当查询到不同按键按下时,进入相应的子程序,控制计数器8253发出不同频率段的脉冲信号输出给蜂鸣器,从而产生相应的音符。方案二、使用可编程并行接口芯片8255A为主体电路

7、获得相应音频信号。通过实验计算得计算机系统的程序执行时间长度,编写一定时长的延时函数。便可在特定时长内改变8255某个输出口的电平状态,从而获得相应频率值的脉冲信号。将并行接口芯片8255的B端口连接上按键,编写按键查询函数设定相应按键功能,当查询到按键时便可执行相应的发声程序,即弹奏相应音符。3.2方案确定方案一需要使用8253和8255两款主体芯片,而方案二只需要一个8255就可以实现所有的电子琴功能,电路连接简单。方案一由于使用计数器8253作为脉冲产生电路,其产生频率稳定,而且编写8253的程序也较为简单。使用8255产生一定频率脉冲,需要我们精确计数软件执行时间,并编写相应的延时程序

8、,从而得到我们所需要的频率脉冲输出。编写程序较为复杂。考虑到我们本次课程设计目的就是让我们熟悉微机原理技术,并以此提高我们的编写汇编语言的能力,故本次设计采用方案二,即利用8255作为主体芯片设计简易电子琴。3.3主要芯片功能介绍本次电子琴系统主要用到的芯片有可编程并行接口芯片8255A和74LS00,以及八个按键。8255可编程外围接口芯片是Intel公司生产的通用并行I/0接口芯片。8255A芯片中包含3个8位端口:A口,B口和C口。这3个端口均可作为CPU与外设通信时的缓冲器或锁存器。一般来说,它们作为缓冲器使用时,就是输入接口;作为锁存器使用时,就是输出接口。8255的内部结构如图7-

9、1所示。2.8255A的编程所谓8255A的编程,就是用户在使用8255A前,可用软件来定义端口的工作方式,选择所需要的功能。掌握8255A编程是正确使用该芯片的前提,为此须先了解8255A的控制命令。(1)8255A的方式控制字这是一个8位的控制字,代表的信息非常丰富,上面提到8255A内部的3个端口位A、B两组,因此方式控制字也就相应地分成两个部分,分别控制A组和B组,其格式如下:,位该控制字的标志。A组由、和组成。其中和为工作方式选择,见表1;位A口的输入、输出选择,见表2;位C口高4位的输入、输出选择,见表3。 B组由、和组成。其中为工作方式选择,见表4;为B口的输入/输出选择,见表5

10、;为C口的低四位的输入/输出选择,见表6。方式控制字未规定C口的工作方式,只定义了C口数据的传输方向,这就表明C口要么作为联络线使用,要么只工作在方式0。 3. 系统中的8255芯片 8255的数据线片选信号线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用,其线路如图2所示, 本次课程设计实验室中使用的TDN 86-88微机实验箱系统中的8255A芯片各个端口地址如表7所示。表7 系统中8255端口地址信 号 线寄 存 器编 址I0Y3A口60HB口61HC口62H控制寄存器63H3.5硬件电路设计 根据8255A芯片的功能我们设计的简易电子琴

11、系统如图 我们将使用8255A芯片的A口与B口。8255A芯片A端口定义为输出端口,产生我们所需要的音频脉冲输出。由于8255A芯片作为普通I/O口时输出电流有限,故在其输出端连接一个与非门74LS00以增加输出驱动力。将74LS00的两个输入管脚连接在一起作为输入端便构成了一个非门。在试验箱上电但未运行程序的情况下,8255A为未定义的状态。实验得到若将PA0端口连接在蜂鸣器电路输入端,蜂鸣器连续发出声响。说明此时,8255A芯片的初始态被蜂鸣器电路认为为高电平。连接上74LS00,将8255A芯片的高阻态拉低为低电平,蜂鸣器便不再发声。8255A芯片B端口定义为输入端。该端口连接8个按键,

12、按键的一端连接在地上,另一端通过5.1K电阻后连接在+5V电源上,并用插针引出,那么初始状态按键输出为高电平,当按键按下后变为低电平。四、软件设计 4.1 主程序流程图 根据设计要求 4.2 发声程序设计 我们将发声程序定义为一个过程子程序sound proc,其调用格式为:mov si,re ;si寄存器传递不同音调所对应的数据call sound ;调用指令这样当我们需要蜂鸣器发出不同音调音时,只需将不同音调所对应的数据传递给si寄存器后调用sound子程序便能使蜂鸣器发出我们所需的声音。整个发声程序如下所示。sound proc near ;定义声音过程子程序。 mov dx,200h

13、sub dx,si ;将200h减去si寄存器中内容后送人dx寄存器g1:mov bx,si ;si寄存器中内容送人bx寄存器,供voice使用call voice ;调用voice程序, dec dx ;dx寄存器减一,即dx值决定调用voice次数 jnz g1 in al,61h ;查询B端口按键情况。 cmp al,11111110b ;判断K1是否有按键按下。 jnz a1 ;若无,正常执行程序。 jz a2 ;若K1按键按下,停止发声进入主函数 cmp al,11111101b ;判断K2键按下 jnz a1 ;若无,正常执行程序 jz a3 ; a3:add bx,100h ;若

14、K2键按下,bx值加100h,使得声音变调。 jmp a1 a2:call start a1:ret sound endp ;过程结束voice proc near ;定义voice过程程序,使PA0口发出高低脉冲。 mov al,00h out 60h,al ;PA0输出低电平 mov cx,bx ;将bx寄存器中内容传递给cx寄存器 call delay ;调用延时程序,时长由bx寄存器中内容决定 mov al,01h out 60h,al ;PA0输出高电平 mov cx,bx call delay ;调用同样时长延时程序 retvoice endp ;过程结束delay proc ne

15、ar ;定义延时过程程序。 delay1:loop delay1 ret delay endp 4.3 按键程序设计start proc near mov al,82H ;8255A初始化,控制字寄存器为10000010, out 63h,al ;A端口0方式输出,B端口0方式输入,C端口输出 mov al,01h out 60h,alnext: in al,61h ;查询B端口按键状态,进入相应发声程序。 cmp al,11111110b jz next1 cmp al,11111101b jz next2 cmp al,11111011b jz next3 cmp al,11110111b

16、 jz next4 cmp al,11101111b jz next5 cmp al,11011111b jz next6 cmp al,10111111b jz next7 cmp al,01111111b jz next8 jmp next next1:mov si,doo1 ;若K1按键按下,发do音 call fz jmp nextnext2:mov si,re1 ;若K2按键按下,发re音 call fz jmp nextnext3:mov si,mi1 ;若K3按键按下,发mi音 call fz jmp nextnext4:mov si,fa1 ;若K4按键按下,发fa音 call

17、 fz jmp nextnext5:mov si,so1 ;若K5按键按下,发so音 call fz jmp next next6:mov si,la1 ;若K6按键按下,发la音 call fz jmp nextnext7:mov si,xi1 ;若K7按键按下,发xi音 call fz jmp nextnext8:call brithday ;若K8按键按下,播放生日歌 jmp nextstart endp 4.4 声调定义各音阶对应标准频率如表8所示 由于我们产生音频信号的方法是控制8255A芯片的A端口输出高低电平的时间来决定脉冲频率的,每次电平维持的时间由si寄存器的数值决定,通过计

18、算得到当si寄存器中的内容为1时一次电平维持时间为3.8us,即一个周期的高低脉冲时间约为7.8us,频率约为128KHz,那么根据不同音阶的值便可计算得所需要传递的si寄存器的值。计算公式为:doo equ 01e9h ;低音音节1对应的输入数据re equ 01b3hmi equ 0184hfa equ 016ehso equ 0146hla equ 0122hxi equ 0103hdoo1 equ 0ffh ;中音音节对应的输入数据re1 equ 0dahmi1 equ 0c2hfa1 equ 0b7hso1 equ 0a3hla1 equ 090hxi1 equ 081h五、系统电路

19、的安装与调试5.1 硬件调试将写好的程序编译连接下载到实验箱后运行,发现蜂鸣器一开始就叫,检查发现实验箱上的非门开始输出为高电平,接到蜂鸣器就会使蜂鸣器发音。改用单独的74LS04非门接到蜂鸣器就可解决这一问题。5.2 软件调试1)8255A芯片初始化,A口输出,工作方式0;B口输入,工作方式0;由于硬件电路A端口PA0是经过一个非门后接到蜂鸣器,所以设置PA0输出一高电平到非门,使蜂鸣器开始时不会响。2)按键按下后开始连续发声,由于我们的程序设计的是使程序一直处于查询按键状态,所以到我们检测到按键松开后需要编写一段延时函数,那么在一瞬间的按键过程中蜂鸣器可以发出一定时长的声音。采用循环函数来

20、延时,延时时间的长短由循环次数来控制。3)跳转,转移指令跳出的范围太大,编译出现错误。使用过程,也就是子程序设计,直接把一个要频繁要用到的函数打包成一个子过程,然后用CALL调用子过程就可以了,这样就可以避免使用过多的跳转和转移指令。5.3 调试过程硬件调试,软件调试多次后可以实现不同的开关按下发出不同音,当按下某一确定的开关后演奏预存曲目,当按下另一指定的开关后演奏停止。实现了电子琴弹奏和演奏的功能。六、设计体会与小结通过整整一个星期的摸索和编程,终于把程序完成了,对于微机原理与接口技术这门课程有了更深的了解,对8086,8253,8255等芯片有了更清楚的认识。在和小组的成员一起讨论问题,

21、分析问题,发现问题,解决问题的过程中发现了自己的很多不足,在编写程序时存在很大的局限性。以后需要多多练习才能真正掌握汇编语言的编写。总的来说我们的编程技术都有所提高。要提高自己的编程能力,你必须亲自去体验、去设计、编辑、编译、调试、运行。每一个程序员都是在失败、尝试、失败、尝试与收获中成长起来的。七、参考文献1】彭虎、周佩玲、傅忠谦.微机原理与接口技术(第二版).电子工业出版社,北京,2008.32】吴秀清、周荷琴.微型计算机原理与接口技术(第二版).中国科学技术大学出版社,2002.3】沈美明,温冬禅.IBM-PC汇编语言程序设计.清华大学出版社.4】钱晓捷、陈涛等.16/32位微机原理、汇

22、编语言及接口技术(第二版). 机械工业出版社.5】周艳萍、邹伟著.汇编语言程序设计教程. 清华大学出版社.八、附录8.1 系统硬件原理图8.2 部分源程序与参考文献doo equ 01e9h ;低音音节1对应的输入数据re equ 01b3hmi equ 0184hfa equ 016ehso equ 0146hla equ 0122hxi equ 0103hdoo1 equ 0ffh ;中音音节对应的输入数据re1 equ 0dahmi1 equ 0c2hfa1 equ 0b7hso1 equ 0a3hla1 equ 090hxi1 equ 081hdata segmentdata ends

23、STACK SEGMENT STACK ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACKstart proc near mov al,82H ;8255A初始化,控制字寄存器为10000010, out 63h,al ;A端口0方式输出,B端口0方式输入,C端口输出 mov al,01h out 60h,alnext: in al,61h ;查询B端口按键状态,进入相应发声程序。 cmp al,11111110b jz next1 cmp al,11111101b jz next2 cmp al,11111011b jz next3 cmp al

24、,11110111b jz next4 cmp al,11101111b jz next5 cmp al,11011111b jz next6 cmp al,10111111b jz next7 cmp al,01111111b jz next8 jmp next next1:mov si,doo1 ;若K1按键按下,发do音 call fz jmp nextnext2:mov si,re1 ;若K2按键按下,发re音 call fz jmp nextnext3:mov si,mi1 ;若K3按键按下,发mi音 call fz jmp nextnext4:mov si,fa1 ;若K4按键按下

25、,发fa音 call fz jmp nextnext5:mov si,so1 ;若K5按键按下,发so音 call fz jmp next next6:mov si,la1 ;若K6按键按下,发la音 call fz jmp nextnext7:mov si,xi1 ;若K7按键按下,发xi音 call fz jmp nextnext8:call brithday ;若K8按键按下,播放生日歌 jmp nextstart endpbrithday proc near ;生日歌程序 mov si,so1 call fre mov si,so1 call fre mov si,la1 call f

26、re mov si,so1 call fre mov si,duo1 call fre mov si,xi1 call fre mov si,so1 call fre mov si,so1 call fre mov si,la1 call fre mov si,so1 call fre mov si,re1 call fre mov si,duo1 call fre mov si,so1 call fre mov si,so1 call fre mov si,mi1 call fre mov si,duo1 call fre mov si,xi1 call fre mov si,la1 cal

27、l fre mov si,fa1 call fre mov si,fa1 call fre mov si,mi1 call fre mov si,duo1 call fre mov si,re1 call fre mov si,duo1 call frebrithday endpsound proc near ;定义声音过程子程序。 mov dx,200h sub dx,si ;将200h减去si寄存器中内容后送人dx寄存器g1:mov bx,si ;si寄存器中内容送人bx寄存器,供voice使用call voice ;调用voice程序, dec dx ;dx寄存器减一,即dx值决定调用v

28、oice次数 jnz g1 in al,61h ;查询B端口按键情况。 cmp al,11111110b ;判断K1是否有按键按下。 jnz a1 ;若无,正常执行程序。 jz a2 ;若K1按键按下,停止发声进入主函数 cmp al,11111101b ;判断K2键按下 jnz a1 ;若无,正常执行程序 jz a3 ; a3:add bx,100h ;若K2键按下,bx值加100h,使得声音变调。 jmp a1 a2:call start a1:ret sound endp ;过程结束voice proc near ;定义voice过程程序,使PA0口发出高低脉冲。 mov al,00h out 60h,al ;PA0输出低电平 mov cx,bx ;将bx寄存器中内容传递给cx寄存器 call delay ;调用延时程序,时长由bx寄存器中内容决定 mov al,01h out 60h,al ;PA0输出高电平 mov cx,bx call delay ;调用同样时长延时程序 retvoice endp ;过程结束delay proc near ;定义延

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1