音乐演奏程序设计

合集下载

音乐演奏程序设计

音乐演奏程序设计

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

基于汇编的音乐弹奏程序

基于汇编的音乐弹奏程序
第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制作音乐,掌握“声音”模块类的基本用法。

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

《制作与演奏作业设计方案》

《制作与演奏作业设计方案》

《制作与演奏》作业设计方案一、设计背景《制作与演奏》是一门专注于音乐制作和演奏技巧的课程,旨在培养学生的音乐创作能力和表演技巧。

通过这门课程,学生将进修如何运用专业的音乐制作软件进行作曲和编曲,并且将有机缘展示自己的演奏技巧。

二、设计目标1. 帮助学生掌握音乐制作的基本技能,包括录音、混音、编曲等。

2. 培养学生的音乐创作能力,激发他们的创造力。

3. 提升学生的演奏技巧,让他们能够自大地在舞台上展示自己的才华。

4. 培养学生的团队合作认识,让他们学会与他人合作完成音乐作品。

三、设计内容1. 音乐制作基础知识的讲解:包括录音设备的选择、声音处理软件的应用等。

2. 音乐制作实践:学生将分组完成一首原创音乐作品的制作,包括编曲、录音、混音等环节。

3. 演奏技巧的训练:学生将选择一首乐曲进行演奏,并在教室上进行表演。

4. 演奏实践:学生将分组进行音乐演奏,并在学校音乐会上展示自己的表演。

四、设计步骤1. 第一周:介绍音乐制作的基础知识,让学生了解音乐制作的流程和工具。

2. 第二周至第四周:学生分组进行音乐制作实践,完成一首原创音乐作品。

3. 第五周:学生进行演奏技巧的训练,选择一首乐曲进行练习。

4. 第六周至第八周:学生分组进行音乐演奏实践,准备参与学校音乐会。

五、评估方式1. 学生音乐作品的评分:评分标准包括音乐的创意性、编曲的精准度、声音的质量等。

2. 学生演奏表现的评分:评分标准包括演奏的技巧、表现的感情等。

3. 学生团队合作的评分:评分标准包括团队合作的效率、沟通的顺畅等。

六、教学资源1. 音乐制作软件:如Ableton Live、Logic Pro等。

2. 乐器:如吉他、键盘等。

3. 音频设备:如麦克风、音箱等。

4. 学校音乐厅:用于学生音乐会的表演场地。

七、总结通过《制作与演奏》课程的进修,学生将在音乐制作和演奏方面得到全面的培养,提升自己的音乐素养和表演能力。

希望学生能够在这门课程中找到音乐创作的乐趣,展示自己的才华,成为优秀的音乐人。

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

微机原理及接口技术课程设计题目音乐演奏小程序学院自动化学院专业电气工程及其自动化班级姓名指导教师2014 年12 月28 日课程设计任务书学生姓名:专业班级:电气指导教师:工作单位:自动化学院题目: 音乐演奏小程序初始条件:音乐程序,按大写字母“A”,奏一首歌曲;按大写字母“B”;奏另一首歌曲,曲目自选。

按Q退出程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录音乐演奏小程序 (1)1 总体要求与设计原理 (1)1.1设计要求 (1)1.2设计原理 (1)2 方案设计 (1)2.1 方案一 (2)2.2方案二 (2)2.3 方案三 (2)2.4 方案选择 (2)3 硬件电路 (2)4 软件设计 (3)4.1 音乐选择模块 (3)4.2 频率产生模块 (3)4.3 控制音符的演奏时间 (4)4.4 音乐乐谱编程 (5)4.5屏幕显示设计 (7)4.6 程序流程图 (9)5 程序调试及运行结果 (10)6 小结与体会 (12)参考文献 (13)附录1 程序源代码 (14)附录2 芯片资料 (18)音乐演奏小程序1 总体要求与设计原理1.1设计要求本文主要编写一段音乐程序,该程序可以进行如下操作:按大写字母“A”,奏一首歌曲;按大写字母“B”;奏另一首歌曲,曲目自选,可重复操作。

按Q退出程序。

1.2设计原理在本次课程设计中大家利用课上所学的各种知识,对自己的课程设计题目进行设计。

我所要设计的题目是音乐程序设计。

看到大多数同学选择了8253定时器,为了与同学区分开来,我在设计的过程选择利用计数器/定时器8254芯片和可编程并行接口8255A芯片,完成2个开关选择歌曲,能用扬声器播放歌曲。

