音乐演奏程序设计

合集下载

基于汇编的音乐弹奏程序

基于汇编的音乐弹奏程序
第2 卷 第3 3 期 21年9 0 1 月
武汉工程职业技术学院学报
J ur l W u n i e i tt e o na of ha Eng ne rngI iut ns
VO1 2 . 3 NO. 3
S pe b r 0 1 e tm e 2 1
基 于 汇 编 的音 乐 弹奏 程 序
夏 超 群
( 汉工程 职业技 术 学 院 湖 北 武 汉 :3 0 0 武 40 8 )
摘 要
P C系列 8 5 2 3定时/ 数 器的 2号计数 器被初 始化 后 , 计 可产 生扬 声器发 声的音 调信 号 。文
章分 析 了扬 声 器驱动 电路 的工 作原理 , 通过 程序 控制 能使 扬声 器发 出不 同频 率 的声音 , 而设 计 出 进
由扬 声器 驱动 电路 图可 以看 出 ,2 5或 等效 电 85
路 输 出寄存器 第 0位 , 制 8 5 / 2 4定 时器 门控 控 238 5 信号( GAT 2 的状 态 , E) 即是否允 许 2号 计数 器 开始 工作 ; 出寄存器 第 1位 , 制扬声 器 的与 门电路 是 输 控 否接 通 , 即控制扬 声 器 是否 能 接 收 2号计 数 器 的输
音 。
片 , 以为处 理器 和外设 提供 时 间标 记 , 可 也可 以对外 部 事件进 行计 数 。而计 数和 定时两 个概 念如 果联 系 起 来 , 容 易让人 联想 到频 率 , 很 由频 率 的振动 可 以产 生声音 , 频率 的高 低 , 定声 音音 调 的高低 。在考 虑 决
发 声频 率高 低时 , 如果 还考 虑发声 时 间的长 短 , 将 或
1 2 扬声 器驱 动 系统 .
计算 机上 大多数 数据 的输入 / 出 , 是 由系统 输 都

演奏-人教版四年级音乐上册教案

演奏-人教版四年级音乐上册教案

演奏-人教版四年级音乐上册教案一、教学目标1.了解什么是演奏及其在音乐中的作用;2.学习简单的打击乐器演奏方法;3.能够用打击乐器表现音乐节奏和情感。

二、教学重难点1.重点:学习打击乐器演奏方法;2.难点:掌握动作的协调性,准确表达节奏和情感。

三、教学内容3.1 什么是演奏演奏是指演唱、演奏乐器等一系列表演艺术活动。

在音乐中,演奏是发挥音乐作品的美感和艺术价值的重要手段之一。

3.2 打击乐器演奏方法在活动中,老师应该给学生直接演奏示范,然后让学生模仿,最后逐渐调整细节,熟练掌握技法。

以下是常见的打击乐器演奏方法:1.摩擦法:利用器乐表面材料与打击工具相互摩擦产生声音,如手鼓、铃鼓;2.敲打法:利用打击工具敲打器乐面板产生声音,如木头、皮面的鼓,以及木琴等乐器;3.摇晃法:利用器乐特有的结构来摇晃产生声音,如沙锤、铃铛等。

3.3 用打击乐器表现音乐节奏和情感通过练习打击乐器,孩子们应该能够从中感受到音乐中的节奏和情感。

在演奏时,声音的高低、强弱、速度快慢等方面都可以表达不同的情感,例如悲伤、欢乐、激动等。

四、课堂教学4.1 热身首先进行简单的热身活动,例如做一些伸展运动,放松身体。

4.2 学习打击乐器学生们通过观看老师演奏示范,学习如何使用打击乐器演奏。

老师应该重点指导学生正确的姿势和节奏。

4.3 练习演奏将学生分成小组,让每个小组演奏一个简单的音乐节奏,然后逐渐增加难度。

通过不断练习,让学生们掌握演奏基本技巧。

4.4 展示演奏成果让学生们根据老师的要求,选择适当的演奏方式,将音乐节奏演奏出来。

这个环节可以考虑邀请其他班级的同学来观看演出,让学生们更有动力和自信。

4.5 总结归纳在演奏结束后,老师应该引导学生总结归纳,让他们对今天的学习有更深入的理解和感悟。

五、师生互动教师在教学过程中应该与学生进行有效的互动。

