您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 80第六章 输入输出与接口技术2
§6.4数字通道接口•当CPU与外设交换的信息为数字量时该接口为数字通道接口。•因为CPU和外设速度上的差异,因此,在传输过程中或者事先将数据由锁存器“锁住”,然后再由微处理器或I/O接口按自身的定时要求将数据取走;或者,直接经缓冲器通路按时序规定传输。总之,数据是不可能长时间地“停留”在数据总线上的。所以数据交换中常使用锁存器或寄存器,三态缓冲器件。一般输出需要锁存,输入需要三态缓冲隔离。•外设输入的数据和状态都要经过三态缓冲器和数据总线送到CPU。通常,挂在总线上的缓冲器都有三态输出能力,当CPU或I/O口需要输送数据时,才有允许信号开门,将数据送往数据总线。•常用的三态缓冲器芯片有:74LS2458总线传送接收器,非反相三态输出接收器。∵可双向传送。∴除允许控制端G外,还有方向控制端DIR74LS2448总线缓冲器,非反相三态输出。内部由二组三态门组成,每组4个三态门,共用输出允许G。一.三态缓冲器功能表A(1A,2A)数据输入Y(1Y,2Y)数据输出G(1G,2G)AY输出允许244与245的区别是:一个双向传送,一个单向传送。∴245多一个方向控制DIR。74LS240-8总线缓冲器,反相三态输出。74LS125-4总线缓冲器,非反相三态输出。74LS365-6总线缓冲器,非反相三态输出。还有很多缓冲器,主要区别是输出反相或不反相以及开门信号G是高电平或低电平有效。锁存器与触发器的区别:锁存器:当允许端G有效时,Q输出将跟随数据D输入,此时它好比一个“直通门”;一旦允许失效时,锁住此时的数据信息。触发器:由边沿触发,如在时钟有上升沿,Q输出为D输入状态。寄存器:寄存器可由触发器构成,也可由锁存器构成。常用芯片:74LS3738D(透明)锁存器,即选通端G为高有效时,Q跟随D输入,一旦失效变为低电平时,锁住此时已建立的数据电平。三态输出,共选通控制,共输出允许OE。二、寄存器:用来锁存或寄存CPU输出的数据、命令或地址。74LS3748D触发器,三态输出,共输出控制,共时钟。•8个触发器都是边沿触发器,即在时钟正跳变时,Q输出将为D输入的逻辑状态。一位逻辑图功能表输出控制时钟输入输出OECLKDQL↑HHL↑LLLLXQ0HXXZ373、374实际上是由寄存器和三态缓冲器组成。∴又称三态缓冲寄存器。即数据进入寄存器后并不立即从寄存器输出,要经过三态缓冲器才能输出。此类三态缓冲寄存器既可作数据输入寄存器,又可作数据输出寄存器。•若将373的锁存允许G一直接高电平,则三态缓冲锁存器即为三态缓冲器;若将373的输出允许OE一直低电平,则三态缓冲锁存器即为三态锁存器。•D7~D08个数据输入端,Q7~Q08个数据输出端。•正边沿触发,低电平清除的8个D触发器构成,即在时钟正跳变时,将D端传到Q端输出。(CLK保持高电平或低电平时,Q状态不变)。•和374的区别:无三态输出控制。•273只能作为输出寄存器,不能作输入寄存器。功能表清除时钟输入输出CLRCLKDQLXXLH↑HHH↑LLHLXQ0•74LS273-8D触发器,共时钟,带清除端,单路输出。一位结构•缓冲器常用作输入接口,而寄存器常用作输出接口。•缓冲器和寄存器的使用主要注意好几个控制信号:•244的允许端G,一般应接一负脉冲将数据输入端传送至输出端送DB,执行IN指令时,由I/O时序可知,产生端口地址信号和IOR信号,将此两信号接至G端即可。三、缓冲器和寄存器的应用INAL,port•273的CLK应出现正跳变时,将D传到Q。•执行OUT指令时,由时序知,产生端口地址信号和IOW信号。将此两信号接到CLK端即可。OUTport,AL简例1、采集8个开关的状态(或8位数字仪表)简单输入接口。接口电路控制程序MOVDX,PORTINAL,DX•如若只检测一个开关的状态:若开关K为OFF(断开)状态,则置TEMP单元为0;若开关K为ON(闭合)状态,则置TEMP单元为1。接口电路控制程序TEMPDB?MOVDX,380HINAL,DXTESTAL,80HJZONOFF:MOVTEMP,0JMPEXITON:MOVTEMP,1EXIT:ret简例2、控制8只发光二极管的亮与灭(简单输出接口)。接口电路控制程序MOVAL,0FHMOVDX,380HNOTALOUTDX,AL对应位为0则亮,为1则灭。•若只控制一个LED闪烁。控制程序MOVDX,380HNEXT:MOVAL,01HOUTDX,ALCALLDELAYMOVAL,00HOUTDX,ALCALLDELAYMOVAH,11INT21HCMPAL,0JZNEXTRET接口电路调用11号功能,判有无键入简例3、输入8个开关的状态,并用LED对应显示开关的状态(输入/输出接口)。控制程序MOVDX,380HINAL,DXOUTDX,AL•此电路是端口地址相同的接口。用IOR/IOW来区分。亦可用不同的端口地址。如PS01G,2G,PS1CLK例1、七段发光二极管显示器接口设计⑴LED显示器是小型微机系统中常用的输出装置。7段LED显示器由7个条形发光二极管和一个圆点发光二极管组成。由各管的亮暗组合成数字或符号。发光二极管有一端连接在一起,构成了共阴极或共阳极显示器,以阴极为例。⑵静态显示接口:显示方式可分为静态显示方式和动态显示方式。若要显示“5”字•。fb则数据为:即字形代码。gdpgfedcbaec01101101→6DH若要显示“0”→3FHdaa控制程序段:MOVDX,260HMOVAL,6DH;若送0,则熄灭OUTDX,AL•此时显示不会很亮,可加反相器增大驱动电流。若使用单个LED一般反过来接。一定要加限流电阻。以上只是显示一位,若显示六位,则需6个I/O口(6个273),若要显示不同数字符号,要用不同的口地址。静态显示N位,则需N×8根I/O口线。(3)动态显示接口•静态显示占有用I/O资源较多,所以在多位显示的实际应用中都使用动态显示方式。•在多位LED显示时,为了简化电路,降低成本,将所有的段选端并联在一起,由一个输出寄存器作I/O口,称为段选寄存器;而所有共阴极点连在一起,由一个输出寄存器作I/O口,称为位选寄存器;所以8位显示器的接口只需两个8位I/O口。由于所有的段选码皆由一个I/O口控制,所以在每一个瞬间,只有一位显示。只要控制显示器逐个循环亮点;适当选择循环速度,利用人眼“视觉暂留”效应,使其看上去好象多位都在显示一样。(扫描显示方式)。动态显示控制6位显示器的接口-P.229.•图中反相器和与非门只是为增加驱动能力。•电路等效为:要使LED亮,段选码Q输出为0。相应的位选码Q输出为1。•欲显示“7”,则段选码为78H。•由此可推得十进制数字0-9的段选码为:40H,79H,24H,30H,19H,12H,02H,78H,00H,18H。•从左至右的位选码:20H,10H,08H,04H,02H,01H。Q5Q4Q3Q2Q1Q0100000左一位亮010000左二位亮001000左三位亮000100左四位亮000010左五位亮000001左六位亮•在程序中,循环送出相应的段选码,位选码,显示一位,延时,再显示下一位。→达到动态显示。•如从键盘输入6位BCD数送图示显示器显示的程序:IBFDB7,?,7DUP(?)SEGPTDB40H,79H,24H,30H,19H,12H,02H,78H,00H,18HMOVDX,OFFSETIBFMOVAH,10键入待显示BCD数INT21HAGAN0:MOVSI,OFFSETIBF+2;设BCD数地址指针MOVAH,20H;置左一位的位码MOVBH,0AGAN1:MOVBL,[SI]取BCD真值→BXANDBL,0FHMOVAL,SEGPT[BX]MOVDX,380H输出相应的段码OUTDX,ALMOVAL,AHMOVDX,384H输出相应的位码OUTDX,ALMOVCX,100延时LOOP$INCSI;修改地址指针SHRAH,1;修改位码ANDAH,AHJNZAGAN1键入的6位数显示完吗MOVAH,0BH;调用11号功能,判有无键入INT21HCMPAL,0JEAGAN0RET例2、按键和键盘接口设计。在计算机应用系统中为了控制系统的工作状态,以及向系统中输入数据,一般设有按键或键盘。如复位键,功能键,数字键等。按键是常用的输入装置。(1)目前,无论是按键或键盘都是利用机械触点的闭合,断开过程产生一个电压信号。但机械点的闭合,断开,均会产生抖动,抖动时间10ms-20ms。键按下开关输出k&&+5v+5vk+5v•因为抖动可能导致错误的读入,所以通常应去抖动。去抖动方法可用软、硬两种方法实现:•软件软件延时,即从检测到有键按下,执行一个10ms~20ms的延时程序,去抖动。•硬件用R-S触发器去抖动。(2)独立式按键接口——每一个按键独立用一根I/O口线,根据I/O口线的状态确定开关状态。需缓冲器隔离。•如需输入8个开关状态ALMOVDX,260HINAL,DX;AL=11111111,则无键入CMPAL,0FFHJENOKEYy1y8D0D7A1A81G2G244IORPORT(260H)+5V(3)行列式键盘接口独立式按键:每一个键必须占用一个I/O口线,在按键较多时,I/O口线浪费较大行列式键盘:一般将若干按键接口组成矩阵式键盘,可有4、16、20、24、64个键等,可构成数字键,功能键,字符键等。下面以4*4的16键为例:•行列式键盘电路原理——按键设在行线和列线交点处,行、列线分别连接到按键开关的两端,列线通过上拉电阻接+5V,被钳在高电平状态。若将行线全部输出低电平(开放全部行),则读入列端口开关状态,若为全1111则无键按下,否则有键按下。当有键入时,再逐行逐列检查,即将行线依次输出低电平0,检查列输入状态,如果为全1111,则按键不在此行;否则在此行,且在与0电平列线相交的那个键对键盘进行扫描。•对键盘进行编码以确定键值——若此按键的位置按列输入值和行输出值进行编码,按键位置与其对应的编码如下:789AB如左上键,列输入值:行输出值:(0为有键入)0111011177H所有键的编码如下:77HB7HD7HE7H7BHBBHDBHEBH7DHBDHDDHEDH7EHBEHDEHEEH若将该键盘矩阵的按键定义为(可理解为键值):789A注:此为人为定义0123456B亦可定义为其他4567123C89AB0FEDCDEF•若将16进制数的顺序0~F所对应的编码7EH~BEH排成一个数据表。存放在某数据区,再根据接口电路,对键盘进行扫描,将所找到的按键的列值和行值组合成一代码,将该代码与数据区的编码表逐一比较;便可确定相应的键值。•如键入2#键:7410D3D2D1D089A56B23CFEDD4D5D6D7如键入2#键的键译码(键分析)流程行输出全0→出口(380H)读入口(384H)全1111?YN有键入逐行扫描0111→(380H)→读(384H)全1111?→1011→(380H)→1101→读(384H)=1011行码列码AH低4位AL高4位Y将行列拚码BDH→AL与键表比较查寻相应键值→BX显示键值例、用上述扫描法,将其键入的16进制数显示的程序:KEYTABDB7EH,7DH,0BDH,0DDH,7BH,0BBH,0DBH,77HDB0B7H,0D7H,0E7H,0EBH,0EDH,0EEH,0DEH,0BEHLOP1:MOVDX,380HMOVAL,0将行线全部置0OUTDX,AL定义0~F的相应键码表MOVDX,384HINAL,DX;读入列值ANDAL,0F0H;取高4位CMPAL,0F0H;是否全“1111”JELOP1;全“1111”则无键入全键盘扫描MOVBX,0;置计数初值MOVAH,77H;检测键盘的行的输出初值LOP2:MOVDX,380HMOVAL,AHOUTDX,AL;输出行值MOVDX,384HINAL,DX;输入列值ANDAL,0F0HCMPAL,0F0H;是否在本行J
本文标题:80第六章 输入输出与接口技术2
链接地址:https://www.777doc.com/doc-3550509 .html