López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · -...

63
Ciencias Básicas e Ingeniería López Cuevas Jorge Alberto Aguilar Ramírez Edgar Santiago Aguilar Gilberto Ingeniero en Electrónica (Área de Concentración: Computación) Fausto Casco Sánchez Asesor de Proyecto México D.F., a 24 de Febrero de 2005 Máquina de Estados a través del PIC-16F873

Transcript of López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · -...

Page 1: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Ciencias Básicas e Ingeniería

López Cuevas Jorge Alberto Aguilar Ramírez Edgar

Santiago Aguilar Gilberto

Ingeniero en Electrónica (Área de Concentración: Computación)

Fausto Casco Sánchez Asesor de Proyecto

México D.F., a 24 de Febrero de 2005

Máquina de Estados a través del PIC-16F873

Page 2: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 2

MÁQUINA DE ESTADOS A TRAVÉS DEL PIC-16F873

INDICE

Tema Página

1. Resumen ………………………………………………………........... 4

2. Justificación …………………………………………………….…….. 4 3. Máquina de Estados (MDE) ………………………………………..…. 4

3.1. Definición …………………………………..…………………… 4 3.2. Funcionamiento …………………………………………….…… 5

3.3. Enfoque aplicado del MDE al sistema electrónico…………….… 6

4. Descripción General del Proyecto …………………………….………. 7

4.1. Partes que generan el Proyecto ……………………….………… 7 4.2. Montaje e Implementación del MDE ………………………….… 8

4.3. Montaje del Sistema ……………………………………..………. 8

5. Diseño e Implementación del Proyecto ……………………..………… 9

5.1. Implementación del Hardware ………………………..………… 9

5.1.1. Sistema Mínimo ……………………………………..…….. 9 5.1.2. Teclado …………………………………………..…..…... 10

5.1.3. LCD ……………………………………………………… 12

5.1.4. Bombas …………………………………………………… 13

5.1.5. Contenedores ……………………………………………... 14

5.1.6. Riel ……………………………………………………….. 15

5.2. Implementación del Software ……………………………….… 15

Page 3: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 3

5.3. Implementación Final de la máquina de Estados …………….. 15

6. Funcionamiento del Proyecto MDE ………………………………… 16

6.1. FUNCIONAMIENTO DE LAS BOMBAS POR OPCION…….... 16 7. Cambios Aplicados Al Diseño Original ……………………….…….. 16 8. Programación ……………………………………………………...…. 17

9. Conclusiones …………………………………………………………. 24

10. Bibliografía …………………………………………………………... 24

11. Anexos ……………………………………………………………….. 25

Page 4: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 4

MÁQUINA DE ESTADOS A TRAVÉS DEL PIC-16F873

1. Resumen

l presente trabajo se trata de una máquina de estados, basada en el diseño de un autómata, la cual contiene un conjunto finito de símbolos de entrada, un conjunto de

estados internos y un conjunto de símbolos de salida. Este trabajo se enfoca a una máquina surtidora de líquidos, en la cual toda la

información es procesada en PIC’s de modelo 16F873.

El sistema contará con un monitor, que se encarga de checar los niveles de los contenedores de líquidos y este avisa si existe un líquido en específico al solicitar una petición del usuario, de lo contrario mandará un mensaje a través de un módulo de cristal líquido (LCD). Existen 16 peticiones, en las cuales cada una tiene una función específica. 2. Justificación

l proyecto consiste en enfocar una idea computacional a un sistema electrónico, en este caso se trata del concepto de una máquina de estados, el cual estará enfocado hacia una

máquina específica, es decir, se trata de una máquina de estados surtidora de líquidos. Esta máquina tendrá una interfaz, la cual consiste, en un teclado matricial de 4x4 y

dependiendo a la opción dada por el teclado, la máquina dará como respuesta una secuencia de estados que le permitirá despachar el líquido bajo las condiciones que se le dan desde la entrada (teclado).

3. Máquina de Estados (MDE) 3.1. Definición Antes que nada es importante saber la definición de una máquina de estados, la cual desde el punto de vista computacional y algorítmico se define como una Máquina de Estados Finita, denotada por:

M = { A, B, E, f, g },

donde:

• A: Es un conjunto finito de símbolos de entrada.

E

E

Page 5: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 5

• E : Es un conjunto finito de estados internos. • B : Es un conjunto finito de símbolos de salida. • f : Es una función de próximo estado:

f : E x A → E .

• g : Es una función de salida

g :E x A → B .

3.2. Funcionamiento Para explicar el funcionamiento, nos podemos basar en el siguiente ejemplo ilustrativo: Problema:

Se tiene una máquina de estado finito que produce salida 1 siempre que vea 101; produce la salida 0 en caso contrario. Solución:

Dado A = {0, 1}, B = {0,1}. El estado inicial e0 se mantendrá si la entrada es 0 y cambiará a e1 si la entrada es 1; es decir f(e0,0)=e0; f(e0,1)=e1 (Ver Tabla 1).

El estado e1 se mantendrá si la entrada es 1 y cambiará a e2 si la entrada es 0; es decir f(e1,0)=e2; f(e1,1)=e1 (Ver Tabla 1).

El estado e2 cambiará a e0 si la entrada es 0 y cambiará a e1 si la entrada es 1 y aquí la salida será 1. Las demás salidas serán 0 (Ver Tabla 2).

f 0 1 e0 e0 e0 e1 e2 e1

e2 e0 e1

Tabla 1. Transición de Estados.

g 0 1 e0 0 0 e1 0 0 e2 0 1

Tabla 2. Salidas

Page 6: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 6

Así por ejemplo, si la entrada es 101 la máquina hará lo siguiente:

a) Al entrar 1 el estado cambia de e0 a e1 y la salida será 0. b) Al entrar 0 el estado cambia de e1 a e2 y la salida es 0. c) Al entrar 1 el estado cambia de e2 a e1 y la salida será 1.

