微机原理乐曲程序两只老虎1
- 格式:doc
- 大小:26.50 KB
- 文档页数:2
课程设计课程设计名称:专业班级学生姓名:学号:指导教师:课程设计时间:1 设计任务及要求设计任务:乐曲自动播放器。
自行选择一首自己喜爱的经典乐曲,用FPGA 设计实现一个该曲目的自动演奏电路。
要求:(1)根据设计题目要求编写相应程序代码(2)对编写的VHDL程序代码进行编译和仿真(3)利用实验箱完成硬件验证(4)总结设计内容,完成课程设计说明书与利用微处理器,以纯硬件完成乐曲演奏电路的逻辑要复杂得多。
本实验设计项目作为“两只老虎”乐曲演奏电路的实现,组成每个乐曲的每个音符的发音频率值及持续的时间是乐曲能连续演奏所需要的两个基本要素。
(1)音乐硬件演奏电路基本原理硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。
乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。
而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。
(2)音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。
由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。
若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。
若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。
实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。
本设计中选取1MHz的基准频率。
数控分频器采用12位二进制计数器,乐曲中的休止符,只要将分频系数设为0,即初始值=4095,此时扬声器不会发声。
根据分频系数,可计算数控分频器得到的初始值。
《微机原理》课程设计说明书_键盘电子乐器武汉理工大学《微机原理》课程设计说明书课程设计任务书学生姓名: 专业班级: 电气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单电源供电。
燕山大学课程设计报告汇编与接口课设学院信息科学与工程学院年级专业计算机科学学生姓名学号指导教师提交日期2011/7/1实验一钢琴程序一.实验目的进行汇编语言程序设计应用的综合性训练。
综合运用汇编语言循环程序和子程序编程方法,巩固提高汇编语言程序设计能力应用水平。
二.实验要求按下数字键1-8发出哆来咪发嗖拉西多的声音,当按下ctrl+c键时退出程序三.设备与环境PC兼容机、Windows操作系统、汇编程序masm5.0 四.实验分析1.程序开始先将查好的频率写入到数据段中,定义主程序,当用户从键盘输入时,先判断是否是结束键,如果是结束键则退出,如果不是,再判断是不是1-8之间的数字键,若不是,则跳转到出错处理部分;如果是,则去频率表中调出相应的频率,并进入到发音子程序中。
2.发音PC系列机中,利用8254计数器2的输出,控制扬声器的发生音调,作为机器的报警信号或者伴音信号。
计数器2的OUT 端经过放大后接扬声器,OUT端还和8255A的B端口输出PB1相与。
所以要使扬声器工作,要求8255A的PB1和PB0同时为1。
向43端口中写入计数器2控制字,在AX中设置初值为1234DCH,计数值=1234DCH/频率,然后先低后高向42端口写入计数值。
之后将8255A的PB1和PB0修改为1并将原来的值保存在AH中,以便恢复。
为了建立一个与处理器无关的时间延迟,利用硬件,通过监控端口61H的PB4,使PB4每15.08us触发一次,以产生一个固定不变的时间基准。
Waitf子程序就是产生一个N*15.08us 时间延迟的程序,在CX中放入663产生10ms时延,再向BX中放入100来产生1s的持续时间。
五.参考程序:stacks segment para 'stack' ;定义堆栈stacks db 64 dup('stack...')stacks ends;------------------------------------dseg segment para 'data'table dw 262 ;1dw 294 ;2dw 330 ;3dw 349 ;4dw 392 ;5dw 440 ;6dw 494 ;7dw 523 ;8dseg ends;------------------------------------cseg segment para 'code'assume cs:cseg,ds:dseg,ss:stacksmain proc far ;设置数据段的段地址mov ax,dsegmov ds,axnew_note:mov ah,01h ;是否结束int 21hcmp al,20hje exitmov bx,offset tablecmp al,'1' ;判断是否为1-8的数jb new_notecmp al,'8'ja new_noteand ax,0fhshl ax,1 ;(ax-1)*2 字存储sub ax,2mov si,axmov di,[bx][si]call soundfjmp new_notesoundf proc near ;调用子程序push axpush bxpush cxpush dxpush dimov al,0b6hout 43h,almov dx,12h ;设置方式控制字mov ax,348Chdiv diout 42h,almov al,ahout 42h,alin al,61hmov ah,alor al,3out 61h,almov bx,100delay: mov cx,663 ;10ms 通过循环调用实现call waitfdec bxjnz delaymov al,ahout 61h,al ;恢复8255A端口原来的值pop dipop dxpop cxpop bxpop axretsoundf endpwaitf proc nearpush axwaitf1:in al,61hand al,10h ;判断pb4是0还是1cmp al,ahje waitf1mov ah,alloop waitf1pop axretwaitf endpexit:mov ax,4c00h ;返回DOSint 21hmain endpcseg ends;------------------------------------end main六、代码运行与结果在键盘上按下1-8数字时,扬声器会奏出八个不同的音阶,同时频幕上显示出输入字符;输入Ctrl+C退出,如果输入非1-8或空格字符,程序不予响应。
编号:EDA综合设计实验报告课题:硬件乐曲演奏电路设计专业:智能科学与技术学生姓名:黎良贵学号: 12008502112014 年11 月30 日一、概述:硬件乐曲演奏电路顶层模块图如图1-1所示,电路图由11个子模块组成,能够实现:(1)梁祝乐曲的自动演奏;(2)键盘弹奏歌曲;(3)ROM中能存两首歌曲,并能手动选歌。
二、实验原理:①音符的频率可以由图1-1中的SPKER获得。
这是一个数控分频器。
由其CLK端输入一具有较高频率(1MHz)的时钟,通过SPKER分频后,经由D触发器构成的分频电路,由SPK_KX口输出。
由于直接从分频器中出来的输出信号是脉宽极窄的信号,为了有利于驱动扬声器,需另加一个D触发器分频以均衡其占空比,但这时的频率将是原来的1/2。
SPKER对CLK输入信号的分频比由输入的11位预置数TN[10..0]决定。
SPK_KX的输出频率将决定每一音符的音调;这样,分频计数器的预置值TN[10..0] 与输出频率就有了对应关系,而输出的频率又与音乐音符的发声有对应关系,例如在F_CODE模块中若取TN[10..0]=11'H40C,将由SPK_KX发出音符为“3”音的信号频率。
②音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,图1-1中模块F_CODE的功能首先是为模块SPKER(11位分频器)提供决定所发音符的分频预置数,而此数在SPKER输入口停留的时间即为此音符的节拍周期。
模块F_CODE是乐曲简谱码对应的分频预置数查表电路,每一音符的停留时间则由音乐节拍和音调发生查表模块MUSIC中简谱码和工作时钟inclock的频率决定,在此为4Hz。
这4Hz频率来自分频模块FDIV,模块MUSIC是一个LPM_ROM。
它的输入频率来自锁相环PLL20的2kHz输出频率。
而模块F_CODE的14个值的输出由对应于MUSIC模块输出的q[3..0]及4位输入值INX[3..0]确定,而INX[3..0]最多有16种可选值。
实验8 乐曲程序实验目的:编写一个汇编程序,使PC 机演奏出《两只老虎》的乐曲。
通过两种方式实现发声程序:1. 通过位触发方式,通过控制驱动脉冲的频率和持续时间使计算机发出音响。
掌握61h 端口的使用及控制发声时间的长度方法。
2. 利用定时器发出指定频率的声音,掌握端口42h 、43h 的使用方法。
了解不同的计算机每秒执行指令的速度不同。
实验要求1、利用定时器产生声音的方法编写程序,使PC 机演奏出《两只老虎》的乐曲。
乐曲《两只老虎》的简谱如下:两只老虎1=C 4/4| - 1 5 2 | - 1 5 2| 1 3 54 56 | 1 3 54 56 | - 5 4 3|- 5 4 3 | 1 3 2 1 | 1 3 2 1∙∙两个八度的音阶表曲谱主要段对应的频率如下:3333247220 196 175 165 147 131 | 7 6 5 4 3 2 1 | BA G F E D C | 频率音符音名∙∙∙∙∙∙∙ 523494 440 392 349 330 294 262 | 1 7 6 5 4 3 2 1 | C'B' A' G' F' E' D' C' | 频率音符音名∙2、对有潜力的同学,可通过两种方式实现,并比较之。
3、实验时也可将其他好听的歌曲通过这种方式播放。
实验结果能流畅地播放《两只老虎》乐曲。
实验报告要求:1、分析要点及调试后的正确程序。
2、程序运行写出听觉感受。
2、实验体会。
实验要点:1.乐谱中每个音符有音高和音长两种属性,可以按照每个音符的频率和节拍定义成两个数据表,程序每次从表中取出频率和节拍来控制声音的音高和音长。
2.每个音符的频率值Freq经过转换后送入定时器的42H端口,以产生相应频率的脉冲。
转换公式为:533H×896÷Freq=1234DCH÷Freq3.乐曲演奏完毕后,要完成对61H端口的复位操作以避免死机。
两只老虎eda课程设计一、课程目标知识目标:1. 学生能理解“两只老虎”歌曲的歌词含义,掌握基本音乐符号和节奏。
2. 学生能运用EDA(探索、设计、实现)方法,结合音乐、绘画等多元智能,展现对歌曲的理解。
3. 学生了解音乐与数学、科学等学科的联系,培养跨学科思维。
技能目标:1. 学生通过小组合作,提高沟通协调、问题解决能力。
2. 学生能运用信息技术工具(如:绘图软件、音乐制作软件)创作与“两只老虎”歌曲相关的作品。
3. 学生在创作过程中,培养创新思维和动手实践能力。
情感态度价值观目标:1. 学生对音乐产生兴趣,树立自信心,勇于在集体中展示自我。
2. 学生学会尊重和欣赏他人作品,培养团队合作精神和包容性。
3. 学生通过创作,培养对美好生活的向往,激发爱国情怀。
课程性质:本课程为综合实践活动课,结合音乐、美术、信息技术等多学科,以学生为主体,注重实践与创新。
学生特点:四年级学生具有一定的认知能力、合作能力和创新意识,对音乐、绘画等艺术形式充满兴趣。
教学要求:教师需引导学生运用EDA方法,将学科知识融入实践活动中,关注学生个体差异,提高学生的综合素质。
在教学过程中,注重培养学生的自主学习、合作交流、创新实践能力,确保课程目标的实现。
二、教学内容本课程以“两只老虎”歌曲为主题,结合以下教学内容,确保课程的科学性和系统性:1. 歌曲学习:选取课本中“两只老虎”歌曲,学习歌曲的歌词、旋律、节奏等基本音乐元素。
2. 音乐知识:介绍基本音乐符号、拍子、音高等概念,让学生了解音乐的基础知识。
3. EDA方法:引导学生运用探索(Explore)、设计(Design)、实现(Achieve)的方法,进行创作活动。
4. 跨学科融合:结合数学(如:节奏与分数的关系)、科学(如:声音的产生与传播)、美术(如:创作与歌曲相关的画作)等学科,培养学生的跨学科思维。
5. 小组合作:分组进行创作活动,培养学生沟通协调、团队合作能力。
一、教案基本信息教案名称:学前钢琴教案断奏《两只老虎》教案适用对象:学前儿童教学目标:1. 让学生了解并认识钢琴的基本构造和演奏姿势。
2. 让学生掌握断奏的基本技巧。
3. 让学生学会演奏简单歌曲《两只老虎》。
教学重点:1. 钢琴基本构造和演奏姿势的掌握。
2. 断奏技巧的运用。
3. 《两只老虎》的演奏。
教学难点:1. 钢琴演奏姿势的准确掌握。
2. 断奏技巧的运用。
教学准备:1. 钢琴教室。
2. 钢琴。
3. 乐谱。
4. 坐垫。
二、教学过程Step 1:导入教师与学生简单自我介绍,营造轻松愉快的课堂氛围。
Step 2:认识钢琴1. 教师介绍钢琴的基本构造,包括琴键、琴弦、踏板等。
2. 学生近距离观察钢琴,了解其各个部分的功能。
Step 3:学习演奏姿势1. 教师示范正确的钢琴演奏姿势,包括坐姿、手型、指法等。
2. 学生跟随教师练习,教师逐一纠正错误。
Step 4:学习断奏技巧1. 教师讲解断奏的概念和重要性。
2. 教师示范断奏技巧,学生跟随练习。
Step 5:练习《两只老虎》1. 教师发放乐谱,学生仔细阅读。
2. 教师讲解《两只老虎》的演奏要点,学生跟随练习。
3. 教师逐一纠正学生的错误,确保每个学生都能准确演奏。
Step 6:总结与评价1. 教师对学生的表现进行评价,给予鼓励和指导。
2. 学生分享学习心得和感受。
三、教学反思教师在课后对自己的教学进行反思,总结教学中的优点和不足,为下一节课的教学做好准备。
四、课后作业1. 学生回家后练习钢琴演奏姿势和断奏技巧。
2. 学生回家后练习演奏《两只老虎》,家长签字确认。
五、教学评价教师通过学生的课堂表现、课后作业完成情况和家长反馈,对学生的学习进度和成果进行评价。
六、教学策略1. 游戏化教学:通过趣味性的游戏,让学生在轻松愉快的氛围中学习钢琴。
2. 分组教学:将学生分为不同的小组,进行分组练习和竞赛,激发学生的学习兴趣。
3. 亲子互动:鼓励家长参与孩子的学习过程,增强家庭氛围,提高学习效果。
STACK SEGMENT
DW 100 DUP(?)
STACK ENDS
DATA SEGMENT
MUSIC DW 2 DUP(262,294,330,262) ; 频率表
DW 2 DUP(330,349,392)
DW 2 DUP(392,440,392,349,330,262)
dw 2 dup(294,196,262),0 ;0表示结束
TIME DW 10 DUP(250*50),500*50,250*50,250*50,500*50 ;节拍表DW 2 DUP(120*50,120*50,120*50,120*50,250*50,250*50)
DW 2 DUP(250*50,250*50,500*50)
N EQU 32 ;32个音符
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV CX,2 ;CX控制演奏几遍
LP3: PUSH CX ;压栈保护CX中的
LP0: LEA SI,MUSIC
LEA BP,TIME
MOV CX,N ;32个节拍频率
MOV AX,0 ;后面要用到除法,先扩展AX
LP1: MOV DI,[SI]
CMP DI,0 ;与结束符号比较
JE LP6 ;如果结束,就跳转到LP6,关闭扬声器,返回DOS
MOV BX,DS:[BP] ;未结束就把节拍放到BX中,BP与ES默合,所以要有段前缀说明
MOV AL,0B6H ;设置工作方式为:计数器2控制扬声器,读写,方波,二进制
OUT 43H,AL
MOV DX,12H ;用时钟频率除以频率表中的值算出计数值,以产生新的声音频率
MOV AX,34DCH ;AX放低字,DX放高字,商在AX中
DIV DI
OUT 42H,AL ;除下来的计数值先输出AL,再输出AH,因8253的数据总线是8位的,所以要用两条输出指令来写
MOV AL,AH
OUT 42H,AL
IN AL,61H ;打开扬声器
MOV AH,AL
OR AL,3 ;使PB0=1,PB1=1,0000 0011,GATA2获得高电平,OUT2接通扬声器,允许输出到达扬声器
OUT 61H,AL
PUSH CX ;因下面要用到延时CX付值,把CX=32-1压栈WAYT: MOV CX,33144 ; 延时,根据书P391如果CX=33144可以产生0.5秒的时间延时
DELAY: LOOP DELAY
DEC BX ;BX的数为该节拍的时间,即BX*0.5
JNZ WAYT
ADD SI,2
ADD BP,2
POP CX ;把CX=32-1出栈,循环回LP1,取第二,三......单元的频率和节拍
LOOP LP1
POP CX
LOOP LP3
lp6:
IN AL,61H ;关闭扬声器
AND AL,0FCH ;1111 1100,使PB0=0,PB1=0
OUT 61H,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START。