键盘钢琴汇编语言程序设计—微机原理课程设计
键盘钢琴汇编语言程序设计

目录1总体方案设计与论证 (2)1.1课程设计程序功能分析 (2)1.2方案设计与论证 (2)2程序流程图设计 (4)2.1主程序流程图 (4)2.2暂停程序流程图 (5)2.3错误程序流程图 (5)3程序段落说明 (7)3.1初始化字符串输出 (7)3.2键盘输入与判断 (10)3.3暂停程序分支 (12)4程序调试说明、结果记录与分析 (14)4.1程序调试说明 (14)4.2程序调试、运行结果与分析 (14)5课程设计收获与心得体会 (16)6参考文献 (17)附录:程序清单 (18)键盘钢琴汇编语言程序设计1总体方案设计与论证1.1课程设计程序功能分析本次课设要求编写程序具体功能如下:(1)自定义钢琴键;(2)单击钢琴键,计算机发出相应音阶,发声时间自定义。
(3)单击“ESC”键退出程序。
通过分析程序功能要求并结合计算机内部8255、8253和扬声器的连接方式可知为实现功能须对8255、8253对应接口赋予相应的值实现扬声器的开关。
除了要求的ESC完成退出程序外,我还设计了单击SPACE完成暂停功能,而这些都可以通过条件转移指令实现。
此外,我还要通过DOS功能调用实现彩色提示字符的输出。
1.2方案设计与论证根据前面分析可知,本程序主要是要实现字符串输出,字符输入及识别,发声,暂停和退出程序的功能。
其中,根据实现字符识别的不同方式有两种设计方案,先阐释如下:方案一:字符串输出使用DOS功能调用,通过对行、列置入不同的字符实现彩色提示字符的闪灭。
字符输入使用单字符输入方式(1号)实现。
为实现字符识别,可通过多个条件转移指令,每次对一个字符进行判断,不是则转移到下一个判断处。
通过对8255、8253对应接口赋予相应的值实现发声功能。
暂停和退出功能也同样使用条件转移指令完成。
由于进行字符识别时需要21个不同的条件转移指令,使得程序变得极为臃长,不是最佳方案。
方案二:字符串的输出,字符输入,发声,暂停和退出功能同方案一相同。
《微机原理》课程设计说明书_键盘电子乐器

《微机原理》课程设计说明书_键盘电子乐器武汉理工大学《微机原理》课程设计说明书课程设计任务书学生姓名: 专业班级: 电气0805班指导教师: 工作单位: 自动化学院题目: 键盘电子乐器初始条件:掌握汇编语言程序设计方法,所设计的程序运行后可通过键盘控制,满足系统功能,并实现该系统设计方案。
在DOS,windows,汇编软件环境下运行。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.设计一个用键盘演奏音乐的程序,计时器系统设计编程定时输出――电子音调,用pc机内部8253time~使扬声器发声。
用汇编语言对8253进行编程,使其OUT0上输出一定的频率,将其一定频率输出到喇叭上,演奏出不同的音节。
pc机的数字键(1,7)作为电子音调的音调选择2. 课程设计说明书应包括:a)设计任务及要求b)方案比较及认证c)程序设计基本思想,程序流程图,部分源程序及注解d)调试记录及结果分析e)参考资料f)附录:全部源程序清单g)总结时间安排:2011年元月07日--元月09日选题、查阅资料和方案设计 2011年元月10日--元月14日编程2011年元月15日--元月16日调试程序,改进与提高2011年元月17日撰写课程设计报告(有调试过程及结果的截屏) 2011年元月18日答辩和交课程设计报告指导教师签名: 2011 年元月 6 日系主任(或责任教师)签名: 年月日1武汉理工大学《微机原理》课程设计说明书摘要利用PC上的定时/计数芯片8253A控制PC扬声器发声。
编写内核模块,直接操作扬声器相关端口,或字符设备驱动,供应用程序调用,用键盘使其发出不同的声音。
关键字:8253 定时器中断2武汉理工大学《微机原理》课程设计说明书目录1. 方案比较 ....................................... 42.芯片介绍 (4)2.1 8255芯片简述 (4)2.1.1 8255三种方式下工作 (4)2.2 8253芯片简述 (5)2.2.1 8253六种工作方式 ........................ 63.通用发声程序 ..................................... 7 4.音调与频率和时间的关系 ........................... 11 附录 (13)附录一: (13)附录二: (14)附录三: (26)附录四: (27)附录五: ...................................... 32 参考文献 (33)3武汉理工大学《微机原理》课程设计说明书键盘电子乐器1.方案比较1.1 发声程序循环优点:简单,易于思维缺点:程序过于长,比较繁琐1.2 调用宏,进行发声优点:程序短缺点:不易想到2.芯片介绍2.1 8255芯片简述8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,+5V单电源供电。
微机课程设计报告计算机钢琴的程序编写

