microspec

La práctica sin teoría es ciega, la teoría sin práctica es inútil. Edison.

 ESPAÑOL /  ENGLISH 

PROXIMAMENTE 31 DE AGOSTO 2019:

CURSO DE PROGRAMACIÓN ARDUINO.

EN OTEC CROMA DIGITAL. SANTIAGO. INSCRIPCIONES, CONSULTAS AL MÓVIL WhatsApp 72068454 ó m.pacheco@microspec.cl
   Inicio      Microntroladores PIC
Índice microcontroladores PIC

Proyectos con microcontroladores PIC.

Estos microcontroladores de la empresa Microchip, son los más populares actualmente, puede ser por tener versiones económicas de pequeño tamaño, porque tiene set de instrucciones reducidas, por la disponibilidad de herramientas de programación y por la facilidad para grabarlo.

Si estamos diseñando un circuito compuesto por varios circuitos integrados de compuertas lógicas, temporizadores, etc, debemos considerar que es más conveniente utilizar un microcontrolador. La cantidad de componentes externos sería menor, el circuito impreso más sencillo, y el circuito más fácil de actualizar o modificar, así que vale la pena aprender a usarlos.
 
 Dentro de las cosas que debemos hacer para aprender sobre estos microcontroladores:

1.   Leer las hojas técnicas de un microcontrolador pequeño y económico, para empezar. Puede ser el PIC16F84A o el más reciente PIC16F716.

2.   Conseguir las herramientas de compilación y simulación. MPLAB funciona bien y está disponible gratis en la página de Microchip.

3.   Crear programas para ejercicios sencillos y comprobarlos con el simulador.

4.   Comprar o construir un grabador. Los grabadores Pickit2 y Pickit 3 son oficiales de Microchip y son económicos. Se conectan al PC a través de puerto USB, a través del cual también se alimentan.

Si pretendemos construirnos nuestro grabador conviene elegir alguno del listado que funciona con icprog, este programa funciona bien y también es gratis. Además debemos asegurarnos de contar con algún equipo antiguo con puerto paralelo o serial según requiera el grabador.
       

Timer 0 del 16F84.

Implementar ICSP de Microchip en nuestros proyectos.

Los protocolos de grabación serial de los microcontroladores actuales, como el ICSP (In Circuit Serial Programming) de Microchip fueron concebidos para programar los microcontroladores en la aplicación, es decir, sin retirar el microcontrolador de la tarjeta, con ventajas evidentes sobre todo para producción masiva.

Es por esto que los grabadores como Pickit2 de Microchip no traen un zócalo ZIF (Zero Insertion Force).

Cuando desarrollamos prototipos necesitaremos probar el programa del microcontrolador en protoboard. En este caso nos conviene construir un cable con un conector "Slim" hembra de 6 pines en un extremo y en el otro puntas para el protoboard.

Podemos mantener el cable conectado al protoboard mientras no lo necesitemos para otro proyecto.
 
 
Fig.2: Cable conexión ICSP para conectar grabador con protoboard.
 
 
 
Fig.3: Conexión grabador a protoboard.
 

De todas maneras nos va a resultar más cómodo construir este cable una sóla vez, que retirar muchas veces el microcontrolador del protoboard para grabarlo cada vez que se necesite corregir el programa.

Además:

  • es usual que queden puentes o componentes atravesados por encima del microcontrolador. Por ejemplo el típico condensador de 0,1uF en los pines de alimentación.
  •  
  • el cable nos permite en el futuro aprovechar la función de depuración en circuito (In Circuit Debugger) que está disponible en los microcontroladores de rango alto y en los más recientes de rango medio.
  •  
  • con el cable podemos prescindir de una fuente de alimentación externa y usar los 5V del USB del computador a través del grabador para alimentar el circuito. La aplicación de Pickit2 tiene una casilla de verificación para activar o desactivar la alimentación.

El conector del grabador tiene 6 pines. Se utilizan 5 para grabar microcontroladores y se dejó un sexto para posibles funciones auxiliares:

  1. VPP   Voltaje de programación.
  2. VDD  Positivo de fuente de alimentación
  3. VSS  Negativo de fuente de alimentación
  4. PGD  Dato de programación.
  5. PGC  Clock de programación.
  6. AUX  Auxiliar.

