SENSOR E INDICADOR DE TEMPERATURA PARA UNA CAMARA DE CULTIVO CELULAR.

En este segundo informe se presenta la descripción detallada del modulo LCD y la programación del microcontrolador que gobierna su trajo. Además se presenta la descripción del modulo conversor análogo digital del microcontrolador junto con su respectiva programación. Para el desarrollo de esta aplicación se escogió el microcontrolador PIC16F88 debido a que posee en un DIL de 18 pines todos los módulos necesarios para el desarrollo de la aplicación. La programación del microcontrolador se realizo en lenguaje ensamblador ya que este nos permite un conocimiento más detallado del modo de funcionamiento del micro y con esto un primer acercamiento al desarrollo de aplicaciones con estos dispositivos. Es cierto que la programación en ensamblador es tediosa y poco practica comparada con la programación en un lenguaje de alto nivel como el C, pero para fines pedagógicos se considera que debe ser el medio usado para un primer acercamiento a la programación y el conocimiento de la maquina. El código se escribió en el entorno de desarrollo MPLAB, el cual usa el ensamblador MPASM. Para el sistema de reloj del microcontrolador se emplea un modulo de reloj interno, el cual se configura para que trabaje a 4MHz. Cada ciclo de maquina se ejecuta en 4 ciclos de reloj, de esta manera el tiempo de duración por ciclo de maquina será de 1 µS. la configuración en este modo de trabajo se hace cargando el registro OSCCON con el valor de 60H y configurando el oscilador como INTRC y RA6 como pin del puerto A. En la figura 1 se muestra la configuración de pines de este microcontrolador.

Figura 1 configuración de pines del PIC16F88

La pantalla de cristal líquido provee una manera económica y fácil de visualizar los datos alfanuméricos de los equipos electrónicos. el cual provee una interface entre el procesador y el cristal. el Hitachi 44780. COMUNICACIÓN CON EL LCD. El modulo se alimenta con 5 voltios en el pin VDD y la regulación del contraste se realiza a través de un divisor de voltaje al dividir los 5 voltios con una resistencia variable de 10kΩ en el pin VLC. es decir. El pin R/S permite seleccionar el modo en que se lee el dato. . El modulo LCD tiene 16 pines (figura 3 ) las líneas de bus de datos son triestados y pasan a estado de alta impedancia cuando el LCD no está habilitado.En este trabajo no se presenta la implementación directa del sensor de temperatura. si se toma como un comando de control o como un dato a almacenar y mostrar. Los pines D0-D8 conforman el bus de datos. El control del LCD está gobernado por un microcontrolador incorporado en el mismo modulo. E habilita o deshabilita el modulo. La función de pines de este modulo se presenta en la tabla 1. en su lugar se usa un divisor de voltaje con una resistencia variable que permita el ingreso de distintos valores de voltaje para probar el buen funcionamiento del modulo conversor A/D del microcontrolador. El pin R/W selecciona si se va a escribir al LCD o si se va a leer datos del LCD. Figura 2 esquema del circuito 1. En la siguiente figura se presenta el esquema de conexión.