例如,教师可以鼓励学生们展示自己的演奏成果,并对学生表现给予鼓励和肯定。

同时,教师也可以针对学生的不同表现,提供个性化的指导和反馈,帮助学生们更好地掌握演奏技巧。

少儿编程scratch演奏音乐教案

少儿编程scratch演奏音乐教案

少儿编程教学资料,仅供参考,需要可下载并修改后使用!第三课演奏音乐教学过程教学环节教师活动学生活动设计意图创设情景激趣导入1、播放加了“小星星”音乐的“魔术表演”上节课大家制作了“螃蟹大变身”,现在我们来看看这个作品和你们的作品有什么不同?大家想知道音乐是怎么实现的吗?这节课我们一起来学习“演奏音乐”吧!2、引出本节课主题,今天大家将会学习如何演奏音乐,并且也会学习如何将电脑键盘制作成电子乐器。

下面我们来看一些用Scratch制作的关于音乐设计的优秀作品。

演示优秀作品,激发学生的创作欲望观看视频--课程导入学生好奇学生思考想要创作用上节课的作品加入小星星既能复习上节课内容,又能引出本节课课题。

展示用Scratch制作的优秀音乐作品激发学生的创作欲望。

这些作品也可以作为优秀学生的拓展题目。

课前准备给学生一点时间(建议2分钟)摸索用Scratch如何弹奏音乐?然后让学生回答:通过简单的探索之后,大家认为制作音乐最关键的是哪个模块?学生举手回答。

学生自己摸索认真思考举手回答通过让学生自己摸索,让学生能够自己去探索“声音”模块类,通过摸索后再进行学习会对这个知识点印象更加深刻。

让同学们举手回答问题能够活跃课堂气氛,增加课堂凝聚力。

任务驱动习得新知(一)挑战任务一现在就是我们动手操作的时候了。

对照小星星简谱,制作程序。

讲解唱名和音符数字的对应关系。

制作小星星的前半部分,让学生自己完成后面部分。

鼓励完成的快的学生上台展示完整版的小星星。

观看视频--小星星学生思考观看学习视频动手编程上台展示通过编写小星星的脚本让学生学会如何用Scratch制作音乐,掌握“声音”模块类的基本用法。

通过展示作品调动学生的积极性。

基于80C51单片机的音乐演奏器设计

基于80C51单片机的音乐演奏器设计

单片机课程设计报告音乐演奏器姓名:学号:专业:基于80C51单片机的音乐演奏器设计设计原因:随着科技的进步,各种高科技玩具应运而生,各种智能玩具层出不穷。

如果给玩具添加更多功能,那么,此种玩具就具有更强的竞争力。

故此,给玩具添加音乐演奏功能不失为良策。

此外,音乐演奏器还可以应用于多种领域,比如可应用于门铃、闹铃等各种系统。

总之,音乐演奏器有广泛的用途,且具有很强的生命力。

用单片机来实现音乐演奏的功能,既简单轻便,又易于实现,并且成本比古典乐器低廉许多。

最重要的是,基于单片机控制的音乐演奏器能发出一般乐器难以实现的音效。

在网上搜各种曲谱均可以用单片机来实现其音效。

系统工作过程:音乐演奏器的主体由单片机构成,通过控制定时器时间的不同可以产生不同频率的方波,用于驱动喇叭发出不同的音符,再利用延时来控制发音时间的长短,即可控制节拍,把乐谱中的音符和相应的节拍变换成时常数和延迟常数,做成数据表格存放在存储器中。

由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该方波的持续时间。

当延迟时间到时,再查下一个音符的定时常数好延迟常数,依次进行下去。

利用定时器T1以方式1工作,产生各音符对应频率的方波,由P1.0输出驱动喇叭发音。

节拍控制通过改变调用延时子程序D200(延时200ms)的次数来实现,以每拍800ms为例,一拍需循环调用D200延时子程序4次,同理,半拍就需要调用两次,设晶振频率为6Mhz,乐曲中的音符、频率、定时常数的关系可以参照有关表格。

系统硬件组成:1、89C51单片机一个2、晶振6MHz立式一个。

