Академический Документы
Профессиональный Документы
Культура Документы
ARMADAS “ESPE”
MIRCROPROCESADORES
Tema:
FABRICA HYNDAI MOTORS CON 8086
Nombre:
Jácome Nicolás
Docente:
Ing. Miroslava Aracely Zapata Rodríguez
NRC:
2085
The following project shows the development of communications serially (DB9) and
parallel (DB25) in conjunction with Visual Basic, Proteus and assembly language
programmed in the software emu8086
Keywords: 8086, VisualBasic ,Assembler Language
Resumen
3. Diagrama de Bloques
MICRO
8086
4. Funcionamiento
4.1 Visual Basic:
Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As
Integer) As Integer
Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer,
ByVal Value As Integer)
Comunicación Serial:
En esta etapa habilitamos los puertos es decir programamos para que el puerto se abra
o se cierre para esto es necesario importar las librerías de comunicación serial
arrastrando el siguiente icono hacia el frame de programación.
Enviar:
Muy bien cuando el botón enviar sea presionado se enviaran los datos en la variable textout
o texto de salida este paso es muy importante ya que tenemos un frame de recibir entonces
con las instrucción PUERTOENVIAR:Output=textout estamos asignando valores a uno de los
COM seleccionados para luego ser enviados hay que recordar que la comunicación serial
utiliza el prototipo 1N81 y la velocidad recomendada son 9600 baudios o bits por segundo.
La interfaz grafica programada para el envío tiene campos necesarios para la fabricación de un
carro al seleccionar el puerto COM y presionar el botón conectar podemos ya realizar el envio
de datos de manera serial .
4.1.3. Frame Recibir:
Para almacenar los datos enviados en el frame de envío utilizaremos una tabla que
sirve como una base de datos en donde se iran almacenando los autos creados con
sus diferentes características , como se observa en el siguiente código lo que
hacemos para modificar la tabla es asignar el valor de columnas (Col) y el valor
de filas (Row) además asignaremos un titulo a cada parámetro con la instrucción
LISTADO.Text=”Al texto deseado” , es necesario asignar el valor de 1 a la
variable para que cuando llegue un nuevo dato este se almacene en la siguiente
fila
Pues bien de esta menera realizamos la recepción con comunicación serial es decir
al igual que en el frame de envío debemos definir la librería Serial Port y asignar
un COM especifico pero los datos que llegan por el puerto serial están
almacenados en la variable txtin y simplemente iremos separando el string
recibido con el comando Split(txtin,”_”)(Posición del String) de esta manera
podemos almacenar cada dato recibido en una nueva variable para después
manipularlo
Una vez iniciado el programa damos clic en la opción new nos desplegara la siguiente
ventana:
Damos clic en la opción COM y damos clic en OK una vez creado el archivo generara
por defecto las sentencias de control del ensamblador.
Figura 4. Ventana de código en EMU 8086
Como primer paso en la programación del control del motor a pasos se va a declarar
todas las variables que se va a utilizar para esto se digitamos el siguiente comando:
Donde IOA, IOB, IOC representa el puerto A, puerto B, puerto C respectivamente del
integrado 8255.
EQU: Define nombres simbólicos que representan valores u otros valores simbólicos.
Las dos formas son:
nombre EQU expresión
nuevo_nombre EQU viejo_nombre
D7 D6 D5 D4
0 0 1 1
0 0 1 1
0 0 1 1
0 0 1 0
0 0 1 0
0 0 0 1
0 0 0 0
1 1 1 1
La instruccion mov dx,IOC esta definiendo como salida al Puerto C del controlador 8255,
entonces cuando queremos ingresar un dato en un lcd es importante cambiar de estado
binario al pin enable es decir de 0 a 1 para que de esta forma reconozca la instrucción
deseada
Entonces nos guiamos en la tabla de comandos de inicialización el primer dato a ingresar
es 0011 entonces debemos ir cambiando el ultimo digito de la instrucción de 0 a 1 para
que el estado lógico del enable sea modificado y el dato sea ingresado .
;;;;;;;;;;;;;;;;;;;;;
;LCD inicializador;;;
mov al,0000000b
mov dx,IOC
out dx,al
mov al,1000110b
mov dx,IOC
out dx,al
mov al,1000111b
mov dx,IOC
out dx,al
Entonces para la programación se asignan los pines en el siguiente orden es importante recordar
que en un LCD de 16x2 los datos se ingresan con código hexadecimal
RW , D7 ,D6 ,D5, D4, E(Enable)
De igual manera que para inicializar el LCD es necesario ingresar los datos cambiando el estado
lógico del enable otro aspecto muy importante es que RW debe estar en 1 ya que
empezaremos a escribir en el LCD , en el ejemplo estamos imprimiendo la letra H la cual tiene
por código 01001000 como es una configuración de 4 bits se ingresan los primeros 4 bits y
después los restantes .
Con el comando mov dx,IOA estamos definiendo al puerto A como entrada y es aquí
donde lee los datos enviado desde visual a proteus de manera paralela , con la
Instrucción mov dx,IOB estamos asignando al Byte de salida el puerto B
mov al,0001010b
mov cl,al
MOV DX,IOA ;Se lee el Byte del puerto "A"
IN AL,DX
MOV BL,AL
salida:
mov dx,IOB ;Le asignamos el Byte de salida del puerto "B"
out dx,al ;SALIDA
4.3 Circuito en Proteus:
BLOQUE B
BLOQUE A
BLOQUE C
4.4.1. BLOQUE A
Ilustración 8 Bloque A
Pues bien este bloque es el encargado del control de todo el sistema del circuito primero
empezaremos definiendo que es el controlador de puertos 8255
A1 A0 PORT SELECTED
0 0 PUERTO A
0 1 PUERTO B
1 0 PUERTO C
1 1 REGISTRO DE CONTROL
Para el 8086 se debe cargar el programa que se genera al compilar el EMU8086 en el formato
COM de la siguiente manera dando doble click en el integrado del 8086 se abrirá la siguiente
pestaña.
Ilustración 9 Seleccion archivo COM
De esta manera simulamos el puerto paralelo en Proteus , es importante señalar que ese solo
funcionara si la computadora tiene un puerto paralelo físico y cuenta con Windows XP.
4.4.2. BLOQUE B
La explicación de este bloque es simple como sabemos para acceder a una memoria se deben
ingresar combinaciones estas combinaciones básicamente son números binarios esto se puede
hacer de manera manual pero lo optimo en este proyecto seria hacerlo de manera automática
así que usamos contadores (74Ls193) que son contadores de 1 a 15 en binario , así accedemos
a las localidades de la memoria los MUX(74157) clasifican el conteo según lo que el el frame de
Recibo envié por el puerto paralelo para así imprimir la información correcta de una localidad
4.4.2. BLOQUE C
De igual forma la explicación de este bloque es de funcionamiento mas que de diseño ya que el
proceso lo realiza el microprocesador 8086
Ilustración 12 Tracción
Aquí se indica si el vehículo a crear es de tracción 4x4 o 4x2 mediante 2 displays de 7 segmentos.
Ilustración 13 Modelo
Este bloque está relacionado directamente con el bloque B ya que con los contadores podemos
acceder a las localidades de memoria en donde se han guardado las palabras deseadas para esto
es necesario programar la memoria con ayuda de cualquier software de programación.
Es necesario explicar como se forma cada letra el primer paso es definir el orden de los pines
que queremos programar el orden utilizado fue el siguiente.
abcdefg
En donde según la letra que queramos formar vamos a dar el valor de 1 a cada segmento
ejemplo para formar la letra H
Tabla 3 Configuración de letras
a b c d e f g
0 1 1 0 1 1 1
Ilustración 15 Letra H 7 segmentos
Luego ese dato tenemos que trasformar a hexadecimal y luego programar en la memoria
En esta parte del circuito si el vehículo seleccionado tiene color rojo encenderemos un dislpay
de 7 segmentos rojo y caso contrario un display de color verde los MUX (74157) utilizados
tienen la función de decidir que color a ingresado el usuario y van conectados directamente al
8255.
6. Conclusiones y Recomendaciones
6.1 Conclusiones
6.2 Recomendaciones
Para la comunicación serial verificar que los puertos virtuales este conectados
entre si
7. Bibliografía