《电子琴课程设计课件》由会员分享,可在线阅读,更多相关《电子琴课程设计课件(70页珍藏版)》请在金锄头文库上搜索。
1、课程设计,题目:基于PC机的电子琴设计 目的:1.掌握PC机扬声器发声原理 2.掌握PC机键盘工作原理 3.掌握中断技术 4.掌握8253,8255,8259等芯片在PC机使用。 5.加强汇编语言编程能力,中断程序编写方法,要求:当按下PC机键盘数字键1-8时,发 低音1,2,3,4,5,6,7,i八个音调。当按下 Q,W,E,R,T,Y,U,I时发中音1,2,3,4,5,6,7,i八 个音调 ,当按下A,S,D,F,G,H,J时发高音 1,2,3,4,5,6,7,i八个音调。按键由中断的方 式直接从并行口8255读取, 由软件实现转 化,从而确定键值,根据键值使8253发不 同频率的音,完成
2、电子琴设计。,PC机中硬件介绍,可编程的定时/计数器 内部有3个16位功能相同独立计数器通道 每个计数器可工作在6种方式 计数频率8253(2MHZ),8254(5MHZ),一、8253在PC/XT机中的应用,PC机中8253的地址为40H43H,通道0:用来做系统一般定时器用,其门控 信号接至高电平,使得计数器0一直工作。 通道0的输出接至系统中断控制器8259的 IRQ0输入,BIOS设定为方式3方波产生器, 初值栽入为0,因此正常情况下每秒产生 18.2的中断,BIOS即利用此周期性的中断来 维持电脑的时间计数,通道1:用来做系统存储器刷新,门控信号输入 接高电平,计数器工作一直有效,P
3、C的BIOS在 启动时设定此通道工作于方式2做比率产生器 用,计数器每15US产生一次存储器刷新信号, 此通道的计数器不允许被使用者加以利用,通道2:用做喇叭驱动,门控输入可以由输出口 (I/O地址61H)的位0加以控制启动或关闭。若 启动,设定为工作方式3做方波产生器可以持续 地由此通道送出固定频率的方波信号至喇叭,驱 动喇叭发出声音,8253的初始化编程步骤: *写入控制字 *写入计数初值,定时时间=时钟脉冲周期*预置计数初值N,控制字寄存器:是一种只写寄存器,由CPU向它 写入控制字,规定各计数器通道工作方式,读写 格式、计数进制。,SC1 SC0 RL1 RL0 M2 M1 M0 BC
4、D,1 BCD码计数 0 2进制计数,000 方式0 001 方式1 X10 方式2 X11 方式3 100 方式4 101 方式5,00 通道0 01 通道1 10 通道2,00 计数器锁存,供CPU读取 01 只读/写计数器低字节 10 只读/写计数器高字节 11 先读/写低字节, 再读/写高字节,MOV AL,10110110B ; 8253计数器2方式3 OUT 43H,AL MOV BX,FRED ;所要分频技术值 MOV AL,BL ;先写低字节 OUT 42H,AL MOV AL,BH ;再写高字节 OUT 42H,AL,二、PC微机键盘及接口 1、PC微机键盘特点 PC微机常用
5、的键盘有101键的增强型键盘和102键的 扩展键盘。不论键数的多少均具有如下特点: 键盘由单片机、译码器和16行X 8列的键开关矩阵 三大部分组成。 按键采用电容开关,即按键时的上下动作使电容 量发生变化,从而实现开关接通或断开的目的。,它是一种由单片机扫描、编码的智能化键盘。但 是,它不能直接提供与键功能对应的键值或键码, 必须由主机在键处理程序中将键盘提供的扫描码 转换为反映键功能的ASCII码。 它是一个与主机箱分开的独立部件,通过一根五 芯电缆与主机相连接。,2.PC微机键盘的功能 串行接受键盘送来的扫描码,完成串并转换后保存 收妥一个键盘扫描码后,立即产生一个中断请求信号 保存的扫描
6、码可供CPU读取,并通过软件进行相应转换处理 接受CPU的命令,输出到键盘,并接受键盘回送的响应信号,SE DS S/P D0 D1 OE CLR CLK G,D CLR R,D CLR R,Q,PCLK,RESET,CLK DATA RESET GND +5V,PB7,PB6,D CLK CLR PR,Q,Q,Q,1,+5V,IRQ1,OA OB,OH,OH,PA7PA6,PA0,+5V,微机键盘接口电路,LS332,LS 332 串并转换电路 D1 串行输入,和接口中DATA连接 OAOH 并行输出,和8255的PA0PA7连接,供CPU读取 OH是中断源,通过中断请求触发器连8259的I
7、RQ1,作为向CPU提出申请的中断源 PB7 允许读取扫描码(为0),清除中断请求信号(高到低跳变) PB6 为1该接口电路能工作 接口中的CLK经过两级同步和LS322的CLK相连。,工作原理: 当PB7和IRQ1为0时,LS322接受串行数据(DATA),实现串并转换。 收到8位扫描码,LS322的OH为1,使得IRQ1有效,向CPU提出中断申请,同时中断请求触发器的Q端输出0,使DI 为0,通知接口暂时不送扫描码。 CPU接受到中断请求信号,通过8255的A口读取数据,并使PB7产生1到0跳变,清除LS322和中断请求触发器。,3.PC机键值的获取,按下一个键时,开关接通,该芯片就产生一
8、 个扫描码(通码), 该扫描码说明了按下的键在键盘上的位置 松开按下的键时,也产生一个扫描码(断码),该扫描码说明了松开的键在键盘上的位置。 扫描码长度为一个字节(16位),通码的第7位为0,断码的地7位为1。 即:断码通码80h(80h相当于二进制1000 0000),三、PC机中的8255,1.8255有3个8位并行口,2. 方式0:基本I/O 方式1:选通I/O 方式2:双向I/O,8255,PA口,PB6,PB7,键盘,PB0,PB1,扬声器,8255在PC机中的地址为60H63H,8255的控制字 1. 方式选择控制字 2. 置位/复位控制字,方式选择控制字,D7 D6 D5 D4
9、D3 D2 D1 D0,C口低4位I/O,1=输入 0=输出,B口I/O,1=输入 0=输出,B口方式,0=方式0 1=方式1,C口高4位I/O,1=输入 0=输出,A口I/O,1=输入 0=输出,A口 方式,00=方式0 01=方式1 1X=方式2,D7=1 标志位,置位/复位控制字,D7 D6 D5 D4 D3 D2 D1 D0,1 置位 0 复位,000 选中PC0 001 选中PC1 111 选中PC7,位选择,任意值,D7=0 标志位,8255初始化 MOV AL,99H;模式0,A口、C口输入 OUT 63H,AL ;B口输出 MOV AL,80H ;PB7=1 OUT 61H,A
10、L MOV AL,40H ;PB7=0,PB6=1 OUT 61H,AL,启动扬声器工作,IN AL,61H ;读PB口当前状态 OR AL,03H ;使PB1、PB0均为1 OUT 61H,AL ;使扬声器发声(开始发音),当然扬声器发声还要控制8253芯片,IN AL,61H ;读PB口当前状态 AND AL,0FCH ;使PB1、PB0均为0 OUT 61H,AL ;8253计数器2,扬声器停止工作,停止扬声器工作,四、PC机中8259,优先级排队管理 接受和扩充外部设备的中断请求 提供中断类型号 进行中断请求的屏蔽和开放,PC机中有2块中断管理芯片:主片、从片,T/C0计时中断 键盘控
11、制器中断 级联中断 串行口2 串行口1 并行口2 软盘控制器 并行口1,08 09 0A 0B 0C 0D 0E 0F,IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7,70 71 72 73 74 75 76 77,INTA,INTA,INTA,INT,INT,INTR,主片,从片,口地址: 20H 21H,口地址: A0H A1H,双片,IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7,IR0IR1IR2IR3IR4IR5IR6IR7,SP/EN,SP/EN,+5V,GND,共15级向量中断,采用两片级连,故CAS2CAS0作互连线,从片的INT直接连到主片的I
12、R2上。 端口地址,主片在020H03F范围内,实际使用020H和021H。从片在0A00BFH范围,实际使用0A0H,0A1H两个端口。 主、从片的中断请求信号均采用边沿触发。 采用完全嵌套方式,优先级的排列次序为0级最高,依次为1级,8-15级,然后是3-7级。 采用非缓冲方式,主片的SPEN端接+5V,从片SPEN端接地。 设定0级-7级对应主片的中断号为8HOFH,8级15级对应从片的中断号为70H77H。,五、 8259A的编程方法,1.如何对8259进行初始化?,8259的命令字分为初始化命令字和操作方式命令字两种 (1)4个初始化命令字ICW1、ICW2、ICW3和ICW4 (2
13、)3个操作方式命令字OCW1、OCW2和OCW3,对8259的初始化是通过CPU对8259A送控制命令字实现的。对于只占两个I/O地址的8259A,CPU对8259A各寄存器的读写是I/O地址和数据配合完成的,注意:初始化命令字只发一次, 操作命令字可以重置,以动 态改变8259A的操作与控制方式,2、PC机对主片8259A各寄存器的选定:(PC机上的8259A的I/O地址为20H和21H) (1)对于4个初始化命令字的选定: ICW1:0020H A0=0,D4=1 ICW2:0021H A0=1 ICW3:0021H A0=1,ICW1中SNGL(D1)位=0 ICW4:0021H A0=
14、1,ICW1中IC4(D0)位=1 按照ICW1-ICW4的顺序写入 (2)对于操作方式命令字的选定 OCW1:0021H A0=1 OCW2:0020H A0=0,D3D4=0 0 OCW3:0020H A0=0,D3D4=1 0,3、初始化命令字,初始化命令字ICW1写入后,8259A内部完成初始化过程: A、使8259A对中断请求信号边沿检测电路复位,以使它在中断请求信号由低变高时,才能产生中断。 B、清除中断屏蔽寄存器,设置中断优先级排队。,ICW1,ICW2,ICW3,A0,D7 D6 D5 D4 D3 D2 D1 D0,ICW3 中断级联方式的设置,主片,Si表示IRi有中断请求,
15、ICW3,A0,D7 D6 D5 D4 D3 D2 D1 D0,从片,从片标志码,ICW3在ICW1中D1=1时有效,紧跟在ICW2后,IR7 IR0,SP/EN,CS A0 INTA INT,CS0CS2,IR7 IR0,SP/EN,CS A0 INTA INT,CS0CS2,IR7 IR0,SP/EN,CS A0 INTA INT,CS0CS2,数据总线,控制总线,地址总线,8259主从级联,GND,GND,VCC,ICW4,全嵌套方式:高级中断可打断正在处理的中断,优先处理更高级的中断。,特殊全嵌套方式:对于级联方式,主8259A把从同一从8259A来的不同级别的中断请求认为是同级的。在8259A级联时,若主片处