3、起振电容30pF瓷片电容2个4、复位电容22uF 16V电解电容1个5、电阻100欧、1K欧、4.7K欧各一个6、三极管9012一个7、蜂鸣器8欧一个8、DIP封装插座40脚集成插座一个9、万能版150*90一个流程图如下:电路原理图:主程序为:ORG 0000HLJMP STARTORG 001BHMOV TH1,R1MOV TL1,R0CPL P1.0RETIORG 0100HSTART:MOV TMOD,#10HMOV IE,88HMOV DPTR,#TABLOOP:CLR AMOVC A,@A+DPTRMOV R1,AINC DPTRCLR AMOVC A,@A+DPTRMOV R0,AORL A,R1JZ NEXT0MOV A,R0ANL A,R1CJNE A,#0FFH,NEXTSJMP STARTNEXT:MOV TH1,R1MOV TL1,R0SETB TR1SJMP NEXT1NEXT0:CLR TR1NEXT1:CLR AINC DPTRMOVC A,@A+DPTRMOV R2,ALOOP1:LCALL D200DJNZ R2,LOOP1INC DPTRAJMP LOOPD200:MOV R4,#81HD200B:MOV A,#0FFHD200A:DEC AJNZ D200ADEC R4CJNE R4,#00H,D200BRETTAB:DB 0FEH,25H,02H,0FEH,25H,02H,0FEH,25H,04H DB 0FDH,80H,04H,0FEH,84H,02H,0FEH,84H,02HDB 0FEH,84H,04H,0FEH,25H,04H,0FEH,25H,02HDB 0FEH,84H,02H,0FEH,0C0H,04H,0FEH,0C0H,04HDB 0FEH,98H,02H,0FEH,84H,02H,0FEH,57H,04HDB 00H,00H,04H,0FFH,0FFHEND●结果与结论:●设计此程序需要掌握89C51单片机中断和定时器的综合应用;还要学习中断和定时器的编程方法及单片机全系统调试的过程及方法。

梁祝基于-VerilogHDL的演奏设计

梁祝基于-VerilogHDL的演奏设计

设计题目:“梁祝乐曲发生器”一、设计任务及要求:利用EDA/SOPC实验开发平台提供的16*16点阵LED以及EP2C35核心板,实现“梁祝”乐曲发生器。

1、查阅相关资料,明确设计步骤;2、采用Verilog HDL编程语言设计程序;3、能够按照设定节拍(每拍持续1s)顺畅的播放“梁祝”乐曲并且听着基本无错;4、扩张要求:自主设计(如快放、倒放、换歌等)。

二、设计原理及方案乐曲播放器的基本原理是,一个音符对应一个频率信号。

频率的高低决定了音调的高低。

音乐的十二个平均率规定:每两个八度音之间的频率相差一倍。

在两个八度音之间又可以分为十二个半音,每两个半音的频率比为2.另外,音名A(简谱中的低音6)的频率为440HZ,音名B到C之间、E到F之间为半音,其余为全音。

由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,;利用高低音如下关系可得下表:低8度音:基本音频率/2 ,例如低音1的频率为523/2=261.5;高8度音:基本音频率×2,例如高音1的频率为523×2=1046音符与频率的对应关系如下各音阶频率对应的分频比及预置数对于乐曲中的休止符,只要将分频系数设为0,即初始值为1047,此时扬声器不发音。

从上表中可以看出,最大分频系数为1912,所以采用11位二进制计数器分频可满足需要。

对于不同的分频系数,只要加载不同的预置数即可。

采用加载预置数实现分频的方法比采用反馈复零法节约资源,实现起来也容易一些。

音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。

本设计中将全音的持续时间设为1s,提供的4Hz的时钟频率即可产生四分音符的时长。

控制音长通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间也就越长。

每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,如二分音符,在记谱时将该音名联系记录两次即可。

对照以上规则可编制乐谱的程序。

跳吧!跳吧!(二重奏)-湘文艺版《演奏》教案

跳吧!跳吧!(二重奏)-湘文艺版《演奏》教案

跳吧!跳吧!(二重奏)-湘文艺版《演奏》教案一、教学目标1.了解二重奏的基本概念和演奏技巧;2.掌握《演奏》曲目的基本乐谱和演奏方法;3.能够配合伴奏,完成二重奏演奏。

二、教学重点1.二重奏的基本概念和演奏技巧;2.《演奏》曲目的基本乐谱和演奏方法。

三、教学难点1.如何协调配合伴奏,完成二重奏演奏。