Nota.

Pin 1 marcado con flecha blanca en Pickit2

Para grabar con éxito nuestro microcontrolador "en circuito" debemos evitar que los componentes de nuestra aplicación, conectados a los pines que intervienen en la grabación interfieran con las señales de grabación.

Para el pin VPP que se conecta al MCLR del microcontrolador basta con un circuito "Power on reset" y una resistencia de 470 Ohm para aislarse de éste.

NO SE PUEDE USAR MCLR DIRECTAMENTE A +V

Las señales PGD y PGC se conectan a RB7 y RB6 respectivamente y para aislarse de la aplicación se puede poner resistencias en serie si la aplicación lo permite.

En último caso si no queremos complicarnos y nos sobran pines de IO dejamos RB6 y RB7 exclusivos para ICSP.

 
Fig.4: Implementar ICSP en protoboard.
 
 
 

Uso de interrupciones externas de microcontroladores.

Muchos de los pulsos que deseamos leer con el microcontrolador aparecen de forma breve e inesperada. Si bien los microcontroladores actuales pueden ejecutar instrucciones en fracciones de microsegundo, evaluar el estado de una entrada permanentemente a través de un "loop" no garantiza la lectura del evento. (ej teclados, señales "Ready" de un ADC, etc.)

Para resolver este problema, los microcontroladores disponen de un mecanismo llamado interrupción, que en este caso serán externas, pues las hay también internas (timers, módulos de comunicación, etc.).

 Los microcontroladores PIC de Microchip constan con una interrupción externa asociada al pin RB0 y una interrupción "on change" (al cambio) que se activa al cambiar el estado de los pines RB7, RB6, RB5 y RB4.

Al producirse un cambio en un pin de entrada asociado a una interrupción, hardware interno del microcontrolador activa un "flag". Si la interrupción está habilitada el programa altera su flujo normal y salta a una dirección asignada, llamada "Vector de interrupción" y a partir de esa dirección está escrito el código a ejecutar al producirse la interrupción: "Rutina de servicio de interrupción" o RSI o ISR. Logrando de esta manera atender inmediatamente un evento.

Para producir una interrupción, el pin debe estar configurado como entrada y la interrupción debe estar habilitada en los registros correspondientes.

Para probar el funcionamiento de la interrupción en el simulador de MPLAB de Microchip podemos crear un "Workbook" en "Debugger/ Stimulus/ "New Workbook". Se abre una ventana que nos permite aplicar distintos niveles a los pines de entrada.

Hacer click en un campo en blanco de la columna "Pin/Sfr" y aparece una flecha para desplegar un menú, aquí elegimos el pin que nos interesa cambiar y en la columna "Action" elegimos la acción que se le aplicará al pin. Puede ser "Toggle" que conmuta el estado del pin.

Para activar el estímulo elegido debemos hacer click en la casilla "Fire" de la fila correspondiente.

Si la interrupción esta bien configurada, el flujo del programa debe saltar al vector de interrupción al producirse un canto de subida o de bajada, según cómo se configuró la interrupción.

Según lo que se necesite hacer con el programa, a veces resulta más conveniente no habilitar la interrupción y evaluar con un "loop" el estado del flag correspondiente a la interrupción. A diferencia del método que explicaba al principio, de esta forma sí se asegura recibir el evento, pues aunque no sea inmediatamente, aunque el evento desaparezca, el flag de interrupción queda activado.

 

Empezando con lenguaje C para microcontrolador PIC.

Primero aclaremos que a diferencia de terceras empresas, Microchip no tenía compilador C para los microcontroladores pequeños, sólo para los de gama alta como la familia PIC18 y superiores, los cuales han sido diseñados para trabajar con lenguaje C. (Actualmente MPLABX graba microcontroladores pequeños).
El compilador C18 se baja de forma gratuita de la página de Microchip.

