39
PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas Camilo Andrés Infante Z.

PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Embed Size (px)

Citation preview

Page 1: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

PROGRAMANDO ELMICROCONTROLADOR

8051(AT89C52)Aplicaciones Basicas

Camilo Andrés Infante Z.

Page 2: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

SET DE INSTRUCCIONES

Rn = registros R0 a R7 del banco del registro direccionadodirect = dirección del dato de 8 bits de la memoria interna@Ri = Se refiere a los registros R0 y R1, que permiten direccionamiento indirecto#data = Constante de 8 bits#data16 = constante de 16 bitsaddr 16 = dirección destino de 16 bitsaddr 11 = dirección destino de 11 bitsrel = salto relativo en formato de 8 bits comprendido entre -128 a 127 bytes

Page 3: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

SET DE INSTRUCCIONES

Page 4: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

SET DE INSTRUCCIONES

Page 5: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

SET DE INSTRUCCIONES

Page 6: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

SET DE INSTRUCCIONES

Page 7: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

SET DE INSTRUCCIONE

Page 8: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

;Programa que lee el puerto P0 y loescribe en el P1

ORG 0000HINICIO: MOV A,P0

MOV P1,AJMP INICIO

END

Page 9: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

;Programa que lee el estado del pin P0.0y lo refleja en el pin P1.0

ORG 0000HINICIO: JB P0.0,UNOCERO : CLR P1.0

JMP INICIOUNO : SETB P1.0

JMP INICIOEND

Page 10: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

;Programa realiza un parpadeo de un ledconectado al pin P1.0

ORG 0000HINICIO: SETB P1.0

CLR P1.0JMP INICIOEND

Page 11: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

;Programa realiza un parpadeo de un ledconectado al pin P1.0 Si el pin P0.0 seencuentra en 1 de lo contrario el led debepermanecer apagado.

ORG 0000HINICIO: CLR P1.0

JB P0.0,ONJMP INICIO

ON: SETB P1.0JMP INICIO

END

Page 12: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

CICLOS DE MAQUINA

Cuando un procesador ejecuta una instrucción, dicha instrucción requiere deUna cantidad determinada de pulsos de reloj.

En la arquitectura 8051 un ciclo de maquina consiste en una secuencia de 6 estadosnumerados desde S1 hasta S6. Cada estado contiene 2 periodos de oscilación. Si eloscilador es de 12MHz, cada periodo dura 0,083us. Cada ciclo máquina contiene 12periodos de oscilador, tal y como indica la siguiente figura.

S1 S2 S3 S4 S5 S6

Para un cristal de frecuencia 12MHzEl tiempo de Un Ciclo de Maquina se calcula de la siguiente forma:

Tcm = 12 (1/12Mhz) = 1us

Page 13: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Tiempos de la CPU

La ejecución del ciclo máquina comienza en el estado 1 del ciclo máquina, cuando el código deoperación es almacenado en el registro de instrucción. Como norma general una instrucciónnecesita uno o más ciclos máquina, dependiendo de:

a.Código de operación

Por ejemplo, la instrucción INC A tiene 1 byte de instrucción y necesita 1 ciclo máquina, la instrucciónINC DPTR, también, 1 byte de instrucción necesita 2 ciclos máquina (figura b) y la instrucción MULAB, necesita 4 ciclos máquina y ocupa 1 byte de memoria.

b.El número de bytes

Por ejemplo, la instrucción MOV A, #data tiene 2 bytes de instrucción y necesita 1 ciclo máquina. Encambio la instrucción MOV direct,#data, consta de 3 bytes y necesita 2 ciclos máquina

Page 14: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

GENERANDO RETARDOS

En la mayoría de las aplicacionesmicrocontroladas se requiere de controlar eltiempo de ejecución de las diferentes tareasque se realizaran.

Para ello se acostumbra utilizar una subrutinaque genera un retardo de tiempo controlado,dependiendo de ciertos valores cargados en losregistros utilizados en dicha subrutina.

DELAY: MOV R2,#Valor inicialAQUI: DJNZ R2,AQUÍ

RET

Page 15: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

tenemos:

DELAY: MOV R2,#0FFHAQUI: DJNZ R2,AQUI

RET

Análisis

Si se supone que la subrutina se estaejecutandoen un sistema con una frecuencia de 12 MHz

;1 ciclo de maquina;2 ciclos de maquina;2 ciclos de maquina

1 ciclo de maquina = 1us2 ciclos de maquina = 2us

Tiempo = 1us + 2us x R2 + 2us

Como R2 = 255

Tiempo = 513us

Page 16: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Encadenando dos Registros

DELAY: MOV R2,#0FFH ;1 usDEL1: MOV R3,#0FFH ;1usDEL2: DJNZ R3,DEL2 ;2us

DJNZ R2,DEL1 ;2usRET ;2us

Tiempo = 1us + (1us + 2usx R3 + 2us)xR2 + 2us

R3 = 255R2 = 255

Tiempo = 130818us ≈ 130ms

Page 17: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