Esta situación la podemos representar también, mediante un diagrama de transición donde los vértices o círculos serán los estados. El estado inicial se indica mediante una flecha. Si una entrada produce un cambio de estado del vértice ei al vértice ek, se traza una arista dirigida de ei a ek y se etiqueta como x/s donde x es la entrada y s es la salida. Si no hay cambio de estado, se traza un lazo dirigido sobre el vértice que representa ese estado (Ver Diagrama 1).

3.3. Enfoque aplicado del MDE al sistema electrónico. Para nuestro propio punto de vista electrónico, tenemos que la máquina de estados

es un circuito síncrono que tiene varios posibles estados dependiendo en el que se encuentre.

El sistema a diseñar va a constar de entradas, y cada una de estas entradas va a estar asociada a un estado interno, el cual decidirá la salida o salidas posibles que va a tener la máquina de estados. Las condiciones de entrada nos las va a dar el teclado, el cual nos proporcionará un número entre el 0 y el 16 por medio de 4 bits (las cuales ya serán entradas válidas), las entradas que se encuentran fuera del rango se consideraran como entradas inválidas dando como resultado un estado NO DESEADO o NO OPERABLE. Los estados internos serán también 16, los cuales estarán asociados a las opciones del teclado y determinarán la posible salida, la cual dependerá del funcionamiento de las

Diagrama 1. Diagrama de Transición de Estados a Salidas

Page 7: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 7

bombas, es decir, la salida determinará que bombas se van a activar. Estas bombas están enumeradas desde el 0 hasta la 7, las combinaciones válidas entre ellas estará determinado por el estado al que se quiera llegar (Ver Tabla 3). 4. Descripción General del Proyecto

El sistema contará con un monitoreo, el cual se encarga de checar los niveles de los contenedores de los líquidos y este avisa si existe un líquido en especifico al solicitar una petición del usuario y si esta es posible atenderla, de lo contrario mandará un mensaje a través de un módulo de cristal líquido o LCD y el usuario podrá ver que no es posible atender su petición y tendrá que elegir otra. Las posibilidades de función son 16 peticiones, en las cuales cada una de ellas tendrá una función específica, estas peticiones el usuario las seleccionará a través de un teclado matricial de 4x4.

4.1 Partes que generan el Proyecto

a) Diseño de la función de la máquina de estados en su forma teórica. b) Implementación del diseño básico y funcional de la máquina de estados a nivel

Hardware y Software, como: - Armado de la tarjetas controladoras con sus respectivos PIC’s. - Creación y diseño de la interfaz para el usuario. - La programación de los PIC’s para realizar las combinaciones necesarias

dependiendo de la entrada que el usuario seleccione (en este caso la interfaz será un teclado).

Estados Iniciales. Estados Internos. Salidas (BOMBAS). 0 – 0000 0 – 0000 0 - 11111110 1 – 0001 1 – 0001 1 - 11111101 2 – 0010 2 - 11111011 3 – 0011 3 - 11110111 4 – 0100 4 - 11101111 5 – 0101 5 - 11011111 6 – 0110 6 - 10111111 7 – 0111 7 - 01111111 8 – 1000 9 – 10001 A – 1010 B – 1011 C – 1100 D – 1101 E – 1110 F – 1111

Tabla 3.

Estados para el teclado y las bombas.

Page 8: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 8

- Controlador del flujo de los líquidos en cada uno de los contenedores. - Creación de un riel, encargado de la transportación del vaso.

c) Diseño del software de comunicación entre los PIC’s, también la implementación del teclado que se encontrará conectado directamente a la tarjeta como interfaz adicional (Ver Figura 1).

4.2. Montaje e Implementación del MDE

El proyecto se dividirá en dos partes:

1. El montaje del sistema, en la cual se manejará todo el control de la máquina de estados, así como del diseño de los dispositivos que permitirán el control de otros dispositivos esclavos.

2. La parte de implementación en la cual se toma la idea de la máquina de estados finita y se pasa a la teoría de control para el MDE por medio de software (programas que controlen activación/apagado de dispositivos, salida y captura de datos).

4.3. Montaje del Sistema

Para la conexión de los dispositivos electrónicos como el teclado y las bombas

tendremos que considerar una interfaz que permita la captura de datos desde el teclado así como el envío de datos para activar los dispositivos secundarios como el LCD y el comparador de niveles.

Figura 1 Esquema de las partes que integran el proyecto

Page 9: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 9

5. Diseño e Implementación del Proyecto

5.1 Implementación del Hardware

5.1.1 Sistema Mínimo

El sistema mínimo esta conformado por tres microcontroladores PIC de Microchip, cuyo modelo a ocupar es el 16F873 (Ver Figura 2). Cada uno de estos microcontroladores tiene asignada una función en específico, es decir, cada uno esta asignado al control de diferentes partes del proyecto. Un PIC se encarga del funcionamiento del teclado, las bombas y los niveles; otro del LCD, y el último del motor.

El PIC necesita un oscilador XT de 4MHz entre los pines 9 y 10, la alimentación en los 1,8,19, las alimentaciones VDD se mandan a tierra, ya que para este caso no son necesarias (Ver Figura 3).

Figura 2 Modelo PIC-16F873

Figura 3 Conexión del PIC 16F873

Page 10: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 10

5.1.2 Teclado Se cuenta con un teclado matricial de 4x4, el 74c922, el cual se codifica

directamente con uno de los PIC’s y regresa el valor de la tecla pulsada por medio de 4 bits (Ver Figura 4 - 5).

Figura 4 Carátula del Teclado y Flip- Flop

Figura 5. Teclado Matricial 4 x 4

Page 11: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 11

5.1.3 LCD

La pantalla de Cristal líquido o LCD (Liquid Crystal Display) es un dispositivo µControlador de visualización gráfica para la presentación de caracteres o símbolos, en este caso, el display por funcionamiento dispone de 2 filas de 16 caracteres cada una, y cada caracter dispone de una matriz de 5x7 puntos (pixeles). Este dispositivo esta gobernado por un controlador Hitachi 44780 y regula todos los parámetros de presentación.

Características particulares:

• Pantalla de caracteres ASCII, además de los caracteres Kanji y Griegos. • Desplazamiento de los caracteres hacia la izquierda o la derecha. • Proporciona la dirección de la posición absoluta o relativa del caracter. • Memoria de 40 caracteres por línea de pantalla. • Movimiento del cursor y cambio de su aspecto. • Permite que el usuario pueda programar 8 caracteres. • Conexión a un procesador usando una interfaz de 4 u 8 bits.

CONEXIÓN DEL LCD CON EL PIC16F873

Para comunicarse con la pantalla LCD podemos hacerlo por medio de sus patitas de entrada, dejando 8 bits de Bus de Datos y los 3 pines de control del puerto C, el cual manejaremos el RS, R/W y el E (Ver Diagramas 3 – 4 y Tabla 4).

Diagrama 3 Esquema de las partes del LCD

Page 12: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 12

Diagrama 4 Esquema de la conexión entre el PIC y el LCD

Tabla 4

Asignación de los pines para el modelo TM162AD, y sus funciones

Page 13: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 13

5.1.4 Bombas

La tarjeta consta de un decodificador 74LS138 el cual nos permitirá seleccionar una bomba en específico. La lógica del decodificador es como salida para la bomba seleccionada con “0” y con “1” como apagado (Ver Figura 6). Para la activación se implementaron relevadores de 5V para activar de un lado las Bombas y del otro la salida del PIC, es decir, el pin que nos va a proporcionar el cero “como activación del relé”.

Se contempla un BUFFER amplificador de voltaje, debido a que el PIC nos proporciona 2.5V en salida en vez de los 5V como salida TTL, para solucionar esto, integramos el ULN2003 para amplificar la salida y puedan operar los TTL y los relés sin problemas. Por otro lado se integra además un inversor debido a que el buffer nos entrega salidas inversas a las deseadas para la activación de las bombas (Ver Figuras 7-8).

Figura 6. Decodificador de 3 a 8 con selector y pin de habilitación

Figura 7 Modelo de la bomba utilizada

Page 14: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 14

5.1.5 Contenedores

El despachador de líquido consta de un contenedor de plástico, y para bombear el líquido se cuenta con un orificio en la parte superior que impide que el envase entre al alto vacío. En uno de los extremos se incorpora una manguera de plástico, las cual nos permitirá conectarlo a la bomba para bombear (Ver Figura 9(a) – 9 (b)).

Activación / apagado de bombas 0,1,2 y 3

Activación / apagado de bombas 4,5,6 y 7

Figura 8

Figura 9 (a)

Figura 9 (b)

Page 15: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 15

5.1.6 Riel

El mecanismo utilizado para transportar el vaso es un riel controlado por un motor a pasos, el cual es activado mediante un PIC y permite únicamente pasar un vaso por cada petición dada por el usuario desde el teclado (Ver Figura 10).

5.2 Implementación del Software

La implementación de software para este proyecto va a estar enfocado a todo el control de la máquina de estados, así como el control de todos los dispositivos, incluyendo el dispositivo principal (en este caso se trata del PIC-16F873), además se programa la interfase de entrada (en este caso se trata del teclado) y el monitoreo de las opciones dadas por el usuario (Modulo LCD). Todo esto controlado por el lenguaje de programación usado en el PIC, y para ser más específico, con el MPLAB (compilador de Microchip para PICS).

5.3 Implementación Final de la máquina de Estados A continuación se muestran las imágenes de la Máquina de Estados terminada:

Figura 10

Page 16: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 16

6. Funcionamiento del Proyecto MDE Si el usuario teclea la opción 1 del teclado, la máquina responderá con la acción 1 asociada con esa tecla, es decir, prenderá por 13 segundos la bomba para que posteriormente se apague y el usuario pueda tomar su vaso. Por otra parte el LCD mostrará el estatus de la bebida y el estatus de la opción elegida, esto será para corroborar la opción del usuario.

6.1 FUNCIONAMIENTO DE LAS BOMBAS POR OPCION.

A continuación se muestra el funcionamiento de las bombas, dependiendo al valor de entrada que nos proporciona el teclado.

OPCION DEL TECLADO

BOMBAS ACTIVADAS

TIEMPO DE LLENADO

NUMERO DE COMBINACIONES.

0 0 13 1 1 1 13 1 2 2 13 1 3 3 13 1 4 4 13 1 5 5 13 1 6 6 13 1 7 7 13 1 8 0,1 13 2 9 2,3 13 2 A 4,5 13 2 B 6,7 13 2 C 0,1,2 13 3 D 3,4,5 13 3 E 6,7,0 13 3 F 1,2,3 13 3

7. Cambios Aplicados Al Diseño Original El cambio mas radical fue el reemplazo del sistema mínimo con el HC11, ya que presentaba algunos problemas con su configuración interna y no era posible cambiarlo debido al diseño de la tarjeta.

El cambio fue por un microcontrolador PIC, el modelo es el PIC16F873. Este modelo tiene los elementos básicos de un sistema mínimo y con ayuda de los periféricos del pic (en este caso de los puertos) podemos controlar todos los mecanismos de igual manera como si hubiésemos seguido con la tarjeta anterior.

Page 17: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 17

8. Programación

LCD LIST P=PIC16F873 #INCLUDE <P16F873.INC> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC & _LVP_OFF ERRORLEVEL -302 ;________________________________________________ RA equ 05 ;Puerta A RB equ 07 ;Puerta B DATO_A equ 0x33 ;Registro del dato A DATO_B equ 0x34 ;Registro del dato B DELAY1 EQU 0x25 DELAY2 EQU 0x26 DELAY3 EQU 0x27 Temporal_1 equ 0x29 ;Variable temporal Temporal_2 equ 0x30 ;Variable temporal ORG 0 GOTO INICIO ORG 5 Include "lcd.lib" Tabla_Mensajes movwf PCL Mens_2 equ $ dt " BARMAN UAMI",0x00 Mens_3 equ $ dt "Elija una Tecla.",0x00 Mens_4 equ $ dt " Bebida Elegida",0x00 Mens_5 equ $ dt "Por Favor Espere",0x00 Mens_6 equ $ dt " Sirviendo",0x00 Mens_7 equ $ dt " Espere...",0x00 Mens_8 equ $ dt " Bebida Lista",0x00 Mens_9 equ $ dt " Tome su Vaso",0x00 Mens_10 equ $ dt "Producto Agotado",0x00

