I.
PORTADA
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL.
CARRERA: INGENIERÍA EN ELECTRÓNICA Y COMUNICACIONES
Modulo:
Microcontroladores
a:
MICROCONTROLADORES
Integrantes:
Albán Jhony
Espín Tito
Satuquinga Cristian
Moposita Jessica
López Darío
Ciclo Académico y paralelo:
Séptimo “Electrónica” “A”
Docente
Ing. Patricio Córdova
Fecha de envió:
10 de Noviembre del 2014
Fecha de entrega:
17 de Noviembre del 2014
II.
Tema:
Manejo de Microcontroladores, entradas, fusibles interrupciones, tecla dos y LDC,.
III.
Objetivos
General Definir los principales usos y configuraciones que se pueden aplicar a un microcontrolador identificando su forma de trabajo en forma clara y concisa.
Específicos
Explicar los parámetros de configuración inicial de los puertos de un microcontrolador.
Describir las interrupciones que se pueden programar en un microcontrolador
Identificar la forma de trabajo de los teclados matriciales en conjunto con los microcontroladores.
Efectuar la revisión de la forma de configuración del microcontrolador al trabajar con las pantallas de cristal líquido LCD más comunes.
IV.
Introducción Los microcontroladores están siendo empleados en multitud de sistemas presentes en nuestra vida diaria, como pueden ser juguetes, horno microondas, frigoríficos, televisores, ordenadores, impresoras, módems, el sistema de arranque de nuestro vehículo, etc. Además de otras aplicaciones como instrumentación electrónica, control de sistemas, etc.
V.
Desarrollo MANEJO DE PUERTOS
USE FAST IO Esta directiva afecta al código que el compilador generará para las instrucciones de entrada y salida. Este método rápido de hacer I/O ocasiona que el compilador realice I/O sin programar el registro de dirección. El puerto puede ser A-G [1]. Con esto el programador podrá fijar las direcciones de los pines del puerto correspondiente SET_TRIS_X (valor).
Ejemplo: #use fast_io(A)
SET TRIS Estas funciones permiten escribir directamente los registros tris-estado para la configuración de los puertos. SET_TRIS_A(value) SET_TRIS_B(value) SET_TRIS_C(value) SET_TRIS_D(value) SET_TRIS_E(value) Esto debe usarse con FAST_IO() y cuando se accede a los puertos de I/O como si fueran memoria, igual que cuando se utiliza una directiva #BYTE. Cada bit de value representa una patilla. Un '1' indica que la patilla es de entrada y un '0' que es de salida[2].
Ejemplo: SET_TRIS_B( 0x0F ); //pone B0, B1, B2 y B3 como entradas; B4, B5, B6 y B7 // como salidas
FUSIBLES Los bit's de configuración o mas comúnmente llamados "fusibles" permiten configurar ciertas funciones en los microcontroladores PIC, como el tipo de cristal para el oscilador, permiten proteger el código en el micro, entre muchas funciones. La cantidad de funciones que se pueden configurar con los fusibles dependen del microcontrolador [3] . Todos los PIC disponen de un cierto número de bits para configurar el microcontrolador. Estos bits de configuración están disponibles en memoria no volátil (EEPROM) cuando se programa el dispositivo, pero no son accesibles durante el funcionamiento normal del microcontrolador. Los bits de configuración permiten que el usuario programe ciertas características del dispositivo para adaptarlo mejor a las necesidades de la aplicación [4]. Las características que se programan en los bits de configuración son las siguientes:
El tipo de oscilador. La habilitación o no del perro guardián. La protección de la memoria de programa. La protección de la memoria EEPROM de datos, si exist e en el dispositivo. Las características del reset y la alimentación del dispositivo.
Según el dispositivo concreto, puede que alguna de estas características no sea programable [5]. Los bits de configuración de cada PIC se lo puede encontrar en los datasheets correspondientes a los PICs estas se las puede encontrar en el capítulo 14.0.- “Special Features of the CPU” en la parte “Customer Notification System”.
A continuación se presenta los bits de configuración del PIC 16F887 [6]: Power-on Reset (POR) Power-up Timer (PWRT) Oscillator Start-up Timer (OST) Brown-out Reset (BOR)
Interruptores Watchdog Timer (WDT).- establece la configuración para el reinicio del micro cuando el mismo se cuelgue o tenga un error de carga del programa permitiendo seguridad en funcionamiento del micro. Oscillator selection.- establece el oscilador que va utilizar el micro, sea este interno o externo Sleep.- pone en modo de espera al micro cuando él no esté en uso permitiendo ahorro de energia Code protection.- protege el programa anti copia, permitiendo bloquear todo tipo de copia mediante programas y reservando derecho de autor. ID Locations.- selecciona la localización del ID de procesos para el funcionamiento del micro In-Circuit Serial Programming
Fig. 1 CONFIG1: Configuration word register 1
Fig. 2 CONFIG2: Configuration word register 2
INTERRUPCIONES Es un evento de origen interno o externo que, si es atendido, hace que el microcontrolador interrumpa la ejecución del programa en curso y en su lugar se ejecute las instrucciones de otro programa. Normalmente, cuando el programa interrumpido,
justo con la instrucción que sigue a la que se estaba ejecutando cuando se produjo la solicitud de interrupción [7]. Las interrupciones es un Sistema que provoca un salto a una subrutina, pero disparada por un evento del hadware. Se diferencia de los saltos a subrutinas generados por el software, como el producido por la instrucción CALL, en lo siguiente:
La interrupción es atemporal; el microcontrolador nunca sabe cuándo va a ocurrir. Cuando la interrupción ocurre, el procesador abandona el programa que está ejecutado y pasa a procesar una rutina que se encuentra a partir de una posición de memoria fija denominado vector de interrupción. En las interrupciones se salva el contenido interno de los registros más importantes del procesador, de modo que luego, al volver al programa que se está ejecutando, se prosiga sin alteraciones [8].
. Fig. 3 Proceso de interrupción
La familia Pic16F87x tiene 13 fuentes de interrupciones. Al aceptarse una interrupción se salva el valor del PC (contador de porgrama) en la pila y se carga aquel con el valor 0004h, que es el Vector de Interrupcion. La mayoría de los recursos o periféricos de que disponen los Pic16F87x son capaces de ocasionar una interrupción. 1. Desbordamiento del TMR0 2. Activación de la patita de interrupción RB0/INT 3. Cambio de estado de una de las cuatro patitas de más peso del puerto B 4. Finalización de la escritura de un byte en la EEPROM 5. Desbordamiento del Timer1 6. Desbordamiento del Timer2 7. Captura o comparación en el módulo CCP1 8. Captura o comparación en el módulo CCP2 9. Transferencia en la puerta serie Síncrona 10. Colisión de bus en la puerta serie Síncrona 11. Fin de la transmisión en el USART 12. Fin de la recepción en el USART 13. Fin de la conversión en el conversor A/D 14. Transferencia en la puerta paralela esclava
CONEXIÓN DE UN TECLADO MATRICIAL
No existe un estándar para los conectores de los tecl ados en aplicaciones de los sistemas de microcontrol, de tal forma que cada modelo exige un hardware de conexión y una subrutina de manejo distintos. La configuración más sencilla es la conocida como matricial, con 4 renglones y 4 columnas, para un total de 16 botones.
Fig. 4 Diagrama del teclado y su interfaz con sistema EB88 El teclado viene organizado con 4 renglones (X1...X4) y 4 columnas (Y1...Y4), de tal forma de que cada tecla queda identificada por la intersección de un renglón y una columna. En la figura se muestran los diagramas del teclado, así como de la asignación de señales en el puerto B, en el conector del sistema y en el conector del teclado. Las señales RB0...RB3 se programan como salidas del puerto B, mientras las señales RB4...RB7 como entradas. El programa de control del teclado tiene dos partes: una es la subrutina de "detección" en la cual el programa detecta que se oprimió una tecla. En su segunda parte, aparece la subrutina de "identificación" mediante la cual el programa identifica que tecla fue la que se oprimió.
Fig. 5 Teclado 4 X 4
Algoritmo de detección e identificación: La técnica de programación para detectar qué botón fue oprimido, es escribir en los bits del puerto B en forma secuencial un “CERO” en las columnas Y1, Y2, Y3, Y4, y leer cada vez los renglones X1, X2, X3, X4. Cuando una tecla es oprimida, la lectura en alguno de los renglones será “CERO” y el código de 8 bits X-Y hallado se convierte en el código ASCII de la tecla oprimida mediante una tabla. La tabla muestra esta relación: [7] RB7……RB0 HEXA
TECLA
RB7…..RB0
HEXA
TECLA
11101110
EE
"0"
10111110
BE
"8"
11101101
ED
"1"
10111101
BD
"9"
11101011
EB
"2"
10111011
BB
"A"
11100111
E7
"3"
10110111
B7
"B"
11011110
DE
“4”
01111110
7E
"C"
11011101
DD
“5”
01111101
7D
“D”
11011011
DB
“6”
01111011
7B
“E”
11010111
D7
“7”
01110111
77
“F”
Al tener una secuencia es deducible saber la forma de trabajo del teclado 3 X 3 puesto que la combinación de valores solo se reduce a 9 valores.
CONEXIÓN DE UNA PANTALLA LCD La pantalla LCD es otro dispositivo muy versátil y viene en una gran cantidad de modelos y configuraciones. Sirven como ventana a datos, configuraciones o despliegue de información donde un LED no es suficiente.
Fig. 6. LCD genérica 16X2 Lo primero que debemos saber, es la conexión de la pantalla LCD segun el tipo que vamos a usar y para esto consultaremos el datashet de una pantalla LCD genérica 16X2 es decir 2 filas de 16 caracteres cada una.
Fig. 7. Diagrama de la pantalla LCD Se puede dividir el diagrama en dos partes, la parte de " control (izquierda) y la parte de "alimentación y ajuste" (derecha).
Fig. 8. Control y Despliegue LCD
y despliegue"
Fig. 9. Conexión Iluminación LCD
No es obligatorio conectar el (LED BACKLIGHT) para que funciones la LCD, ya que es es un circuito independiente, lo interesante es que se puede usar un interruptor normal o uno mediante un circuito de conmutación Para los demás pines voy a colocar la descripción que me da la hoja del fabricante.
Fig. 10. Descripción de los pines y su función
Código utilizado para la manipulación de LCD FUNCION
DESCRIPCION
InitIO( )
Envía los comandos para inicializar el LCD. El cursor se posiciona en (0,0).
ClearScreen( )
Pone las 16 celdas del LCD en blanco.
GotoXY(1,5)
Posiciona el cursor en el renglón 1, celda 5
PrintString("ANSI C")
Escribe el texto entrecomillado, iniciando en la celda en donde se encuentre posicionado el cursor. Máximo 8 caracteres.
PrintString(wob)
La función acepta como parámetro de entrada un stri ng, en este ejemplo de nombre "wob". Escribe en el LCD el contenido del string. Máximo 8 caracteres. Vea el programa de prueba 3
PutChar('*')
Escribe el caracter indicado en la posición en donde se encuentre el cursor. Observe que deben usarse diéresis y no comillas.
PutChar(53);
se envía el código ASCII del número 5, cuyo valor decimal es 53
PutChar(x);
se envía al LCD, en un solo caracter, el valor de la variable x, que debe ser un código ASCII.
DelayMs(100)
Realiza un retraso de 100 milisegundos. El valor máximo es 30,000.
LCD 20x4 Todos los lcd de 20x4 requiere una alimentación de 3v a 5v, a diferencia del lcd 16x2 este dispositivo permite visualizar más datos en la configuración de salida, permitiendo una mayor rapidez en la obtención y visualización de datos configurados en salida en la pantalla con un PIC. Los pines de salida del módulo son: 1 2 3 4 5 6 7 8 9 10 11 12
Tierra VCC (Por lo general, +5 V) Ajuste de contraste (VO) Registrar Select (RS). RS = 0: Comando, RS = 1: Datos Lectura / escritura (R / W). R / W = 0: Escribir, R / W = 1: Leer Enable Bit 0 (No se requiere en la operación de 4 bits) Bit 1 (No se requiere en la operación de 4 bits) Bit 2 (No se requiere en la operación de 4 bits) Bit 3 (No se requiere en la operación de 4 bits) Bit 4 Bit 5
13 14 15 16
Bit 6 Bit 7 LED de luz de fondo del ánodo (+) LED de luz de fondo del cátodo (-)
Por lo general, el dispositivo requiere 8 líneas de datos para proporcionar datos a Bits 07. Sin embargo, esta pantalla LCD se puede configurar para utilizar un modo "de 4 bits", que le permite enviar datos en dos trozos de 4 bits. Esto reduce el número de conexiones GPIO que necesita, al conectarse con su pi c.[9]
Fig.10 LCD 20x4
Correspondencia entre los códigos de caracteres y patrones de caracteres (Código de ROM: A00)
Fig 11.- tabla de correspondencia de datos en la ROM[10] Instrucciones para LCD 20x4
Fig. 12.- tabla de instrucciones para el LCD 20x4[10]
VI.
Conclusiones Se pudo explicar los parámetros necesarios en la configuración inicial de los puertos presentes en un microcontrolador ya inicializando el valor o identificando su forma de trabajo.
Al describir las interrupciones se puede observar que al programar existe código que permite cortar la secuencia que realiza un microcontrolador
Se logra identificar la forma de configuración que
poseen los teclados
matriciales dentro de los microcontroladores permitiendo así la inserción de datos directos desde una fuente externa.
Al efectuar la revisión sobre de configuración del microcontrolador cuando al mismo se le añade pantallas de cristal líquido se identifica como es posible obtener resultados de un proceso por medio de dispositivos externos que ayudan a la visualización de información.
VII.
Referencias bibliográficas
[1]Manual CCS, http://www.cursos.ucv.cl/eie48700/referencias/CCS_C_Manual.pdf [2] Programando articulo/4587553.pdf
microcontroladores
pic,
dialnet.unirioja.es/descarga/
[3] http://xorwf.blogspot.com/2010/08/fusibles-de-configuracion-bits-de.html [4] FernandoE.,ValdésP.,RamónP., “Microcontroladores: fundamentos y aplicaciones con PIC”, Marcobombo S.A., España(2007) pp 36 [5] FernandoE.,ValdésP.,RamónP., “Microcontroladores: fundamentos y aplicaciones con PIC”, Marcobombo S.A., España(2007) pp 37 [6] Microchip, “PIC16F882/883/884/886/887 Data Sheet” [7] FernandoE.,ValdésP.,RamónP., “Microcontroladores: fundamentos y aplicaciones con PIC”, Marcobombo S.A., España(2007) pp 217 [8] Users Staff, “Microcontrolador”, Dalaga S.A., Buenos Aires(2011) pp 66 [9] http://www.raspberrypi-spy.co.uk/2012/08/20x4-lcd-module-control-using-python/ [10] http://www.systronix.com/access/Systronix_20x4_lcd_brief_data.pdf