CONTROLANDO UN MOTORPASO A PASO

Page 18: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

MOTOR PASO A PASO

Los motores paso a paso son ideales parala construcción de mecanismos en dondese requieren movimientos muy precisos.La característica principal de estosmotores es el hecho de poder moverlos unpaso a la vez por cada pulso que se leaplique. Este paso puede variar desde 90°hasta pequeños movimientos de tan solo1.8°, es decir, que se necesitarán 4 pasosen el primer caso (90°) y 200 para elsegundo caso (1.8°), para completar ungiro completo de 360°.

Page 19: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

MOTOR PASO A PASO UNIPOLAR

Motores Unipolares: En este tipo demotores, todas las bobinas del estator estánconectadas en serie formando cuatro grupos.Esta a su vez, se conectan dos a dos, tambiénen serie, y se montan sobre dos estatoresdiferentes, tal y como se aprecia en la Figura.

Según puede apreciarse en dicha figura, delmotor paso a paso salen dos grupos de trescables, uno de los cuales es común a dosbobinados.

Los seis terminales que parten del motor,deben ser conectados al circuito de control, elcual, se comporta como cuatro conmutadoreselectrónicos que, al ser activados odesactivados, producen la alimentación de loscuatro grupos de bobinasconqueestáformado el estator.Si generamos unasecuencia adecuada de funcionamiento deestos interruptores, se pueden producir saltosde un paso en el número y sentido que sedesee.

Page 20: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

MOTOR PASO A PASO BIPOLAR

Motores Bipolares: En este tipo de motores las bobinasdel estator se conectan en serie formando solamente dosgrupos, que se montan sobre dos estatores, tal y como semuestra en la Figura.

Según se observa en el esquema de este motor salen cuatrohilos que se conectan, al circuito de control, que realiza lafunción de cuatro interruptores electrónicos dobles, que nospermiten variar la polaridad de la alimentación de lasbobinas.

Con la activación y desactivación adecuada de dichosinterruptores dobles, podemos obtener las secuenciasadecuadas para que el motor pueda girar en un sentido o enotro.

Page 21: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

CONTROL DE UN MOTOR PASO A PASO UNIPOLAR

Secuencia Normal: Esta es la secuencia más usada y la que generalmenterecomienda el fabricante. Con esta secuencia el motor avanza un paso por vez ydebido a que siempre hay al menos dos bobinas activadas, se obtiene un altotorque de paso y de retención.

D C B A

0 0 1 1

0 1 1 0

1 1 0 0

1 0 0 1

Page 22: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

CONTROL DE UN MOTOR PASO A PASO UNIPOLAR

Secuencia del tipo wave drive: En esta secuencia se activa solo una bobina a lavez. En algunos motores esto brinda un funcionamiento mas suave. La contrapartidaes que al estar solo una bobina activada, el torque de paso y retención es menor.

D C B A0 0 0 10 0 1 00 1 0 01 0 0 0

Page 23: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

CONTROL DE UN MOTOR PASO A PASO UNIPOLAR

Secuencia del tipo medio paso: En esta secuencia se activan las bobinasde tal forma de brindar un movimiento igual a la mitad del paso real. Para ellose activan primero 2 bobinas y luego solo 1 y así sucesivamente.

D C B A

0 0 0 1

0 0 1 1

0 0 1 0

0 1 1 0

0 1 0 0

1 1 0 0

1 0 0 0

1 0 0 1

Page 24: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

CONTROLADO CON EL MICRO AT89C

ORG

2

00H

INICIO: MOV P2,#01HLCALL DELAY

CICLO: MOV A,P2RL AMOV P2,ALCALL DELAYJNB P2.4,CICLOJMP INICIO

CONEXIÓN DE UN MOTOR PASO A PASO UNIPOLAR5

DELAY: MOV R2,#0FFHDEL1: MOV R3,#0FFHDEL2: DJNZ R3,DEL2

DJNZ R2,DEL1RET

END

Page 25: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Decodificador de Display 7 Segmentos

Page 26: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Decodificador de Display 7 Segmentos UsandoEl microcontrolador AT89C52

ORGJMP

0000HINICIO

TABLA1: DB 40H,79H,24H,30H,19H,12H,03H,78HDB 00H,18H,08H,03H,46H,21H,06H,0EH

INICIO: MOV DPTR,#TABLA1CICLO: MOV A,P0

MOVC A,@A+DPTRMOV P1,AJMP CICLO

END

Page 27: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Diplay de Cristal Liquido LCD

DISTRIBUCIÓN PINES LCD ESTÁNDAR

1 Vss Tierra2 Vdd Alimentación +5V

3 Vo Ajuste de Voltaje de Contraste

4 RSSelección Datos/ControlRs = 0 à ControlRs = 1 à Datos

5 R/W

Lectura/EscrituraR/W = 0 à Escritura

R/W = 1 à Lectura

6 EHabilitaciónE= 0 deshabilitaE= 1 habilita

7 D0

BUS DE PALABRADE DATOS

8 D19 D2

10 D311 D412 D513 D614 D7