Page 18: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 18

Mens_11 equ $ dt "Seleccione otras",0x00 Mens_12 equ $ dt " No hay Vasos",0x00 Mens_13 equ $ dt "No hay Servicio.",0x00 INICIO CLRF DELAY1 CLRF DELAY2 CLRF DELAY3 CLRF Temporal_1 CLRF Temporal_2 CALL LCD_PORT ;Puertos en modo LCD BCF RA,0 ;Desactiva RS del modulo LCD BCF RA,2 ;Desactiva E del modulo LCD CALL LCD_INI ;Inicia LCD (CFG puertos...) MOVLW b'00001100' ;LCD On, cursor Off,Parpadeo Off CALL LCD_REG MOVLW b'00000110' ;INCREMENTA EL CURSOR (B1 1/0) CALL LCD_REG UAMI movlw b'00000001' call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_2 call Mensaje ;Visualiza el mensaje 2 movlw b'11000000' call LCD_REG ;Coloca cursor en 2ª fila del LCD movlw Mens_3 call Mensaje NOP GOTO servicio servicio BTFSS PORTB,1 GOTO NEXT_0 GOTO TXT_0 NEXT_0 BTFSS RA,3 ; Este bloque espera hasta que haya un pulso en porta GOTO NEXT_1 GOTO TXT_1 NEXT_1 BTFSS RA,4 GOTO NEXT_2 GOTO TXT_2 NEXT_2 BTFSS RA,5 GOTO servicio GOTO TXT_3 TXT_0 movlw b'00000001' ;MENSAJE DE VASOS AGOTADOS call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_4 call Mensaje ;Visualiza el mensaje 1 movlw b'11000000'

Page 19: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 19

call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_5 call Mensaje ;Visualiza el mensaje 2 WAITS BTFSC PORTB,1 GOTO WAITS GOTO NEXT_0 TXT_1 movlw b'00000001' ;MENSAJE DE SIRVIENDO call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_6 call Mensaje ;Visualiza el mensaje 1 movlw b'11000000' call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_7 call Mensaje ;Visualiza el mensaje 2 movlw h'36' call DELAY ;TIEMPO QUE SE TARDA EN SERVIR movlw b'00000001' ;MENSAJE DE RECOGER VASO call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_8 call Mensaje ;Visualiza el mensaje 1 movlw b'11000000' call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_9 call Mensaje ;Visualiza el mensaje 2 movlw h'14' call DELAY GOTO UAMI TXT_2 movlw b'00000001' ;MENSAJE DE PRODUCTO AGOTADO call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_10 call Mensaje ;Visualiza el mensaje 1 movlw b'11000000' call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_11 call Mensaje ;Visualiza el mensaje 2 movlw h'14' call DELAY GOTO UAMI TXT_3 movlw b'00000001' ;MENSAJE DE VASOS AGOTADOS call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_12 call Mensaje ;Visualiza el mensaje 1

Page 20: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 20

movlw b'11000000' call LCD_REG ;Borra LCD y Home (colocar cursor en 1ª posición) movlw Mens_13 call Mensaje ;Visualiza el mensaje 2 movlw h'14' call DELAY GOTO UAMI ;--------------------------------------------- ;---------------- rutina para el desplegado de mensajes ----------------- Mensaje movwf Temporal_1 ;Salva posición de la tabla Mensaje_1 movf Temporal_1,W ;Recupera posición de la tabla call Tabla_Mensajes ;Busca caracter de salida movwf Temporal_2 ;Guarda el caracter movf Temporal_2,F btfss STATUS,Z ;Mira si es el último goto No_es_ultimo return No_es_ultimo call LCD_DATOS ;Visualiza en el LCD incf Temporal_1,F ;Siguiente caracter goto Mensaje_1 DELAY MOVWF DELAY1 DEL DECFSZ DELAY3,f GOTO DEL DECFSZ DELAY2,f GOTO DEL DECFSZ DELAY1,f GOTO DEL RETURN END

MOTOR

LIST P=16F84A #INCLUDE <P16F84A.INC> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ERRORLEVEL -302 ;________________________________________________ DELAY1 EQU 0x30 DELAY2 EQU 0x31 DELAY3 EQU 0x32 VUELTAS EQU 0x33 RETARDO EQU 0x29 ORG 0 GOTO INICIO ORG 5

Page 21: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 21

Include "utilerias.h" INICIO BCF STATUS,RP0 BCF STATUS,RP1 CLRF PORTA CLRF PORTB BSF STATUS,RP0 MOVLW b'00000011' ;A0=ACTIVACION, A1=SENSOR_VASO, A2=NO_VASO, A3=SIRVIENDO. MOVWF TRISA MOVLW b'00000000' MOVWF TRISB BCF STATUS,RP0 ;BANCO 0 ACTIVA BTFSS PORTA,0 ; ACTIVACION DEL MOTOR. GOTO ACTIVA CALL VUELTA_MOTOR GOTO ACTIVA END

Principal LIST P=16F873 #INCLUDE <P16F873.INC> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC & _LVP_OFF ERRORLEVEL -302 ;________________________________________________ RDELAY EQU 0x21 CONTA0 EQU 0x22 CONTA1 EQU 0x23 CONTA2 EQU 0x24 DELAY1 EQU 0x30 DELAY2 EQU 0x31 DELAY3 EQU 0x32 TECLA EQU 0x34 ORG 0 GOTO INICIO ORG 5 Include "teclado.h" Include "tec_bom.h" Include "utileria.h" INICIO BSF STATUS,RP0 ;BANCO 1 MOVLW b'00110000' MOVWF TRISA ; A0-A3: DECODIFICADOR NIVELES, A4= NIVEL_0, A5= NIVEL=1 MOVLW h'06' MOVWF ADCON1

