Entradas salidas digitales 2015

58
E/S DIGITALES MICROELECTRONICA

Transcript of Entradas salidas digitales 2015

Page 1: Entradas salidas digitales 2015

E/S DIGITALES

MICROELECTRONICA

Page 2: Entradas salidas digitales 2015

MODALIDAD

Teoría

Programación

Simulación

Práctica

Luis David Narváez

Page 3: Entradas salidas digitales 2015

DESARROLLO

LENGUAJE Lenguaje C PIC C Compiler. V. 5.008

SIMULADOR

PROTEUS 8.1

MICROCONTROLADORES

PIC 18F2550 PIC 18F4550

Luis David Narváez

Page 4: Entradas salidas digitales 2015

MATERIALES• 1 PIC 18F2550• 1 PIC 18F4550• 1 FUENTE DC (min. 5v )• 1 Protoboard• 1 Grabador de PICs• Pinzas y Cortadora.• Cable UTP.• 1 Barra de Leds• 1 Respack 330.

• Osciladores 4 y 8 MHz.• 1 Dipswitch de 8.• 1 Teclado Matricial.• 4 Displays 7 segmentos• 4 Decodificadores BCD• 4 Transistores 3904, 3906.• Potenciómetros• 1 Pantalla LCD 2x16• 1 Pantalla GLCD 128x64• 1 Conector DB9 hembra.

Luis David Narváez

Page 5: Entradas salidas digitales 2015

REPASO E/S DIGITALESMICROCONTROLADOR PIC

PARTE I

Luis David Narváez

Page 6: Entradas salidas digitales 2015

GAMAS DE LOS PICGAMA SUPERIOR: PIC18FXXX

Tecnología CMOS. MCU estática con convertidor A/D. Pila de 32 niveles, una palabra de instrucción de 16

bits, múltiples interrupciones internas y externas, unset de 77 instrucciones.

Alto rendimiento de 10 MIPS (Millones deInstrucciones por Segundo) para una MCU.

Luis David Narváez

Page 7: Entradas salidas digitales 2015

EL OSCILADOR• INTOSC Oscilador interno de precisión (dos modos)• RC Oscilador con resistencia y condensador (dos modos)• XT Cristal / Resonador• HS Cristal de alta velocidad / Resonador.• LP Cristal para baja frecuencia y bajo consumo de potencia.• EC Reloj externo

Nota: En el momento de programar o “quemar” elmicrocontrolador se debe especificar el tipo de oscilador quese usa. Esto se hace a través de unos bits llamados: “fusiblesde configuración”.

Luis David Narváez

Page 8: Entradas salidas digitales 2015

OSCILADORES DE CRISTAL

Luis David Narváez

Page 9: Entradas salidas digitales 2015

OSCILADORES DE CRISTAL

Tipo Frecuencia OSC1/C1 OSC2/C2LP 32 Khz

200 Khz

68 – 100 pF

15 - 33 pF

68 - 100 pF

15 - 33 pF

XT 100 Khz

2 Mhz

4 Mhz

100 – 150 pF

15 – 33 pF

15 – 33 pF

100 – 150 pF

15 – 33 pF

15 – 33 pF

HS 4 Mhz

10 Mhz

15 – 33 pF

15 – 33 pF

15 – 33 pF

15 – 33 pF

Luis David Narváez

Page 10: Entradas salidas digitales 2015

OSCILADOR TIPO RC

Luis David Narváez

Page 11: Entradas salidas digitales 2015

Circuito de Reset

Luis David Narváez

Page 12: Entradas salidas digitales 2015

APLICACIONES

Luis David Narváez

Page 13: Entradas salidas digitales 2015

APLICACIONES

Luis David Narváez

Page 14: Entradas salidas digitales 2015

PIC C Compiler

PARTE 2

Luis David Narváez

Page 15: Entradas salidas digitales 2015

DEFINICIONES

Luis David Narváez

Page 16: Entradas salidas digitales 2015

ELEMENTOS BÁSICOS

Luis David Narváez

Page 17: Entradas salidas digitales 2015

C ESPECÍFICO PARA LOS PICLas principales diferencias entre compiladores residen en las directivas(preprocessor commands) y en las funciones integradas (built-infunctions).

Directivas de Preprocesado más habituales:#ASM Las líneas entre estas dos directivas deben ser

instrucciones

