文档介绍:课程设计说明书
题目
姓名
专业
班级
系(部)
指导老师
目录
摘要 1
1 设计任务及要求 2
2 工作原理 2
8253简介 3
8255简介 4
3设计思路 4
程序功能描述 4
程序流程图 5
DOS/BIOS功能调用 6
INT 16H(键盘I/O中断) 6
INT 10H(屏幕及显示器中断) 7
INT 21H(DOS系统功能调用) 8
4 方案比较及论证 8
5 程序源代码及注释 8
6 运行结果分析 11
7 调试过程记录 12
8 课程设计小结 13
参考文献 14
附录 15
摘要
本文通过8255和8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。输入部分主要是由8255和8个常开型开关来完成。发音部分由CUP通过对定时器8253的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。本文用到的是8253的方式3——方波发生器。
在程序设计中,为了避免过于频繁的调用中断显示字符串,应用了宏定义;还通过子程序调用,有效的解决了跳转和转移过多的问题;再加上合理的DOS和BIOS功能调用,以及各种指令的综合,最终作出了漂亮的电子琴界面,并实现了电子琴演奏高、中、低音,以及播放预存乐曲的功能。
关键词:电子琴 8253定时器 8255 DOS调用宏定义
1 设计任务及要求
初始条件:用汇编语言设计一个电子琴,在屏幕上显示出来,界面要美观,功能上模拟现实电子琴功能。
要求完成的主要任务:。其中弹奏:用户每按一琴键弹奏相应音符;演奏:按下某键后自动弹奏预存琴谱功能;还可以附加变调
。
2 工作原理
PC机扬声器电路以及相关接口电路如图2-1。
图2-1 PC机扬声器电路及相关接口电路
通过8255和8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。
输入部分:主要是由8255和8个常开型开关来完成。
发音部分:CUP通过对定时器的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。
当通道2用于发声时,采用的是方式3,在方式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255(端口地址为
61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。显然只有PB0和PB1都是1时,才能使扬声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。
8253简介
8253芯片是常用的可编程计数器,在微机中有着极其重要的作用。常用于事件计数器,单稳态触发器,分频器,方波发生器,硬件触发的单脉冲发生器等。计数器/定时器8253包括3个独立的16位计数器通道,而每个计数器都有6种工作方式,可以按二进制或十进制(BCD码)进行计数。本文用到的是8253的方式3——方波发生器来实现了简易电子琴的设计。
8253的方式控制字如图2-2所示。
图2-2 8253的方式控制字
8253的工作方式3——方波发生器:
它的特点是:
(1)输出为周期性的方波。若计数值为N,则输出方波的周期是N个CLK脉冲的宽度。
(2)写入控制字后,输出将变为高电平,当写入计数初值后,就开始计数,输出仍为高电平;当计数到初值的一半时,输出变为低电平,直至计数到0,输出又变为高电平,重新开始计数。
(3)若计数值为偶数,则输出对称方波;如果计数值为奇数,则前(N+1)/2个CLK脉冲期间输出为高电平,后(N-1)/2个CLK脉冲期间输出为低电平。
(4)GATE信号能使计数过程重新开始,GATE=1允许计数,GATE=0禁止计数。停止后OUT将立即变高电平,当GATE再次变高以后,计数器将自动装入计数初值,重新开始计数。
8255简介
按功能可把8255分为三个逻辑电路部分,即:口电路、总线接口电路和控制逻辑电路。8255共有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。
8255A的方式控制字如图2-3所示。
图2-3 8255A的方式控制字
3设计思路
程序功能描述
程序开始,显示电子