Aunque el lenguaje Assembler nos permite resolver cualquier problema y debemos primero pensar en resolverlo con Assembler, pues el microcontrolador puede ser más económico, hay requerimientos que nos obligan a programar en un lenguaje de nivel más alto, como lenguaje C:
  • Evitar complejos algoritmos de aritmética de Assembler.
  • Simplificación del código y disminución del tiempo de desarrollo.
El costo de un uC PIC18F4550 de 40 pines está alrededor de $6.000(Chile).
 

Herramientas:

Debemos tener instalado en el computador MPLAB y el compilador C18. Ambos se descargan de forma gratuita de la página de Microchip.

Primero debemos instalar MPLAB y después C18, el cual se instala en el raíz y configurará a MPLAB para integrar C18 en MPLAB.

Haremos un ejemplo muy simple con las siguientes herramientas de desarrollo:

  • MPLAB versián 8.56
  • C18 versión 3.36
  • Aplicación Microchip HID bootloader v2.6a
  • Tarjeta de evaluación PICDEM FS USB con uC 18F4550.
  • Cable USB A a B. El de impresoras sirve.
 
Para quienes deseen conseguir una de mis tarjetas compatibles PICDEM FS USB:
 
 

Características del microcontrolador PIC18F4550:

  • 40 pines
  • 35 pines I/O.
  • puerto USB 2.0
  • 4 timers
  • Salida PWM
  • ADC 10 bit y 13 canales
  • Arquitectura optimizada para compilador C.
  • 32K memoria flash, 2048 SRAM, 256 EEPROM

 

Características tarjetaPICDEM FS USB:

  • Conector USB tipo B
  • Pulsador y LEDs incorporados en pines I/O.
  • Microcontrolador PIC18F4550.
  • Conector e interface serial RS232.
  • Incluye bootloader HID. (Es reconocido por PC sin necesidad de driver).
  • Conector ICSP
  • Incluye potenciómetro en entrada ADC.

 

Debemos revisar y tener una copia de estos archivos a mano:

  • 39632e.pdf                               datasheets de PIC18F4550
  • c18_user_guide_51288j.pdf       guía de usuario de C18
  • p18f4550.inc                             definiciones de registros
Ubicados en: C:Archivos de programaMicrochipMPASM Suite
  • mplab_c18_getting_started_51295f.pdf
  • mplab-c18-libraries_51297f.pdf
  • hlppic18configset.chm

Ubicados en C:MCC18doc

También es recomendable tener algún libro de lenguaje C ANSI aunque sea para PC, para consultar la sintaxis, estructuras de bucles, etc.


 
 
 

Crear proyecto en MPLAB:

  1. Crear una carpeta con el nombre que le queramos dar a nuestro proyecto.
  2. Copiar en la carpeta archivo fuente main.c disponible en link abajo.
  3. Copiar en la carpeta archivo linker. Usar: "rm18f4550 - hid bootload.lkr" para usar con Bootloader HID.
  4. En menú "Project" click en "Project Wizard" y en la siguiente ventana click en botón "Siguiente".
  5. En esta ventana elegir "PIC18F4550" y hacer click en siguiente.

 
 
 
 
6. En campo "Active Toolsuite" elegir "Microchip C18 Toolsuite" y hacer click en siguiente.
 
 
 
 
7. Ahora click en "Browse" y abrir la carpeta que creamos anteriormente.
 
 
 
 
8. Elegir nombre de proyecto y click en "Guardar".
 
 
 

9. En esta ventana, "Step Three" click en "Siguiente".

10. Ahora en la ventana "Step Four" localizar la carpeta de nuestro proyecto y seleccionar cada uno de los 2 archivos y agregarlos al proyecto haciendo click en "Add". Luego click en "Siguiente".
 
 
 
11. En la ventana "Sumary" click en "Finalizar" para crear el proyecto.
 
 
 
12. Nos aparece un esquema de nuestro proyecto en estructura de árbol. Confirmar que aparezcan
nuestros  2 archivos: main.c en "Source files" y rm18f4550 - hid bootload.lkr en "Linker script".  
 
 