四、教学内容和方法1. 教学内容本次教学的内容是《演奏》这首曲目的二重奏演奏。

2. 教学方法本次教学采用“示范教学法”和“启发式教学法”相结合的方式进行。

具体教学过程如下:3. 教学过程第一步:了解二重奏的基本概念和演奏技巧•二重奏是指两个音乐家同时演奏的音乐作品。

•二重奏要求两位演奏者的演奏技巧相当,需要高度的协调和配合。

•二重奏演奏时,一个人担任主旋律,另一个人担任伴奏。

伴奏要充分理解主旋律,协调好节奏和音量。

第二步:学习《演奏》曲目的基本乐谱和演奏方法•《演奏》是一首轻快的曲目,主要以小提琴和钢琴为主要乐器进行演奏。

•小提琴担任主旋律,钢琴担任伴奏。

主要演奏技巧包括:颤音、轻重音、弓法、拨弦等。

•伴奏以简单的和弦为主,要注意协调好节奏和音量。

第三步:示范演奏和指导练习•教师可以和学生一起演奏示范,让学生听和看示范,帮助学生更好地理解和掌握演奏技巧。

•教师也可以引导学生自行练习,针对学生容易出错的地方进行指导和提醒,纠正错误的演奏姿势和技巧。

第四步:合奏演练和评估效果•在学生掌握基本技能后,教师可以让学生进行合奏演练,听取合奏效果,并给予评估和改进意见。

•教师也可以引导学生进行互相指导和合作,帮助学生更好地理解和掌握演奏技巧。

五、教学反思本次教学过程中,突出了示范和练习相结合的教学方法,更好地引导学生掌握演奏技巧。

同时,学生之间的合作和互相指导也起到了很好的促进作用,增强了合作意识和技能。

在以后的教学中,可以更多地尝试创新教学方式,让学生更积极地参与到教学过程中来,提高教学效果。

单片机音乐播放课程设计

单片机音乐播放课程设计

单片机音乐播放课程设计一、课程目标知识目标:1. 学生能理解单片机的原理和基本结构,掌握音乐播放器的设计流程。

2. 学生能掌握音乐播放器编程的基本语法和逻辑,如音符的时长、音调控制等。

3. 学生能了解并运用数字信号处理基本概念,如采样、量化等,解释音乐播放过程。

技能目标:1. 学生能运用单片机开发环境进行音乐播放器的程序编写、调试与下载。

2. 学生能通过实验和项目实践,掌握音乐播放器硬件与软件的协同设计方法。

3. 学生能够独立或合作完成音乐播放器的制作,展示作品并进行简单的故障排查。

情感态度价值观目标:1. 学生培养对电子技术和编程的兴趣,激发创新意识和探索精神。

2. 学生通过实践,培养问题解决能力和团队协作能力,增强自信心。

3. 学生通过创作音乐播放器,体会技术对生活的影响,培养社会责任感。

课程性质分析:本课程为实践性强的单片机应用课程,结合了电子技术、编程和音乐知识,旨在培养学生的动手能力、创新思维和综合应用能力。

学生特点分析:假设学生为高中生,具有一定的物理电子知识基础,对编程有一定了解,对音乐有基本的感知能力。

教学要求:课程需注重理论与实践相结合,鼓励学生主动探索和动手实践,强调过程评价和成果评价相结合,确保学生达到预定的学习目标。

二、教学内容1. 单片机基础知识:介绍单片机的组成、工作原理,重点讲解AT89C51单片机的内部结构、引脚功能及其编程特性。

相关教材章节:第一章单片机概述。

2. 音乐播放器原理:讲解音乐播放器的基本原理,包括音符的生成、音调控制、节拍控制等。

相关教材章节:第三章数字信号处理基础。

3. 编程语言与开发环境:学习单片机编程语言(如C语言),熟悉Keil、Proteus等开发工具的使用。

相关教材章节:第二章单片机编程语言与开发环境。

4. 硬件电路设计:学习音乐播放器硬件电路的设计,包括单片机、音频放大器、扬声器等元件的选型和连接。

相关教材章节:第四章单片机外围电路设计。

演奏-苏少版八年级音乐下册教案

演奏-苏少版八年级音乐下册教案

演奏-苏少版八年级音乐下册教案1. 教学目标1.了解演奏的概念及其重要性;2.掌握乐器演奏的基本技巧;3.了解各种音乐乐器的分类和基本演奏方法;4.通过实际演奏,提高学生的音乐素养和演奏水平。

