微机课程设计电子琴报告.docx
《微机课程设计电子琴报告.docx》由会员分享,可在线阅读,更多相关《微机课程设计电子琴报告.docx(28页珍藏版)》请在冰豆网上搜索。
微机课程设计电子琴报告
武汉理工大学华夏学院
课程设计(报告)
题目名称简易电子琴设计
课程名称微型计算机原理与接口技术
学生姓名张志刚
学号***********
系、专业信息工程系测控1071
指导教师李波
2010年1月28日
课程设计任务
学生姓名:
张志刚专业班级:
测控技术与仪器1071班
指导教师:
李波工作单位:
武汉理工大学华夏学院
题目:
简易电子琴的设计
初始条件:
1.运用所学的微机原理和接口技术知识;
2.微机原理和接口技术实验室的实验箱设备。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
使用汇编语言设计一个能够用键盘运行的电子琴,(实现一个以上功能):
1.弹奏:
用户每按一个键盘琴键就弹奏相应的音符;
2.演奏:
按下键盘上某一个指定的建后自动弹奏预存琴谱功能;
3.变调:
按下键盘上某一指定键后,再弹奏和演奏时琴键相应的音符频率变高;按下另一指定键后,再弹奏和演奏时琴键相应的音符频率变低;
4.严格按照课程设计说明书要求撰写课程设计说明书。
时间安排:
序号
阶段内容
所需时间(天)
1
设计思路、原理电路设计
1
2
编程,调试
3
3
撰写课程设计报告
1
合计
5
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
随着电子技术的发展,电子琴很为常见,硬件的设计很费人力与物力,因此软件的应用得到了很好的应用,这个简易电子琴设计采用了软硬件结合的方法完成了任务要求。
应用了8255和8253的芯片,利用CPU,8086达到软硬件结合,从而实现电子琴的弹奏和演奏两种方式的应用。
可以随心所欲控制电子琴是弹奏还是自动演奏。
此电子琴程序实现了:
1.弹奏:
用户每按一个键盘琴键就弹奏相应的音符;
2.演奏:
按下键盘上某一个指定的建后自动弹奏预存琴谱功能。
k0为控制键:
高电平时自动演奏。
打到低电平时停止演奏。
低电平时可弹奏,K1,K2,K3,K4,K5,K6,K7分别为1,2,3,4,5,6,7
………………………………………………………………………………………………
前言
第一章电子琴的设计要求和使用器件
1.1初始条件
1.2电子琴要完成的主要任务
1.3电子琴课设的使用器件
1.4设计方案的确定
第二章电子琴的硬件设计
2.1电子琴的硬件框图
2.28255芯片的资料
2.38253芯片的资料
第三章电子琴的软件设计
3.1程序流程图
3.2发音程序
3.3延时程序
3.4停止发音程序
3.5整体的软件汇编程序
第四章电子琴的调试和设计体会
4.1硬件调试
4.2软件调试
4.3设计体会
第五章附录
5.1参考文献
5.2乐谱
5.3成绩评定表
前言
随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的
作用。
多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。
本课程设计是基于微机原理与接口技术的简单应用。
微机技术目前运用最广泛的就是单片机。
单片机是随着大规模集成电路的出现极其发展,将计算机的CPU,RAM,ROM,定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机(singlechipmicrocomputer).它拥有优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.主要应用于智能仪器仪表、工业检测控制、机电一体化等方面,并且取得了显著的成果.单片机应用系统可以分为:
(1)最小应用系统是指能维持单片机运行的最简单配置的系统。
这种系统成本低廉,结构简单,常构成一些简单的控制系统,如开关状态的输入/输出控制等。
片内有ROM/EPROM的单片机,其最小应用系统即为配有晶振,复位电路,电源的单个单片机.片内无ROM/EPROM的单片机,其最小应用系统除了外部配置晶振,复位电路,电源外,还应外接EPROM或EEPROM作为程序存储器用.
(2)最小功耗应用系统是指为了保证正常运行,系统的功耗最小.(3)典型应用系统是指单片机要完成工业测控功能所必须的硬件结构系统。
第一章电子琴的设计要求和使用器件
1.1初始条件
1.运用所学的微机原理和接口技术知识;
2.微机原理和接口技术实验室的实验箱设备;
1.2电子琴要完成的主要任务
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
使用汇编语言设计一个能够用键盘运行的电子琴,(实现一个以上功能):
1.弹奏:
用户每按一个键盘琴键就弹奏相应的音符;
2.演奏:
按下键盘上某一个指定的建后自动弹奏预存琴谱功能;
3.变调:
按下键盘上某一指定键后,再弹奏和演奏时琴键相应的音符频率变高;按下另一指定键后,再弹奏和演奏时琴键相应的音符频率变低;
4.严格按照课程设计说明书要求撰写课程设计说明书。
1.3电子琴课设的使用器件
1.唐都实验箱TDN86/88
uln2803a,d8255ac-2,d8253ac-2,spk
2.电脑一台
3.wmd86软件
1.4设计方案的确定
1.用试验箱上的晶振输出一个高频的信号,接入8253,用软件给8253和8255进行初始化,8255接开关,由开关取数值,后判断发音的频率,并送此分频数给8253,从8253输出相应的音频后,接一个非门,再接入硬件扬声器,扬声器接受到不同频率的波后发出不同的声音。
2.用比较语句cmp和跳转指令来实现开关键和音调的一一对应。
3.用一个按键来控制是自动演奏还是手动弹奏。
为高电平时是自动演奏;
为低电平时是手动弹奏。
4.其中用一个延时程序,使得发一个音有一定的延时时间。
从而能使得可以被听见。
5.有个停止程序,使得晶振不能使得扬声器发生(在没有按键的情况下)。
6.用开关控制自动播放的开始和停止。
第二章电子琴的硬件设计
2.1电子琴的硬件框图和硬件连接图
图1硬件框图
图2电路连接图
8255与开关相连,从开关上获取开关的开启和关闭的信息(即开关的地址),从8255的B口输入,然后根据8086的程序,将不同的分频数与开关的每一个一一对应,通过程序从8086给8253赋个初值(即不同的分频数),晶振给8253一个固定的频率,在不同的分频数下得到不同的频率,将频率通过8253的2计数器送给一个非门,(加非门的原因:
因为8253的out2原始状态时一个高点平,若直接与扬声器相连,一经连接扬声器就会发音,接个非门后使得它的初始状态为低电平,就能消除困扰。
)非门出来接扬声器。
不同的频率使得扬声器发出不同音色的声音。
2.28255芯片的资料
1.8255的内部结构:
图三8255内部结构图
2.8255的管脚图:
图四8255管脚图
3.8255的方式选择控制字
(1)方式选择控制字把A、B、C三个端口分为A、B两组来设定工作方式。
A组包括端口A和端口C的上半部,B组包括端口B和端口C的下半部。
(2)端口A可工作于3种方式中的任何一种:
端口B只能工作于方式0和方式1;而端口C除用作输入、输出口(方式0)外,通常用来配合端口A和端口B提供联络控制信号和状态信号。
(3)归在同一组的两个端口可分别作为输入端口或输出端口,不要求同为输入或输出。
图五8255方式控制字
4.8255端口C按位置位/复位控制字
(1)端口C按位置位/复位控制字尽管是对端口C进行操作的,但此控制字必须写入控制口,而不写入端口C。
(2)一个控制字只能完成端口C中某一位置的置1或置0,要对多位置1或置0,必须使用多个控制字。
图六C端口的方式控制字
5.采用的方式控制字
使用8255的B口作为数据输入端,与开关相连接(即D1:
1);
使用工作方式0(即D6D5:
00)。
综上:
8255的方式控制字为:
10000010(即82H)
2.38253芯片的资料
1.8253的方式控制字
8253有一个8位的控制字寄存器,其格式如下:
若计数器2,11读写,工作方式3bcd数
图七8253的方式控制字
其中:
D0:
数制选择控制。
为1时,表明采用BCD码进行定时/计数;否则,采用二进制进行定时/计数。
D3-D1:
工作方式选择控制。
000,0;001,1;X10,2;X11,3;100,4;101,5;
D5D4:
读写格式。
00,计数锁存命令;01,读/写高8位命令;10,读/写低8位命令;
11,先读/写低8位,再读写高8位命令。
D7D6:
通道选择控制。
000通道;01,1通道;10,2通道;11,非法
2.要选用的两种工作方式
¤方式3—方波速率发生器
方式3的波形如图八所示,这种方式下的输出与工作方式方式2都是周期性的,不同的是周期不同,CPU写入控制字后,输出OUT变高,写入计数值后开始计数,不同的是减2计数,当计数到一半计数值时,输出变低,重新装入计数值进行减2计数,当计数到0时,输出变高,装入计数值进行减2计数,循环不止。
在方式3下,8253有下列使用特点:
①通道可以连续工作;
②关于计数值的奇偶,若为偶数,则输出标准方波,高低电平各为N/2个;若为奇数,则在装入计数值后的下一个CLK使其装入,然后减1计数,(N+1)/2,OUT改变状态,再减至0,OUT又改变状态,重新装入计数值循环此过程,因此,在这种情况下,输出有(N+1)/2个CLK个高电平,(N-1)/2个CLK个低电平;
③GATE信号能使计数过程重新开始,当GATE=0时,停止计数,当GATE变高后,计数器重新装入初值开始计数,尤其是当GATE=0时,若OUT此时为低,则立即变高,其它动作同上;
在计数期间改变计数值不影响现行的计数过程,一般情况下,新的计数值是在现行半周结束后才装入计数器。
但若中间遇到有GATE脉冲,则在此脉冲后即装入新值开始计数。
计数值为偶数
计数值为奇数
图八8253的工作方式3
¤方式5—硬件触发的选通信号发生器
方式5的波形如图九所示,在这种方式下,当控制字写入后,OUT立刻变高,写入计数值后并不立即开始计数,而是由GATE的上升沿触发启动计数的,当计数到0时,输出变低,经过一个CLK之后,输出恢复为高,计数停止,若再有GATE脉冲来,则重新装入计数值开始计数,上述过程重复。
方式5下,8253有下列使用特点:
①在这种方式下,若设置的计数值是N,则在GATE脉冲后,经过(N+1)个CLK才一个负脉冲;
②若在计数过程中又来一个GATE脉冲,则重新装入初值开始计数,输出不变,即计数值多次有效;
③若在计数过程中修改计数值,则该计数值在下一个GATE脉冲后装入开始按此值计数。
图九8253的工作方式5
3.8253的工作方式小结
(1)方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲,但方式2连续工作,方式4由软件触发启动,方式5由硬件触发启动。
(2)方式5与方式1工作过程相同,但输出波形不同,方式1输出的是宽度为N个CLK脉冲的低电平有效的脉冲(计数过程中输出为低),而方式5输出的为宽度为一个CLK脉冲的负脉冲(计数过程中输出为高)。
(3)输出端OUT的初始状态,方式0在写入方式字后输出为低,其余方式,写入控制字后,输出均变未能高。
(4)任一种方式,均是在写入计数初值之后,才能开始计数,方式0、2、3、4都是在写入计数初值之后,开始计数的,而方式1和方式5需要外部触发启动,才开始计数。
(5)6种工作方式中,只有方式2和方式3是连续计数,其它方式都是一次计数,要继续工作需要重新启动,方式0、4由软件启动,方式1、5由硬件启动。
(6)门控信号的作用;通过门控信号GATE,可以干预8253某一通道的计数过程,在不同的工作方式下,门控信号起作用的方式也不一样,其中0、2、3、4是电平起作用,1、2、3、5是上升沿起作用,方式2、3对电平上升沿都可以起作用。
(7)在计数过程中改变计数值,它们的作用有所不同。
(8)计数到0后计数器的状态,方式0、1、4、5继续倒计数,变为FF、FE……,而方式2、3,则自动装入计数初值继续计数。
4.采用的方式控制字
(1)先给8253初始化,使用计数器2(即D7D6:
10);
先读/写低八位,再读/写高八位(即D5D4:
11);
使用工作方式3(即D3D2D1:
011)
使用二进制(即D0:
0)
综上:
8253的初始化的方式控制字为:
10110110(即0B6H)
(2)改变8253的控制方式字使得发音停止
使用计数器2(即D7D6:
10);
先读/写低八位,再读/写高八位(即D5D4:
11);
使用工作方式5(即D3D2D1:
101)
使用二进制(即D0:
0)
综上:
8253方式控制字改变为:
10111010(即0BAH)
第三章电子琴的软件设计
3.1程序流程图
图十程序流程图
3.2发音程序
FY123PROC
A7:
MOVAL,0B6H
OUT43H,AL
MOVAL,[BX]
MOVAH,00H
MOVDL,25H
MULDL
OUT42H,AL
MOVAL,AH
OUT42H,AL
RET
FY123ENDP
3.3延时程序
DELAYPROC
PUSHCX
PUSHAX
MOVCX,0040H
A5:
MOVAX,056CH
A6:
DECAX
JNZA6
LOOPA5
POPAX
POPCX
MOVAL,0BAH
MOVDX,43H
OUTDX,AL
RET
DELAYENDP
3.4停止发音程序
MOVAL,0BAH
MOVDX,43H
OUTDX,AL
3.5整体的软件汇编程序
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
TABLE1DB4DH,45H,3DH,39H,33H,2DH,28H,00H;1,2,3,4,5,6,7的频率
TABLE2DB45H,45H,3DH,3DH,3DH,3DH,3DH,3DH
DB45H,45H,3DH,33H,33H,3DH,3DH,45H
DB45H,45H,3DH,3DH,3DH,3DH,3DH,3DH
DB45H,45H,3DH,2DH,2DH,33H,33H,3DH,45H,4DH,4DH,4DH,4DH
DB2DH,4DH,4DH,45H,45H,45H,45H,5DH,4DH,4DH,45H,45H,45H,45H
DB5DH,4DH,4DH,45H,3DH,3DH,45H,45H,45H,45H
DB45H,45H,3DH,3DH,3DH,3DH,3DH,3DH
DB45H,45H,3DH,33H,33H,3DH,3DH,45H
DB45H,45H,3DH,3DH,3DH,3DH,3DH,3DH
DB2DH,45H,45H,3DH,2DH,2DH,33H,33H,33H,3DH,45H,4DH,4DH,4DH,4DH
DB2DH,4DH,4DH,45H,45H,45H,45H
DB5DH,4DH,4DH,4DH,45H,45H,45H,45H,45H,45H
DB4DH,4DH,45H,3DH,3DH,45H,45H,45H,4DH,4DH,4DH
DB5DH,4DH,5DH,4DH,4DH,4DH,5DH,4DH,4DH,4DH,45H,4DH,4DH,5DH,5DH,5DH,5DH
DB5DH,4DH,5DH,4DH,4DH,4DH,5DH,4DH,4DH,4DH,45H,3DH,4DH,4DH,4DH,4DH
DB3DH,3DH,3DH,3DH,3DH,3DH,2DH,2DH,33H,33H,3DH,3DH,3DH,45H,45H,45H,45H,45H,45H
DB6EH,6EH,45H,45H,3DH,3DH,3DH,3DH
DB45H,3DH,3DH,3DH,33H,2DH,2DH,33H,33H,33H,33H
DB4DH,4DH,45H,45H,3DH,3DH,2DH,2DH,33H,33H,3DH,33H,33H,33H,33H,33H
DB33H,2DH,26H,26H,26H,26H,2DH,2DH,33H,3DH,3DH,3DH,33H,3DH,3DH
DB4DH,5DH,5DH,3DH,45H,45H,45H,45H,45H
DB4DH,4DH,4DH,5DH,5DH,4DH,4DH,45H,45H,45H,4DH,4DH,4DH,4DH,4DH,4DH,00H;发如雪
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
PUSHAX
MOVAL,82H;8255初始化10000010B口为输入
OUT63H,AL
POPAX
KZ:
INAL,61H;K0为1,自动放音
CMPAL,01H
JZF0
CMPAL,02H;1,2,3,4,5,6,7的发音判断
JZF1
CMPAL,04H
JZF2
CMPAL,08H
JZF3
CMPAL,10H
JZF4
CMPAL,20H
JZD5
CMPAL,40H
JZD6
CMPAL,80H
JZD7
JMPKZ
D5:
JMPF5
D6:
JMPF6
D7:
JMPF7
F0:
MOVBX,OFFSETTABLE2;自动播放曲子table2
MOVAL,[BX]
MOVAH,00H
A1:
MOVDL,25H
MULDL
INAL,61H;判断k0是否为1,为1继续自动播放,否则停止
CMPAL,01H
JNZA3
PUSHAX
MOVAL,0B6H;8253初始化
OUT43H,AL
POPAX
OUT42H,AL;发音
MOVAL,AH
OUT42H,AL
INCBX
MOVAH,00H
MOVAL,[BX]
TESTAL,0FFH;唱完一遍自动停止
JZA4;唱完
MOVCX,77FFH
A2:
PUSHAX;延时
POPAX
LOOPA2
JMPA1
A3:
MOVAL,0BAH;改变8253的控制字,工作在方式5,使不发声
MOVDX,43H
OUTDX,AL
JMPKZ
A4:
PUSHAX;延时
POPAX
LOOPA4
JMPA3
F1:
MOVBX,OFFSETTABLE1;发音1
CALLFY123
CALLDELAY
JMPKZ
F2:
MOVBX,OFFSETTABLE1;发音2
INCBX
CALLFY123
CALLDELAY
JMPKZ
F3:
MOVBX,OFFSETTABLE1;发音3
ADDBX,2
CALLFY123
CALLDELAY
JMPKZ
F4:
MOVBX,OFFSETTABLE1;发音4
ADDBX,3
CALLFY123
CALLDELAY
JMPKZ
F5:
MOVBX,OFFSETTABLE1;发音5
ADDBX,4
CALLFY123
CALLDELAY
JMPKZ
F6:
MOVBX,OFFSETTABLE1;发音6
ADDBX,5
CALLFY123
CALLDELAY
JMPKZ
F7:
MOVBX,OFFSETTABLE1;发音7
ADDBX,6
CALLFY123
CALLDELAY
JMPKZ
FY123PROC;发音子程序
A7:
MOVAL,0B6H;8253初始化10110110,计数器2,先低后高,方式3,二进制
OUT43H,AL
MOVAL,[BX]
MOVAH,00H
MOVDL,25H
MULDL
OUT42H,AL
MOVAL,AH
OUT42H,AL
RET
FY123ENDP
DELAYPROC;延时子程序
PUSHCX
PUSHAX
MOVCX,0040H
A5:
MOVAX,056CH
A6:
DECAX
JNZA6
LOOPA5
POPAX
POPCX
MOVAL,0BAH;改变8253的控制字10111010,工作于方式5
MOVDX,43H
OUTDX,AL
RET
DELAYENDP
CODEENDS
ENDSTART
第四章电子琴的调试和设计体会
4.1硬件调试
1.开始时直接将8253的输出端out2与扬声器相连,连接好硬件后打开电源,发现喇叭一直不停的叫。
分析原因:
发现是由于8253的输出端(即OUT2)初状态为高电平,所以当输入扬声器时扬声器就即刻发声。
所以将8253的输出端(OUT2)出来接一个非门,再接到扬声器上,使得初始时扬声器为低电平,所以不发声。
4.2软件调试
1.先编写了弹奏程序,发现按按键后,扬声器不会停止发音,会一直以一个特定的(即晶振产生的)频率在发声。
为了使它的所有键在低电平时停止发音,我在发音延时后改变8253的方式控制字,是其工作在方式5下,停止了他的发音。
再次发音时即又一次对8253进行初始化。
2.对于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出。
给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。
对于音乐,每个音阶都有确定的频率。
各音阶标称频率值和8253的计数初值:
音阶
低音5
低音6
低音7
中音1
中音2
中音3
中音4
中音5
中音6
中音7
高音1
频率(HZ)
452
535
607
647
722
817
847
977
1107
1245
1311
计数初值
6EH
5DH
52H
4DH
45H
3D