Si revisamos con el explorador de archivos la carpeta de nuestro proyecto, veremos que ahora se agregaron 3 archivos más. Estos archivos mantienen la información sobre el proyecto. El que tiene extensión "mcw" guarda la información de las ventanas abiertas y su distribución sobre el espacio de trabajo. Posteriormente podemos abrir nuestro proyecto con este archivo o con el de extensión "mcp".

13. Ahora ya estamos en condiciones de compilar y ejecutar nuestro proyecto con "Project" "Build All".

Si todo está bién deberíamos obtener "Build Succeeded" en la ventana "Ouput".

Y si revisamos en este momento, con el explorador de archivos, la carpeta de nuestro proyecto veremos que se agregaron 3 archivos más. El que nos interesa por ahora es el que tiene extensión "hex" pues es el que se cargará en el microcontrolador.

Para ver en detalle la ejecución del programa debemos aprender a usar el simulador de MPLAB. Ver sección:

Uso de Simulador de MPLAB.

Es un ejemplo muy sencillo de la guía "Getting started" al cual se le cambió el puerto de salida al puerto D, pues éste incorpora 4 LEDs en la tarjeta PICDEM FS USB.

El programa configura el puerto D como salida, lo resetea, y luego lo deja permanentemente en estado alto. Pueden modificarlo ustedes posteriormente para dejar los LEDs permanentemente apagados.
 
 

Cargar programa al microcontrolador.

Una de las características de la tarjeta de evaluación es que ya viene con un bootloader grabado, esto nos permite cargar el programa al microcontrolador sin necesidad de un grabador, pues el bootloader se encarga de recibir el archivo "hex" a través del puerto USB y hacer que el microcontrolador se grabe a si mismo con el programa de nuestra aplicación a continuación del espacio que ocupa el programa del "Bootloader".

El bootloader usado es el denominado HID, que es el que usa Microchip en sus últimas bibliotecas de aplicación MAL (Microchip Aplication Library).

Este bootloader es declarado al sistema  como un dispositivo de interfaz humana (HID), los cuales Windows reconoce directamente sin necesidad de driver.

1.   Ejecutar aplicación "HID bootloader" y nos aparecerá esta ventana:
 
 

La tarjeta de evaluación PICDEM FS USB normalmente ejecuta el programa que se le ha cargado y si mantenemos presionado uno de sus pulsadores (S2) y reseteamos entra al modo bootloader. Al entrar a este modo será reconocida por el sistema y por la aplicación Bootloader, recuerden que no necesita driver, y se habilitará el botón "Open Hex File" de la aplicación en el PC.

2.   Haciendo click en botón "Open Hex File" podemos cargar el archivo con extensión "hex" que generamos anteriormente.

3.   Click en "Program/Verify" para cargar el microcontrolador con nuestro programa. Confirmar que la operación se realizó con éxito en la parte informativa de la ventana principal.

4.   Presionar pulsador "Reset" de la tarjeta lo que hace que salga del modo bootloader y ejecute nuestro programa. Deben encenderse los 4 LEDs que la tarjeta tiene conectados en el Puerto D.

A continuación analizamos el programa para que lo entienda y puedan usarlo como plantilla y modificarlo de acuerdo a sus necesidades.
 

Análisis del programa.

1.   Lo que está encerrado entre /* y */ son comentarios y aparecen en MPLAB de color gris claro:

/*Ejemplo 2 capítulo "Getting started" "Light LED"
modificado para puerto D que tiene LEDs en tarjeta USB_BOARD_4550  
XTAL =      20MHz
versión:     10 para bootloader HID
Modificado: 13 Agosto 2012
*/
 

2.   "//" se usa para agregar comentarios desde que aparece hasta el final de la línea:

#pragma config PLLDIV   = 5         // 20 MHz crystal/5 = 4MHZ para PLL 96MHz

A veces se usan también para deshabilitar una línea del programa sin borrarla:

//#pragma config CP2      = OFF
 

3.   Los comandos  "#pragma config" le indican al programa grabador el valor de los distintos bytes de fusibles de configuración que tiene el microcontrolador:

#pragma config PLLDIV   = 5         // 20 MHz crystal/5 = 4MHZ para PLL 96MHz
 

4.   Ya que el programa bootloader ocupa permanentemente un espacio al inicio de la memoria de programa donde se encuentran los vectores de reset e interrupción, debemos re-direccionar  estos vectores:

//      (PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)

#define REMAPPED_RESET_VECTOR_ADDRESS                      0x1000

extern void _startup (void);        // See c018i.c in your C18 compiler dir

#pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS

  void _reset (void)

  {

   _asm goto _startup _endasm

  }
 
5.   Con "void main(void)" comienza nuestro programa principal. Está encerrado entre paréntesis de llaves ô´{}"
 
 
6.   "TRISD = 0;" configura el puerto D como salida.
 

7.   El valor que asignemos a "PORTD" se verá reflejado en la salida:

PORTD = 0x0f;

Con esto los 4 bits menos significativos se activan, por lo tanto los LEDs se encienden.

 
 

Uso de Simulador de MPLAB.

1.   Si no vemos el código fuente de nuestro programa en este momento y sólo vemos el esquema de árbol. Hacer click en el archivo con extensión .c para abrirlo.

2.   Si seleccionamos "Debugger/Select tool" podemos ver varias herramientas de depuración. "MPLAB SIM" no requiere hardware adicional y nos permite simular en pantalla. Elegir esta opción.

3.   Se agregará una barra con iconos que nos permiten ejecutar el programa paso a paso, de una sóla vez, saltarse funciones, salir de éstas, etc.
 

Nota:

F5, F6, F7, F8, F9 corresponden a los íconos de la barra de depuración.

 
4.   Teniendo abierto nuestro proyecto presionar "F5" (Halt) y luego "F6" (Reset) para asegurarnos que no haya una ejecución en progreso.

Nota:

Es necesario hacer click en la parte blanca de la ventana que contiene el código para enfocarla y luego ejecutar los comandos de depuración.

5.   Presionar "F7" para ejecutar paso a paso.

Pasaremos por varias sentencias de funciones que implementan C18 y que aparecen en una ventana separada. Nos concentraremos en llegar a la función "main" de nuestro programa.

6.   En la primera línea después de la llave de apertura de main podemos hacer doble click para poner un "Breakpoint", lo que nos permitirá ejecutar hasta este punto de una sóla vez la próxima vez que corramos el programa desde el principio con F9.

7.   Presionar F5 y F6 para resetear, luego F9 y llegaremos al "Breakpoint". Luego podemos seguir paso a paso.

8.   Para ver cómo cambian los registros del microcontrolador ejecutar "View/Watch":
 
 

Elegir el registro que queremos observar en la caja combo izquierda, por ejemplo para nuestro programa "Prog2", elegir "PORTD" y luego click en el botón "Add SFR".

Ejecutemos nuevamente paso a paso observando cómo cambia el estado de "PORTD".

9.   Cuando cerremos el proyecto debemos guardar también el "Work space".
 
 
 

Grabación de E2PROM 93LC46 con Pickit2.

Aunque las memorias E2PROM seriales no se comunican a través de ICSP como los microcontroladores, de todas maneras la aplicación de Pickit2 permite grabarlas. En el archivo "pickit 2 readme.txt" (ubicado en C: ARCHIVOS DE PROGRAMAMICROCHIPPICKIT 2 V2) se puede ver la conexión entre los pines del grabador y los de la memoria:

PICkit 2 Pin 93LC Device Pin (DIP)
1 Vpp 1 CS
2 Vdd 8 Vcc
3 Gnd 5 Vss
4 PGD 4 DO
5 PGC 2 CLK
6 AUX 3 DI

7 PE-enabled (Vdd)

6 'C' Device ORG select word size

Nota.

No se conectaron pines 6 y 7 de E2PROM pues en Datasheet se ve que son "NC".
 
 
Fig.5: Conexión entre Pickit2 y E2PROM 93LC46.
 

También aparecen las conexiones para grabar memorias E2PROM de otras familias como las:

  • 11LC..
  • 24LC..
  • 25LC..

 

Reinstalar firmaware de Pickit2