微机课程设计报告计算机钢琴的程序编写微机课程设计题目计算机钢琴的程序编写学院物信学院专业电子信息工程班级电信班姓名学号指导教师一.实验目的1.掌握利用pc机扬声器发出不同频率声音的方法。
2.学习利用系统功能调用从键盘上读取字符的方法。
二.实验内容编写程序,程序运行时使pc机成为一架可弹奏的”钢琴”。
当按下数字1-8时,或者按下小键盘上的1-8时,依次发出1,2,3,4,5,6,7,i八个音调.按下ESC键则退出”钢琴”状态。
三.设计思想1. 分析这个设计课题,应使用到8253和8255芯片。
通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形.当与门打开后,经过放大器的放大作用,便可驱动扬声器发出不同频率的音调.要使音调的声音持续一端时间,只要插入一端延时程序之后,再将扬声器切断(关闭与门).另外,要使计算机成为可弹奏的钢琴,需要使用系统调用的01H功能以接收键入字符,并且要建立一张表,使键入字符与频率构成一个对应关系.键入字符1 2 3 4 5 6 7 8 音符1 2 3 4 5 6 7 8(i) 频率值524 588 660 698 784 880 988 1048四.设计过程一.扬声器的驱动分析该程序主要是驱动电脑主板上的扬声器,根据音阶音调不同的频率值,来是扬声器发出不同的声音,从而产生想弹钢琴一样的感觉,当然音质是不能相提并论的。
在电路上如下图2-1所示:8255(PB1)图2-18253的电路连接图在PC/XT/AT家族中,计时器芯片的3个通道都用其专门的功能,通道2是用来控制计算机的扬声器的声音频率的。
通道2用于产生频率信号,故工作方式在方式3,计数值为6A4H=1190,方波输出频率为1.19MHz/1190=1KHz,此信号决定了扬声器的声调,而通道2的控制字则为0B6H,1.19M约等于十六进制*****CH。
由图1-1可知8253的通道2计数由8255A的PB0控制,当PB0输出为高电平的时候,是门GATE2为高电平。
汇编语言微机课程设计