Page 22: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 22

MOVLW b'11110000' MOVWF TRISB ; TECLADO, RB7-RB4 ENTRADAS RB3-RBO SALIDAS MOVLW b'00000001' MOVWF TRISC ; C7-C4: NIVELES;;C3=ACT_MOTOR;C2=PROD.AGO;;C1=/LCD0;;C0=VASO BCF OPTION_REG,NOT_RBPU BCF STATUS,RP0 ;BANCO 0 ACTIVA CLRF PORTC CLRF PORTA CALL KB_SCAN CLRF PORTA CLRF PORTC GOTO ACTIVA END ;***************************** http://es.geocities.com/ionitron ******* ; PROGRAMA : tx-rs232.asm ; Funcion : Transmite 2 bytes por el puerto serie del pic en intervalos de ; 1 segundo. ; Serial port config: 9600 baudios,8 bits,paridad = none ; ; Revision : 1.0 7/2/2002 Programa para : PIC16F873 ; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us ; WDT : Deshabilitado Tipo de reloj : XT ; Code Prot : OFF ;************************************** www.pagina.de/ionitron ******* LIST P=16F873 ;Se indica el modo de procesador RADIX HEX ;Sistema de numeracion hexadecimal INCLUDE <P16f873.inc> ;se incluye la definicion de los ;registros internos CounterA EQU 20h CounterB EQU 21h CounterC EQU 22h ;<<<<<<----------------- VECTOR DE RESET -------------------->>>>>>> ORG 0x00 ;Inicio en el Vector de Reset goto INICIO ;Va a la primera instruccion del ;programa ;<<<<<<--------------- VECTOR DE INTERRUPCION --------------->>>>>>> ORG 0x04 ;Vector de interrupcion ;<<<<<<------------ INICIO PROGRAMA PRINCIPAL ---------------->>>>>>>

Page 23: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 23

INICIO clrf PORTB ;Limpia salidas clrf PORTC bsf RCSTA,SPEN ;se activa la USART bsf STATUS,RP0 ;Cambio al banco 1 ------------- bcf STATUS,RP1 clrf TRISB ;Puerta B como salida movlw b'10111111' ;RC7/Rx entrada, movwf TRISC ;RC6/Tx salida. movlw b'00100100' ;Configuracion USART movwf TXSTA ;y activacion de transmision movlw .25 ;9600 baudios movwf SPBRG bcf STATUS,RP0 ;Cambio al banco 0 ------------- bsf RCSTA,SPEN ;se activa la USART bsf STATUS,RP0 ;Cambio al banco 1 ------------- bcf STATUS,RP1 bsf TXSTA,TXEN ;Habilita la transmision bcf STATUS,RP0 ;Cambio al banco 0 ------------- bucle call PDelay movlw h'49' ;Envia el caracter, valor hex movwf TXREG ; del codigo ascii bsf STATUS,RP0 ;Cambio al banco 1 ------------- bcf STATUS,RP1 COMP_TX btfss TXSTA,TRMT ;comprueba si acabo de Tx. goto COMP_TX bcf STATUS,RP0 ;Cambio al banco 0 ------------- movlw .50 ;caracter ASCII en decimal movwf TXREG goto bucle ;<<<<<<-------------------- OTRAS RUTINAS --------------------->>>>>>> ;PIC Time Delay = 1,0000020 s with Osc = 4 MHz PDelay movlw D'6' movwf CounterC movlw D'24' movwf CounterB movlw D'168' movwf CounterA loop decfsz CounterA,1 goto loop decfsz CounterB,1 goto loop decfsz CounterC,1 goto loop return ;<<<<<<\\\\\\\\\\\THE\\\\\\\\\\\\\\//////////////END////////////>>>>>>> END

Page 24: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 24

9. Conclusiones

El hecho de enfocar una máquina despachadora de líquidos, como una máquina de estados (MDE), nos da una visión diferente de los autómatas y hace que el diseño de los circuitos de control sea sencillo, el montaje que presenta el modelo, lo hace económico tanto para su construcción, como su mantenimiento.

Es importante señalar que para la construcción de está máquina es necesario tener

conocimientos de electrónica, para poder realizar la parte física de la máquina, y también es necesario saber programar, para poder integrar a los componentes electrónicos, los programas necesarios para el funcionamiento de cada una de las partes de la máquina.

10. Bibliografía.

1. SEDRA, Adel, “Dispositivos Electrónicos y Amplificaciones de Señales”, Mac-Graw-Hill, 2ª. Edición, México, D.F, 1996.

2. Microchip WebSite, “Especificaciones Técnicas del PIC16F873”,

www.microchip.com 3. LINDEMANN, Christoph, “Performance Modelling with Deterministic and

Stochastic Petri Nets”, 1998 – ISBN 0 471 97646 6 4. GAJSKI, Daniel, “Principios de Diseño Digital”, Prentice Hall, 1997 5. PATTERSON, David. & HENNESSY ,John L., “Organización y diseño de

computadores. La interfaz hardware/software” , Mc Graw Hill, 1995

Page 25: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 25

Page 26: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 26

LCD Interfacing Reference Page LCDs can add a lot to your application in terms of providing an useful interface for the user, debugging an application or just giving it a "professional" look. The most common type of LCD controller is the Hitatchi 44780 which provides a relatively simple interface between a processor and an LCD. Using this interface is often not attempted by inexperienced designers and programmers because it is difficult to find good documentation on the interface, initializing the interface can be a problem and the displays themselves are expensive.

I have worked with Hitatchi 44780 based LCDs for a while now and I have to say that I don't believe any of these perceptions. LCDs can be added quite easily to an application and use as few as three digital output pins for control. As for cost, LCDs can be often pulled out of old devices or found in surplus stores for less than a dollar.

The purpose of this page is to give a brief tutorial on how to interface with Hitatchi 44780 based LCDs. I have tried to provide the all the data necessary for successfully adding LCDs to your application.

The most common connector used for the 44780 based LCDs is 14 pins in a row, with pin centers 0.100" apart. The pins are wired as:

Pins Description

1 Ground

