第六章 输入输出与接口技术_第1页
第六章 输入输出与接口技术_第2页
第六章 输入输出与接口技术_第3页
第六章 输入输出与接口技术_第4页
第六章 输入输出与接口技术_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6.4 数字通道接口,当CPU与外设交换的信息为数字量时该接口为数字通道接口。 因为CPU和外设速度上的差异,因此,在传输过程中或者事先将数据由锁存器“锁住”,然后再由微处理器或I/O接口按自身的定时要求将数据取走;或者,直接经缓冲器通路按时序规定传输。总之,数据是不可能长时间地“停留”在数据总线上的。所以数据交换中常使用锁存器或寄存器,三态缓冲器件。一般输出需要锁存,输入需要三态缓冲隔离。,外设输入的数据和状态都要经过三态缓冲器和数据总线送到CPU。通常,挂在总线上的缓冲器都有三态输出能力,当CPU或I/O口需要输送数据时,才有允许信号开门,将数据送往数据总线。 常用的三态缓冲器芯片有: 7

2、4LS2458总线传送接收器,非反相三态输出接收器。可双向传送。除允许控制端G外,还有方向控制端DIR 74LS2448总线缓冲器,非反相三态输出。内部由二组三态门组成,每组4个三态门,共用输出允许G。,一三态缓冲器,功能表 A(1A,2A) 数据输入 Y(1Y,2Y) 数据输出 G(1G,2G)AY输出允许 244与245的区别是:一个双向传送,一个单向传 送。245多一个方向控制DIR。 74LS2408总线缓冲器,反相三态输出。 74LS1254总线缓冲器,非反相三态输出。 74LS3656总线缓冲器,非反相三态输出。 还有很多缓冲器,主要区别是输出反相或不反相以及开门信号G是高电平或低

3、电平有效。,锁存器与触发器的区别: 锁存器:当允许端G有效时,Q输出将跟随数据D输入,此时它好比一个“直通门”;一旦允许失效时,锁住此时的数据信息。 触发器:由边沿触发,如在时钟有上升沿 ,Q输出为D输入状态。 寄存器:寄存器可由触发器构成,也可由锁存器构成。 常用芯片: 74LS3738D(透明)锁存器,即选通端G为高有效时,Q跟随D输入,一旦失效变为低电平时,锁住此时已建立的数据电平。三态输出, 共选通控制,共输出允许OE。,二、寄存器: 用来锁存或寄存CPU输出的数据、命令或地址。,74LS3748D触发器,三态输出,共输出控制, 共时钟。 8个触发器都是边沿触发器,即在时钟正跳变时,Q

4、输出将为D输入的逻辑状态。 一位逻辑图 功能表,输出控制 时钟 输入 输出 OE CLK D Q L H H L L L L L X Q0 H X X Z,373、374实际上是由寄存器和三态缓冲器组成。 又称三态缓冲寄存器。即数据进入寄存器后并不立即从寄存器输出,要经过三态缓冲器才能输出。此类三态缓冲寄存器既可作数据输入寄存器,又可作数据输出寄存器。 若将373的锁存允许G一直接高电平,则三态缓冲锁存器即为三态缓冲器;若将373的输出允许OE一直低电平,则三态缓冲锁存器即为三态锁存器。,D7 D0 8个数据输入端,Q7 Q0 8个数据输出端。 正边沿触发,低电平清除的8个D触发器构成,即在时

5、钟正跳变 时,将D端传到Q端输出。 ( CLK保持高电平或低电平时,Q状态不变)。 和374的区别:无三态输出控制。 273只能作为输出寄存器,不能作输入寄存器。,功能表 清除 时钟 输入 输出 CLR CLK D Q L X X L H H H H L L H L X Q0,74LS2738D触发器,共时钟,带清除端,单路输出 。,一位结构,缓冲器常用作输入接口,而寄存器常用作输出接口。 缓冲器和寄存器的使用主要注意好几个控制信号: 244的允许端G,一般应接一负脉冲将数据输入端传送至输出端送DB,执行IN指令时,由I/O时序可知,产生端口地址信号和IOR信号,将此两信号接至G端即可。,三、