#ENDASM Ensamblador que se insertan tal y como aparecen.

#BIT id = x.y Se crea una variable tipo bit correspondiente al bit y delbyte x en memoria.

#BYTE id = x Se crea una variable y se sitúa en el byte x en memoria.Si ya existía esa variable, se coloca físicamente en laposición especificada.

Luis David Narváez

Page 18: Entradas salidas digitales 2015

C ESPECÍFICO PARA LOS PIC#DEFINE id texto El identificador se sustituye por el texto adjunto.

#DEVICE chip Define el micro para el que se escribe el código.

#FUSES options Define la palabra de configuración para la grabacióndel microcontrolador.

#INCLUDE <fichero> Se incluye el texto del fichero especificado en el#INCLUDE “fichero” directorio o fuera de él.

#INLINE La función que sigue a esta directiva se copia enmemoria de programa cada vez que se le llame.Puede servir para mejorar la velocidad.

#SEPARATE La función que sigue a esta directiva se implementade manera separada (no INLINE). De esta manerase ahorra ROM

Luis David Narváez

Page 19: Entradas salidas digitales 2015

C ESPECÍFICO PARA LOS PIC#ORG start Sitúa el código a partir de una determinada posición de

la memoria de programa

#INT_xxxx Indica que la función que sigue es un programa detratamiento de la interrupción xxxx.

#INT_GLOBAL Indica que la función que sigue es un programagenérico de tratamiento de interrupción. No se incluyecódigo de salvaguarda de registros ni de recuperacióncomo cuando se usa #INT_xxxx.

#PRIORITY ints Establece un orden de prioridad en las interrupciones.

#USE DELAY (clock = frecuencia en Hz) Define la frecuencia del osciladorque se va a utilizar, que se emplea para realizar loscálculos para funciones integradas de retardo.

Luis David Narváez

Page 20: Entradas salidas digitales 2015

GESTION DE PUERTOS I/O

Luis David Narváez

REGISTROS –VARIABLES EN LA MEMORIA RAM:Se definen los puertos como variables que se colocan en lasposiciones reales en la memoria RAM de datos. (MemoryOrganization)

FUNCIONES ESPECÍFICAS DEL COMPILADORSe definen la dirección de los datos si es necesario. Uso de

funciones propias del compilador.

#USE FAST_IO #USED FIXED_IO #USE STANDARD_IO

Page 21: Entradas salidas digitales 2015

NOTA IMPORTANTE El Registro TRIS controla la dirección de las líneas del

puerto a configurar.

Un “cero” en el bit correspondiente al pin loconfigura como salida y pone el contenido de lamemoria (latch) en el pin seleccionado.

Mientras que un “uno” lo configura como entrada ypone el correspondiente circuito de salida en altaimpedancia.

Luis David Narváez

Page 22: Entradas salidas digitales 2015

DEFINIENDO REGISTROS RAM

Luis David Narváez

PORTX TRISX:Directiva #BYTE

#BYTE TRISB = 0x93 // Define la variableTRISB#BYTE PORTB = 0x81 // Define la variable PORTB

Estas variables permiten controlar los puertos y se puedenutilizar en asignaciones:

Page 23: Entradas salidas digitales 2015

DEFINIENDO REGISTROS RAM

Luis David Narváez

El compilador de CCS incorpora una serie de funcionesintegradas que permite manejar los bits de una variable.

Page 24: Entradas salidas digitales 2015

DEFINIENDO REGISTROS RAM

Luis David Narváez

Se puede trabajar directamente con una variable de un (1) bit.

Page 25: Entradas salidas digitales 2015

FUNCIONES DEL COMPILADOR

Luis David Narváez

Funciones orientadas a trabajar con los puertos E/S:

Page 26: Entradas salidas digitales 2015

FUNCIONES DEL COMPILADOR

Luis David Narváez

Funciones orientadas a trabajar con los puertos E/S:

Page 27: Entradas salidas digitales 2015

FUNCIONES DEL COMPILADOR

Luis David Narváez

Funciones para la gestión de Puertos E/S:

Page 28: Entradas salidas digitales 2015

FUNCIONES DEL COMPILADOR

Luis David Narváez

Funciones para la gestión de Puertos E/S:

Page 29: Entradas salidas digitales 2015

FUNCIONES DEL COMPILADOR

Luis David Narváez

Funciones para la gestión de Puertos E/S:

Page 30: Entradas salidas digitales 2015

MODALIDAD

Encendido y Apagado. Rotación de bits. Traslado de bits. Interruptores y Switchs.

Rebotes

Contadores

Luis David Narváez

Page 31: Entradas salidas digitales 2015

PARPADEO DE LED’s

Enunciado: Encender y apagar 4 LEDs conectados a lospines RB0, RB1, RB2 y RB3 con una temporización de500ms, empleando las diferentes formas de configurar lospines en Lenguaje C.

Luis David Narváez

Page 32: Entradas salidas digitales 2015

PARPADEO DE LED’s Conexión de Leds:

Luis David Narváez

Page 33: Entradas salidas digitales 2015

RETO: Semáforos en una intersección, incluido

Stop y Go para Peatones Enunciado: Realizar una emulación de dos

semáforos en una intersección mediante elEncendido y Apagado de Leds, con indicadores destop y go para peatones.

ENCENDIDO Y APAGADO

Luis David Narváez

Page 34: Entradas salidas digitales 2015

Para rotar los bits a la izquierda empleamos lasfunciones: rotate_left( adress, bytes);

En donde address puede ser un identificador de unarray o la dirección a un byte o a una estructura,bytes es el número de bytes implicados en larotación.

Ejemplo: var = 0x40; rotate_left(&var,1); // var=0x80

ROTACIÓN DE BITS

Luis David Narváez

Page 35: Entradas salidas digitales 2015

TRASLADO DE BITS La misma explicación es válida para: rotate_right( adress, bytes)

Otra forma de realizar el mismo efecto es empleando eloperador desplazamiento (>> derecha, << izquierda)

Ejemplos: var=0x40; var=var<<n // n es el número de bits a desplazar

Luis David Narváez

Page 36: Entradas salidas digitales 2015

Enunciado: Se trata de hacer encender 8 LEDs demanera consecutiva, sin que permanezcanencendidos dos de ellos simultáneamente. Los LEDsestán conectados al PORTB<RB7:RB0>, y alPORTD <RD7:RD0>.

PRÁCTICA

Luis David Narváez

Page 37: Entradas salidas digitales 2015

FLUJOGRAMA

Luis David Narváez

Page 38: Entradas salidas digitales 2015

SIMULACIÓN

Luis David Narváez

Page 39: Entradas salidas digitales 2015

RETO: Enunciado: Encender secuencialmente, a la izquierda dos (2) a

la vez, los 8 LEDs conectados al PORTB con unretardo de 500ms. Y al mismo tiempo a laizquierda tres (3) a la vez, l 8 LEDs conectados alPORTD con un retardo de 1s.

Luis David Narváez

Page 40: Entradas salidas digitales 2015

RETO: Enunciado: Realizar el juego de luces del auto fantástico con

8 LEDs conectados al PORTB, con un retardo de50ms.

Luis David Narváez

Page 41: Entradas salidas digitales 2015

Interruptores y Switchs

Entradas Digitales

Luis David Narváez

Page 42: Entradas salidas digitales 2015

ENTRADAS DE DATOS Los dispositivos de entrada de datos encontramos con

frecuencia en sensores de alarmas (magnéticos, demovimiento, infrarrojos, etc.), sensores digitalesindustriales (sensores digitales de proximidad, finales decarrera, pulsadores de marcha y paro de motores, etc.).

Rebotes en un pulsador El problema en la utilización de estos dispositivos son los

rebotes que aparecen en el momento en que cambian deposición, cuya duración depende de la fuerza con que sepresione este dispositivo, y a su estructura interna.

Luis David Narváez

Page 43: Entradas salidas digitales 2015

ENTRADAS DE DATOS

Luis David Narváez

Page 44: Entradas salidas digitales 2015

ELIMINAR REBOTES Para eliminar este problema se suele realizar

por dos medios:

Hardware mediante el empleo de un flip-flop, uncondensador, etc.

Software utilizando los retardos de cerca de10ms que es lo que normalmente una personatarda en presionar y soltar una tecla.

Luis David Narváez

Page 45: Entradas salidas digitales 2015

Enunciado: Se desea controlar una lámpara desde dos puntos

diferentes por medio de 2 interruptores. Lalámpara está conectada al RB0 y los interruptoresa RA0 y RA1

Luis David Narváez

PRÁCTICA

Page 46: Entradas salidas digitales 2015