汇编语言微机课程设计一、课程目标知识目标:1. 掌握汇编语言的基本概念,包括寄存器、指令、地址等;2. 理解并掌握汇编语言编程的基本流程,包括编写、汇编、链接和执行;3. 学习微机硬件基础知识,了解CPU、内存和I/O设备的工作原理;4. 学会使用汇编语言进行简单的程序设计,如顺序结构、分支结构和循环结构。
技能目标:1. 能够熟练使用汇编语言编程环境,进行代码编写、调试和运行;2. 能够运用汇编语言解决实际问题,如编写一个计算器程序;3. 培养学生的逻辑思维能力和编程技能,提高问题解决能力。
情感态度价值观目标:1. 培养学生对计算机硬件和汇编语言的兴趣,激发学习热情;2. 培养学生严谨、细致的学习态度,提高自主学习能力;3. 培养学生的团队合作精神,学会与他人共同解决问题;4. 引导学生认识计算机技术对社会发展的作用,培养社会责任感。
课程性质:本课程为选修课,适用于对计算机硬件和汇编语言感兴趣的学生。
学生特点:学生具备一定的计算机基础知识,具有较强的逻辑思维能力和动手能力。
教学要求:结合学生特点,注重理论与实践相结合,以案例教学为主,培养学生的实际操作能力。
通过课程学习,使学生能够掌握汇编语言编程的基本技能,提高解决问题的能力。
在教学过程中,关注学生的情感态度,激发学习兴趣,培养良好的价值观。
将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 汇编语言基础知识- 寄存器与内存:介绍寄存器、内存地址、数据类型等基本概念;- 指令系统:讲解汇编指令的分类、格式及功能;- 汇编过程:介绍汇编、链接、执行的基本流程。
2. 汇编语言编程技巧- 顺序结构:编写简单的顺序结构程序,如数据传送、算术运算等;- 分支结构:学习条件跳转指令,实现分支结构程序;- 循环结构:掌握循环指令,实现循环结构程序。
3. 微机硬件原理- CPU结构与工作原理:介绍CPU的内部结构,执行指令的过程;- 内存与I/O设备:讲解内存管理、I/O设备与CPU的交互。
汇编语言课程设计钢琴

汇编语言课程设计钢琴一、教学目标本节课的学习目标为:1.知识目标:学生需要掌握汇编语言的基本语法、指令集以及汇编程序的编写和调试方法。
2.技能目标:学生能够使用汇编语言编写简单的程序,并能够使用汇编调试器进行程序调试。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生团队合作的精神。
二、教学内容本节课的教学内容主要为:1.汇编语言的基本语法和指令集。
2.汇编程序的编写和调试方法。
3.汇编语言在实际应用中的优势和劣势。
三、教学方法本节课的教学方法采用:1.讲授法:讲解汇编语言的基本语法和指令集。
2.案例分析法:通过分析具体的汇编程序案例,让学生掌握汇编程序的编写和调试方法。
3.实验法:让学生动手编写和调试汇编程序,提高学生的实践能力。
四、教学资源本节课的教学资源包括:1.教材:《汇编语言程序设计》。
2.多媒体资料:相关的PPT和视频教程。
3.实验设备:计算机和汇编调试器。
4.参考书:提供相关的参考书籍,供学生自主学习。
五、教学评估1.平时表现:通过学生在课堂上的发言、提问和参与度等方面,评估学生的学习态度和参与程度。
2.作业:布置相关的编程作业,评估学生的编程能力和对知识的掌握程度。
3.考试:进行期中和期末考试,全面评估学生的学习成果和理解程度。
六、教学安排本节课的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生能够系统地学习汇编语言。
2.教学时间:每周安排两节课,每节课45分钟。
3.教学地点:计算机实验室,方便学生进行编程实践。
七、差异化教学针对不同学生的学习风格、兴趣和能力水平,进行差异化教学:1.对于学习风格偏向实践的学生,提供更多的编程实践机会,如编程比赛和小组合作项目。
2.对于学习风格偏向理论的学生,提供更多的理论知识讲解和案例分析。
3.对于不同兴趣的学生,结合他们的兴趣,设计相关的汇编语言编程项目,如音乐合成、游戏开发等。
4.对于不同能力水平的学生,提供不同难度的教学内容和作业,确保每个学生都能得到适合自己的学习挑战。
电脑钢琴系统