6、缓冲器和寄存器的应用,IN AL,port,273的CLK应出现正跳变时,将D传到Q。 执行OUT指令时,由时序知,产生端口地址信号和 IOW信号。将此两信号接到CLK端即可。,OUT port,AL,简例1、采集8个开关的状态(或8位数字仪表) 简单输入接口。,接口电路 控制程序 MOV DX,PORT IN AL,DX,如若只检测一个开关的状态:若开关K为OFF(断开)状态,则置TEMP单元为0;若开关K为ON(闭合)状态,则置TEMP单元为1。,接口电路 控制程序 TEMP DB ? MOV DX,380H IN AL,DX TEST AL,80H JZ ON OFF:MOV TEMP,

7、0 JMP EXIT ON: MOV TEMP,1 EXIT: ret,简例2、控制8只发光二极管的亮与灭(简单输出接口)。,接口电路 控制程序 MOV AL,0FH MOV DX,380H NOT AL OUT DX,AL 对应位为0则亮, 为1则灭。,若只控制一个LED闪烁。,控制程序 MOV DX,380H NEXT:MOV AL,01H OUT DX,AL CALL DELAY MOV AL,00H OUT DX,AL CALL DELAY MOV AH,11 INT 21H CMP AL,0 JZ NEXT RET,接口电路,调用11号功能,判有无键入,简例3、输入8个开关的状态,并

8、用LED对应显示开关的状态(输入输出接口)。,控制程序 MOV DX,380H IN AL,DX OUT DX,AL 此电路是端口地址相同的接口。用IORIOW来区分。亦可用不同的端口地址。如PS01G,2G,PS1CLK,例1、七段发光二极管显示器接口设计,LED显示器是小型微机系统中常用的输出装置。7段LED显示器由7个条形发光二极管和一个圆点发光二极管组成。由各管的亮暗组合成数字或符号。发光二极管有一端连接在一起,构成了共阴极或共阳极显示器,以阴极为例。,静态显示接口: 显示方式可分为静态显示方式和动态显示方式。,若要显示“5”字,。 f b 则数据为:即字形代码。 g dp g f e

9、 d c b a e c 0 1 1 0 1 1 0 16DH 若要显示“0” 3FH d,a,a,控制程序段: MOV DX,260H MOV AL,6DH ;若送0,则熄灭 OUT DX,AL 此时显示不会很亮,可加反相器增大驱动电流。若使用单个LED一般反过来接。 一定要加限流电阻。,以上只是显示一位,若显示六位,则需6个I/O口(6个273),若要显示不同数字符号,要用不同的口地址。静态显示N位,则需N8根I/O口线。,(3)动态显示接口,静态显示占有用I/O资源较多,所以在多位显示的实际应用中都使用动态显示方式。 在多位LED显示时,为了简化电路,降低成本,将所有的段选端并联在一起,

10、由一个输出寄存器作I/O口,称为段选寄存器;而所有共阴极点连在一起,由一个输出寄存器作I/O口,称为位选寄存器;所以8位显示器的接口只需两个8位I/O口。由于所有的段选码皆由一个I/O口控制,所以在每一个瞬间,只有一位显示。只要控制显示器逐个循环亮点;适当选择循环速度,利用人眼“视觉暂留”效应,使其看上去好象多位都在显示一样。(扫描显示方式)。,动态显示控制6位显示器的接口P.229.,图中反相器和与非门只是为增加驱动能力。,电路等效为: 要使LED亮,段选码Q输出 为 0。相应的位选码Q输出 为1。,欲显示“7”, 则段选码为78H。 由此可推得十进制数字09的段选码为: 40H,79H,2

11、4H,30H,19H,12H,02H,78H,00H,18H。,从左至右的位选码:20H,10H,08H,04H,02H,01H。,Q5 Q4 Q3 Q2 Q1 Q0 1 0 0 0 0 0 左一位亮 0 1 0 0 0 0 左二位亮 0 0 1 0 0 0 左三位亮 0 0 0 1 0 0 左四位亮 0 0 0 0 1 0 左五位亮 0 0 0 0 0 1 左六位亮,在程序中,循环送出相应的段选码,位选码,显示一位,延时,再显示下一位。达到动态显示。 如从键盘输入6位BCD数送图示显示器显示的程序:,IBF DB 7,?,7 DUP(?),SEGPT DB 40H,79H,24H,30H,1

