您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机原理课设-电子琴
太原理工大学现代科技学院微机原理与接口技术课程设计设计名称:电子琴指导老师:------设计者姓名:------专业班级:自动化09-学号:-----------设计时间:2011.12设计模拟电子琴摘要:本文通过8255和8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。输入部分:主要是由8255和8个常开型开关来完成。发音部分:CUP通过对定时器8253的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。本文用到的是8253的方式3——方波发生器。关键词:8253定时器;8255;电子琴1.引言8253芯片是常用的可编程计数器,在微机中有着极其重要的作用。常用于事件计数器,单稳态触发器,分频器,方波发生器,硬件触发的单脉冲发生器等。计数器/定时器8253包括3个独立的16位计数器通道,而每个计数器都有6种工作方式,可以按二进制或十进制(BCD码)进行计数。本文用到的是8253的方式3——方波发生器来实现了简易电子琴的设计。2.18253简介8253为可编程定时/计数器,一片8253上有3个独立的16位计数器通道,可以作为定时器或计数器使用,每个计数器都可设定为按照二进制或BCD码进行计数,计数速率可达2MHZ,每个计数器有6种工作方式,可编程设置和改变。如下图为8253的内部结构图。在图中可以清楚地看到,8253主要是由数据总线缓冲存储器,读写控制电路,控制字寄存器和3个通道4部分所组成。8253内部结构【1】(如图1所示)及外部引脚【1】(如图2所示):图1:8253内部结构图图2:8253引脚图8253的控制字和编程【1】如图3所示图3:8253控制字2.28253的工作方式3——方波发生器【1】方式3的波形如图4所示,它的特点是:(1)输出为周期性的方波。若计数值为N,则输出方波的周期是N个CLK脉冲的宽度。(2)写入控制字后,输出将变为高电平,当写入计数初值后,就开始计数,输出仍为高电平;当计数到初值的一半时,输出变为低电平,直至计数到0,输出又变为高电平,重新开始计数。(3)若计数值为偶数,则输出对称方波;如果计数值为奇数,则前(N+1)/2个CLK脉冲期间输出为高电平,后(N-1)/2个CLK脉冲期间输出为低电平。(4)GATE信号能使计数过程重新开始,GATE=1允许计数,GATE=0禁止计数。停止后OUT将立即变高电平,当GATE再次变高以后,计数器将自动装入计数初值,重新开始计数。图4:8253工作方式3波形3.8255的简介【2】8255是一个40引脚的双列直插式集成电路芯片。按功能可把8255分为三个逻辑电路部分,即:口电路、总线接口电路和控制逻辑电路。8255共有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。总线接口电路用于实现8255和单片微机的信号连接。其中包括:数据总线缓冲器,读/写控制逻辑,控制逻辑电路。内部的结构如图5所示8255A的方式控制字如图6所示图5:8255结构图4.用8235和8255设计简易电子琴设计任务与要求以K1-K8接8255的A口做为电子琴的键盘分别输入静音、do、re、mi、fa、sol、la、si的音,以8255的B口作为输出。用8253定时器产生频率控制扬声器发生。1.以8255接八个开关K1-K8,做电子琴按键输入。2.以8253控制扬声器,发出相应的音阶。要求:K1—静音K2—发si的音493HzK3—发la的音440HzK4—发sol的音392HzK5—发fa的音349HzK6—发mi的音329HzK7—发re的音293HzK8—发do的音261Hz设计原理【3】:通过8255和8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。输入部分:主要是由8255和8个常开型开关来完成。发音部分:CUP通过对定时器的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此图6:8255A的方式控制字产生其他频率的计数值就可由下式计算计数值=533H*896/f=1234DCH/f当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。显然只有PB0和PB1都是1时,才能使扬声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。执行2801次LOOP指令约需要10MS的时间。因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。(1)程序流程图程序流程图如图7所示:图7:流程图(2)程序清单从60端口读取K1~K8的数据Y判断输入N确定频率计算8253的记数初值8253初始化打开扬声器发声继续判断端口8255初始化关闭扬声器通过8253产生发音所需的频率输出到扬声器发音部分程序源代码如下把计数值送8253前,必须先把8253进行初始化,使其选用通道2,工作在方式3下。MOVAL,0B6HOUT43H,AL;43H为8253的控制字端口计算计数初值,计数值送到8253,用以产生需要的发音频率利用定时器发声。这里是通过硬件即8253定时器产生声音。CUP通过对定时器的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可由下式计算:计数值=533H*896/f=1234DCH/fMOVDX,12HMOVAX,348CHDIVDI;(DI)=频率OUT42H,AL;42H为8253的通道2端口MOVAL,AHOUT42H,AL送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。显然只有PB0和PB1都是1时,才能使扬声器发出声音。INAL,61HMOVAH,ALORAL,3OUT61H,AL;开扬声器控制音长的时间可以简单地通过反复执行指令来得到。我们知道执行2801次LOOP指令约需要10MS的时间。因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。LOOP1:MOVCX,2801;发音时间10msJMPLOOP2LOOP2:PUSHAXLOOP3:INAL,61HANDAL,10HCMPAL,AHJELOOP3MOVAH,ALLOOPLOOP3POPAXDELAY:LOOPDELAY;延时DECBXJNZLOOP1输出61端口的值MOVAL,AHOUT61H,AL5.结论达到题目要求内容,以K1-K8接8255的A口做为电子琴的键盘分别输入静音、do、re、mi、fa、sol、la、si的音,以8255的B口作为输出。用8253定时器产生所需音阶频率控制扬声器发音。参考文献【1】马春燕主编.微机原理与接口技术.电子工业出版社,2010.5【2】马春燕主编.微机原理与接口技术实验与学习指导.电子工业出版社,2007.8
本文标题:微机原理课设-电子琴
链接地址:https://www.777doc.com/doc-3380133 .html