电脑钢琴系统《汇编语言程序设计》一、课题内容和要求题目描述:利用汇编语言设计一个模拟钢琴演奏程序。
在显示器上显示出钢琴的键盘,以计算机键盘的相应键模拟钢琴键盘进行乐曲的演奏。
在PC机键盘上按键,屏幕上对应的钢琴键出现跳动,并发出相应音符的声音,例如:按数字“1”,发C大调 do 按数字“2”,发C大调 re 按数字“3”,发C大调 me ……按空格(其它)鍵,退出。
基本要求:(1)设计一个基本的只有7键的模拟钢琴键盘;(2)按键时,对应的钢琴键有反映,并发出相应频率的音符声;(3)松键时,对应的钢琴键恢复原状;(4)实物演示时要求讲出程序原理和设计思想;(5)程序运行良好、界面清晰。
提高要求:(1)绘制出三维立体钢琴键,随着按键,对应钢琴键有向下的动作;(2)钢琴声随着琴键按下时间的长短持续发出不同长短的声音;(3)扩展钢琴的音域。
二、需求和思路分析(1)钢琴的绘制。
这部分主要实现画钢琴键盘键身的功能。
它是由一个个白色的长方块构成的,要在屏幕上画出有立体效果的长方形白色键盘,我们需要用BIOS调用编织线使程序。
显示适配器都自带显示服务的BIOS,利用它所提供的BIOS调用来编写程序,对于我们编程应用者来说是透明的,我们只需要调用显示驱动程序INT 10H。
钢琴主要是由矩形、直线等规则几何形状构成,可以采用文本方式,也将屏幕设置成图形显示方式,通过画点、画线等基本程序完成钢琴的绘制。
对于绘制钢琴键盘,为使其有立体感,还需要先在稿纸上画出一个缩小版的钢琴键盘,准确计算其各个边界的坐标,包括为使其有立体感而要画出斜线的方法,都需要事先准确推出运算公式。
钢琴键盘的动态显示则是同步于键盘的按键有按下和弹起的动画。
这部分功能需要也可以用绘制钢琴的方法来实现这个效果。
(2)音符的演奏。
在PC系列机上,8254的三个计数器各有其作用,计数器0用于维护系统时钟;计数器1用于周期性的向DMA发送数据请求信号,供存储器刷新使用;计数器2接到扬声器用来产生声音。
汇编语言电子琴设计(微机原理课程设计)

微机原理课程设计(汇编语言)——电子琴设计一、设计内容编写一实现电子琴的程序,并实现若干扩展功能。
基本功能:用键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;扩展功能:1、在程序中可预设多首曲目,按一键可以进入预设子菜单,对要播放的曲目进行选择,并实现播放该曲目。
2、程序运行时有友好的用户介面。
3. 当弹奏不同音阶时,双色点阵LED显示器显示不同的图案二、元件与仪器1.计时器82532.并行控制器8255A3.实验台三、设计原理、思路及流程图1、设计原理(1)对于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出。
给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。
对于音乐,每个音阶都有确定的频率。
各音阶标称频率值:(2)产生一个正弦波的数据可取32个(小于亦可),不同频率的区别,可通过调节向D/A转换器输出数据的时间间隔,例如:发"1"频率为261。
1HZ,周期为1/261.1=3.83ms,输出数据的时间间隔为3.83ms/32=0.12ms. 定时时间可以由8253配合8255来实现。
按下某键后发音时间的长短可以由发出的正弦波的个数多少来控制。
本程序中设置默认长度为60个正弦波。
(3)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
(4) 点阵LED显示器是将许多LED类似矩阵一样排列在一起组成的显示器件,双色点阵LED是在每一个点阵的位置上有红绿或红黄或红白两种不同颜色的发光二极管。
当微机输出的控制信号使得点阵中有些LED发光,有些不发光,即可显示出特定的信息,包括汉字、图形等。
车站广场由微机控制的点阵LED大屏幕广告宣传牌随处可见。
(5)实验仪上设有一个共阳极8×8点阵的红黄两色LED显示器,其点阵结构如图所示。
微机原理课程设计(汇编语言)——将键盘输入的小写字母转换成大写..

