1、微机原理课设自动化专业课程设计报告微机原理及应用课程设计题目 . 计算机仿真电子琴班 级 自动化10-3 姓 名 王帅 学 号 1005130313 时 间 12.12.24-28 地 点 电信实验中心第六实验室 指 导 教 师 李 向 军 大 连 水 产 学 院 信 息 工 程 学 院 自 动 化 教 研 室计算机仿真电子琴一. 课程设计的目的与要求1、 教学目的本课程的课程设计是自动化专业学生学习完微机原理及应用课程后,进行的一次以汇编语言为主,硬件设计为辅的综合训练。本课程设计的其目的在于加深对微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本方法。2
2、、 教学要求从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:1) 掌握汇编语言程序设计的基本方法。2) 进一步理解各种接口电路的应用。例如8255并行接口,8253定时器等。3) 掌握利用PC机扬声器发出不同频率声音的方法。4) 设计要求 ( 1 ) 掌握本课程设计所涉及到的基本理论。 (2)理解硬件电路的工作原理。 (3)自行设计软件流程图,编制程序。 (4)调试程序使其能正常运行。( 5 ) 设计完成后,必须写出设计总结。内容包括:原理介绍,简单的硬件电路图,较详细的程序流程图及完整的软件源程序清单。二. 课程设计课题分析 1. 电子琴的设计实际上就是要设计一个程序,能够通过该
3、程序控制PC机内扬声器的发声规律,按下相应的按键后,扬声器能发出指定频率的声音。PC机内的扬声器是通过并行接口芯片8255和定时芯片8253来控制发音的 1.19318MHZ 扬声器是由8253通道2产生的方波信号和8255的PB1 相与后驱动发声的,且通道2的门信号由8255的PB0提供,要想让扬声器发声,PB0和PB1必须同时为高电平,因此,可以通过对8255的PB0和PB1的设置来控制扬声器的开通和关断,而其发音频率可以通过对8253通道2的计数初值的设置来控制。所设计程序的任务就是要通过对按键的判断来设置8255的PB0和PB1输出电平的高低,以及8253通道2计数初值的设置。计数初值
4、N=时钟频率/音阶频率.各音阶的频率如下表所示。音符 1234567频率(低)131147165175196220247频率(中)262294330349392440494频率(高)5245886606987848809888255工作原理PC机内8255的A口,B口,C口和控制口的端口地址分别为:60H,61H,62H,63H。8253工作原理D7D6D5D4D3D2D1D0PC机内8253的通道0,通道1,通道2,控制口的端口地址分别为:40H,41H,42,43H。因为扬声器是由通道2来控制的,故应选择通道2,工作方式选为方式3,输出的信号则为方波信号。2.程序流程图 Y NY N Y音
5、乐播放子程序流程图YN发音子程序流程图 在弹奏和演奏时都需调用发音子程序,发音子程序的作用是控制扬声器的发音,其流程图如下: 三. 课程设计过程及结果 DATA SEGMENTINFO1 DB 0AH, 0DH, WELCOME YOU TO COME HERE!$ DB 0AH, 0DH, THIS IS A MUSIC PROGRAM!$ DB 0AH, 0DH, PLEASE SELECLT!$INFO2 DB 0AH, 0DH, INPUT ERROR!$INFO3 DB 0AH, 0DH, PLEASE INPUT AGAIN!$MUSLIST DB 0AH, 0DH, = DB 0
6、AH, 0DH, Press1 taihuchuan DB 0AH, 0DH, Press2 SCALE PLAY DB 0AH, 0DH, Press3 or ctrl+C EXIT DB 0AH, 0DH, = DB 0AH, 0DH, $MUS_FRQ1 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,332,262,-1 MUS_TIM1 DW 3 DUP(50),25,25,50,25,25,100 DW 2
7、 DUP(50,50,25,25),100 DW 3 DUP(50,25,25),100TABLE DW 262, 294, 330, 349, 392, 440, 494, 525 NUMB DB 0AH, 0DH, Keyboard number 18 keys play notes of the scale DB 0AH, 0DH, Enter to exit DB 0AH, 0DH, $DATA ENDSSTACK SEGMENT PARA STACK STACK STA DB 200 DUP(STACK) STACK ENDSCODE SEGMENTASSUME DS: DATA,
8、SS: STACK, CS: CODE, ES: DATASTART: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AXSHOW MACRO B MOV DX, OFFSET B MOV AH, 09H INT 21HENDM SHOW INFO1 LOP: SHOW MUSLIST MOV AH, 01H INT 21H CMP AL, 33H JZ RETU CMP AL, 31H JNZ B0 CALL MUSIC1 JMP EXIT1B0: CMP AL, 32H JNZ EXIT SHOW NUMB CALL MU
9、SIC2EXIT1: SHOW INFO3 JMP LOPEXIT: SHOW INFO2 SHOW INFO3 JMP LOPRETU: MOV AX, 4C00H INT 21HMUSIC1 PROC LEA SI, MUS_FRQ1 LEA BP,DS: MUS_TIM1FREQ1: MOV DI, SI CMP DI,-1 JE END_MUS1 MOV BX, DS: BP CALL GENSOUND ADD SI,2 ADD BP,2 JMP FREQ1 END_MUS1:RETMUSIC1 ENDPMUSIC2 PROC NEAR PUSH AX PUSH BX PUSH CXL
10、OP1: MOV AH, 01H INT 21H CMP AL, 0DH JE EXIT2 CMP AL, 31H JB LOP1 CMP AL, 38H JA LOP1 AND AX, 0FH SHL AX, 1 SUB AX, 2 MOV SI, AX MOV BX, OFFSET TABLE MOV DI, BXSI MOV BX, 100 CALL GENSOUND JMP LOP1EXIT2: POP CX POP BX POP AX RETMUSIC2 ENDPGENSOUND PROC PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV AL,
11、 0B6H OUT 43H, AL MOV DX, 12H MOV AX, 533H*896 DIV DI OUT 42H, AL MOV AL, AH OUT 42H, AL IN AL, 61H MOV AH, AL OR AL, 3 OUT 61H, AL PUSH AXWAIT1: MOV CX,6000 DELA1: IN AL, 61H AND AL, 10H CMP AL, AH JE DELA1 MOV AH,AL LOOP DELA1 DEC BX JNZ WAIT1 POP AX MOV AL, AH OUT 61H, AL POP DI POP DX POP CX POP
12、 BX POP AX RETGENSOUND ENDPCODE ENDSEND START程序运行结果键入数字1,演奏歌曲欢乐颂键入数字2,执行弹奏功能,数字1-8为简谱里的1.2.3.4.5.6.7.1四.课程设计的心得与体会通过整整一个星期的摸索和编程,查资料,终于把程序完成了,虽说程序总体并不是我们设计的,但是和同学们一起发现问题,分析问题,解决问题,也收获了不少,我们的编程技术都有所提高,上课时有些懵懂的知识,在这次课设中,也有了更深的理解。最开始听到仿真电子琴是茫然的,到最后可以自己编曲,弹奏,感到很有成就感,在课设中也充满了乐趣。我也体会到要提高自己的编程能力,扩展自己的知识,就必须去实践,用你所学的知识,和你所查得不知道的知识做一些实物,这样才会得到提高。五.参考文献1.汇编语言程序设计教程(周艳萍 邹伟著) 清华大学出版社。2.刘卫国,陈昭平,张颖.MATLAB程序设计与应用.北京:高等教育出版社,2002年3. PC机汇编语言实战精解(李春生著) 南开大学出版社。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1