首先我们利用定时器产生各种频率的声音,如“DO”“RE”“ME”然后将各个单音连接起来就组成了一首简单的曲子或者旋律,旋律及拍数可以按音乐简谱而定。

对8255芯片PA0和PA6口的置0和1来选择歌曲。

其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把[SI]是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。

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

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

2.1 方案一音乐程序设计可以实现至少两首歌的可选择播放。

对于歌曲的播放我们采用的是计数器/定时器8254芯片,而对于选择哪首歌播放则是利用可编程并行接口8255A芯片来实现的。

基于8254定时计数接口芯片的工作原理,本次课设实现了音乐演奏系统程序设计。

当运行程序时,扬声器便发出优美的音乐。

首先要解决发声并发出相应音符声音的问题,由8254计数器0在初始化时用来产生一定频率的方波来使扬声器发声,再根据不同音符对应的频率写入计数初值发出相应的音符声。

对8255芯片PA0和PA1口的置0和1来控制扬声器的开关。

其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把[SI]是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。

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

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

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

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

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

2.4 方案选择考虑到我们微机课主要学习了8255A芯片,而我通过查找资料了解到8254的工作原理,,经过再三思索后,我决定放弃选用比较熟悉的8253定时器,转而利用8254定时器和8255A实现本课设要求的功能。

因此我最终选择了方案一。

3 硬件电路硬件连接图如图3所示。

图3 电路连接图4 软件设计4.1 音乐选择模块对8255芯片PA0和PA6口的置0和1来选择歌曲。

其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把[SI]是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。

4.2 频率产生模块所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。

不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。

而我们学过的有计数器可以产生各种频率,所以我们主要采用计数器8254产生各音符,用8255并行接口来控制,达到播放音乐的功能。

所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。

不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。

CPU通过对定时器的通道0进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值。

以产生特殊的音响。

当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可算出来:533Hz×896÷频率=1234DC÷频率在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。

其位组合的格式如下:产生指定频率声音的程序段如下:PLAY: MOV DX,0FHMOV AX , 4240HDIV WORD PTR [SI]MOV DX , MY8254_COUNT0OUT DX , ALMOV AL , AHOUT DX , AL4.3 控制音符的演奏时间控制音符的演奏时间,是设计音乐程序的关键问题。

最直观的方法是按照按照乐谱为每一个音符规定一个演奏时间,但是利用这种方法是调试程序特别困难。

特别是在遇到一首不熟悉的歌曲时,初期很难确定每一个音符的演唱时间,而调试程序的时候费时费力,效果很差,下面,我么么向读者推荐一个记号的方法,即没一个音符规定一个“单位时间”。

单位时间*N=音符的演唱时间其中N为调试参数,一首歌只有一个调试参数。

设计程序时用EQU伪指令定义调试参数,初值先行估计,调试时再修改它。

如何确定每个音符的演奏时间呢?我们知道,音符的节奏分为一拍、半拍、1/4拍、1/8拍等等。

如果在一首歌曲中,音符演奏的时间最短为1/8拍,我们就规定一拍音符的单位时间为8,半拍音符的单位时间为4,1/4拍音符的单位时间为2,1/8拍音符的单位时间为1。

以“友谊地久天长”这首歌为例,最短音符为1/8拍,我们就定义一个单位时间为8。

所示,途中第一行是一段曲谱,第3行是相应音符的单位时间,编程时,首先将一个音符的频率转化成计数初值写入2号计数器,然后将音符的单位时间乘以调试参数N,在调用延时子程序,就可以控制音符的演奏时间了,调试时,只需改变调试参数N即可。

4.4 音乐乐谱编程当运行程序时,扬声器便发出优美的音乐。

首先要解决发声并发出相应音符声音的问题,由8254计数器0在初始化时用来产生一定频率的方波来使扬声器发声,再根据不同音符对应的频率写入计数初值发出相应的音符声。

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

音符频率表1 (单位:赫兹)音符频率表2音符频率表34.5屏幕显示设计程序运行时,屏幕显示第一界面如下:Music Player--------------------------------PLEASE SELECT A MUSIC--------------------------------A Mother’s kiss(妈妈的吻)B Friendship forever(友谊天长地久)Q EXIT@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 选择A、B分别演奏相应的音乐,选择Q键结束程序运行。

当输入别的按键信号时,显示出错提示信息,界面如下:ERROR! IMPUT A B or QPLEASE INPUT AGAIN!Music Player---------------------PLEASE SELECT A MUSICA Mother’s kiss(妈妈的吻)B Friendship forever(友谊天长地久)Q 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.6 程序流程图主程序流程图如图4.1。

相关文档
最新文档