Si por algún motivo se pierde el firmware de Pickit2 podemos recurrir a la carpeta de instalación de Pickit2, ahí encontraremos una copia:

C:Program FilesMicrochipPICkit 2 v2"PK2V023200.hex"

Cargarlo a través de aplicación de Pickit2 en menú: "TOOLS/Download Pickit2..."
 
 
 
 
 

Manejo de LCD con PIC18

El circuito a implementar para conectar un display LCD a un microcontrolador no es tan complicado, además si necesitamos mostrar información en varios dígitos, el circuito de multiplexado de displays LEDs de 7 segmentos sería más complicado que el de un LCD. Y por supuesto que si requerimos mostrar caracteres alfanuméricos la elección de un display LCD es obligatoria.

Con un display LCD podemos presentar cualquier carácter sólamente enviando su código ASCCI correspondiente. También se puede enviar comandos al LCD para hacer algunos efectos como parpadear o rotar.

C18 tiene una biblioteca con funciones para LCD las que nos simplifican enormemente el trabajo. Estas funciones están hechas para displays LCD compatibles con el control Hitachi HD44780, el cual fue muy popular por lo que muchos displays LCD actuales son fabricados para ser compatibles con el Hitachi. Acá en Chile hay LCD compatibles en Victronics y en Olimex. En este caso hemos elegido el GDM1602 de Olimex que se caracteriza por mostrar los caracteres como si estuvieran en "video inverso" en fondo azul dándole gran contraste y atractivo. El ADM1602 es igual excepto que la salida de los pines es por el lado opuesto. Esto no nos va a afectar si implementamos las conexiones al LCD directo con cinta de cables, pero si afectará si ya tenemos un diseño en PCB para un determinado modelo de display.

 

Características del display LCD GDM1602

  • 16 caracteres 2 líneas.
  • Se puede alimentar BKL con 5V directo a fuente de alimentación o a través de pin I/O.
  • Trabaja en modo de 4 bits de datos u 8 bits.
  • Modo 4 bits usa en total 7 pines I/O.
 

Implementación

  • Implementaremos una tarjeta universal  con un potenciómetro de 10K externo para contraste y conectores para derivar alimentación al LCD.
  • Elegimos trabjar en modo de 4 bits porque usa sólo 7 pines I/O. En este caso elegiremos el puerto D .

Para configurar en modo de 4 bits y a través de puerto D debemos modificar archivo "xlcd.h" de MCC18. Éste está ubicado en:

C:MCC18h

Originalmente xlcd.h está configurado para modo de 8 bits y para puerto B, pero preferimos modificarlo para trabajar en modo 4 bits por su ahorro considerable de líneas I/O y con el puerto D en vez del B, porque en el puerto B están los pines de interrupciones externas y así podemos disponer del puerto B para en caso de necesitarlas posteriormente en nuestro programa.

Pueden renombrar archivo xlcd.h original y copiar en la misma ubicación archivo xlcd.h modificado que pueden bajar aquí:

 Bajar xlcd.h modificado. 

 

Hardware

Construir un cable con un conector slim hembra de 8 contactos:

  1. Cortar un trozo de cinta de cables gris de unos 15cm, y con 7 conductores, idealmente que incluya el cable marcado con rojo, sino marcar un extremo con plumón.
  2.  
  3. Poner en un extremo los terminales slim (7).
  4.  
  5. Introducir el extremo con terminales dentro del conector slim hembra de manera que quede el conductor marcado en un extremo y el contacto vacío en el opuesto.
En el otro extremo de la cinta de cables debes conectar con soldadura, cada uno de los 7 cables al conector del LCD según esquema:  
 

Fig.6: Esquema conexión entre PIC18F4550 y LCD.
 
uC                          LCD        PIN
RD0                       DB4        11
RD1                       DB5        12
RD2                       DB6        13
RD3                       DB7        14
RD4                       E             6
RD5                       RS           4
RD6                       RW         5
 
Fig.7: Conexiones en LCD con cinta de cables.
 
  5. El conductor marcado sera RD0
  6. Abrir pista de jumper de LEDs JP2.
  7.Marcar con plumón pin de RD0 en tarjeta:
 
 
