PROGRAMANDO ELMICROCONTROLADOR
8051(AT89C52)Aplicaciones Basicas
Camilo Andrés Infante Z.
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
SET DE INSTRUCCIONES
SET DE INSTRUCCIONES
SET DE INSTRUCCIONES
SET DE INSTRUCCIONES
SET DE INSTRUCCIONE
;Programa que lee el puerto P0 y loescribe en el P1
ORG 0000HINICIO: MOV A,P0
MOV P1,AJMP INICIO
END
;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
;Programa realiza un parpadeo de un ledconectado al pin P1.0
ORG 0000HINICIO: SETB P1.0
CLR P1.0JMP INICIOEND
;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
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
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
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
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
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
CONTROLANDO UN MOTORPASO A PASO
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°.
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.
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.
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
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
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
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
Decodificador de Display 7 Segmentos
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
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
ESTRUCTURAINTERNA DEL LCD
RS
DATOS DISPLAYRW DDRAM
E
CIRCUITODE
CONTROL
8
D7-D0
CGRAM (CaracteresGenerados) USUARIO
CGROM (CaracteresGenerados )
FABRICANTE
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
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
(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
(CGROM) CARACTERES GENERADOSPOR FABRICANTE
Configuración5x10
Tabla 1.CARACTERESGENERADOS
POR EL FABRICANTE
CONTROL DEL DISPLAY DE CRISTAL LIQUIDO LCD
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
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.
Códigos de Control del LCD
CONEXIÓN BASICA LCD A 8 BITS
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
Top Related