2. 教学重点和难点2.1 教学重点1.掌握乐器演奏的基本技巧;2.了解各种音乐乐器的分类和基本演奏方法。

2.2 教学难点1.初学者演奏乐器时容易出现的常见问题;2.较难掌握的乐器演奏技巧。

3. 教学过程3.1 导入环节教师可以通过介绍自己的音乐经历、展示一些乐器或播放一些演奏视频,让学生对演奏和乐器有一定了解,并激发其对音乐的兴趣和热爱。

3.2 学习环节3.2.1 演奏的概念和重要性•通过讲解演奏的概念和演奏在音乐中的重要性,让学生了解演奏的基本意义和价值,激发其对演奏的兴趣。

3.2.2 乐器分类•介绍主要乐器的类型和基本演奏方法;•介绍民族乐器和西洋乐器的特点和不同点。

3.2.3 乐器演奏基础•着重介绍乐器演奏的基本技巧和注意事项,如正确握拍、呼吸、演奏姿势;•强调初学者在练习乐器演奏时常见的问题和解决方法,如乐器音调不准、节奏不稳等。

3.3 实践环节3.3.1 实际演奏操作•学生按照教师的指导,对所学乐器进行实际演奏操作;•学生进行乐器合奏练习,体验协同演奏的乐趣。

3.3.2 摸拟演奏•对于没有乐器的学生,可以通过辅助工具,如口哨、打拍子、跆拍等,进行摸拟演奏操作,体验演奏的快乐。

3.4 总结环节•教师针对学生在演奏过程中存在的问题进行总结,并介绍一些乐器学习的经验和技巧;•教师可以播放一些乐器演奏优秀的视频,让学生欣赏优美的音乐,激发其对音乐的热爱和追求。

4. 教学评估1.观察学生在实践演奏过程中的表现和技巧掌握情况;2.参与学生的评价,鼓励学生多提出问题和交流经验;3.收集学生的作品,对其进行评价和指导。

5. 教学反思•在教学过程中,应该更加注重学生的实际操作,帮助学生更好地掌握乐器演奏的技巧和方法;•在评估过程中,应该综合考虑学生的技巧掌握、音乐素养和乐器演奏的表现等方面,为学生提供更好的指导和支持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

音乐演奏1 总体要求与分析1.1设计要求本文主要编写一段音乐程序,该程序可以进行如下操作:按大写字母“A”,奏一首歌曲;按大写字母“B”;奏另一首歌曲,曲目自选,可重复操作。

按Q 退出程序。

1.2设计思路分析在IBM-PC/XT机中都带有8253-5定时/计数器,IBM-PC/AT中带有8254定时/计数器,这两种芯片功能十分类似。

本文通过对8253-5定时/计数器芯片的操作实现音乐演奏。

该声音接口通过汇编语言对8253-5的端口直接进行操作,可以不必要过多的使用BIOS的调用和DOS的调用。

计数器芯片有3个通道,各自具有专用功能。

通道0时系统的始终节拍计时器,通道1专用于产生动态RAM的定时刷新信号,通道2用来控制计算机的扬声器的声音频率。

该音乐演奏主要用到通道2的功能,使通道2工作在“方波发生器”方式,产生相应频率的音调送至喇叭驱动电路,使喇叭发出不同音调的声音。

使用8255A的PB0控制通道2的计数,PB1控制通道2的输出对扬声器产生控制的时间。

人机交互包括屏幕显示提示语以及人工输入相应参数,主要应用到BIOS的10H号中断调用以及DOS的21H号中断调用。

BIOS的10H号中断调用用于显示器驱动,设置显示模式和光标位置;DOS的21H号中断调用用于单字符输入以及多字符输出显示。

音乐演奏实现的一个主要步骤是乐谱编程。

通过相应的频率表将乐谱中对应的音符转化为计数器的计数初值,节奏通过延时程序转化为对喇叭发音时间的控制,从而实现音符和节拍的数字化。

2 方案设计音乐的实现主要是对乐谱中的单音符按照一定的音符频率表转化为计数器的计数频率以及喇叭发声的控制时间,通过计数产生相应的控制动作。

由此可以有两种方案比较和选择。