Fig.8: Marca RD0 y +V.
 

Ahora sólo falta las conexiones de alimentación del LCD:

1. Lo mejor es implementar el control de contraste y derivaciones de alimentación en un pequeño trozo de tarjeta universal que dejaremos volante:
 
 
Fig. 9: Tarjeta contraste y alimentación.  
 
2. Los cables del conector de 3 pines con cables grises son +V, Vo y GND del LCD.
3. Los cables del conector de 2 pines con colores naranja y verde son A y K del backlight del LCD.
4. Los cables del conector de 2 pines con colores rojo y negro son +V y GND y van a la tarjeta USB board:  
 
  • +V tenemos en un extremo de la resistencia de 1K del LED de power. Ver marca "+" en Fig 3.
  • GND puede ser en el cátodo del LED indicador de power. Si miramos por debajo las pistas en este LED, la más ancha es GND.

5. Para implementar tarjeta volante guiarse con esquema de figura 1

 

Software

  • Crear proyecto incluyendo archivo fuente principal.  Bajar fuente LCD. 
  • Incluir en proyecto archivo cabecera xlcd.h
  • incluir en proyecto (no incluir en carpeta de proyecto) archivos *.c de carpeta XLCD: "MCC8srcpmc_commonXLCD
Se deben incluir en carpeta de proyecto "Source Files". Para separar de archivo fuente principal se puede crear una sub carpeta y en ésta incluir archivos haciendo click derecho y eligiendo "Add files". Ver Fig. 10.
 

Fig.10: Carpeta XLCD con archivos fuente.


  • Obtendremos respectivos *.o en proyecto después de compilar.

Dentro de las funciones que nos ofrece la biblioteca de C18 para LCD de podemos distinguir:

WriteDataXLCD que nos permite enviar un carácter para imprimir en el LCD a través de su correspondiente código ASCCI.

Ejemplo: WriteDataXLCD("A"); enviará carácter "A" al LCD.

Si deseamos presentar un número en el display, por ejemplo, el contenido de una variable, primero debemos descomponer el número y luego enviar las centenas, decenas y unidades, por ejemplo para un número de 3 cifras, y sumarle "30" en hexadecimal. Recordemos que el LCD espera un código ASCCI y como el código ASCCI del cero es el 30h y los dígitos del 0 al 9 están consecutivos en la tabla ASCCI logramos presentar el dígito que deseamos. Ver programa.

putrsXLCD que permite enviar una cadena de caracteres al display. Ejemplo:

putrsXLCD(" TEMP = ");

WriteCmdXLCD que envía un comando al LCD. Debido que además hay que revisar si LCD está ocupado a través de función BusyXLCD se ha creado la función comandXLCD que incluye la función BusyXLCD.

 
COMANDOS DEL LCD:

ENTRY MODE SET:

Si el bit 2 del comando que enviamos es 1 entonces estamos seleccionando el comando "Entry mode set" que tiene el siguiente formato:

1 I/D SH

I/D: determina la dirección hacia la cual se moverá el cursor a medida que presentamos caracteres.

SH: determina si se desplaza o no el display completo.

Ejemplo:

comandXLCD (0b00000110);  Cursor se desplazará hacia la derecha y el LCD no se desplazará.

RETURN HOME:

Cursor vuelve a posición "Home". Ejemplo:

comandXLCD (0b0000010);        

DISPLAY ON/OFF CONTROL:

Si el bit 3 es uno entonces seleccionamos el comando "DISPLAY ON/OFF CONTROL" que tiene el siguiente formato:

1DCB

D: determina si el display está encendido o apagado.

C: determina si aparece o no cursor.

B: determina si cursor parpadea o no.

Ejemplo:

comandXLCD (0b0001100);         Display encendido, cursor no aparece ni parpadea.

CLEAR DISPLAY:

Borra pantalla completa. Ejemplo

comandXLCD (0b0000001);


 
 
 
 
 
 
      
 
 

  Volver 

MANEJADO POR Web Hosting