Page 28: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

ESTRUCTURAINTERNA DEL LCD

RS

DATOS DISPLAYRW DDRAM

E

CIRCUITODE

CONTROL

8

D7-D0

CGRAM (CaracteresGenerados) USUARIO

CGROM (CaracteresGenerados )

FABRICANTE

Page 29: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

6 7 8 9

5 6 7 8

1 2 3

0 1 2

(DDRAM) DATOS DISPLAY

DDRAM: En esta memoria se almacenan los caracteres que se visualizan enla pantalla, el tamaño y distribución de esta memoria depende del tamaño deldisplay.

Display de 1 Línea ( 1 x 80) :

4 5 10 11 . . . . 76 77 78 79 80

3 4 9 A 4B 4C 4D 4E 4F

Area Visible Area no visible

Page 30: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Display de 2 Líneas ( 2 x 40) :

1 2 3 4 5 6 7 8 9 10 11 . . . . 36 37 38 39 400 1 2 3 4 5 6 7 8 9 A 23 24 25 26 2740 41 42 43 44 45 46 47 48 49 4A 63 64 65 66 67

Area Visible Area no visible

Display de 2 Líneas ( 4 x 16) :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 160 1 2 3 4 5 6 7 8 9 A B C D E F

40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F

Page 31: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

(CGROM) CARACTERES GENERADOSPOR FABRICANTE

CGROM: En esta memoria están almacenados los códigos que le corresponden a loscaracteres que entrega por defecto un LCD, es decir que estos caracteres están escritos desdefabrica de forma permanente en una memoria ROM y no pueden ser modificados por el usuario.Estos caracteres pueden ser configurados para ser mostrados en una matriz de 5 x8 puntos o5 x 10 puntos. Como se muestra a continuación:

Configuración5x8

Page 32: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

(CGROM) CARACTERES GENERADOSPOR FABRICANTE

Configuración5x10

Page 33: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Tabla 1.CARACTERESGENERADOS

POR EL FABRICANTE

Page 34: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

CONTROL DEL DISPLAY DE CRISTAL LIQUIDO LCD

Page 35: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Pasos a seguir Para introducir datos en el LCD :

1. Antes de escribir cualquier carácter en el LCD se debe realizar una secuencia de inicializaciónde Display con una serie de palabras de control :

SECUENCIA DE INICIALIZACIÓN:

Palabra de control Código Ejemplo Significado

Funtion Set: 30h bus de datos a 8 bits, caracteres de 5x7 A una línea

Entry Mode Set 06h Incrementar cursor, no desplazar visualización

Display ON/OFF 0Ch Display en ON, cursor en off, no parpadeo

Clear Display 01h Borra display se ubica en el carácter

Page 36: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

2. Para entregarle el código de control correspondiente al LCD se debe introducir su respectivo códigoen binario por el bus de datos/control D7 – D0 a través de los interruptores s1 a s 8 como se ilustraen la figura A.

3. Posteriormente se debe asignar un cero lógico a la entrada RS a través del interruptor s10, parainformarle al LCD que la información que se encuentra en el puerto corresponde a una palabra decontrol.

4 Enseguida se pulsa el interruptor S9 conectado a la entrada de habilitación (E),

5. Se repiten los pasos 2,3 y 4 con cada uno de las palabras de control descritas en el punto 1

6. Si enseguida se quiere escribir un carácter en el LCD se debe asignar el correspondiente códigoASCII descrito en la tabla 1 a través de los interruptores s1 a s8.

7. En el interruptor S10 se pone un 1 lógico para informarle al LCD, que la información que seencuentra en el puerto corresponde a una palabra de datos.

8. Enseguida se pulsa S9 conectado a la entrada de habilitación.

9. Si se quiere seguir escribiendo mas caracteres se repiten los pasos 6,7 y 8.

Page 37: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

Códigos de Control del LCD

Page 38: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

CONEXIÓN BASICA LCD A 8 BITS

Page 39: PROGRAMANDO EL MICROCONTROLADOR 8051(AT89C52) Aplicaciones Basicas

ORGMOV

0000HP1,#00H

INICIO: MOV A,#30HLCALL CONTROLMOV A,#06HLCALL CONTROLMOV A,#0CHLCALL CONTROLMOV A,#01HLCALL CONTROL

LETRA: MOV A,#41HLCALL DATO

PARE: LJMP PARE

;Rutina que controla el LCD:

CONTROL: CLR P2.0JMP LCD

DATO: SETB P2.0LCD: SETB P2.1

MOV P1,ACALL DELAY_3_4msCLR P2.1RET

DELAY_3_4ms: MOV R3,#04HCICLO3: MOV R4,#14HCICLO2: MOV R5,#14HCICLO1: DJNZ R5,CICLO1

DJNZ R4,CICLO2DJNZ R3,CICLO3RET

END

EJEMPLO BASICO CONTROL DEL LCD

;Programa que imprime la letra A en el LCD

;secuencia de inicialización

;RS=0

;RS=1;E=1

;E=0