DESARROLLO Como podemos observar en el circuito, cuando los

interruptores están abiertos introducen un “0L”(conectados a través de resistencias pull-down). Deacuerdo a las condiciones del enunciado, la lámparadebe funcionar de acuerdo a la siguiente tabla deverdad:

S1 (RA1 S0 (RA0)SALIDA

(RB0)Observaciones

0011

0101

0110

ApagadoEncendidoEncendidoApagado

Luis David Narváez

Page 47: Entradas salidas digitales 2015

DESARROLLO Como se mencionó anteriormente, en lenguaje C,

para realizar la lectura de un puerto se utiliza lafunción

var= input_port_y ()// Pone en var el valor de los pines del port_y

Según analizamos anteriormente, la sentencia case esla herramienta más indicada a utilizarse en este caso.

Luis David Narváez

Page 48: Entradas salidas digitales 2015

SIMULACIÓN

Luis David Narváez

Page 49: Entradas salidas digitales 2015

Enunciado: Realizar un programa que permita visualizar, el

estado (on/off) de 5 switchs conectados en elpuerto B (<RB4:0>), mediante 5 diodos LEDconectados en el puerto D (<RD4:0>). Laconexión de los switchs se realizará empleandoresistencias pull-up, de tal forma que, cuando unswitch esté abierto el microcontrolador reciba un“1L”. En esta posición el LED correspondienteestará apagado.

Luis David Narváez

PRÁCTICA

Page 50: Entradas salidas digitales 2015

DESARROLLO

En este circuito, los switchs, al estar en posición OFF(abiertos), sus pines están conectados a través de laresistencia de 10KΩ a 5V, dando un estado lógico alto(1L), en esa posición el LED correspondiente debe estarapagado, entonces se requiere invertir el valor leído en elpuerto B para sacar un estado lógico bajo (0L) queapague el LED.

La misma lógica se aplicará en la posición ON (cerrado).

Luis David Narváez

Page 51: Entradas salidas digitales 2015

SIMULACIÓN

Luis David Narváez

Page 52: Entradas salidas digitales 2015

Enunciado: Se desea realizar un programa que cuente los

pulsos provenientes de un pulsador(CONTADOR) conectado a RD1 y los visualice enforma binaria en LEDs conectados al PORTB. Elnúmero máximo de conteo será 12, momento enel cual se detiene y activa una señal visual (LED) osonara (Zumbador, conectado al RD2) por 5 veces.El reinicio del conteo se realiza presionando latecla REINICIO conectada al pin RD0

Luis David Narváez

PRÁCTICA

Page 53: Entradas salidas digitales 2015

DESARROLLO

En este caso vamos a utilizar las funciones deverificación del estado de un pin del puerto, If (bit_test(var,3) || !bit_test(var,1)) // o

el bit 3 de var es 1 o el bit 1 es 0. El mismo efecto se tiene si se emplea if(input(pin_x) || !input(pin_y))

Para el incremento utilizaremos: var++ // equivale a var=var+1

Luis David Narváez

Page 54: Entradas salidas digitales 2015

DESARROLLO

Luis David Narváez

El programa se ha realizado de tal forma que elincremento en el conteo se realiza solo si se sueltala tecla de conteo.

Además se han utilizado unos pequeños retardospara eliminar los rebotes.

Otra situación importante que hay que remarcar esque el reinicio se sucede únicamente si el contadorha llegado al valor máximo (12 decimal).

Page 55: Entradas salidas digitales 2015

SIMULACIÓN

Luis David Narváez

Page 56: Entradas salidas digitales 2015

RETO: Enunciado: Realizar un contador binario tal que, con un

pulsador cuente en forma ascendente hasta llegara 255(Puede ser hasta 25 por pruebas) y luegosea descendente. Un led conectado en RA3 seencenderá cuando el contador este al máximo oal mínimo (0 y 255).

Luis David Narváez

Page 57: Entradas salidas digitales 2015

RETO: Enunciado: Realizar un contador binario con dos pulsadores,

uno ascendente hasta 255 y con otrodescendente hasta 0. El cambio de ascendente adescendente se realiza en cualquier instantesegún se presione el pulsador correspondiente.Existirá además un botón de reinicio.

Luis David Narváez

Page 58: Entradas salidas digitales 2015

MUCHAS GRACIAS

PREGUNTAS /COMENTARIOS

Luis David Narváez