12、9H,12H,02H,78H,00H,18H MOV DX,OFFSET IBF MOV AH,10 键入待显示BCD数 INT 21H,AGAN0:MOV SI, OFFSET IBF+2 ;设BCD数地址指针 MOV AH,20H ;置左一位的位码 MOV BH,0 AGAN1:MOV BL,SI 取BCD真值BX AND BL,0FH,MOV AL,SEGPTBX MOV DX,380H 输出相应的段码 OUT DX,AL,MOV AL,AH MOV DX,384H 输出相应的位码 OUT DX,AL MOV CX,100 延时 LOOP $ INC SI ;修改地址指针 SHR AH,

13、1 ;修改位码 AND AH,AH JNZ AGAN1 键入的6位数显示完吗 MOV AH,0BH ;调用11号功能,判有无键入 INT 21H CMP AL,0 JE AGAN0 RET,例2、按键和键盘接口设计。在计算机应用系统中为了控制系统的工作状态,以及向系统中输入数据,一般设有按键或键盘。如复位键,功能键,数字键等。按键是常用的输入装置。,(1)目前,无论是按键或键盘都是利用机械触点的闭合,断开过程产生一个电压信号。但机械点的闭合,断开,均会产生抖动,抖动时间10ms-20ms。,因为抖动可能导致错误的读入,所以通常应去抖动。去抖动方法可用软、硬两种方法实现:,软件 软件延时,即从检

14、测到有键按下,执行一个 10ms20ms的延时程序,去抖动。 硬件 用R-S触发器去抖动。 (2)独立式按键接口每一个按键独立用一根I/O口线,根据I/O口线的状态确定开关状态。需缓冲器隔离。,如需输入8个开关状态 ALMOV DX, 260HIN AL, DX ;AL=1111 1111,则无键入CMP AL, 0FFH JE NOKEY,(3)行列式键盘接口独立式按键:每一个键必须占用一个I/O口线,在按键较多时,I/O口线浪费较大行列式键盘:一般将若干按键接口组成矩阵式键盘,可有4、16、20、24、64个键等,可构成数字键,功能键,字符键等。下面以4*4的16键为例:,行列式键盘电路原

15、理按键设在行线和列线交点处,行、列线分别连接到按键开关的两端,列线通过上拉电阻接+5V,被钳在高电平状态。若将行线全部输出低电平(开放全部行),则读入列端口开关状态,若为全1111则无键按下,否则有键按下。当有键入时,再逐行逐列检查,即将行线依次输出低电平0,检查列输入状态,如果为全1111,则按键不在此行;否则在此行,且在与0电平列线相交的那个键 对键盘进行扫描。,对键盘进行编码以确定键值若此按键的位置按列输入值和行输出值进行编码,按键位置与其对应的编码如下:,如左上键,列输入值: 行输出值:( 0为有键入) 0 1 1 1 0 1 1 1 77H所有键的编码如下: 77H B7H D7H

16、E7H 7BH BBH DBH EBH 7DH BDH DDH EDH 7EH BEH DEH EEH,若将该键盘矩阵的按键定义为(可理解为键值): 7 8 9 A 注:此为人为定义 0 1 2 3 4 5 6 B 亦可定义为其他 4 5 6 7 1 2 3 C 8 9 A B 0 F E D C D E F,若将16进制数的顺序0F所对应的编码7EHBEH排成一个数据表。存放在某数据区,再根据接口电路,对键盘进行扫描,将所找到的按键的列值和行值组合成一代码,将该代码与数据区的编码表逐一比较;便可确定相应的键值。,如键入2键:,7,4,1,0,D3,D2,D1,D0,8,9,A,5,6,B,2

17、,3,C,F,E,D,D4,D5,D6,D7,如键入2键的键译码(键分析) 流程,行输出全0出口(380H),读入口(384H),全1111?,Y,N有键入,逐行扫描 0111(380H)读(384H),全1111?1011(380H) 1101读(384H)1011,行码,列码,AH低4位,AL高4位,Y,将行列拚码BDHAL,与键表比较查寻相应键值BX,显示键值,例、 用上述扫描法,将其键入的16进制数显示的程序:,KEYTAB DB 7EH,7DH,0BDH,0DDH,7BH,0BBH,0DBH,77H DB 0B7H,0D7H,0E7H,0EBH,0EDH,0EEH,0DEH,0BEH