2 Vcc

3 Contrast Voltage

4 "R/S" _Instruction/Register Select

5 "R/W" _Read/Write LCD Registers

6 "E" Clock

7 - 14 Data I/O Pins

As you would probably guess from this description, the interface is a parallel bus, allowing simple and fast reading/writing of data to and from the LCD.

This waveform will write an ASCII Byte out to the LCD's screen. The ASCII code to be displayed is eight bits long and is sent to the LCD either four or eight bits at a time. If four bit mode is used, two "nybbles" of data (Sent high four bits and then low four bits with an "E" Clock pulse with each nybble) are sent to make up a full eight bit transfer. The "E" Clock is used to initiate the data transfer within the LCD.

Page 27: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 27

Sending parallel data as either four or eight bits are the two primary modes of operation. While there are secondary considerations and modes, deciding how to send the data to the LCD is most critical decision to be made for an LCD interface application.

Eight bit mode is best used when speed is required in an application and at least ten I/O pins are available. Four bit mode requires a minimum of six bits. To wire a microcontroller to an LCD in four bit mode, just the top four bits (DB4-7) are written to.

The "R/S" bit is used to select whether data or an instruction is being transferred between the microcontroller and the LCD. If the Bit is set, then the byte at the current LCD "Cursor" Position can be read or written. When the Bit is reset, either an instruction is being sent to the LCD or the execution status of the last instruction is read back (whether or not it has completed).

The different instructions available for use with the 44780 are shown in the table below:

R/S R/W D7 D6 D5 D4 D3 D2 D1 D0 Instruction/Description

4 5 14 13 12 11 10 9 8 7 Pins

0 0 0 0 0 0 0 0 0 1 Clear Display

0 0 0 0 0 0 0 0 1 * Return Cursor and LCD to Home Position

0 0 0 0 0 0 0 1 ID S Set Cursor Move Direction

0 0 0 0 0 0 1 D C B Enable Display/Cursor

0 0 0 0 0 1 SC RL * * Move Cursor/Shift Display

0 0 0 0 1 DL N F * * Set Interface Length

0 0 0 1 A A A A A A Move Cursor into CGRAM

0 0 1 A A A A A A A Move Cursor to Display

Page 28: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 28

0 1 BF * * * * * * * Poll the "Busy Flag"

1 0 D D D D D D D D Write a Character to the Display at the Current Cursor Position

1 1 D D D D D D D D Read the Character on the Display at the Current Cursor Position

The bit descriptions for the different commands are: "*" - Not Used/Ignored. This bit can be either "1" or "0" Set Cursor Move Direction: ID - Increment the Cursor After Each Byte Written to Display if Set S - Shift Display when Byte Written to Display Enable Display/Cursor D - Turn Display On(1)/Off(0) C - Turn Cursor On(1)/Off(0) B - Cursor Blink On(1)/Off(0) Move Cursor/Shift Display SC - Display Shift On(1)/Off(0) RL - Direction of Shift Right(1)/Left(0) Set Interface Length DL - Set Data Interface Length 8(1)/4(0) N - Number of Display Lines 1(0)/2(1) F - Character Font 5x10(1)/5x7(0) Poll the "Busy Flag" BF - This bit is set while the LCD is processing Move Cursor to CGRAM/Display A - Address Read/Write ASCII to the Display D - Data

Reading Data back is best used in applications which required data to be moved back and forth on the LCD (such as in applications which scroll data between lines). The "Busy Flag" can be polled to determine when the last instruction that has been sent has completed processing. In most applications, I just tie the "R/W" line to ground because I don't read anything back. This simplifies the application because when data is read back, the microcontroller I/O pins have to be alternated between input and output modes.

For most applications, there really is no reason to read from the LCD. I usually tie "R/W" to ground and just wait the maximum amount of time for each instruction (4.1 msecs for clearing the display or moving the cursor/display to the "home position", 160 usecs for all other commands). As well as making my application software simpler, it also frees up a microcontroller pin for other uses. Different LCDs execute instructions at different rates

Page 29: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 29

and to avoid problems later on (such as if the LCD is changed to a slower unit), I recommend just using the maximum delays given above.

In terms of options, I have never seen a 5x10 LCD display. This means that the "F" bit in the "Set Interface Instruction" should always be reset (equal to "0").

Before you can send commands or data to the LCD module, the Module must be initialized. For eight bit mode, this is done using the following series of operations:

1. Wait more than 15 msecs after power is applied.

2. Write 0x030 to LCD and wait 5 msecs for the instruction to complete

3. Write 0x030 to LCD and wait 160 usecs for instruction to complete

4. Write 0x030 AGAIN to LCD and wait 160 usecs or Poll the Busy Flag

5. Set the Operating Characteristics of the LCD

Write "Set Interface Length"

Write 0x010 to turn off the Display

Write 0x001 to Clear the Display

Write "Set Cursor Move Direction" Setting Cursor Behaviour Bits

Write "Enable Display/Cursor" & enable Display and Optional Cursor

In describing how the LCD should be initialized in four bit mode, I will specify writing to the LCD in terms of nybbles. This is because initially, just single nybbles are sent (and not two, which make up a byte and a full instruction). As I mentioned above, when a byte is sent, the high nybble is sent before the low nybble and the "E" pin is toggled each time four bits is sent to the LCD. To initialize in four bit mode:

1. Wait more than 15 msecs after power is applied.

2. Write 0x03 to LCD and wait 5 msecs for the instruction to complete

3. Write 0x03 to LCD and wait 160 usecs for instruction to complete

4. Write 0x03 AGAIN to LCD and wait 160 usecs (or poll the Busy Flag)

5. Set the Operating Characteristics of the LCD

Write 0x02 to the LCD to Enable Four Bit Mode

All following instruction/Data Writes require two nybble writes.

Write "Set Interface Length"

Write 0x01/0x00 to turn off the Display

Page 30: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 30

Write 0x00/0x01 to Clear the Display

Write "Set Cursor Move Direction" Setting Cursor Behaviour Bits

Write "Enable Display/Cursor" & enable Display and Optional Cursor

