Professional Documents
Culture Documents
c
c
INTRODUCCIÓN
El circuito de control dispone de dos pulsadores marcha y paro, dos interruptores de fin de
carrera y dos led indicadores. El circuito de potencia activa un motor de corriente continua
alimentado con una fuente externa de 12 voltios. La conexión entre ambos circuitos se
realiza a través de dos opto-acopladores que generan una señal lógica de dos bits, cuyos
cuatro estados gobiernan el motor cc.
ESQUEMA CONTROLADORA
Estos esquemas muestran los circuitos de entrada de los pulsadores e interruptores marcha-
paro: un circuito anti-rebotes utilizando un disparador 7414 y un flip-flop con un par de
puertas nand 7400.
Las salidas de estos circuitos se leen mediante los bits D3,D4,D5 y D7 del puerto de estado.
{bml S1YS2.bmp}
Este otro esquema muestra el diagrama lógico del circuito que controla el motor cc (como
la alimentación es de 12 V se utilizan puertas cmos 4011 (nand) y una 4030 (xor).
El control se realiza mediante los bits D0 y D1 del puerto de datos del ordenador.
Para leer la información del dispositivo conectado al PC, se utiliza el puerto de estado
(dirección 379 hexadecimal) leyéndose los bits d7, d5,d4 y d3.?
En la imagen puede verse cómo se aplica una máscara al byte de estado (10111000) para
obtener la información de estos bits únicamente.
Las salidas del programa se envían a la controladora utilizando los bits de menor peso (d0 y
d1) del puerto de datos (dirección 378h) para controlar la dirección del motor, y los bits d2
y d3 para activar dos leds o indicadores.
!"#
ASCENSOR ESCALERA
PUERTA AUTOMATICA
$ %" #"#
program ESCALERA;
uses crt,dos,TEXTLIB;
var x,n,s:integer;
B,A,BB:BYTE;
C:CHAR;
V ,V,S ,S:boolean;
VERTOiN,VERTOouT:word;
function d7(b:byte):byte;assembler;
asm
XOR AX,AX
MOV AL,B
AND AL,$80
end;
function d6(b:byte):byte;assembler;
asm
XOR AX,AX
MOV AL,B
AND AL,$40
end;
function d5(b:byte):byte;assembler;
asm
XOR AX,AX
MOV AL,B
AND AL,$0
end;
function d4(b:byte):byte;assembler;
asm
XOR AX,AX
MOV AL,B
AND AL,$ 0
end;
function d3(b:byte):byte;assembler;
asm
XOR AX,AX
MOV AL,B
AND AL,$08
end;
function d(b:byte):byte;assembler;
asm
XOR AX,AX
MOV AL,B
AND AL,$04
end;
function d (b:byte):byte;assembler;
asm
XOR AX,AX
MOV AL,B
AND AL,$0
end;
function d0(b:byte):byte;assembler;
asm
XOR AX,AX
MOV AL,B
AND AL,$0
end;
BEGIN
{repeat
b:=LEEHIGHNIBBLE(b);
CLRSCR;
WRITELN;
WRITELN;
gotoxy(0, );
GOTOXY(40,8);WRITELN('Vuerto: ',VERTOout);
CSROFF;clrscr;
B:=0;
V :=false;
V:=false;
GOTOXY(8,); WRITE('
__________________________________________________');
{c:=#3;}
BEGIN
c:=#3;
IF KEYVRESSED THEN
begin
c:=readkey;
end;
b:=port[VERTOin]; { $379];}
begin
V :=false; V:=false;
end;
begin
port[VERTOout]:= 5;
V :=false; V:=false;
end;
if V then port[VERTOout]:=5;
if V then port[VERTOout]:= 0;
a:= port[VERTOout];
writeln;
writeln('--------');
END;
C:=READKEY;
CSRON;
END.
false = 0
true = -
CLS
VRINT
VRINT
LOCATE , 0
c$ = ""
'C$ = INKEY$
CLS
b = 0
V = false
V = false
LOCATE , 8: VRINT "' CONTROLADORA MOTOR (ESCALERA,VERTA
ATOMATICA..)');"
LOCATE 3, 8: VRINT "' : Vort LVT : Vort LVT S: subir B: bajar ESC:
Salir');"
'{c:=#3;}
c$ = CHR$(3)
c$ = INKEY$
b = INV(VERTOin)' { $379];}
b = b OR BB'{activar bits D5 o D4 V o V !}
A = INV(VERTOout)
LOCATE , 0: VRINT "D7 "; b AND 8; " "; A AND 8; " "; s ; " "; s;
" ";
LOCATE , 0: VRINT "D6 "; b AND 64; " "; A AND 64; " ";
LOCATE 3, 0: VRINT "D5 "; b AND 3; " "; A AND 3; " ";
LOCATE 4, 0: VRINT "D4 "; b AND 6; " "; A AND 6; " ";
LOCATE 5, 0: VRINT "D3 "; b AND 8; " "; A AND 8; " ";
LOCATE 6, 0: VRINT "D "; b AND 4; " "; A AND 4; ' ';
LOCATE 7, 0: VRINT "D "; b AND ; " "; A AND ; " ";
LOCATE 8, 0: VRINT "D0 "; b AND ; " "; A AND ; " ";
VRINT
VRINT "--------"
WEND
c$ = ""
WHILE c$ = "": c$ = INKEY$: WEND