18、,LOP1: MOV DX, 380H MOV AL, 0 将行线全部置0 OUT DX, AL,定义0F的相应键码表,MOV DX, 384H I N AL, DX ; 读入列值 AND AL, 0F0H ;取高4位 CMP AL, 0F0H ;是否全“1111” JE LOP1 ;全“1111”则无键入,全键盘 扫描,MOV BX, 0 ;置计数初值 MOV AH, 77H ;检测键盘的行的输出初值,LOP2: MOV DX, 380H MOV AL, AH OUT DX, AL ;输出行值 MOV DX, 384H IN AL, DX ;输入列值 AND AL, 0F0H CMP AL,

19、 0F0H ;是否在本行 JNE LOP3 ROR AH, 1 ;本行无键入,则检查下一行 JMP LOP2,逐行 扫描,LOP3: AND AH, 0FH ; 取行输出值 OR AL, AH ; 与列输入值组合代码AL,LOP4: CMP AL, KEYTABBX JE LOP5 INC BX JMP LOP4,LOP5: ADD BL, 30H CMP BL, 3AH ; 将键值转换为 ASCII字符 JC LOP6 ; 09 加30H ADD BL, 7 ; AF 加37H,LOP6: MOV DL, BL MOV AH, 2 显示键入的值 INT 21H RET,将扫描所得的代码 与编

20、码表比较 寻找输入的16进制 数(键值) BX,6.5 模拟通道接口,作用:模拟信号 模拟通道 数字信号 例: 被测对象 传感器 电信号 放大 模拟信号 A/D 数字信号 计算机 数字信号 D/A 模拟信号(控制) 分辨率:n位转换器分辨率为1/2n; 转换时间:完成一次模数或数模转换的时间; 量化误差:实际输出值与理论值之间的误差; 下面介绍两种最常用的D/A,A/D与微机的接口。,一、数模转换器DAC与微机的接口,1D/A与微机接口时,靠OUT指令 将待换的数据送D/A输出接口,而OUT指令送出的数据在DB上的时间是短暂的,所以需要一个数据寄存器暂存数据,供D/A转换。除早期D/A产品需要

21、外接数据寄存器之外,目前D/A芯片内带有数据寄存器,所以可直接与微机接口(通常称为与微处理器完全兼容)。,2DAC08328位电流D/A。内部结构:P222图6-22,由图可知,它由8位输入寄存器,8位DAC寄存器,8位D/A转换器及转换控制电路构成。由二级锁存器构成。,3、DAC0832的引脚功能: 8位数据输入线D7D0; 电流输出端Iout1,Iout2一般Iout1接 运放的输入端,Iout2接模拟地。 Iout1+Iout2=Vref(1-1/28)/R=常数 反馈信号输入端RFB,反馈电阻在片内。 允许输入锁存信号ILE高电平有效。 输入寄存器锁存信号WR1,DAC寄存器写信 号W

22、R2, 传送控制信号XFER,以控制WR2是否起作用。, 片选信号CS,输入寄存器选择信号。 参考输入电压VREF,即基准电压,一般在 -10V+10V。 模拟地AGND,整个电路的模拟地必须在某一点与数字地相接。数字地DGND。通常模数两地相连。,4. DAC 0832与微机接口, 0832内部有输入寄存器,可直接与微机接口。0832为电流输出型D/A,要得模拟电压,必需外加转换电路。 内部有两级数据寄存器,可工作于多种方式直通方式,单缓冲方式,双缓冲方式五个控制信号:ILE,CS,WR1,WR2,XFER的连接方式 不同。, 直通方式,常用于连续反馈控制的环路中;只要由一个ROM连续地向它