设计6、将键盘输入的小写字母转换成大写字母的设计1.实验要求:为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换。
编写程序,接收键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。
2.参考流程:3.程序清单:DA TA SEGMENTDA TA1 DB 20 DUP(?)DISPP1 DB 'please input letters, end with enter, exit with ctrl-c',0DH,0AH,'$'DISPP2 DB 'the inverted litter is:', 0DH, 0AH,'$'DISPP3 DB 0DH,0AH,'$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV SI,00HMOV BX,OFFSET DA TA1LEA DX,DISPP1MOV AH,9INT 21HL1: MOV AH,1INT 21HCMP AL,03HJZ L4CMP AL,0DHJZ L3CMP AL,61HJZ L2SUB AL,20HJMP L2L2: MOV [BX+SI],ALINC SIJMP L1L3: LEA DX,DISPP3MOV AH,9INT 21HLEA DX,DISPP2MOV AH,9INT 21HMOV [BX+SI],ALMOV AL,0AHMOV [BX+SI+1],ALMOV AL,'$'MOV [BX+SI+2],ALMOV DX,BXMOV AH,9INT 21HLEA DX,DISPP3MOV AH,9INT 21HJMP L4L4: MOV AH,4CHINT 21HCODE ENDSEND START4.运行结果显示:文- 汉语汉字编辑词条文,wen,从玄从爻。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计题目键盘钢琴汇编语言程序设计学院自动化学院专业自动化专业班级xxxxxxxx姓名xxxxxx指导教师xxxxxx2012 年01 月12 日课程设计任务书学生姓名: xxxx 专业班级: xxxxxxx指导教师: xxxx 工作单位: xxxxxx题目: 键盘钢琴汇编语言程序设计初始条件:➢ 采用16 位微处理器 8086 CPU 以及86 系列微型计算机的指令系统;➢ 软件设计平台为多功能微型计算机实验软件MFS 中的微机原理实验集成环境MF2KP,仿真设计平台为Proteus 软件。
要求完成的主要任务:➢ 设计汇编语言程序,实现键盘钢琴功能,具体功能要求如下:(1)在键盘上自定义若干键对应钢琴键;(2)单击钢琴键,计算机发出相应音阶,发声时间自定义;(3)单击”ESC”键退出程序。
音阶与频率的对应关系如下表所示:➢ 撰写课程设计说明书。
课程设计说明书的撰写格式如下:(1)设计说明书包括封面、任务书(指导老师提供)、正文、参考文献(3~5 篇)、附录(程序清单,要求有注释)、成绩评定表(指导老师提供)。
(2)说明书正文包含总体方案论证(功能分析、系统连接图设计或算法说明);程序流程图设计及其说明、软件设计关键问题说明;程序调试说明、结果记录及分析;课程设计收获及心得体会。
(3)同一选题若为合作完成,设计说明书中需注明本人承担的设计部分。
系主任(或责任教师)签名:年月日目录引言 (1)1 设计意义及要求 (2)1.1设计意义 (2)1.2设计要求 (2)2 总体方案论证 (3)2.1按键与音调频率值的对应 (3)2.2扬声器的驱动分析 (5)2.3发声时间 (6)3 程序设计 (7)3.1主程序设计及其流程图 (7)3.2子程序设计及其流程图 (8)3.2.1 计算频率值的子程序FIFRE (8)3.2.2 发声子程序SOUND (9)3.2.3 延时子程序DELAY (10)4 结果分析 (11)4.1程序调试与改进 (11)4.2结果记录及分析 (12)心得与体会 (13)参考文献 (14)附录程序代码 (15)引言汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。
高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。
在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。
而此次的《微机原理与接口技术(基于16位机)》的课程设计正是利用这个学期所学的汇编语言来设计一个键盘钢琴的应用程序,要求该汇编语言程序能实现键盘钢琴的功能,就是在键盘上按下自定义的按键之后,可以从主板的蜂鸣器上发出一定频率的音调,而这些音调的频率都是相应音阶的特征频率,故发出的声正好就是音乐的各个音阶声调。
通过这个应用程序,按照音乐的谱子连续地按下相应按键,就可以像钢琴那样发出音乐来,但是局限于扬声器的原因,所发出的音乐没有真正的钢琴那样美妙。
但是现在的一些键盘钢琴的软件已经能驱动声卡,来获得更好更逼真的钢琴音乐效果了。
1 设计意义及要求1.1 设计意义键盘钢琴,电脑键盘代替钢琴键演奏钢琴乐曲。
最原始、也是最流行的版本,音符以ABCDEGF为编排。
让不懂音乐的网友可以快速上手,其体积小,简单方便、易传播,因此在网上普及率最高。
键盘钢琴让人可以在闲暇时刻,可以小小地娱乐一下,增加生活的乐趣。
由于一架钢琴过于昂贵,对于一般的普通工薪阶层的人来说,还是很难接触到钢琴的,而键盘钢琴的出现正好让那些业余爱好者,既满足的对钢琴音乐艺术的追求,也更廉价和便捷。
对于初学音乐的人来说,这样的键盘钢琴软件更是训练的好助手,可以帮助你迅速熟悉各音阶音调和旋律节奏。
因此,这样的软件也很多版本,有专业版,也有简单的Flash版,当然也有此次课设要求设计的简陋版。
专业版能提供多种乐器音色、录放功能、音符显示。
不太好的地方是键盘要按下去才发音,没有延时,弹起来不太就手。
Flash版音色也比较好,提供了多键位,也可以自定义键位。
1.2 设计要求设计汇编语言程序,实现键盘钢琴功能,具体要完成的设计任务如下:(1)在键盘上自定义若干键对应着钢琴键;(2)单击钢琴键,计算机发出相应的音阶,发声时间自定义;(3)单击“ESC”键退出程序音阶与频率的对应关系如下所示:2 总体方案论证2.1按键与音调频率值的对应设计此汇编语言程序,要实现键盘钢琴,首先是按键的自定义设计,因为题中要求设计的按键音调音阶有十四个,但是从网上查资料得知,各音阶与其相应频率有如表1-1所示的关系。
从表中可知:高低音之间有着大约两倍的关系,这样就很方便数据的储存了,只需要将其中一个音度的频率值存储下了,再进行二倍关系的换算即可得到倍低音、低音、中音、高音、倍高音五种音度的音调频率值。
因为题目中主要是对低、中、高音的要求,在这里就以低音为基准存储数据值和换算其他音调频率值,由表1-1中得知低音音符1 2 3 4 5 6 7.......的音调频率分别为131、147、165、175、196、220、247。
其中,中音各音调的频率是相应低音音调频率的两倍,高音各音调频率是低音的四倍的。
又因为低音的频率值最大为247,正好小于一个无符字节数值的最大值255,因此,只需要在程序的数据区内安排七个字节来存放频率数据,即:FREQ DB 131,147,165,175,196,220,247这样,不仅节省了存储空间,而且降低了存储数据的复杂程度。
考虑到字母键盘一共也只用26个,就不对所有音调都进行字母键盘的按键定义了,只补齐题目中所缺的高音和低音,共21个音阶。
则可以按如下表1-2中的对应关系,设置21个按键分别对应着低、中、高三种音度的各音调的频率值。
由于字母所对应的ASCII 码并不是连续的,因此在这里就将其的ASCII码存储到数据区,然后根据变址寻址的方式表1-2 音阶频率与自定义按键的对应表对字母按键的ASCII码进行地址编码,可以将字母的ASCII码的按表1-2的顺序存放,即:KEYS DB 'QWERTYU' , 'ASDFGHJ' , 'ZXCVBNM'这样看来,就是将这些ASCII码值分出三类,分别为低音类、中音类、高音类。
根据输入KEY的ASCII码值利用一个21次的LOOP循环就可以找到对应的偏移地址,再将所得的偏移地址减去首地址的偏移地址得到该KEY的地址相对值,再把该相对值与6和13大小判断偏移地址的所属类别(小于等于6为低音类,大于6小于等于13为中音类,大于13为高音类)。
知道KEY的所属类别,就知道基准频率值应该乘以多大的倍数才是该KEY的真正的频率值,低音类倍数为1,中音类倍数为2,高音类倍数为4。
接下来还要确定是哪个基准频率值,由于已经知道所属类别,如果是低音类则就是地址相对值,如果是中音类,则地址相对值要减去7,显然高音类则减去14,就得到了一个0至6的编码,再由换码指令XLAT对频率数据FREQ进行换码,可以很快得到该KEY的对应的基准频率值。
最后是将得到的基准频率值乘以得到的类别倍数,就得到最后想要的输入KEY的音调频率值。
举例如下:输入按键KEY的ASCII码值为“D”,其ASCII码是44H,在一个21次的LOOP循环下,可以得到数据位44H的偏移地址DI,在将该偏移地址DI-首地址的偏移地址KEYS=偏移地址的相对值9。
因为6<9<13属于中音类,基准频率值的倍数为2。
因为属于中音类KEY“D”编码为9-7=2,在换码可以知道,“D”对应的基准频率值为165,故最后得到“D”的频率值为165*2=330Hz。
因此,用此算法得到各个按键的频率值是可行的。
不仅节省了存储空间,而且降低了存储数据的复杂程度,在程序编写上可以将这一段写成子程序,更加使得程序简洁明了。
2.2 扬声器的驱动分析该程序主要是驱动电脑主板上的扬声器,根据音阶音调不同的频率值,来是扬声器发出不同的声音,从而产生想弹钢琴一样的感觉,当然音质是不能相提并论的。
(在这里需要说明的是,现在大多数笔记本主板上已没有这个扬声器,但是台式机大多还是有的,在台式机上的效果更好点。
)在电路上如下图2-1所示:8255(PB1)图2-1 8253的电路连接图在PC/XT/AT家族中,计时器芯片的3个通道都用其专门的功能,通道2是用来控制计算机的扬声器的声音频率的。
通道2用于产生频率信号,故工作方式在方式3,计数值为6A4H=1190,方波输出频率为1.19MHz/1190=1KHz,此信号决定了扬声器的声调,而通道2的控制字则为0B6H,1.19M约等于十六进制12348CH。
由图1-1可知8253的通道2计数由8255A的PB0控制,当PB0输出为高电平的时候,是门GATE2为高电平。
此时,8253的通道2允许计数,故通道2的输出方波受PB0控制,从而控制扬声器的音调高低。
通道2的输出能否对扬声器产生持续控制还取决于8255A的PB1。
当PB1为“0”时,OUT2不能通过“与门”;反之则可通过“与门”控制扬声器。
所以,扬声器发音时间的长短取决于8255A的PB1信号。
另外,CPU通过8255A的C口,得知5283通道2的状态和扬声器驱动器的状态。
由上可知,需要扬声器正常发声,需要8253和8255A的协同工作,而8253的控制字在网上查的为43H,则同过下面的程序来初始化8253MOV AL,0B6HOUT 43H,AL而通道2的端口地址为42H,由于N值一般计算得出都大于255,故需要一个字的写入,而又因为8253只有八位数据线,故字的写入需要两次,一般将N值直接给AX然后通过下面的程序即可完成。
OUT 42H,ALMOV AL,AHOUT 42H,AL而8255A能控制8253和扬声器,但是只要PB0和PB1同时为高调平,扬声器就为开,则对8255A的控制就是在对扬声器的控制,在网上得知8255A的B口地址为61H,则可以通过下面的程序实现扬声器的开与关。
IN AL,61HOR AL,3 ;可以保证PB0和PB1同时为高调平OUT 61H,AL ;打开扬声器MOV AL,AHAND AL,0FCH ;可以保证PB0和PB1同时为低调平OUT 61H,AL ;关闭扬声器2.3 发声时间因为只要通过8255A将扬声器打开而不关闭,那么只要8253正常工作,扬声器就会一直发声,需要发声时间多长,只需要写一个延时子程序即可,利用LOOP和跳转指令就可以得到一个双循环程序,在根据指令时间依次乘以LOOP循环的次和跳转指令的跳转次数就可以得到想要的延时时间。