Once the initialization is complete, the LCD can be written to with data or instructions as required. Each character to display is written like the control bytes, except that the "R/S" line is set. During initializiation, by setting the "S/C" bit during the "Move Cursor/Shift Display" command, after each character is sent to the LCD, the cursor built into the LCD will increment to the next position (either right or left). Normally, the "S/C" bit is set (equal to "1") along with the "R/L" bit in the "Move Cursor/Shift Display" command for characters to be written from left to right (as with a "Teletype" video display).

One area of confusion is how to move to different locations on the display and, as a follow on, how to move to different lines on an LCD display. The following table shows how different LCD displays that use a single 44780 can be set up with the addresses for specific character locations. The LCDs listed are the most popular arrangements available and the "Layout" is given as number of columns by number of lines:

LCD Layout

Top Left Character

Ninth Character

Second Line

Third Line

Fourth Line Comments

8x1 0 N/A N/A N/A N/A Single 44780/No Support Chip

16x1 0 0x040 N/A N/A N/A Single 44780/No Support Chip

16x1 0 8 N/A N/A N/A 44780 with Support Chip. This is quite rare

8x2 0 N/A 0x040 N/A N/A Single 44780/No Support Chip

10x2 0 8 0x040 N/A N/A 44780 with Support Chip

16x2 0 8 0x040 N/A N/A 44780 with Support Chip

20x2 0 8 0x040 N/A N/A 44780 with Support Chip

24x2 0 8 0x040 N/A N/A 44780 with Support Chip

30x2 0 8 0x040 N/A N/A 44780 with Support Chip

32x2 0 8 0x040 N/A N/A 44780 with Support Chip

40x2 0 8 0x040 N/A N/A 44780 with Support Chip

16x4 0 8 0x040 0x020 0x060 44780 with Support Chip

Page 31: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 31

20x4 0 8 0x040 0x020 0x060 44780 with Support Chip

40x4 U/N U/N U/N U/N U/N Two 44780 with Support Chips. Addressing is device specific

The "Ninth Character" is the position of the Ninth character on the first line.

Most LCD displays have a 44780 and support chip to control the operation of the LCD. The 44780 is responsible for the external interface and provides sufficient control lines for sixteen characters on the LCD. The support chip enhances the I/O of the 44780 to support up to 128 characters on an LCD. From the table above, it should be noted that the first two entries ("8x1", "16x1") only have the 44780 and not the support chip. This is why the ninth character in the 16x1 does not "appear" at address 8 and shows up at the address that is common for a two line LCD.

I've included the 40 character by 4 line ("40x4") LCD because it is quite common. Normally, the LCD is wired as two 40x2 displays. The actual connector is normally sixteen bits wide with all the fourteen connections of the 44780 in common, except for the "E" (Strobe) pins. The "E" strobes are used to address between the areas of the display used by the two devices. The actual pinouts and character addresses for this type of display can vary between manufacturers and display part numbers.

Note that when using any kind of multiple 44780 LCD display, you should probably only display one 44780's Cursor at a time.

Cursors for the 44780 can be turned on as a simple underscore at any time using the "Enable Display/Cursor" LCD instruction and setting the "C" bit. I don't recommend using the "B" ("Block Mode") bit as this causes a flashing full character square to be displayed and it really isn't that attractive.

The LCD can be thought of as a "Teletype" display because in normal operation, after a character has been sent to the LCD, the internal "Cursor" is moved one character to the right. The "Clear Display" and "Return Cursor and LCD to Home Position" instructions are used to reset the Cursor's position to the top right character on the display.

Page 32: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 32

To move the Cursor, the "Move Cursor to Display" instruction is used. For this instruction, bit 7 of the instruction byte is set with the remaining seven bits used as the address of the character on the LCD the cursor is to move to. These seven bits provide 128 addresses, which matches the maximum number of LCD character addresses available. The table above should be used to determine the address of a character offset on a particular line of an LCD display.