23、提供DAC数据,输出就可以直接跟随输入变化。此时无需OUT指令启动转换。由内部结构的控制部分可知: 此时IE=1输出Q跟随输入D。, 单缓冲方式,此时可使两个寄存器的一个始终处于直通状态,而使另一个寄存器受控的锁存器状态。常用于单路应用系统。,如使第一个寄存器 受PSO,IOW的控制状态; 使二个寄存器处于直通状态。,输出锯齿波的程序:,MOV DX,380H MOV AL,O AGAIN: OUT DX,AL INC AL 指向下一个数据 MOV CX,1000 LOOP $ PUSH AX MOV AH,11 INT 21H CMP AL,0 POP AX JZ AGAIN 插入的廷时,可

24、改变锯齿波周期。,锁存一个数据,无键入则继续,锯齿波的数据为0FFH,等待转换结束,(3)、双缓冲方式,两个寄存器都处于受控状态,需要两步写操作来完成,需要两个端口地址以选通CS和选通XFER。这样,可在DAC转换输出前一个数据的同时,将下一个数据送到输入寄存器,可提高DA的转换速度。常用于多路应用系统且要求输出同步的情况。,输出锯齿波程序:,MOV AL,0 AGAIN: MOV DX,380H ;选通输入寄存器,将 OUT DX,AL 转换数据锁存 MOV DX,384H ;选通DAC寄存器,启动 OUT DX,AL D/A转换 INC AL ;修改数据 MOV CX,1000 LOOP

25、$ PUSH AX MOV AH,11 INT 21H CMP AL,0 POP AX JZ AGAIN,无键入则继续,等待转换结束,如产生任一周期信号的程序:,只需在缓冲区存相应数据 如存一个周期的正弦波数据,便可输出正弦波: BUF DB XX,XX, MOV DX,384H COUNT EQU $-BUF OUT DX,AL START:LEA BX,BUF MOV AX,100 MOV CX,COUNT HERE:DEC AX AGAIN:MOV DX,380H JNZ HERE MOV AL,BX INC BX OUT DX,AL LOOP AGAIN 11功能控制转START,廷时

26、以 改变输 出速率,DAC0832控制绘图仪,程序:,HTY PROC PUSH CX PUSH DX MOV DX, 380H OUT DX, AL MOV DX, 384H XCHG AH,AL OUT DX, AL MOV DX, 388H OUT DX, AL MOV CX, 1000 LOOP $ POP DX POP CX RET HTY ENDP,二模数转换器ADC与微机接口,1、A/D与微机接口时,靠OUT指令启动A/D转换, 转换结束后,用IN指令从ADC中读取转换数据输入接口。A/D的数据输出端是否能直接与微机接口,要看A/D内部的输出锁存器是否为三态输出锁存器,若为三态输

27、出,则可与微机DB直接相连;若为非三态输出,则应加三态缓冲隔离。,2、ADC 0808/0809,采用CMOS工艺制成的8位8通道单片A/D转换器。内部结构 P229 图6-30,注:0808和0809的区别在于总的不可调误差(0808为+1/2LSB,0809为+1LSB),所以0809较便宜。,片内有8路模拟开关,模拟开关的地址锁存与译码电路,可选通8路模拟输入的任何一路单端模拟信号,中间部分:包括比较器,256电阻网,树状开关,逐次逼近寄存器SAR,控制与时序,以实 现逐次逼近式A/D即8位A/D。最后结果由三态输出锁存器输出。,3、引脚功能, IN0-IN78个通道的模拟电压输入(0+

28、5V)即单极性输入,由通道ADDA,ADDB,ADDC选择确定。 ADDA,ADDB,ADDC模拟通道的地址选择线; 可由 DB选择通道,不占I/O端口地址;也可由AB选择通道,须8个I/0口地址。 D0-D7数据线输出。 OE输出允许,高电平有效,以打开三态缓冲器,将数据送DB,供CPU读入。, ALE地址锁存允许,上升沿有效,锁存三地址线以选通相应通道。, START启动信号,在模拟通道选通之后,由正脉冲启动A/D转换(START的上升沿使所有内部寄存器清0,下降沿开始A/D转换过程。) EOC转换结束信号,转换时间为100us。在START之后,A/D开始转换,EOC为低电平,表示正在转换,一旦转换结束,EOC变为高电平,表示转换结束。此信号可作为状态查询信号,或用来申请中断。 REF(+),REF(-)基准电源输入。参考电压的精度直接影响转换结果,要求不高时直接接电源。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论