2.1 方案一通过编程使用软件来实现计数和喇叭发声的时间设置,控制8255A并行I/O 接口驱动喇叭发声。

CPU每执行一条指令需要耗费一定的时间,这样可以通过循环的方式设置好循环次数,实现软件计数,然后输出相应的高低电平,驱动喇叭发出对应频率和节拍的声音。

利用软件编程方式实现该功能的优点是可以减少硬件开支,便于调试和问题的查找。

缺点是CPU开支太大,利用率不高,而且时间不够精准。

2.2 方案二利用硬件实现频率计数和延时时间的控制,利用8253-5定时/计数器芯片和8255A并行I/O接口芯片。

使8253的一个通道工作在“方波发生器”模式,实端口实现发声时间的计数控制。

这样可以精现对频率的计数;利用8255A的PB3确的控制时间,减少CPU的开支。

该方案的优点是控制精度提高,同时也减少CPU的开支。

缺点是硬件开销比较多。

2.3 方案选择本文要实现的功能所需要的硬件电路并不是太复杂,一般的IBM-PC/XT/AT 机家族都带有相应的硬件电路。

在提高精度与简易程度的比较下,决定采用方案二,这样可以大大提高时间控制精度,同时减少软件程序的复杂度。

3 硬件电路IBM-PC/XT内部8253电路图如图3-1所示。

图3-1 8253电路连接图8253的通道0用于产生固定频率的始终节拍,通道1用于产生固定频率的的刷新信号,通道2用于产生频率信号,工作在方式3,计数值为6A4H=1190,方波输出频率为1.19MH Z。

此信号频率决定扬声器的音调,通道2的控制字为0B6H。

音乐产生主要用到通道2。

8253通道2的计数由8255A的PB0控制,当PB输出为高电平时,使门控GATE2为高电平。

此时,8253通道2允许计数,故通道2的输出方波受PB的控制,从而控制扬声器的音调高低。

通道2的输出能否对扬声器产生持续控制还取决于8255A的PB1。

当PB1为“0”时,OUT2不能通过“与门”;反之,则可以通过“与门”控制扬声器。

所以,扬声器发音时间的长短取决于8255A的PB1信号。

另外CPU通过读8255A的C口,得知8253通道2的状态和扬声器驱动器的状态。

4 软件设计4.1 屏幕显示设计程序运行时,屏幕显示第一界面如下:~~~~~Assembly Music Player~~~~~---------------------|PLEASE SELECT A MUSIC|---------------------A LIANGZHILAOHUB ZHENGFUQ EXIT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~选择A、B分别演奏相应的音乐,选择Q键结束程序运行。

当输入别的按键信号时,显示出错提示信息,界面如下:ERROR! CHOOSE A B QPLEASE INPUT AGAIN!~~~~~Assembly Music Player~~~~~---------------------|PLEASE SELECT A MUSIC|---------------------A LIANGZHILAOHUB ZHENGFUQ EXIT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~按照提示信息重新输入正确字符即可。

上述提示信息在数据段定义,类型为字节型。

首先调用BIOS中断的10H号功能设置文本模式。

程序如下:MOV AH,00H ;BIOS 10子功能MOV AL,02H ;80*25彩色文本模式INT 10H ;BIOS 10功能调用然后调用背景清屏子程序使文本屏幕清空,为输入信息作准备,清屏子程序如下:CLR PROC NEARMOV BH,0 ;第0页MOV BL,00011010B ;字符属性,蓝底绿字不闪烁MOV DX,0000H ;0行0列MOV AL,' ' ;输出的字符MOV CX,80*25 ;循环次数MOV AH,02H ;BIOS 10H子功能调用,置光标位置INT 10HMOV AH,09H ;BIOS 10H子功能调用,输出字符INT 10HRETCLR ENDP最后输出提示语字符。

输出提示语字符时,需要多次使用一段相同的输出代码,将该代码定义为宏,可以避免多次重复书写相同的代码。

不定义为子程序是为了避免多次调用使执行速度减慢。

相应宏定义语句为:SHOW MACRO bLEA DX, b ;将相应字符段的偏移地址装入DXMOV AH, 9 ;DOS 21H号中断9子功能输出多字符INT 21HENDM则相应的字符提示信息输出代码为:CALL CLRshow INFO1show INFO2show INFO3show INFO4show MUSLIST4.2 音乐发声控制一首乐曲由若干音符组成,一个音符对应一个频率。