The Character Set available in the 44780 is basically ASCII. I say "basically" because some characters do not follow the ASCII convention fully (probably the most significant difference is 0x05B or "\" is not available). The ASCII Control Characters (0x008 to 0x01F) do not respond as control characters and may display funny (Japanese) characters. The LCD Character Set shown below is courtesy of Peer Ouwehand and his excellent LCD page:

Eight programmable characters are available and use codes 0x000 to 0x007. They are programmed by pointing the LCD's "Cursor" to the Character

Generator RAM ("CGRAM") Area at eight times the character address. The next eight characters written to the RAM are each line of the programmable character, starting at the top.

Page 33: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 33

I like to represent this as eight squares by five as is shown in the diagram to the right. Above, I noted that most displays were 7 pixels by 5 for each character, so the extra row may be confusing. Each LCD character is actually eight pixels high, with the bottom row normally used for the underscore cursor. The bottom row can be used for graphic characters, although if you are going to use a visible underscore cursor and have it at the character, I recommend that you don't use it (ie set the line to 0x000).

Using this box, you can draw in the pixels that define your special character and then use the bits to determine what the actual data codes are. When I do this, I normally use a piece of graph paper and then write hex codes for each line, as I show in the lower right diagram. This diagram shows the first character used in the "Walking Man" "Animate" examples that can be found below.

For the "Animate" applications, I use "character" rotation for the animations. This means that instead of changing the character each time the man moves, I simply display a different character. Doing this means that only two bytes (moving the cursor to the character and the new character to display) have to be sent to the LCD. If animation was accomplished by redefining the characters, then ten characters would have to be sent to the LCD (one to move into the CGRAM space, the eight defining characters and an instruction returning to display RAM). If multiple characters are going to be used or more than eight pictures for the animation, then you will have to rewrite the character each time.

The user defined character line information is saved in the LCD's "CGRAM" area. This sixty four bytes of memory is accessed using the "Move Cursor into CGRAM" instruction in a similar manner to that of moving the cursor to a specific address in the memory with one important difference.

Page 34: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 34

This difference is that each character starts at eigth times it's character value. This means that user definable character 0 has it's data starting at address 0 of the CGRAM, character 1 starts at address 8, character 2 starts at address 0x010 (16) and so on. To get a specific line within the user definable character, its offset from the top (the top line has an offset of 0) is added to the starting address. In most applications, characters are written to all at one time with character 0 first. In this case, the instruction 0x040 is written to the LCD followed by all the user-defined characters.

A special note for Wirz Electronics "SLI-OEM" users. When the new characters are defined, it is a good idea to make sure that the upper three bits are set in the user defined character byte. When the "Move Cursor into CGRAM" instruction is received, the SLI-OEM goes into a special mode where the character row counter is not updated when a new character is received. This mode is turned off when a new instruction is sent to the SLI-OEM or an ASCII "Backspace", "Carriage Return", "Line Feed" or "Form Feed" character is received. Since all these characters are valid LCD user defined character line definitions, you will find that the SLI-OEM is not interpreting the data correctly. If I was making the "Man" symbol above for displaying on the SLI-OEM, I would use the byte 0x0EE for the first line instead of 0x00E.

The last aspect of the LCD to discuss is how to specify a contrast voltage to the Display. I typically use a potentiometer wired as a voltage divider. This will provide an easily variable voltage between Ground and Vcc, which will be used to specify the contrast (or "darkness") of the characters on the LCD screen. You may find that different LCDs work differently with lower voltages providing darker characters in some and higher voltages do the same thing in others.

Page 35: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 35

There are a variety of different ways of wiring up an LCD. Above, I noted that the 44780 can interface with four or eight bits. To simplify the demands in microcontrollers, a shift register is often used (as is shown in the diagram below) to reduce the number of I/O pins to three.

This can be further reduced by using the circuit shown below in which the serial data is combined with the contents of the shift register to produce the "E" strobe at the appropriate interval.

This circuit "ANDs" (using the 1K resistor and IN914 diode) the output of the sixth "D-Flip Flop" of the 74LS174 and the "Data" bit from the device writing to the LCD to form the "E" Strobe. This method requires one less pin than the three wire interface and a few more instructions of code.

Page 36: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 36

I normally use a 74LS174 wired as a shift register (as is shown in the schematic diagram) instead of a serial-in/parallel-out shift register. This circuit should work without any problems with a dedicated serial-in/parallel-out shift register chip, but the timings/clock polarities may be different. When the 74LS174 is used, note that the data is latched on the rising (from logic "low" to "high") edge of the clock signal.

In the diagram to the right, I have shown how the shift register is written to for this circuit to work. Before data can be written to it, the shift register is cleared by loading every latch with zeros. Next, a "1" (to provide the "E" Gate) is written followed by the "R/S" bit and the four data bits. Once the is loaded in correctly, the "Data" line is pulsed to Strobe the "E" bit. The biggest difference between the three wire and two wire interface is that the shift register has to be cleared before it can be loaded and the two wire operation requires more than twice the number of clock cycles to load four bits into the LCD.

I've used this circuit with the PICMicro, 8051 and AVR and it really makes the wiring of an LCD to a microcontroller very simple. A significant advantage of using a shift register, like the two circuits shown here, data to the LCD is the lack of timing sensitivity that will be

Page 37: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 37

encountered. The biggest issue to watch for is to make sure the "E" Strobe's timing is within specification (ie greater than 450 nsecs), the shift register loads can be interrupted without affecting the actual write. This circuit will not work with Open-Drain only outputs (something that catches up many people).

One note about the LCD's "E" Strobe is that in some documentation it is specified as "high" level active while in others, it is specified as falling edge active. It seems to be falling edge active, which is why the 2-wire LCD interface presented below works even if the line ends up being high at the end of data being shifted in. If the falling edge is used (like in the 2-wire interface) then make sure that before the "E" line is output on "0", there is at least a 450 nsecs delay with no lines changing state.

The following "C" psuedo-code can be used for writing a nybble to the two wire circuit: LCDNybble(char Nybble, char RS) { int i; Data = 0; // Clear the '174 for (i = 0; i < 6; i++) { // Repeat for six bits Clock = 1; Clock = 0; // Write the "0"s into the '174 } Data = 1; // Output the "AND" Value Clock = 1; Clock = 0; Data = RS; // Output the RS Bit Value Clock = 1; Clock = 0; for (i = 0; i < 4; i++) { // Output the Nybble if ((Nybble & 0x008) != 0) Data = 1; // Output the High Order Bit else Data = 0; Clock = 1; Clock = 0; // Strobe the Clock Nybble = Nybble << 1; // Shift up Nybble for Next Byte } Clock = 1; Clock = 0; // Toggle the "E" Clock Bit } // End LCDNybble

The table below gives a list of LCD sample code for different microcontrollers and operations discussed on this page. Over time, I will work at filling it out with the sample assembly code for the different devices. The microcontroller circuits are very simple with just a crystal and reset resistor or capacitor. Note the device and speed that it is running at along with the Assembler that I used.

Device 8 Bit LCD Interface

4 Bit LCD Interface

3 Wire LCD Interface

2 Wire LCD Interface

Animation Comments

PICMicro 2wirepic.asm 4 MHz 16C84

for MPASM

Page 38: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 38

Page 39: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 39

Page 40: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 40

Page 41: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 41

Page 42: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 42

Page 43: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 43

Page 44: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 44

Page 45: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 45

Page 46: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 46

Page 47: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 47

Page 48: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 48

Page 49: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 49

Page 50: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 50

Page 51: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 51

Page 52: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 52

Page 53: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 53

Page 54: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 54

Page 55: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 55

Page 56: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 56

Page 57: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 57

Page 58: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 58

Page 59: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 59

Page 60: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 60

Page 61: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 61

Page 62: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de

Máquina de Estados Surtidor de Líquidos

CBI – INGENIERIA EN ELECTRÓNICA 62

Page 63: López Cuevas Jorge Alberto Aguilar Ramírez Edgar …148.206.53.84/tesiuami/UAMI12066.pdf · - Armado de la tarjetas controladoras con sus respectivos PIC’s. ... • Pantalla de