第一篇:微机原理课程设计电子音乐播放器
武汉理工大学《微机原理与接口技术》课程设计
目录
一、课程设计任务及要求...................................................1 1.1课程设计题目:....................................................1 1.2课程设计任务及要求:..............................................1
二、课程设计相关知识.....................................................1 2.1 定时/计数器8253/58254............................................1 2.2 8254外部引脚.....................................................2 2.3 8254端口地址....................................................3 2.4 8254工作方式....................................................4
三、程序设计思路.........................................................5
四、功能流程图及子程序说明...............................................6 4.1总流程图..........................................................6 4.2音乐播放子程序流程图..............................................7 4.3部分源程序代码....................................................9
五、调试结果截屏及结果分析..............................................10 5.1调试结果截屏.....................................................10 5.2结果分析.........................................................11
六、参考文献............................................................11
七、附录................................................................12 7.1源程序代码:.....................................................13 7.2各个音符的对应频率表:...........................................17
八、总结................................................................18
武汉理工大学《微机原理与接口技术》课程设计
一、课程设计任务及要求
1.1课程设计题目:
电子音乐播放器
1.2课程设计任务及要求:
设计一个音乐程序,演奏音乐按大写字母“A”,唱乐曲“玛丽有只小羔羊”;
按大写字母“B”,唱乐曲“太湖船”
按大写字母“C”,唱乐曲“祝福歌”
按“Q”鍵,退出
二、课程设计相关知识
2.1 定时/计数器8253/58254
在微机及控制系统中,经常要用到定时信号。如系统的日历时钟,动态存储器刷新。对外部执行机构控制时也需要定时中断、定时检测、定时查询等。定时的方法主要是两种:
软件定时:利用指令的执行时间设计循环程序,使CPU 执行延迟子程序的时间就是定时时间。缺点:执行延迟时,CPU 一直被占用,降低了CPU 的效率。
硬件定时:用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间延迟。突出优点为计数时不占用CPU 时间,如利用定时器/计数器产生中断信号,可建立多作业环境,提高了CPU 效率。
作为定时器可用8253或者8254,二者功能基本相同,知识工作的最高频率不一样。本实验就采用了8254,其主要功能为:
(1)每片上有3 个独立的16 位的减计数器通道。
(2)对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。
武汉理工大学《微机原理与接口技术》课程设计
(3)每个通道都有6 种工作方式,都可以通过程序设置或改变。(4)每个计数器的速率可高达10MHz。
主要部分有:数据总线缓冲器、读/写控制逻辑、控制字寄存器、计数通道0#、1#、2#: 内部结构如下图:
8254内部结构
2.2 8254外部引脚
8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:
8254的引脚
(1)D7~D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。
(2)RD:来自于CPU的读控制信号输入引脚,低电平有效。
武汉理工大学《微机原理与接口技术》课程设计
(3)WR:来自于CPU的写控制信号输入引脚,低电平有效。(4)CS:芯片选择信号输入引脚,低电平有效。
(5)A1、A0:地址信号输入引脚,用以选择8254芯片的通道及控制字寄存器。(6).VCC及GND:+5V电源及接地引脚。
(7)CLKi: i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。
(8)GATEi: i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。
(9)OUTi:i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。
2.3 8254端口地址
8254控制字 武汉理工大学《微机原理与接口技术》课程设计
说明 :(1)8254每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。
(2)8254编程时先写控制字,再写时间常数。
2.4 8254工作方式
(1)方式0:计数结束产生中断方式
当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。
(2)方式1:可编程单次脉冲方式
当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。(3)方式2:频率发生器方式
当初值装入时,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。
(4)方式3:方波发生器
当装入初值后,在GATE上升沿启动计数,OUT 输出高电平; 当计数完成一半时,OUT输出低电平。方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。
(5)方式4:软件出发选通方式
进入工作方式4,OUTi输出高电平。装入计数值n后,如果GATE为高电平,则立即
武汉理工大学《微机原理与接口技术》课程设计
开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。
(6)方式5:硬件触发方式计数
进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。
三、程序设计思路
所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。
CPU通过对定时器的通道2(端口地址为42)进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低控制通道2门控的开断。以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可算出来:
533Hz×896÷频率=1234DC÷频率
在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。其位组合的格式如下:
当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。
产生指定频率声音的程序段如下: MOV AL,0B6H OUT 43H,AL ;43H为8254的控制字端口 MOV DX,12H MOV AX,34DCH DIV DI ;(DI)=频率
OUT 42H,AL ;42H为8254的通道2端口
武汉理工大学《微机原理与接口技术》课程设计
MOV AL,AH MOV 42H,AL 从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PA1位和定时器的输出信号同时作为与门的输入,PA0和PA1位可由程序决定为0还是为1。显然只有PA0和PA1都是1时,才能使扬声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。我们知道执行2801次LOOP指令约需要10MS的时间。因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。实现程序如下:
IN AL,61H MOV AH,AL OR AL,3 OUT 61H,AL;开扬声器 L: MOV CX,2801 DY:LOOP DY DEC BX JNZ L MOV AL,AH OUT 61H,AL;关扬声器
四、功能流程图及子程序说明
4.1总流程图
MAIN程序:MAIN程序是总程序,输出说明,等待用户按键并读取键值。根据不同的按键选择调用播音子程序播放不同的歌曲。武汉理工大学《微机原理与接口技术》课程设计
4.2音乐播放子程序流程图
PLAY子程序:PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。开启扬声器,根据所取的时间调用若干次延时子程序。这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。最后修改SI和BP,指向下一个频率,重复上面的工作
DELAY子程序和DELAY_OFF子程序:两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。武汉理工大学《微机原理与接口技术》课程设计
开始保护现场曲N各音符频率设置曲N各音符时间设置读取频率F频率是-1 ?Y恢复现场N读取时间T结束返回计算机计数次数送计数器,产生该频率F信号启动喇叭延时T关闭喇叭音符间延时播音流程图 武汉理工大学《微机原理与接口技术》课程设计
4.3部分源程序代码
武汉理工大学《微机原理与接口技术》课程设计
五、调试结果截屏及结果分析
5.1调试结果截屏
初始界面:
如果按错了键,会出现如下界面:
如果选择正确,将出现如下界面: 武汉理工大学《微机原理与接口技术》课程设计
5.2结果分析
根据输出结果显示,此次试验设计结果与预想设计方案想要达到的结果相一致,没有出现任何偏差,此次设计较为成功。但在实验过程中对程序不断地进行了调试,将音频频率不断地进行了改变,由原来的低频通过同时扩大其倍数,最终使音频达到预期的效果。武汉理工大学《微机原理与接口技术》课程设计
六、参考文献
【1】李长青.微机原理与接口技术.徐州:中国矿业大学出版社,2006 【2】沈美明.汇编语言程序设计实验教程.北京:清华大学出版社,2002年 【3】周明德.微机原理与接口技术.北京:人民邮电出版社,2002年 武汉理工大学《微机原理与接口技术》课程设计
七、附录
7.1源程序代码:
DATA SEGMENT DATA1 DB 0AH, 0DH, 'HELLEL!WELCOME YOU TO COME HERE!$' DB 0AH, 0DH, 'THIS IS A MUSIC PROGRAM!$' DB 0AH, 0DH, 'PLEASE SELECLT!$' DATA4 DB 0AH, 0DH, 'input ERROR!$' DATA5 DB 0AH, 0DH, 'input AGAIN!$'
MUSLIST DB 0AH, 0DH, 'PressA Ma li you zhi xiao yang gao' DB 0AH, 0DH, 'PressB Tai hu chuan' DB 0AH, 0DH, 'PressC zhu fu ge' DB 0AH, 0DH, '$' MUSFRQA DW 330,294,262,294,3 dup(330)DW 3 dup(294),330,392,392 DW 330,294,262,294,4 dup(330)DW 294,294,330,294,262,-1 MUSTIMA DW 6 dup(100),200 DW 2 dup(100,100,200)DW 12 dup(100),400 MUSFRQB DW 330,392,330,294,330,392,330,294,330 DW 330,392,330,294,262,294,330,392,294 DW 262,262,220,196,196,220,262,294,330,262 DW-1 MUSTIMB DW 3 dup(200),100,100,200,100,100,400 DW 2 dup(200,200,100,100),400 DW 3 dup(200,100,100),400 MUSFRQC DW 392, 262, 294, 330, 350, 392, 262, 262 DW 440, 350, 392, 440, 494, 524, 262, 262 DW 350, 392, 350, 330, 294, 330 DW 350, 330, 294, 262, 294, 330, 294, 262, 247, 262,-1 MUSTIMC DW 200, 4 DUP(100), 200, 200, 200 DW 200, 4 DUP(100), 200, 200, 200
武汉理工大学《微机原理与接口技术》课程设计
DW 200, 4 DUP(100), 200 DW 4 DUP(100), 200, 4 DUP(100), 400 DATA ENDS STACK SEGMENT PARA STACK 'STACK' STA DB 200 DUP('STACK')STACK ENDS CODE SEGMENT ASSUME DS: DATA, SS: STACK, CS: CODE, ES: DATA START: MOV AX, DATA;MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX SHOW MACRO B;MOV DX, OFFSET B MOV AH, 09H INT 21H;ENDM SHOW DATA1;L0: SHOW MUSLIST MOV AH, 01H;INT 21H CMP AL, 51H JZ RETURN CMP AL, 41H JNZ l1 CALL MUSICA JMP EXIT1 l1: CMP AL, 42H JNZ l2 CALL MUSICB JMP EXIT1 l2: CMP AL, 43H JNZ EXIT CALL MUSICC JMP EXIT1
设置段寄存器 显示以B开始的字符串宏定义宏结束 提示信息 输入并选择
武汉理工大学《微机原理与接口技术》课程设计
EXIT1: SHOW DATA5 JMP L0 EXIT: SHOW DATA4 SHOW DATA5 JMP L0 RETURN: MOV AX, 4C00H;返回DOS INT 21H;******************************************************************* MUSICA PROC;音乐A LEA SI, MUSFRQA LEA BP,DS: MUSTIMA FREQA: MOV DI, [SI] CMP DI,-1 JE ENDMUSA MOV BX, DS: [BP] CALL SOUND ADD SI,2 ADD BP,2 JMP FREQA ENDMUSA:RET MUSICA ENDP;******************************************************************* MUSICB PROC;音乐B LEA SI, MUSFRQB LEA BP,DS: MUSTIMB FREQB: MOV DI, [SI] CMP DI,-1 JE ENDMUSB MOV BX, DS: [BP] CALL SOUND ADD SI,2 ADD BP,2 JMP FREQB ENDMUSB:RET MUSICB ENDP;*******************************************************************
武汉理工大学《微机原理与接口技术》课程设计
MUSICC PROC;音乐C LEA SI, MUSFRQC LEA BP,DS: MUSTIMC FREQC: MOV DI, [SI] CMP DI,-1 JE ENDMUSC MOV BX, DS: [BP] CALL SOUND ADD SI,2 ADD BP,2 JMP FREQC ENDMUSC:RET MUSICC ENDP SOUND PROC;发音程序 PUSH AX;保护寄存器 PUSH BX PUSH CX PUSH DX PUSH DI MOV AL, 0B6H;写定时器模式 OUT 43H, AL MOV DX, 12H;时间因子 MOV AX, 348CH DIV DI;频率
OUT 42H, AL;写计数器2低八位 MOV AL, AH OUT 42H, AL;写计数器2高八位 IN AL, 61H;获取当前端口设置 MOV AH, AL;保存在AH中
OR AL, 3;打开扬声器 OUT 61H, AL DELA1: LOOP DELA1 DEC BX JNZ WAIT1
16;******************************************************************* WAIT1: MOV CX, 2800;改变数值,用以设置播放速率 武汉理工大学《微机原理与接口技术》课程设计
MOV AL, AH;恢复端口信号 OUT 61H, AL POP DI;寄存器出栈 POP DX POP CX POP BX POP AX RET;返回 SOUND ENDP;******************************************************************* CODE ENDS END START 7.2各个音符的对应频率表:
音符 频率/HZ 半周期/us 音符 频率/HZ 半周期/us 低1DO 262 1908 #4FA# 740 0676 #1DO# 277 1805 中5SO 784 0638 低2RE 294 1700 #5SO# 831 0602 #2RE# 311 1608 中6LA 880 0568 低3M 330 1516 #6LA# 932 0536 低4FA 349 1433 中7SI 988 0506 #4FA# 370 1350 高1DO 1046 0478 低5SO 392 1276 #DO# 1109 0451 #5SO# 415 1205 高2RE 1175 0426 低6LA 440 1136 #2RE# 1245 0402 #6LA# 466 1072 高3M 1318 0372 低7SI 494 1012 高4FA 1397 0358 中1DO 523 0956 #4FA# 1480 0338 #1DO# 554 0903 高5SO 1568 0319 中2RE 578 0842 #5S0# 1661 0292 #2RE# 622 0804 高6LA 1760 0284 中3M 659 0759 #6LA# 1865 0268 中4FA 698 0716 高7SI 1976 0253 武汉理工大学《微机原理与接口技术》课程设计
八、总结
在本次设计中,可以说是一次成功的经验。在我们学完了《微型计算机原理与接口技术》这门课的基础上来做这个设计,通过设计后,使我们对这门课的理论知识的理解有很大程度上的加强。微机原理这门课程本身是一门实验性和工程性很强的专业技术课,因此不仅要重视理论教学,更应注意实践技能的培养和训练。课程设计是这门课程的一个重要环节,通过课程设计,巩固、加深和拓宽了学习的理解,本课程设计的重点目标是使用汇编语言,而不过多涉及硬件方面的太多知识。
在编程方面我通过本次课程设计学到了很多。一开始面对很长的程序往往有畏难情绪,感觉无法下手,没办法只能硬着头皮啃下去,多看几个和音乐播放有关的汇编程序,然后我就能慢慢看懂了并理解了别的作者的设计思路。然后再根据自己的思路,对照本人在图书馆借的汇编语言指导书慢慢编写符合自己思路的程序。一次写出来的程序肯定不会是正确的,还需要进一步调试它。检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方。编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序。调试程序中,学习了emu8086的使用,emu8086对检查程序的错误作用很大。同时,也要灵活使用各种调试方法,来缩小寻找错误的范围。
书到用时方恨少。在课程设计过程中,我才体会到这句话的深意。课堂上学的8254的知识和汇编语言都太少,还不足以完成本次课设,为此我经常跑图书馆借了各种各样的工具书。有的书用处较大,有的书仅能用到一小块知识,就是这样,一步步在知识的海洋里我寻觅着自己需要的东西,确实克服了不少困难,解决了不少问题。或许坎坷才能更好的使人成长。在这次的课程设计中,我的收获是不但做出了一个符合要求的音乐播放器,而且为自己积累了一些宝贵的经验。同时我也对音乐方面的频率知识有了一些认识,我想如果不是本次课程设计中用到这方面知识,我这辈子可能没有机会去接触这方面的知识了。这,或许也是我比别的同学多出的一点收获吧!
第二篇:微机原理课程设计——音乐播放器
一. 课程设计目的
1.通过D/A装换器产生模拟信号,使PC机作为简易音乐播放器。2.了解利用数模转换器产生音乐的基本方法。
二.课程设计任务
设计并实现一个键控音乐播放器。要求:
(1)自己选用合适的芯片,不少于两种。
(2)自行设计电路并使用汇编语言编写程序完成键控音乐播放器功能。
(3)该播放器有若干首歌曲可以选择,开始时输出说明,要用户选择要播放的歌曲,然后根据用户按键进行播放、退出或出错提示。
三、总体设计方案
1、总体设计方案一
所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。而我们学过的有计数器可以产生各种频率,所以我们主要采用计数器8253产生各音符,用8255并行接口来控制扬声器的开关,达到播放音乐的功能。
2、总体设计方案二
可以使用0832(数模转换器)来产生频率,原理图:
更连续,效果更好点。
提出这个方案是因为我想产生模拟信号,来驱动扬声器,这样产生的声音更加圆润感觉我们想把一个周期的波形分成32份,然后每份给8253一个值让他转换成模拟信号,不同的频率可以用8253计数器控制,比如要产生261Hz的频率,使用1MHz的话,周期就为1/261=3.83ms,分成32份,每份间隔时间就是3.83ms/32=0.12ms,换句话说就是送计数器0的初值为1M/261/32=120次。
3、各个音符的对应频率表:
音符 频率/HZ 半周期/us 音符 频率/HZ 半周期/us 低1DO 262 1908 #4FA# 740 0676 #1DO# 277 1805 中5SO 784 0638 低2RE 294 1700 #5SO# 831 0602 #2RE# 311 1608 中6LA 880 0568 低3M 330 1516 #6LA# 932 0536 低4FA 349 1433 中7SI 988 0506 #4FA# 370 1350 高1DO 1046 0478 低5SO 392 1276 #DO# 1109 0451 #5SO# 415 1205 高2RE 1175 0426 低6LA 440 1136 #2RE# 1245 0402 #6LA# 466 1072 高3M 1318 0372 低7SI 494 1012 高4FA 1397 0358 中1DO 523 0956 #4FA# 1480 0338 #1DO# 554 0903 高5SO 1568 0319 中2RE 578 0842 #5S0# 1661 0292 #2RE# 622 0804 高6LA 1760 0284 中3M 659 0759 #6LA# 1865 0268 中4FA 698 0716 高7SI 1976 0253
四.部分电路设计及功能解说
1、频率发生电路
使用8253产生音符频率。8253采用方式3,产生方波信号,根据输入计数初值的不同产生不同频率的方波信号来驱动扬声器。
2、扬声器开关控制电路
使用8255并行接口芯片来控制扬声器的开和关,PC0始终接低电平,PA0和8253的OUT0接在与门上,这样只有PA0=1时扬声器才有可能开通,否则不发声。关闭的方法是,从PC口读入数据再从PA口输出;而开扬声器时只要在输出PA口数据前对数据进行一个取反操作就可以了。
设某音符频率为fHz,而CLK脉冲是1MHz,则计数初值N=1M/f。8253的控制端口为28BH,控制字为36H。五.硬件接线图
六.软件设计流程图
1、总流程图
开始输出说明读取按键是‘1’?N是‘2’?Y播放曲1Y播放曲2N是‘3’?Y播放曲3N是‘0’?Y结束Y选择无效程序总流程图
2、音乐播放子程序流程图
开始保护现场曲N各音符频率设置曲N各音符时间设置读取频率F频率是-1 ?Y恢复现场N读取时间T结束返回计算机计数次数送计数器,产生该频率F信号启动喇叭延时T关闭喇叭音符间延时播音流程图
七.程序段功能汇总
1、MAIN程序
MAIN程序是总程序,输出说明,等待用户按键并读取键值。根据不同的按键选择调用播音子程序播放不同的歌曲。
2、PLAY子程序
PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。开启扬声器,根据所取的时间调用若干次延时子程序。这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。最后修改SI和BP,指向下一个频率,重复上面的工作。
3、DELAY子程序和DELAY_OFF子程序
两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。八.程序清单
SSEG SEGMENT PARA STACK 'stack'
dw 100h dup(0);Resize the stack by changing the number '100' SSEG ENDS
DSEG SEGMENT
;TO DO: Add your program's data here INFO1 DB 0DH,0AH,'--------------------------',0DH,0AH,'THERE ARE 3 SONGS:',0DH,0AH,0DH,0AH,'$' INFO2 DB '1.HAPPY BIRTHDAY',0DH,0AH,'$' INFO3 DB '2.SHEEP',0DH,0AH,'$' INFO4 DB '3.RIVER',0DH,0AH,'$' INFO5 DB '0.EXIT',0DH,0AH,'$' INFO6 DB 'YOU HAVE CHOSEN :$'
INFO7 DB 'THANK YOU FOR YOUR USE',0DH,0AH,'$' INFO8 DB '---------------------------',0DH,0AH,'PRESS THE KEY TO SELECT SONG!',0DH,0AH,'$' INFO9 DB 0DH,0AH,'-------------------',0DH,0AH,'|INVALID SELECTION|',0DH,0AH,'-------------------',0DH,0AH,'$' FREG1 DW 2 dup(262),294,262,349,262,262,294,262,392,249,262,262,523,440,349
;曲1的频率
DW 330,294,466,266,440,349,392,349,-1 TIME1 DW
1,1,2,2,2,4,1,1,2,2,2,4,1,1,2,2,2,2,4,1,1,2,2,2,4
;曲1的时间 FREG2 DW 330,294,262,294,3 DUP(330)
;曲2的频率
DW 3 DUP(294),330,392,392 DW 330,294,262,294,4 DUP(330)DW 294,294,330,294,262,-1 TIME2 DW 6 DUP(1),2
;曲2的时间
DW 2 DUP(1,1,2)DW 12 DUP(1),4 FREG3 DW 330,392,330,294,330,392,330,294,330,330,392,330,294,262,294,330,392,294 ;曲3的频率
DW 262,262,220,196,220,262,294,332,262,-1 TIME3 DW 3 DUP(2),1,1,2,1,1,4
;曲3的时间
DW 2 DUP(2,2,1,1),4 DW 3 DUP(2,1,1,1),4 DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG, es:DSEG, ss:SSEG
INIT PROC;Initialize procedure
mov ax, dseg mov ds, ax
mov es, ax;TO DO: Add your initialize code here(as your requirement)ret
;return to the MAIN procedure
INIT ENDP
MAIN PROC
;Here is your program entry point
call INIT;call the INIT procedure to initialize the program
;**TO DO: Add your main code here**
RE: MOV DX,28BH
;关闭扬声器
MOV AL,89H OUT DX,AL
MOV DX,28AH IN AL,DX MOV DX,288H OUT DX,AL
LEA DX,INFO1 MOV AH,09H INT 21H LEA DX,INFO2 INT 21H LEA DX,INFO3 INT 21H LEA DX,INFO4 INT 21H LEA DX,INFO5 INT 21H LEA DX,INFO8 INT 21H
MOV AH,01H
INT 21H CMP AL,'1'
JE MUSIC1 CMP AL,'2' JE MUSIC2 CMP AL,'3' JE MUSIC3 CMP AL,'0' JE EXIT
LEA DX,INFO9 MOV AH,09H INT 21H JMP RE
;输出说明信息
;读取按键
;根据不同的按键播放不同的曲子
;无效选择,输出错误提示
MUSIC1: MOV SI,OFFSET FREG1
;指向曲1的表
MOV BP,OFFSET TIME1 CALL PLAY JMP RE MUSIC2: MOV SI,OFFSET FREG2
;指向曲2的表
MOV BP,OFFSET TIME2 CALL PLAY JMP RE MUSIC3: MOV SI,OFFSET FREG3
;指向曲3的表
MOV BP,OFFSET TIME3 CALL PLAY JMP RE EXIT: MOV DX,28BH
;关闭扬声器
MOV DX,28AH IN AL,DX MOV DX,288H OUT DX,AL LEA DX,INFO7
;输出欢迎使用信息,增加界面友好度 MOV AH,09H INT 21H mov ax, 4c00h;The end of the program, return to the system MOV AL,89H OUT DX,AL
int 21h
MAIN ENDP
;TO DO: Add other procedures(PROC)here(as your requirement)
;THE PROGRAMME OF PLAYING THE MUSIC
PLAY PROC
;PLAY子程序,功能上面介绍过
L1: MOV BX,DS:[SI]
;取频率
CMP BX,-1
;看是否有效
JE L0
;无效就退出
MOV CX,DS:[BP]
;读取时间
MOV DL,CL
;保存时间
ADD DL,30H
MOV AH,02H
INT 21H
MOV DX,0FH
;计算计数初值,1M的十六进制为0F4240H
MOV AX,4240H
DIV BX
MOV BX,AX
MOV DX,283H
;设置计数器工作方式
MOV AL,36H
OUT DX,AL
MOV DX,280H
;输入计数初值
MOV AX,BX
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,28BH
MOV AL,89H OUT DX,AL MOV DX,28AH IN AL,DX NOT AL MOV DX,288H OUT DX,AL
ROD:CALL DELAY
LOOP ROD
MOV DX,28BH
MOV AL,89H OUT DX,AL MOV DX,28AH IN AL,DX MOV DX,288H OUT DX,AL CALL DELAY_OFF
ADD SI,2
ADD BP,2
JMP L1
L0: RET
PLAY ENDP
DELAY PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX,09FH LL1:MOV CX,0FFFFH
;开扬声器 ;延时
;关扬声器
;延时子程序
;循环这么多次
;音节间延时
LOP: LOOP LOP DEC BX JNZ LL1 POP DX
POP CX
POP BX
POP AX
RET
DELAY ENDP
DELAY_OFF PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX,0FH LL2:MOV CX,0CFFFH LOP2: LOOP LOP2 DEC BX JNZ LL2 POP DX
POP CX
POP BX
POP AX
RET DELAY_OFF ENDP CSEG ENDS;TO DO: Add other segments here(as your requirement)
END MAIN
九.试验结果和分析
1、试验结果:
程序初始运行界面
如果按错了键,会出现如下界面
如果选择正确,将出现如下界面:
2、分析
这是按照方案一做的结果,按1~3分别播放“生日快乐”等歌,但由于本组人对音乐都是外行,各音阶频率的排序和延时时间搭配不好,导致音乐严重走调,但基本能听出不是噪音。
按照方案二做的电路和程序,无论怎么样都不出声,后来我们直接送数据到0832产生三角波信号(程序在我们的一次作业中写的)。还是无法让扬声器发出声音,因此按这个方案失败了。
十.课程设计总结和体会
1.实验过程中碰到了很多的难题和障碍,我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障!
2.通过这次课程设计,我们对各个芯片有了进一步的了解,对各个芯片的功能有了更深刻的认识和体会,平时上课的理论知识只是停留在理论的层面,只有通过了这样的试验才能更好的体会到,做到了理论和实际的相结合,使理论知识真正运用到了实践中去。在课程设计过程中,同组人员之间相互合作,共同研究使我更加坚信了团体的力量。在团体的共同协作和努力下,任何的难题都可以被解决!
3.我们大家在实验的时候都团结合作,遇到问题时候一起探讨,增强了我们的合作精神。
十一.参考文献
1、《〈微机原理与接口技术〉学生实验指导书》 扬州大学 罗加奇
2、《微机原理及应用》 机械工业出版社 胡钢 主编
第三篇:微机原理课程设计音乐播放器
《微机原理与接口技术》课程设计
关智杰
一、课程设计的任务和目的
课程设计题目:音乐播放器
课程设计的实现目的:本课程设计主要是通过汇编语言用软件编程的方法实现简单的音乐播放功能。通过在《微机原理与接口技术》课程上所学的汇编知识和8253/8254芯片相关知识,来完成本课程设计;用汇编程序完成键控音乐播放器的,用8253/8254定时器来产生声音。该播放器有若干首歌曲可以选择,开始时输出说明,要用户选择要播放的歌曲,然后根据用户按键进行播放、退出或出错提示。通过课程设计环节来加强对所学知识的理解和应用。
二、课程设计相关知识
2.1 定时/计数器8253/58254
在微机及控制系统中,经常要用到定时信号。如系统的日历时钟,动态存储器刷新。对外部执行机构控制时也需要定时中断、定时检测、定时查询等。定时的方法主要是两种:
软件定时:利用指令的执行时间设计循环程序,使CPU 执行延迟子程序的时间就是定时时间。缺点:执行延迟时,CPU 一直被占用,降低了CPU 的效率。
硬件定时:用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间延迟。突出优点为计数时不占用CPU 时间,如利用定时器/计数器产生中断信号,可建立多作业环境,提高了CPU 效率。
作为定时器可用8253或者8254,二者功能基本相同,知识工作的最高频率不一样。本实验就采用了8254,其主要功能为:
(1)每片上有3 个独立的16 位的减计数器通道。
(2)对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。
(3)每个通道都有6 种工作方式,都可以通过程序设置或改变。(4)每个计数器的速率可高达10MHz。
主要部分有:数据总线缓冲器、读/写控制逻辑、控制字寄存器、计数通道0#、1#、2#: 内部结构如下图:
《微机原理与接口技术》课程设计
关智杰
8254内部结构
2.2 8254外部引脚
8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:
8254的引脚
(1)D7~D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。
(2)RD:来自于CPU的读控制信号输入引脚,低电平有效。(3)WR:来自于CPU的写控制信号输入引脚,低电平有效。(4)CS:芯片选择信号输入引脚,低电平有效。
(5)A1、A0:地址信号输入引脚,用以选择8254芯片的通道及控制字寄存器。(6).VCC及GND:+5V电源及接地引脚。
(7)CLKi: i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。
《微机原理与接口技术》课程设计
关智杰
(8)GATEi: i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。
(9)OUTi:i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。
2.3 8254端口地址
8254控制字
说明 :(1)8254每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。
(2)8254编程时先写控制字,再写时间常数。
2.4 8254工作方式
《微机原理与接口技术》课程设计
关智杰
(1)方式0:计数结束产生中断方式
当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。
(2)方式1:可编程单次脉冲方式
当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。(3)方式2:频率发生器方式
当初值装入时,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。
(4)方式3:方波发生器
当装入初值后,在GATE上升沿启动计数,OUT 输出高电平; 当计数完成一半时,OUT输出低电平。方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。
(5)方式4:软件出发选通方式
进入工作方式4,OUTi输出高电平。装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。
(6)方式5:硬件触发方式计数
进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。
三、程序设计思路
所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。
CPU通过对定时器的通道2(端口地址为42)进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低控制通道2门控的开断。以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可算出来:
《微机原理与接口技术》课程设计
关智杰
533Hz×896÷频率=1234DC÷频率
在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。其位组合的格式如下:
当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。
产生指定频率声音的程序段如下:
MOV AL,0B6H OUT 43H,AL ;43H为8254的控制字端口 MOV DX,12H MOV AX,34DCH DIV DI ;(DI)=频率
OUT 42H,AL ;42H为8254的通道2端口 MOV AL,AH MOV 42H,AL 从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PA1位和定时器的输出信号同时作为与门的输入,PA0和PA1位可由程序决定为0还是为1。显然只有PA0和PA1都是1时,才能使扬声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。我们知道执行2801次LOOP指令约需要10MS的时间。因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。实现程序如下:
IN AL,61H MOV AH,AL OR AL,3 OUT 61H,AL;开扬声器 L: MOV CX,2801 DY:LOOP DY DEC BX JNZ L MOV AL,AH OUT 61H,AL;关扬声器
《微机原理与接口技术》课程设计
关智杰
四、功能流程图及子程序说明
1、总流程图
MAIN程序:MAIN程序是总程序,输出说明,等待用户按键并读取键值。根据不同的按键选择调用播音子程序播放不同的歌曲。
开始输出说明读取按键是‘1’?N是‘2’?Y播放曲1Y播放曲2N是‘3’?Y播放曲3N是‘0’?Y结束Y选择无效程序总流程图
2、音乐播放子程序流程图
PLAY子程序:PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。开启扬声器,根据所取的时间调用若干次延时子程序。这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。最后修改SI和BP,指向下一个频率,重复上面的工作
DELAY子程序和DELAY_OFF子程序:两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。
《微机原理与接口技术》课程设计
关智杰
开始保护现场曲N各音符频率设置曲N各音符时间设置读取频率F频率是-1 ?Y恢复现场N读取时间T结束返回计算机计数次数送计数器,产生该频率F信号启动喇叭延时T关闭喇叭音符间延时播音流程图
五、试验结果截屏:
初始界面:
如果按错了键,会出现如下界面:
《微机原理与接口技术》课程设计
关智杰
如果选择正确,将出现如下界面:
六、参考文献
【1】李长青.微机原理与接口技术.徐州:中国矿业大学出版社,2006 【2】沈美明.汇编语言程序设计实验教程.北京:清华大学出版社,2002年 【3】周明德.微机原理与接口技术.北京:人民邮电出版社,2002年
七、总结
在本次设计中,可以说是一次成功的经验。在我们学完了《微型计算机原理与接口技术》这门课的基础上来做这个设计,通过设计后,使我们对这门课的理论知识的理解有很大程度上的加强。微机原理这门课程本身是一门实验性和工程性很强的专业技术课,因此不仅要重视理论教学,更应注意实践技能的培养和训练。课程设计是这门课程的一个重要环节,通过课程设计,巩固、加深和拓宽了学习的理解,本课程设计的重点目标是使用汇编语言,而不过多涉及硬件方面的太多知识。
《微机原理与接口技术》课程设计
关智杰
在编程方面我通过本次课程设计学到了很多。一开始面对很长的程序往往有畏难情绪,感觉无法下手,没办法只能硬着头皮啃下去,多看几个和音乐播放有关的汇编程序,然后我就能慢慢看懂了并理解了别的作者的设计思路。然后再根据自己的思路,对照本人在图书馆借的汇编语言指导书慢慢编写符合自己思路的程序。一次写出来的程序肯定不会是正确的,还需要进一步调试它。检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方。编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序。调试程序中,学习了DEBUG 的使用,DEBUG对检查程序的错误作用很大。同时,也要灵活使用各种调试方法,来缩小寻找错误的范围。
书到用时方恨少。在课程设计过程中,我才体会到这句话的深意。课堂上学的8254的知识和汇编语言都太少,还不足以完成本次课设,为此我经常跑图书馆借了各种各样的工具书。有的书用处较大,有的书仅能用到一小块知识,就是这样,一步步在知识的海洋里我寻觅着自己需要的东西,确实克服了不少困难,解决了不少问题。或许坎坷才能更好的使人成长。在这次的课程设计中,我的收获是不但做出了一个符合要求的音乐播放器,而且为自己积累了一些宝贵的经验。同时我也对音乐方面的频率知识有了一些认识,我想如果不是本次课程设计中用到这方面知识,我这辈子可能没有机会去接触这方面的知识了。这,或许也是我比别的同学多出的一点收获吧!
六、附录
1、源程序代码:
SSEG SEGMENT PARA STACK 'stack'
dw 100h dup(0);Resize the stack by changing the number '100' SSEG ENDS
DSEG SEGMENT INFO1 DB 0DH,0AH,'--------------------------',0DH,0AH,'THERE ARE 3 SONGS:',0DH,0AH,0DH,0AH,'$' INFO2 DB '1.HAPPY BIRTHDAY',0DH,0AH,'$' INFO3 DB '2.SHEEP',0DH,0AH,'$' INFO4 DB '3.RIVER',0DH,0AH,'$' INFO5 DB '0.EXIT',0DH,0AH,'$' INFO6 DB 'YOU HAVE CHOSEN :$' INFO7 DB 'THANK YOU FOR YOUR USE',0DH,0AH,'$' INFO8 DB '---------------------------',0DH,0AH,'PRESS THE KEY TO SELECT SONG!',0DH,0AH,'$' INFO9 DB 0DH,0AH,'-------------------',0DH,0AH,'|INVALID
《微机原理与接口技术》课程设计
关智杰
SELECTION|',0DH,0AH,'-------------------',0DH,0AH,'$' FREG1 DW 2 dup(262),294,262,349,262,262,294,262,392,249,262,262,523,440,349
;曲1的频率
DW 330,294,466,266,440,349,392,349,-1 TIME1 DW
1,1,2,2,2,4,1,1,2,2,2,4,1,1,2,2,2,2,4,1,1,2,2,2,4
;曲1的时间 FREG2 DW 330,294,262,294,3 DUP(330)
;曲2的频率
DW 3 DUP(294),330,392,392 DW 330,294,262,294,4 DUP(330)DW 294,294,330,294,262,-1 TIME2 DW 6 DUP(1),2
;曲2的时间
DW 2 DUP(1,1,2)DW 12 DUP(1),4 FREG3 DW 330,392,330,294,330,392,330,294,330,330,392,330,294,262,294,330,392,294;曲3的频率
DW 262,262,220,196,220,262,294,332,262,-1 TIME3 DW 3 DUP(2),1,1,2,1,1,4
;曲3的时间
DW 2 DUP(2,2,1,1),4 DW 3 DUP(2,1,1,1),4 DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG, es:DSEG, ss:SSEG
INIT PROC
;初始化程序
mov ax, dseg mov ds, ax mov es, ax
INIT ENDP
MAIN PROC
;程序入口
call INIT
RE: MOV DX,28BH
;关闭扬声器
MOV AL,89H OUT DX,AL
MOV DX,28AH IN AL,DX MOV DX,288H OUT DX,AL
LEA DX,INFO1
;输出说明信息
MOV AH,09H INT 21H LEA DX,INFO2 INT 21H LEA DX,INFO3 INT 21H
《微机原理与接口技术》课程设计
关智杰
LEA DX,INFO4 INT 21H LEA DX,INFO5 INT 21H LEA DX,INFO8 INT 21H
MOV AH,01H
;读取按键
INT 21H CMP AL,'1'
;根据不同的按键播放不同的曲子
JE MUSIC1 CMP AL,'2' JE MUSIC2 CMP AL,'3' JE MUSIC3 CMP AL,'0' JE EXIT
LEA DX,INFO9
MOV AH,09H INT 21H JMP RE
MUSIC1: MOV SI,OFFSET FREG1
MOV BP,OFFSET TIME1 CALL PLAY JMP RE MUSIC2: MOV SI,OFFSET FREG2
MOV BP,OFFSET TIME2 CALL PLAY JMP RE MUSIC3: MOV SI,OFFSET FREG3
MOV BP,OFFSET TIME3 CALL PLAY JMP RE EXIT: MOV DX,28BH
MOV AL,89H OUT DX,AL
MOV DX,28AH IN AL,DX
;无效选择,输出错误提示
;指向曲1的表;指向曲2的表;指向曲3的表;关闭扬声器
《微机原理与接口技术》课程设计
关智杰
MOV DX,288H OUT DX,AL
LEA DX,INFO7
;输出欢迎使用信息,增加界面友好度
MOV AH,09H INT 21H mov ax, 4c00h;The end of the program, return to the system
int 21h
MAIN ENDP
PLAY PROC
L1: MOV BX,DS:[SI]
CMP BX,-1
JE L0
MOV CX,DS:[BP]
MOV DL,CL
ADD DL,30H
MOV AH,02H
INT 21H
MOV DX,0FH
MOV AX,4240H
DIV BX
MOV BX,AX
MOV DX,283H
MOV AL,36H
OUT DX,AL
MOV DX,280H
MOV AX,BX
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,28BH
MOV AL,89H OUT DX,AL MOV DX,28AH IN AL,DX NOT AL MOV DX,288H OUT DX,AL
ROD:CALL DELAY
LOOP ROD
MOV DX,28BH
MOV AL,89H
;PLAY子程序,功能上面介绍过
;取频率
;看是否有效
;无效就退出
;读取时间
;保存时间
;计算计数初值,1M的十六进制为0F4240H
;设置计数器工作方式
;输入计数初值
;开扬声器
;延时
;关扬声器
《微机原理与接口技术》课程设计
关智杰
OUT DX,AL MOV DX,28AH IN AL,DX MOV DX,288H OUT DX,AL
CALL DELAY_OFF
;音节间延时
ADD SI,2
ADD BP,2
JMP L1
L0: RET
PLAY ENDP
DELAY PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX,09FH LL1:MOV CX,0FFFFH
LOP: LOOP LOP DEC BX JNZ LL1 POP DX
POP CX
POP BX
POP AX
RET
DELAY ENDP
DELAY_OFF PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX,0FH LL2:MOV CX,0CFFFH LOP2: LOOP LOP2 DEC BX JNZ LL2 POP DX
POP CX
POP BX
POP AX
RET
;延时子程序
;循环这么多次
《微机原理与接口技术》课程设计
关智杰
DELAY_OFF ENDP CSEG ENDS END MAIN
2、各个音符的对应频率表:
音符 频率/HZ 半周期/us 音符 频率/HZ 半周期/us 低1DO 262 1908 #4FA# 740 0676 #1DO# 277 1805 中5SO 784 0638 低2RE 294 1700 #5SO# 831 0602 #2RE# 311 1608 中6LA 880 0568 低3M 330 1516 #6LA# 932 0536 低4FA 349 1433 中7SI 988 0506 #4FA# 370 1350 高1DO 1046 0478 低5SO 392 1276 #DO# 1109 0451 #5SO# 415 1205 高2RE 1175 0426 低6LA 440 1136 #2RE# 1245 0402 #6LA# 466 1072 高3M 1318 0372 低7SI 494 1012 高4FA 1397 0358 中1DO 523 0956 #4FA# 1480 0338 #1DO# 554 0903 高5SO 1568 0319 中2RE 578 0842 #5S0# 1661 0292 #2RE# 622 0804 高6LA 1760 0284 中3M 659 0759 #6LA# 1865 0268 中4FA 698 0716 高7SI 1976 0253
第四篇:微机原理课程设计
电子信息科学与技术《微机原理》课程设计
一、本次课程设计的目的和意义
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、设计时间、基本要求
(一)、设计时间:二周(二)、基本要求:
a.每题2人;b.设计出完整的接口电路;c.编写出全部程序;d.在实验系统上调试通过。
三、设计选题与要求
选题一:多路模拟数据采集系统设计
要求:设计一个2路以上的模拟数据采集系统。
1、用按键选择那一路;
2、用LED显示转换结果(十进制数);
3、将每一路采集的100个数据存放到各自的存储区中。
选题二:温度测控系统的设计
要求:利用ADC0809设计一个温度测控系统,在LED数码显示器上显示温度值,并对温度进行测试和控制,当检测温度到达温度上限60℃时开风扇(即开启电动机,或以一个灯的亮灭表示),低于下限30℃时关闭风扇,LED上的显示内容为:XX ℃(采用十进制显示)。
选题三:函数发生器的设计(一)要求:利用DAC0832设计一个函数发生器,并利用按键选择输出波形,能分别产生三角波、阶梯波(每阶梯1V)、正向锯齿波、负向锯齿波和方波。并利用按键(自行定义)进行输出波形选择,同时将当前输出波形代号显示在LED上(左边位):0为方波、1为正向锯齿波、2为负向锯齿波、3 为三角波、4为阶梯波。
选题四:函数发生器的设计(二)要求:设计一个三角波发生器,可利用键盘改变其输出波形的幅值。例如,可利用1-5这5个数字键改变其输出波形的幅值,当按下1-5数字键时使D/A输出幅值从1V增加到5V。
选题五:电子音乐播放器
要求:设计要求:利用8253作为音阶频率发生器,应先对“2008年奥运会主题歌”进行编码后存入音符表,并建立好音阶表(只建立一个8度即可),音符长度不能少于60个,连续播放3遍后停止。
选题六:键盘电子乐器
要求:利用并行接口8155作为键盘接口,设计一个具有2个八度音阶的键盘乐器,音阶键不少于16个,采用扫描方式管理键盘,音域范围自行定义。
选题七:电子时钟设计
要求:利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该
键时时钟从当前设定值(可在显示缓冲区中予置)开始走时。
选题八:压力测控系统的设计(一)要求:对压力传感器的信号进行检测并在LED数码显示器上显示压力值,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。当压力高于150pa时,红灯闪烁。LED的显示内容为P=XXX。X为测试值。
选题九:可变输出频率方波发生器设计
要求:设计一个输出方波频率可利用按键改变的方波信号发生器(可以使用D/A也可以直接使用8253产生方波),利用键盘选择方波发生器的输出频率并驱动喇叭。输出频率=键号*100HZ
选题十:直流电机速度控制器设计
要求:利用D/A转换器和按键设计一个直流电动机转速控制器。按键定义如下:0 停止,1-1/10转速,2-2/10转速„„ 9 最高速(D/A输出满量程),键号每加1,D/A输出增加0.5V
选题十一:可任意启动/停止的电子秒表设计
要求:6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时„„
选题十二:温度测试系统设计
要求:利用温度传感器和ADC0809设计一个温度测试系统,将测试结果(十进制)在LED上显示出来,并定义一个保持按键,当按下该键时,将当前测试值保持不变(按键不动作时为正常测量显示)。温度显示格式为:XXX ℃。(可以每隔0.3秒测量一次)
选题十三:压力测试系统设计(二)要求:利用压力传感器和ADC0809设计一个压力测试系统,并将测试结果(十进制)在LED上显示出来,并定义一个测试最大值按键,当按下该键时,可进行最大值测量(按键不动作时为正常测量显示),即:只有当当前测量值大于上次测量值时才刷新显示,显示格式为:P=XXX。可以每隔0.3秒测量一次。
选题十四:简易计算器系统设计
要求:设计一个可以进行2位数四则运算的计算器。
1、用按键输入数和运算符号;
2、用LED显示运算过程和结果(十进制数);
3、可以表示出当前的运算类型;
4、具有清零和复位功能;
5、具有连续运算功能。
选题十五:交通灯控制系统
要求:按照时间控制原则,利用并行接口和定时器,设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。可利用8255、8253等接口电路。
选题十六:计件系统设计
要求:利用8253计数,对外界脉冲技术,并将计数值在数码管上显示,可通过键盘控制重新计数。
四、设计任务及要求
1、接口设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过。
2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。
3、课程设计报告:(1)设计题目;
(2)系统的主要功能、作用以及主要技术性能指标;
(3)总体设计方案、工作和组成原理(框图)或设计说明、采用的技术路线等;
(4)系统设计:接口电路设计,程序设计(程序框图和程序清单及注释)其他有关的理论分析和计算;
(5)设计总结:对整个设计工作过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。
第五篇:微机原理课程设计
汇编程序设计题
题目一 密码设置模拟
该程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码不显示。题目二 计算器
编辑程序可以实现键盘输入数据与运算符,进行“加减乘除”运算。(提示:先输入数据与运算符,保存,再按照运算符选择对应的子程序;输入的数据是用字符表示的,需要转换;要有良好的界面(提示信息))
题目三工作周期判断程序
输入年、月、日,能够判断当日的星期数,并进行输出。(以校历为依照,可设某日为起点,根据相差的天数与7的关系进行判断)。
题目四 PC扬声器发声
利用8253驱动PC机内扬声器发声,PC结构参考相关文献资料。题目五 乐曲播放
利用PC机内8253实现乐曲播放。题目六 按键选择乐曲播放
利用按键选择播放不同乐曲。(★)(自制交互界面实现按键选择★★)题目七 实现闪烁文字效果 编程提示:
提示信息于屏幕中央显示出来,用光标定位子程序将光标定位于80*25显示方式的第8行第10列,然后输出一条提示信息,接着调用屏幕上卷子程序上卷一行,接着再定位光标,然后显示下一条提示信息,直到所有信息显示完毕,对于闪烁的信息,同样是定位光标,然后用BIOS功能调用13H来显示闪烁信息,当BL的高位为1时,字符闪烁。mov ah,00h mov al,03h ;设置显示方式为80*25,16色文本 int 10h 题目八
数字秒表
设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。题目九
倒计时牌
设计日期倒计时牌界面,可输入设定日期,显示当前日期的统计天数,如奥运计时牌。题目十
数字时钟
编程实现时钟功能,按秒刷新,要求定位在屏幕右上角。
硬件设计题
总体要求:根据题意自行设计电路,编写相关汇编程序。题目一
交通灯控制系统
1.利用8253定时,8259中断及8255设计电路,实现十字路口交通灯模拟控制。2.实现能自动控制和手动应急控制。
3.实现能随时可以调整自动模式的绿灯和红灯时间。题目二 实现特定功能的键盘及LED显示
了解键盘及LED显示接口原理,设计实验电路图完成以下功能: 1.按1键显示年; 2.按2键显示月日; 3.按3键显示GOOD ;
4.按4键数码管由左到右字符“0”循环显示。5.自行设计特效显示功能。题目三
LED七段数码管数字钟
设计并完成LED七段数码管数字钟电路,数字钟显示格式为:HH:MM:SS。要求:具有通过键盘能够调整时、分、秒的功能。题目四
闪烁灯
利用8253和LED灯相结合实现闪烁灯效果。题目五
电子钟
利用8253定时器设计一个电子钟,并定义一个启动键。当按下该键时电子时钟从当前设定值开始走时。
附录:实验箱功能模块电路图