El modulo posee también una zona interna no volátil llamada CGROM donde se almacenan los 192 caracteres que pueden ser visualizados y tiene además 8 posiciones de memoria para caracteres definidos por el usuario. Modo carácter: se activa poniendo a “1” el pin R/S. ocultar cursor. La DDRAM posee una capacidad de 80 bytes de datos distribuida en 40 bytes por cada línea. los datos enviados por el bus se toman como datos a almacenar y mostrar en el modulo.64 µS. Modulo LCD Pin 1 2 3 4 5 6 7-14 15-16 Descripción Ground VDD VLC -Contrast voltage R/S-instruction/register select R/W-read/write LCD registers E-Enable D0-D7 –Data pins Tabla 1. De estos datos sólo 32 se pueden observar simultáneamente en la pantalla.Figura 3. En este modo el pin R/W de bebe ser “0”. en la tabla se presenta los comandos de control del modulo LCD. . desplazar cursor. Esta operación tarda un máximo de 40 µS. Este tipo de operación tarda 1. Se usa dos modos distintos de funcionamiento: Modo comando: se activa poniendo a “0” el pin R/S. En este modo el pin R/W debe ser “0”. etc). los datos enviados por el bus se toman como instrucción (borrar. Descripción de pines del modulo LCD Existe una zona de memoria RAM denominada DDRAM donde se almacenan los coditos ASCCII de los datos a visualizar.

Comandos del modulo LCD La descripción de cada uno de los comandos es la siguiente: Clear display: borra la pantalla y devuelve el cursor a la posición inicial (dirección 0 de la DDRAM). I/D=0 decremento de la posición del cursor I/D=1 incremento automático de la posición del cursor Enable display/cursor D=0 apagar display D=1 render display C=0 apagar cursor C=1 encender cursor B=0 cursor con parpadeo B=1 cursor sin parpadeo Move cursor/shift display SC=0 el efecto del desplazamiento se aplica solo sobre el cursor sin alterar el contenido de la DDRAM.La tabla 2 presenta los comandos del modulo LCD. Tabla 2. . Set cursro move dirección: S=0 información visualizada en pantalla no se desplaza al escribir un nuevo carácter S=1 información visualizada en pantalla se desplaza al escribir un nuevo carácter.

. N=0 pantalla de línea 1. enviando primero el nibble mas alto y a continuación el mas bajo. N=1 pantalla de línea 2. F=1 caracteres de 5x10 puntos. DL=1 comunicación con 8 bits.SC=1 RL=0 RL=1 el efecto del desplazamiento se aplica sobre todo el displey desplazamiento a la izquierda. F=0 caracteres de 5x7 puntos. Move cursor to CGRAM Mueve cursor a la dirección CGRAM señalada Move cursor to display Modifica el puntero de la DDRAM. Reset/ set interface length DL=0 comunicación con cuatro bits con los pines D4-D7. desplazamiento a la derecha.

Diagramas de flujo de la programación del modulo LCD .Inicializar LCD Configuro pines E y RS como salida E=0 RS=0 Escribir LCD LCD_Dato=W and F0H enviar LCD_GuardaDato=W SWAP LCD_Dato Call escribir LCD W = PORTB and F0H Swap LCD_GuardaDato LCD_Dato=LCD_Dato ior W Call escribir LCD PORTB = LCD_Dato si E=1 E=0 RS=1 no Reatardo 2 ms Reatardo 50 us Retardo 20 ms W=30H Call escribir LCD Retardo 5 ms W=30H Call escribir LCD return return Retardo 200 us W=30H Call escribir LCD W=30H Call escribir LCD W=28H Activo modo comando RS=0 Call escribir LCD LCD de dos lineas y caracteres de 5x7 W=06H Activo modo comando RS=0 Call escribir LCD Cursor en modo de incremento return Figura 4.

Los datos se envían sin modificar la información en los pies del puerto B que no están siendo usados para la comunicación. que son de lectura y escritura y que son los que guardan el valor de la cuenta en cada momento.INC” se presenta una librería que contiene el código del los tiempos de retardo llamada “RETARDO. La programación del anterior diagrama de flujo se encuentra en la libraría “LCD_4BIT.El bloque “inicializar LCD” configura el LCD para trabajar la comunicación con 4 líneas. El módulo de TIMER1 es un temporizador/contador de 16 bits.INC”.ASM. El archivo ejecutable se llama LCD. EL TIMER1 tiene varios modos de trabajo. En el CD con el que se entrega el trabajo aparece el código escrito en lenguaje ensamblador del los diagramas de flujo. 2. La secuencia presentada en este bloque es recomendada por el fabricante para una buena configuración. El valor de los registros TMR1H y TMR1L se incrementan desde 0000H hasta FFFFH. Escribe el nibble alto del dato a enviar.INC”. La imagen 1 muestra una foto del LCD gobernado por este programa. luego el nibble bajo. se presenta además un programa que envía un mensaje a cada una de las líneas del LCD. El bloque “escribir” recibe como entra el dato a enviar cargado en el registro de trabajo W y envía el nibble alto de éste al modulo LCD. además de la librería “LCD_4BIT. MODULO TIMER1 En este aparte del proyecto se presenta solo la disposición de los registros de control ya que al presente no se ha implementado el modulo TMR1 para el control de la conversión A/D. de los cuales. formado por dos registros de 8 bits cada uno TMR1H y TMR1L. En el CD que se entrega con este trabajo. en cuyo instante se vuelve a poner a 0000h y se activa el flag TMRIF (PIR1<0>) La interrupción de TMR1 puede ser habilitada/deshabilitada según este a uno/cero el bit TMR1IE (PIE1 <0>). ya sea como comando o como dato. para nuestra aplicación solo nos interesa el modo Temporizador. El bloque “enviar” permite escribir un dato completo de 8 bits en el modulo. .

1 = Habilita el TIMER1 0 = Deshabilita el TIMER1. Registro T1CON bit 7-6: No implementados: Se lee como “0” bit 5-4: TlCKPS1:T1CKPS0: bit de selección del preescaler de la señal de reloj del TIME1 11 = valor del preescaler 1:8 10 = valor del preescaler 1:4 01 = valor del preescaler 1:2 00 = valor del preescaler 1: 1 bit 3 : T1OSCEN: bit de habilitación del oscilador del TIMER1. El funcionamiento requiere la manipulación de 4 registros 1. 1 = Habilita el oscilador 0 = Deshabilita el oscilador bit 2: TlSYNC: bit de control de sincronización de la señal de entrada. Cuando se emplea un oscilador externo. La resolución de cada bit procedente de la conversión tiene un valor que es función de la tensión de referencia Vref de acuerdo con la siguiente fórmula: Así el valor del voltaje de referencia determina los límites máximos y mínimos de la señal a transformar. 3. hay que poner este bit a 1. Con TMR1CS = 1 1= No sincroniza la entrada de reloj externa 0 = Sincroniza la entrada de reloj externa Con TMR1CS = 0 En esta condición se ignora. CONVERSOR ANÁLOGO DIGITAL El conversor A/D posee una resolución de 10 bits. El TIMER1 utiliza el reloj interno cuando TMRICS=0 bit 1 TMR1CS: bit de selección de la fuente de reloj del TIMER1 1 = Reloj externo por el pin RC0/T1OSO/T1CK1 (flanco ascendente) 0 = Reloj interno (FOSC/4) bit 0: TMR1ON: TIMER1. El TMR1 puede trabajar a una frecuencia totalmente independiente de la del sistema. activo. Hace entrar o no en funcionamiento el TIMER1. DRESH parte alta del resultado de la conversión .

 Descripción de registro ADCON1 . (el bit se pone a cero automáticamente por hardware cuando la conversión A/D finaliza) el resultado de la conversión aparece en ADRDES:ADRESL bit 1: No implementado: Se lee como “0” bit 0: ADON: bit de puesta en marcha 1 = El convertidor A/D está operativo 0 = El convertidor A/D está apagado y no consume corriente. ADRESL ADCON0 ADCON1 ANSEL parte baja del resultado de la conversión registro de control 0 registro de control 1 registro de selección análoga En la pareja de registro ADRESH:ADRESL se deposita el resultado de la conversión.2. bit de estado de la conversión A/D Si ADON=1 1= La conversión A/D está en marcha (mientras está a 1 se está realizando la conversión) 0 = La conversión ha finalizado. (RA7/AN7).. 3.  Descripción de registro ADCON0 bit 7-6: ADCS1:ADCS0: bit de selección de reloj para el Convertidor A/D 00 Fosc/2 01 Fosc /8 10 Fosc/32 11 FRC (Procede del oscilador RC interno) bit 5-3: CH2:CH0: bit de selección del canal analógico 000 = Canal 0. (RA5/AN5). El ADCON0 y ADCON1 controlan el conversor A/D mientras que el ANSEL permite configurar los pines como entradas análoga. (RA2/AN2) 011 = Canal 3. 5. (RA6/AN6). de los cuales solo son significativos 10 de los bits de dicha pareja. los PIC 1 6F87X de 28 pines no tienen este canal bit 2: GO/#DONE. 4. los PIC16F87X de 28 pines no tienen este canal 111 = Canal 7. (RA0/AN0) 001 = Canal 1. (RA3/AN3) 100 = Canal 4. (RA4/AN4) 101 = Canal 5. los PIC16F87X de 28 pines no tienen este canal 110 = Canal 6. (RA1/AN1) 010 = Canal 2.

bit 5-4: VCFG1<1:0>: Configuración del voltaje de referencia del conversor A/D. 0 = pone los 6 bit de menor peso del registro ADRESL a “0” (alineación a la izquierda). Por lo tanto los 16 bits que forman el registro ARDESH-ARDESL con ADFM=1 tiene los 6 bit de mayor peso a cero y con ADFM=0 los 6 bit de menor peso están a cero bit 6: ADCS2: permite divide por 2 el reloj del conversor A/D 1 = la fuente de reloj del A/D se divide por dos. 0 = deshabilitada. Estado lógico 00 01 10 11 bit 3-0: no implementados  VREF+ AVDD AVDD VREF+ VREF+ VREFAVSS VREFAVSS VREF- descripción del registro ANSEL Bit7: no implementado bit 6-0: bits de selección de entradas análogas 1 = análogo 0 = digital .bit 7: ADFM: Selecciona el formato del resultado de la conversión A/D 1 = Pone en el registro ARDESH los seis bit de mayor peso a “0” (alineación a la derecha).

Cuando empieza el servicio de interrupción se hace necesario almacenar el registro de trabajo w y el registro de estado STATUS para luego ser nuevamente cargados con estos valores cuando termine la conversión. por lo que no se hizo necesario realizar los retardos para la conversión a través de software. los datos a convertir y enviar al LCD se almacenan en los registro ADLOW y ADHIGH que son registros de propósito general previamente definidos. El bloque “interrupción” se ejecuta cíclicamente cuando termina cada conversión.Configurar conversor A/D INTERRUPCION ANSEL=B’00000001’ ADCON1=B’11001110’ RA0 como entrada analoga SAVEW=W SAVESTATUS=STATUS Justificado a la derecha. La conversión se ejecuta cada vez que el temporizador TIMER1 se desborda. PIE1. voltje de referencia entre Vdd y Vss. . fuente de reloj dividida por 2. modulo encendido ADHIGH=ADRESH No PIR1. Diagramas de flujo de la programación del conversor A/D El bloque “configurar conversor A/D” carga los registros de control de acuerdo a las especificaciones que aparecen en el diagrama de flujo.ADIF=0 W=SAVEW STAUTS=SAVESTATUS RETURN RETFIE Figura 5. RA0 entreada analoga.ADIF=1 si ADLOW=ADRESL ADCON0=B’10000001’ CONFIGURACION DE TMR1 Fosc/64.ADIE=1 INTCON=B’11000000’ Activo interrupcion por conversor A/D Activo interrupciones generales y periféricas PIR1.

Angulo Usategui Microcontrolador PIC16F84. Pag 672-690.BIBLIOGRAFIA Microcontroladores <<PIC>>. 187-209. José M. Third edition. Pag 87-90. Enrique palacios Data Sheet PIC16F87/88. Pag 57-59. Dogan Ibrahim Programming and customizing the pic microcontroller. 77-99. Diseño practico de aplicaciones. Myke Predko . Segunda parte. Desarrollo de proyectos. pag 193-189. Segunda edición. Advanced PIC Microcontroller Projects in C. MICROCHIP.

Sign up to vote on this title
UsefulNot useful