将与一个频率对应的计数器初值写入2号计数器(端口地址为42H),扬声器就发出相应的音调,计数器初值的计算公式:计数器初值=1193182/输出频率其中,1193182Hz转换成十六进制为12348CH,因此在打开扬声器的条件下,执行下列程序段即可发出与输出频率对应的音调。

MOV AL,0B6H ;写入方式控制字OUT 43H,AL ;写入控制端口MOV DX,12HMOV AX,348CHDIV 频率值;频率转换成计数初值OUT 42H,AL ;低8位送2号计数器MOV AL,AHOUT 42H,AL ;高位送2号计数器接下来设计发声程序,发声系统受8255A芯片(端口地址为60H-63H)的两根输出线PB0和PB1的控制,PB输出的高电平使2号计数器正常工作,PB1输出高电平打开输出控制门。

发声程序代码如下:IN AL,61H ;读取8255A的PB端口原输出值MOV AH,AL ;将原输出值保存于AH中OR AL,3 ;使PB0、PB1、均为1OUT 61H,AL ;打开GATE2门,输出方波到扬声器4.3 节拍时间的实现下面控制音符的演奏时间,这是设计音乐程序的关键问题。

最直观的方法是按照谱为每一个音符规定一个演奏时间。

在遇到一首不熟悉歌曲时,初期很难确定每个音符的演唱时间,而调试程序的需大量的时间。

为每一个音符规定“单位时间”:单位时间*N=音符的延长时间其中,N为调试参数,一首歌曲只有一个调试参数。

设计程序时可以用EQU伪指令定义调试参数,初值现行估算,调试时在修改它。

节拍时间设置好以后,就可以利用延时程序,通过PB1端口控制发声的时间长短。

80x86的各种处理器采用6-66MH Z的工作频率,LOOP治理的执行时间在这些处理器上也不同。

为了建立一个与处理器无关的时间延迟,IBM采用了一个利用硬件产生时间延迟的方法,即通过监控端口61H的PB4,使PB4每15.08us触发一次,以产生一个固定不变的时间基准,在IBM-PC/XT 中的BIOS中的WAITF子程序,就是一个产生N*15.08us时间延迟的程序,调用WAITF子程序时,CX寄存器必须装入15.08us的倍数N。

本程序延时程序参考上面的原理,代码如下:waitf proc near ;延时保护程序push ax ;保护寄存器waitf1:in al,61h ;读取PB端口地址and al,10h ;低四位清零cmp al,ah ;检查是否改变je waitf1 ;等待改变mov ah,al ;改变,保护新端口值loop waitf1 ;继续,直到CX=0pop ax ;恢复寄存器retwaitf endp4.4 音乐乐谱编程组成音乐的每个音符的频率值和持续时间是音乐程序发声所需要的两个数据,根据音调与频率和时间之间的关系,把要编辑的音乐的每个音符的频率和持续时间定义成两个数据表,进而把它们写入通用发声程序。

音符频率表示见表1所示,编程产生各种音符的频率时可参照此表。

表1音符频率表(单位:赫兹)4.5 程序流程图主程序流程图如图4-1。

图4-1 主流程图MUSIC子程序流程图如图4-2。

图4-2 MUSIC子程序流程图GENSOUND子程序流程图如图4-3所示:图4-3 GENSOUND子程序流程图5 程序调试及运行结果程序编写完成后在MF2KP集成软件环境中运行,刚开始编译时,出现了很多的变量未定义的错误,经过反复检查,将拼写错误的地方一一改正,再次运行时出现了图5-1所示的错误。

图5-1 运行错误界面一开始不知道哪里出现错误,反复检查程序后仍为发现错误。

于是上网搜索“NTVDM”的意思,明白了它是一个虚拟进程运行时一个必要的程序。

猜想可能是某个参数的设置超出了该进程的参数范围。

于是重新调试程序,终于发现时调用BIOS 10H号中断0子功能中AL设置的文本模式设置错误,其中AL的值不能大于3。

修改后将AL值改为02H后,该错误得以解决。

随后发现在按照提示正确输入时,可以演奏音乐,但是当输入错误的字符时,发现屏幕并不显示错误提示语,经过多次检查和调试,发现是没有清屏程序重新设置文本显示模式,加上该段代码后程序运行正常。

相关文档
最新文档