SlideShare una empresa de Scribd logo
1 de 262
Descargar para leer sin conexión
Prácticas PIC basadas
en máquina de vending




                        AUTOR: Félix Rizo Lobato
                DIRECTOR: Nicolau Cañellas Alberich

                          FECHA: Septiembre / 2004
1.- ÍNDICE
2.- MEMORIA DESCRIPTIVA                                                         1

    2.1. INTRODUCCIÓN                                                           2
           2.1.1. Antecedentes                                                  2
           2.1.2. Objetivos                                                     2

    2.2. SOLUCIÓN ADOPTADA                                                      4
           2.2.1. Los microcontroladores. Consideraciones previas               4
           2.2.2. Ventajas de los diseños basados en microcontroladores         5
           2.2.3. Arquitectura básica de los µC                                 5
                  2.2.3.1.      CPU (Central Process Unit)                      6
                  2.2.3.2.      Memoria de programa                             6
                  2.2.3.3.      Memoria de datos                                6
                  2.2.3.4.      Puertos entrada / salida                        7
                  2.2.3.5.      Watch-Dog                                       7
                  2.2.3.6.      Brown-out                                       7
                  2.2.3.7.      Contador / timer                                7
                  2.2.3.8.      ADC y DAC                                       8
                  2.2.3.9.      PWM                                             8
                  2.2.3.10.     Comunicación Serie                              8
           2.2.4. Que es un PIC?                                                8
                  2.2.4.1.      Diferencias con otros µC                        8
           2.2.5. Los microcontroladores PIC                                    9
                  2.2.5.1.      Características de los microcontroladores PIC   9
                  2.2.5.2.      Familias PICmicro                               10
                  2.2.5.3.     ¿Que PIC escogemos?                              10
                  2.2.5.4.      PIC 16F876 y 16F877                             11

    2.3. PRÁCTICAS CON MICROCONTROLADORES                                       13
          2.3.1. Consideraciones previas                                        13
          2.3.2. Descripción del MPLAB                                          13
                 2.3.2.1.      Introducción programa                            13
                 2.3.2.2.     Funcionamiento del MPLAB IDE                      14
          2.3.3. Descripción del Kit MPLAB-ICD                                  16
                 2.3.3.1.       Introducción                                    16
                 2.3.3.2.       Características del MPLAB-ICD Module            17
                 2.3.3.3.       Características del MPLAB-ICD Header            17
          2.3.4. Placa base de laboratorio                                      18
                 2.3.4.1        Descripción de la paca usada en laboratotio     18
          2.3.5. Regulador de tensión                                           18
          2.3.6. Descripción Pantalla LCD                                       19
                 2.3.6.1.       Introducción                                    19
                 2.3.6.2.        Que pantalla LCD vamos a utilizar?             19
                 2.3.6.3.        Funcionamiento de la pantalla LCD              19
2.3.7. Descripción teclado                                 21
             2.3.7.1.      Introducción                          21
             2.3.7.2.      Funcionamiento del teclado            21

2.4. DESCRIPCIÓN FUNCIONAL DE NUESTRO SISTEMA                    24
      2.4.1. Visión general                                      24
      2.4.2. Funcionamiento                                      25
             2.4.2.1        Funcionamiento general               25
             2.4.2.2        Funcionamiento Módulo 1              26
             2.4.2.3        Funcionamiento Módulo 2              27

2.5. DESCRIPCIÓN CIRCUITAL                                       30
      2.5.1. Introducción                                        30
      2.5.2. Circuito regulador de tensión                       31
      2.5.3. El microcontrolador                                 31
      2.5.4. Decodificador 74LS138                               34
      2.5.5. Decodificador de BCD a 7 segmentos 7447 y display   36
      2.5.6. El Teclado                                          38
      2.5.7. Pantalla LCD                                        40

2.6. PRÁCTICAS A REALIZAR                                        42
      2.6.1. Introducción                                        42
      2.6.2. Enunciados de prácticas                             42
             2.6.2.1.     Práctica 1                             43
             2.6.2.2.     Práctica 2                             50
             2.6.2.3.     Práctica 3                             59
             2.6.2.4.     Práctica 4                             69
             2.6.2.5.     Práctica 5                             78
             2.6.2.6.     Práctica 6                             88

2.7. PROGRAMA ASM                                                 97
      2.7.1 Introducción                                          97
      2.7.2. Modulo 1                                             97
             2.7.2.1.      Visión general.                        97
             2.7.2.2.      Revisar monedero                       98
             2.7.2.3.      Revisar producto                       99
             2.7.2.4.      Dar cambio                            101
             2.7.2.5.      Interrupción                          102

      2.7.3. Módulo 2                                            103
             2.7.3.1.      Visión general                        103
             2.7.3.2.      Seleccionar producto o precio         104
             2.7.3.3.      Elegir producto                       104
             2.7.3.4.      Enviar EEPROM                         105
             2.7.3.5.      Interrupción                          106
2.7.4. Datos de interés                                 107
                  2.7.4.1.       Registros de dinero               107
                  2.7.4.2.       Clasificación de los productos.   108
                  2.7.4.3.       Función ‘Escribir_LCD’            108
                  2.7.4.4.       Función ‘Clear_display’           109
                  2.7.4.5.       Función ‘EE_escribe’              109
                  2.7.4.6.       Función ‘EE_LEE’                  109


3.- MEMORIA DE CÁLCULO                                             110

    3.1. CÁLCULOS DE LOS ESQUEMAS ELÉCTRICOS                       111
    3.2. CÁLCULOS DEL PROGRAMA ASM                                 112

4.- PRESUPUESTO                                                    114

    4.1. LISTA ELEMENTOS                                           115
           4.1.1. Lista de elementos del módulo 1                  115
           4.1.2. Lista de elementos del módulo 2                  116

    4.2. LISTA DE PRECIOS                                          117
           4.2.1. Lista de precios de elementos del módulo 1       117
           4.2.2. Lista de precios de elementos del módulo 2       118

    4.3. COSTE TOTAL                                               119
          4.3.1. Coste total del módulo 1                          119
          4.3.2. Coste total del módulo 2                          120

    4.4. RESUMEN DEL PRESUPUESTO                                   121

5.- PLANOS                                                         122

    5.1. ESQUEMAS DE ELEMENTOS                                     123
           5.1.1. Esquema Regulador fuente tensión                 123
           5.1.2. Esquema del 74LS47                               123
           5.1.3. Esquema del 74LS138                              124
           5.1.4. Esquema Comunicación USART                       124
           5.1.5. Conector teclado                                 125
                  5.1.5.1.Teclado producto                         125
                  5.1.5.2.Teclado monedas                          125
                  5.1.5.3.Teclado precio                           126
           5.1.6. Esquema conector pantalla LCD                    126
                  5.1.6.1. LCD Módulo 1                            126
                  5.1.6.2. LCD Módulo 2                            126
5.2. ESQUEMAS PRÁCTICAS MÓDULO 1                           127
        5.2.1. Esquemas Práctica 1                          127
        5.2.2. Esquemas Práctica 3                          128
        5.2.3. Esquemas Práctica 4                          129
        5.2.4. Esquemas Práctica 6                          130
        5.2.5. Esquema general                              131
        5.2.6. Diseño placa base                            132

 5.3. ESQUEMAS PRÁCTICAS MÓDULO 2                           133
        5.3.1. Esquemas Práctica 2                          133
        5.3.2. Esquemas Práctica 5 y Módulo 2               133
        5.3.3. Diseño placa base                            134




ANEXOS
 A. LISTA DE CÓDIGOS DE PROGRAMA
       A.1. Módulo 1                                           I
             A.1.1. Programa ASM de práctica 1                 I
             A.1.2. Programa ASM de práctica 3                X
             A.1.3. Programa ASM de práctica 4             XXV
             A.1.4. Programa ASM de práctica 6            XXXV
             A.1.5. Programa ASM del Módulo 1 completo    XLVIII


       A.2. Módulo 2                                        LXX
             A.2.1. Programa ASM de práctica 2              LXX
             A.2.2. Programa ASM de práctica 6           LXXXVI
             A.2.3. Programa ASM del Módulo 2 completo       CI
Memoria descriptiva




2. MEMORIA DESCRIPTIVA
Memoria descriptiva                                                             Introducción

2.1. Introducción

       En este proyecto encontraremos seis prácticas para la asignatura de “Sistemes
electrònics amb microcontrolador”, en las cuales se pretende que el alumno aprenda a
programar un microcontrolador.

       Estas prácticas serán diferentes partes de una simulación de una máquina de vending.
Cada grupo de alumnos debería realizar una práctica. Al finalizar correctamente todas las
prácticas, se deberían poder unir los códigos de todos los grupos y se podría simular dicha
máquina, por ello, se tendría que intentar que todos los grupos trabajasen en conjunto para
poder unir al final todas las prácticas.

        Para ello, este proyecto de final de carrera propuesto por Nicolau Cañellas pretende
montar el hardware y el software de la máquina de vending y diseñar las diferentes prácticas a
realizar por los alumnos.

2.1.1. Antecedentes

       Nuestro antecedente será la asignatura de “Sistemes electrònics amb
microcontrolador” que se realiza en el segundo cuatrimestre del tercer curso de E.T.I. en
Electrónica Industrial.

       Dicha asignatura tiene 3 créditos prácticos con lo cual este proyecto pretende
complementar las prácticas ya existentes utilizando al máximo los recursos de hardware ya
existentes en estas prácticas.

2.1.2. Objetivos

       La finalidad de este proyecto es realizar una serie de prácticas con el objetivo de que
los alumnos puedan utilizarlas para aprender a programar mediante el MPLAB a un
microcontrolador.

        Al mismo tiempo pretendemos, debido a que las prácticas a realizar son las diferentes
partes de una máquina de vending, que estas prácticas puedan unirse, con lo cual pretendemos
que exista una unión entre los diferentes alumnos para poder conseguir al final del curso unir
todas las prácticas y que funcionen como una sola.

       Como queriamos una práctica de comunicaciones serie hemos pensado crear un
sistema para modificar los precios de la EEPROM. La idea sería guardar todos los precios en
un módulo que podríamos conectar a la máquina y transmitir los datos para modificar los
precios.

       También se dejan abiertas una serie de posibilidades para poder añadir diferentes
prácticas a estas para mejorar la simulación, con lo cual los alumnos podrían proponer alguna
práctica nueva o para un posible proyecto futuro que ampliase los módulos y el número de
prácticas.



                                               2
Memoria descriptiva                                                             Introducción

       Las diferentes prácticas tienen unos objetivos diferentes. Se ha pretendido que con
cada práctica se simule una parte de la máquina de vending, aunque como se ha dicho
anteriormente todas estas partes tienen registros en común, como por ejemplo el que realiza la
práctica del monedero y el que realiza la práctica del cambio tienen en común el registro que
se encarga de saber la cantidad de dinero que se ha pagado.

       Las diferentes prácticas a realizar tienen como objetivos:

       -        PRÁCTICA 1: Realizar la simulación de un monedero, con el objetivo de
                guardar la cantidad de dinero que el usuario introduce a una máquina.

       -        PRÁCTICA 2: Realizar un sistema para poder modificar los precios de los
                productos a vender en la EEPROM.

       -        PRACTICA 3: Realizar el programa que se encarga de pedir el producto,
                revisar el dinero pagado, el que se tiene que pagar y entregar el producto.

       -        PRACTICA 4: Realizar el programa que se encarga de dar el cambio, tanto
                cuando seleccionamos un producto como cuando queremos que nos devuelva
                el dinero pagado.

       -        PRACTICA 5: Realizar el código para poder comunicar dos
                microcontroladores mediante la comunicación de USART. Este sería para
                enviar la EEPROM para modificar los precios de los productos.

       -        PRÁCTICA 6: Realizar el código para poder comunicar dos
                microcontroladores mediante la comunicación de USART. Este sería para
                pedir producto.




                                               3
Memoria descriptiva                                                      Solución adoptada

2.2. Solución adoptada

2.2.1.Los microcontroladores. Consideraciones previas.

        Antes que nada, nos interesa saber que es un microcontrolador, así que partiremos de
las funciones que éste hace y haremos una pequeña comparación con otros dispositivos que
también hacen esas o otras funciones similares, para descubrir realmente las posibilidades en
general de los microcontroladores y de lo que haremos servir en este proyecto. Por esto,
haremos unas definiciones previas:

       Controlador: Dispositivo usado por control automático de un conjunto de procesos

       Controlador digital: Controlador con lógica de control digital

       Implementaciones de los controladores digitales:

              - Lógica discreta

                  •   Baja densidad de integración
                  •   Diseño (Hardware) sencillo / medio / complejo
                  •   Poco generalizable
                  •   Coste bajo / medio / alto

              - PLC (Programmable Logic Controller)

                  •   Mayor densidad de integración
                  •   Diseño (Software) sencillo
                  •   Muy generalizable
                  •   Coste elevado

              - Microprocesador + RAM + ROM + Periféricos (A/D, Timers...)

                  •   Elevada densidad de integración
                  •   Diseño (Software + Hardware) medio / complejo
                  •   Generalizable
                  •   Coste bajo / medio

              - Microcontroladores

                  •   Densidad de integración muy elevada
                  •   Diseño (Software + Hardware) sencillo / medio
                  •   Muy generalizable
                  •   Coste bajo




                                              4
Memoria descriptiva                                                    Solución adoptada

2.2.2. Ventajas de los diseños basados en microcontroladores

          •   Reducción del tamaño y precio: El elevado grado de integración de un
              microcontrolador (µC) en circuito integrado permite una elevada funcionalidad
              por área a bajo coste y un menor tamaño del PCB.
          •   Elevada flexibilidad: Un mismo microcontrolador (µC) puede ser usado por un
              elevado número de aplicaciones variando solo el software.
          •   Rapidez de desarrollo: La adaptación de un µC en otra aplicación puede
              consistir en adaptar el software y muy poco hardware.
          •   Aumento de la fiabilidad: La disminución de componentes en placa hace
              disminuir también los riesgos de averías.
          •   Buenas prestaciones: Los µC usan µP que permiten la ejecución eficiente de
              algoritmos de control.

2.2.3. Arquitectura básica de los µC

       En este apartado se muestran todos los elementos que puede tener un µC, no quiere
decir ue todos lo µC tengan estos dispositivos, esto depende de la versión del µC que
escogamos. Este µC se escoge dependiendo de las aplicaciones que necesitemos.




                                 Figura 1. Arquitectura de los mC



       Viendo la descripción de cada uno de los elementos que aparecen en el diagrama
anterior, se puede entender mejor.




                                                5
Memoria descriptiva                                                      Solución adoptada

2.2.3.1. CPU (Central Process Unit)

       Es el microprocesador del sistema. Sus características y funcionalidad se definen
sobretodo a partir de tres clasificaciones:

       - Clasificación en función del tamaño de los datos:

           •   4 bit: Aplicaciones muy sencillas y muy económicas
           •   8 bit: Aplicaciones sencillas /medias y económicas. Es el tipo de µC dominante
               en el mercado
           •   16 bit: Aplicaciones medias y coste medio
           •   32 bit: Aplicaciones complejas y de coste elevado

       - Clasificación en función del conjunto de instrucciones:

           •   RISC (Reduced Instruction Set Code). Instrucciones sencillas y de rápida
               ejecución.
           •   CISC (Complex Instruction Set Code). Instrucciones más complejas y de mayor
               tiempo de ejecución.

       - Clasificación en función de la arquitectura de buses:

           •   Von Newmann: Buses de datos y direcciones compartidos por la memoria de
               datos y de programa. Simplifica el diseño y el coste.
           •   Harvard: Buses de datos y direcciones diferentes por la memoria de datos y de
               programa. Permite acceso simultaneo.

2.2.3.2. Memoria de Programa

      Ésta es la memoria donde se guarda el programa que escribimos. Es una memoria que
se mantiene aunque apaguemos el sistema que la contiene. Existen diferentes tipos de
memoria de programa en función de la forma de gravarla y/o borrarla:

           •   ROM: Dispositivo OTP grabado en fábrica
           •   EPROM: Dispositivo OTP o borrable (con ventana)
           •   EEPROM: Dispositivo regrabable in-system con Vpp = 12v
           •   FLASH: Dispositivo regrabable in-system

2.2.3.3. Memoria de datos

       La podemos diferenciar en dos tipos de memoria, dependiendo de si ésta se mantiene o
no en desconectar el programa. Así tenemos:

       - Memoria volátil de datos: Es la memoria donde se guardan temporalmente variables
usadas en el programa. Tenemos dos, una genérica y otra más específica:



                                               6
Memoria descriptiva                                                       Solución adoptada


           •   RAM: Almacenaje de variables del programa
           •   SFR: (Special Function Regiters). Usados para hacer servir los periféricos, las
               interrupciones,...

       - Memoria no volátil de datos: Es un tipo de memoria como la anterior, ya que sirve
para almacenar datos, pero con la particularidad de que éstos se mantienen en memoria. Es
muy útil, por ejemplo, para guardar en memoria algunos datos que queramos llamar desde
diversos programas, como datos de configuración o de seguridad. Existen dos tipos:

           •   EEPROM
           •   FLASH

2.2.3.4. Puertos de Entrada / Salida

        Son los pins que sirven para la entrada y salida de datos desde o al exterior. Son
generalmente de 8 bits, aunque pueden variar según el puerto y algunos de ellos incorporan
resistencias de pull-up, la función de las cuales es evitar ponerlas exteriormente en algún tipo
de conexión, como entradas procedentes de fuentes de tensión, corriente,... donde tenemos que
controlar, por ejemplo las corrientes de entrada. Esto nos hace ahorrar especialmente espacio.

2.2.3.5. WatchDog

       El WatchDog es un temporizador especial y su función es realizar un reset del
microcontrolador periódicamente para refrescarlo. Su funcionamiento no está predefinido,
sino que tenemos que introducir un código de programa para hacerlo funcionar como mejor
nos convenga y para reinicializarlo en el momento determinado.

2.2.3.6. Brown-out

       El Brown-out es un circuito interno que sirve como detector de posibles errores en la
alimentación del microcontrolador, paralizando el sistema para evitar posibles daños en éste.

2.2.3.7. Contador /Timer

       En este apartado definimos el contador como un contador de pulsaciones procedentes
de un reloj o un dispositivo asincrónico externo y recibidos por un pin destinado a esta
función.

       En cambio, llamamos Timer al contador de ciclos de una señal de reloj generado
internamente en el dispositivo, pudiendo programarlo como el anterior para que produzca
algún evento en el momento determinado que nos interese según lo programemos. Tanto uno
como el otro suelen incluir pre-scaler para multiplicar el valor programado y conseguir así
posibles temporizaciones más altas.




                                               7
Memoria descriptiva                                                       Solución adoptada

2.2.3.8. ADC y DAC

        Estas opciones son una la inversa de la otra. La primera, mucho más fácil de encontrar,
se refiere a la conversión de un valor analógico procedente del exterior en uno de digital
dentro de nuestro dispositivo, por esto poder tratarlo. En cambio, el conversor digital
analógico nos interesa para transformar un valor que tenemos en formato digital en nuestro
dispositivo analógico a la salida al exterior. Pensamos que las señales externas pueden estar en
los dos formatos, mientras que en nuestro microcontrolador sólo las podemos tratar en formato
digital, de forma que es lógico que el A/D sea en la dirección exterior-interior y el D/A en
dirección inversa.

2.2.3.9. PWM

        El PWM (Pulse Width Modulator) es, como su nombre indica, un generador de pulsos
de anchura variable, útil para controles del mismo tipo haciendo la función de duty-cycle, es
decir, variaciones en las duraciones de los semiciclos positivos y negativos para obtener
tensiones medias variables y conseguir así, por ejemplo, controlar la velocidad de un motor
DC.
        También existe la posibilidad de variar la frecuencia de estos pulsos y conseguir así,
por ejemplo, emitir diferentes sonidos en una aplicación.

2.2.3.10. Comunicaciones Serie

       Los microcontroladores son capaces de enviar o recibir datos del exterior por medio de
las comunicaciones serie. Dependiendo del microcontrolador, éstos pueden ser:

           •   SPI (Serial Peripherical Interface)
           •   I2 C (Inter-Integrated Circuit)
           •   UART (Universal Asynchronous Receiver-Transmiter)
           •   USART (Universal Synchronous-Asynchronous Receiver-Transmiter)
           •   CAN (Controller Area Network)
           •   USB (Universal Serial Bus)


2.2.4. Que es un PIC?

       Un PIC es un microcontrolador fabricado por Microchip Inc. De este fabricante de
µC’s será el nuestro. Aparte de este fabricante existen diferentes fabricantes de
microcontroladores, National, Motorola, Intel ,Zilog ,Thomson.

2.2.4.1. Diferencias con otros µC.

       Las pricipales diferencias entre los PIC y otras marcas es que tienen gran variedad de
módelos que permiten sleccionar el que más convenga para tu proyecto. Que tienen gran
variedad de herraminetas para desarrollar hardware y software. Por su longitud de palabra de



                                               8
Memoria descriptiva                                                     Solución adoptada

12 bits son los que menos espacio ocupan en la memoria de instrucciones. Y son bastante más
rapidos que la mayoría.

       Déspues de estas diferencias parece que los PIC son los mejores, cosa que no es verdad
para aplicaciones muy especificas en lso que las otras marcas pueden dar unas prestaciones
más elevadas.

2.2.5. Los microcontroladores PIC

2.2.5.1. Características de los microcontroladores PIC

          •   RISC (Reduced Instruction Code)
                 o Gama baja (PIC 16C5X) 33 instrucciones
                 o Gama media (PIC 16CXXX) 35 instrucciones
                 o Gama alta (PIC 17CXXX/18CXXX) 58/77 instrucciones

          •   Arquitectura Harvard (Buses diferentes para las memorias de datos y
              direcciones)
                  o Memoria de datos de 8 bits
                  o Memoria de programa de 12/14/16 bits
          •   Arquitectura Pipeline
                  o Todas las instrucciones ocupan 1 palabra de instrucción
                  o Ejecución de todas las instrucciones en 2 ciclos
                  o Throghput 1 ciclo de instrucción, excepto saltos que son 2 ciclos

          •   Pila Hardware
          •   WatchDog Timer (WDT)
          •   Power on Reset (POR)
          •   Modo de bajo consumo (SLEEP)
          •   Líneas E/S de alta corriente (20/25 mA)
          •   Protección de código
          •   Número de serie/código de identificación
          •   Programación:
                  o C = CMOS OTP/EPROM
                  o CR = CMOS ROM
                  o CE = CMOS OTP/EPROM+EEPROM
                  o F = FLASH
                  o HV = High Voltage (15v)
                  o LF = Low Voltage Flash
                  o LC = Low Voltage OTP
                  o LCR = Low Voltage ROM




                                              9
Memoria descriptiva                                                       Solución adoptada

2.2.5.2. Familias PICmicro

        Seguidamente se muestran las familias PIC pertenecientes a la marca Microchip, a
partir de las características de las cuales escogemos el modelo más apropiado para nuestra
aplicación.

   •   Familia PIC 16C5X
          o 12-bit program word
          o Familia base
          o 2 Niveles de pila hardware
          o No interrupciones
          o 1 Timer-8bits + WDT

   •   Familia PIC 12C5XXX
          o 12-bit/14-bit program word
          o EEPROM
          o Interrupciones
          o 1 Timer-8bits + WDT

   •   Familia PIC 16CXXX, 16 FXXX
          o 14-bit program word
          o Prestaciones medias
          o Gran variedad de periféricos on-chip: Comparadores, PWM, 3 Timers,
              Conversores A/D, EEPROM de datos, USART,...
          o 8 Niveles de pila hardware
          o Interrupciones internas y externas

   •   Familia PIC 17CXXX
          o 14-bit program word
          o Otras prestaciones
          o Gran variedad de periféricos on-chip: Comparadores, PWM, 3 Timers,
              Conversores A/D, EEPROM de datos, USART,...
          o 16 Niveles de pila hardware
          o Interrupciones vectorizadas
   •   Familia PIX 18CXXX
          o 16-bit program word
          o Muchas otras prestaciones (10 MIPS)
          o Gran variedad de periféricos on-chip: Comparadores, PWM, 3 Timers,
              Conversores A/D, EEPROM de datos, USART,...
          o 32 Niveles de pila hardware
          o Interrupciones vectorizadas (internas y externas)

2.2.5.3. ¿Que PIC escogemos?

       Como hemos explicado anteriormente, el PIC a escoger será 16F876 debido a que
actualmente en las clases prácticas ya se utiliza este microcontrolador, con lo cual tendremos


                                              10
Memoria descriptiva                                                       Solución adoptada

ya los microcontroladores e incluso los kits del ICD-DEBUGER, con lo que nos podemos
ahorrar una gran parte del presupuesto.

       También lo elegimos ya que es un micro de gama media. Con lo cual tenemos
funciones de sobra en el micro para poder realizar las prácticas diseñadas, he incluso sirve
para posteriores ampliaciones, ya que no gastamos todos los recursos que nos da el
microcontrolador.

       Se utilizarán dos PIC debido a que queremos hacer una práctica de comunicación por
USART y ya que tenemos que utilizar los dos micros utilizaremos el segundo micro tanto en
la simulación del módulo para modificar los precios de la EEPROM, como para entregar el
producto seleccionado, ya que para posibles ampliaciones de las prácticas se necesitarían más
entradas y salidas. De este modo, con este segundo micro se podría seguir ampliando la
máquina.

2.2.5.4. PIC 16F876 y 16F877

       A continuación se exponen las características principales de estos microprocesador.
Estos PIC’s disponen de:

   •   Arquitectura Harvard (Memoria de datos y programa separados)
   •   Memoria de datos de 8 bit
   •   Memoria de programa de 14 bit
   •   Líneas E/S de alta corriente
   •   Memoria RAM de 368 Bytes
   •   Memoria de datos EEPROM de 256 Bytes
   •   Memoria FLASH de programa de 14336 Bytes (14bit*8192 word)
   •   3 Puertos de Entrada/Salida (1 de 6 bits, 2 de 8bits) en el 16F876 y 5 Puertos de salida
       en el 16F877 (1 de 3 bits, 1 de 6 bits, 3 de 8 bits) en el 16F877
   •   WatchDog (Temporizador especial que hace un reset periódicamente)
   •   Timer de 16bit
   •   2 Timer de 8 bit
   •   5 conversores A/D de 10 bits en el 16F876 y 8 convresores A/D de 10 bits en el
       16F877
   •   1 Puerto Serie para comunicación
   •   1Puerto Paralelo para comunicación en el 16F877
   •   Posibilidades de interrupciones internas / externas
   •   Posibilidad de interrupción del Puerto Serie




                                               11
Memoria descriptiva                                                  Solución adoptada




                      Figura 2. Diagrama de bloques del PIC 16F876




                                          12
Memoria descriptiva                                                     Prácticas con microcontroladores

       2.3. Prácticas con microcontroladores

       2.3.1. Consideraciones previas

              En los siguientes apartados vamos a explicar los diferentes dispositivos que
       necesitamos para poder realizar las prácticas. El teclado, la pantalla de LCD, el kit MPLAB-
       ICD y una pequeña descripción del funcionamiento del MPLAB.

       2.3.2. Descripción del MPLAB

       2.3.2.1. Introducción programa

             En este apartado explicamos el programa que tienen que utilizar los alumnos para
       programar y realizar las pruebas sobre el µC.

                   Hay varios programas en la página de microchip, la relación de estos es:


                                                                   Integrated   Free          Demo
 Development
                    Simulator Part Number   Linker     Library    Development Download       Download Compiler   Assembler
    Tools
                                                                  Environment Available      Available

MPLAB® IDE
                       Yes     SW007002      Yes         Yes          Yes              Yes     No        No        Yes
   v6.60

Motor Control
Graphical User
Interface (MC-
     GUI)
 MPLAB C18             Yes     SW006011      Yes         Yes          No               No      Yes      Yes        Yes
 Application
   Maestro             No                                Yes                           Yes
   Software
 MPLAB C30             Yes     SW006012      Yes         Yes          No               Yes     Yes      Yes        Yes
MPLAB Visual
    Device
  Initializer
 MPLAB C17             Yes     SW006010      Yes         Yes          No               No      Yes      Yes        Yes

FilterLab filter
                       No                    No           No          No               Yes     No        No         No
design software


                                                     Figura 3. Relación de programas



               Como se puede comprobar, el programa que vamos a utilizar es el MPLAB© IDE ya
       que es el único con el cual podemos utilizar el kit MPLAB-ICD. La única diferencia es que
       utilizaremos una versión más antigua, la del MPLAB v4.1 que es la que está instalada en los
       ordenadores de los laboratorios de la universidad.


                                                                 13
Memoria descriptiva                                            Prácticas con microcontroladores

2.3.2.2. Funcionamiento del MPLAB IDE

       Al ejecutar el programa saldrá la siguiente pantalla del MPLAB:




                               Figura 4. Pantalla MPLAB



        En la cual se puede ver las diferentes barras de elementos y los diferentes menús. Esto
es como se abriría en el caso de que no se hubiese trabajado anteriormente con él, si no
preguntará si abre los archivos y el proyecto último con el que se estaba trabajando antes de
cerrar por última vez.

      A nosotros nos interesa como crear un nuevo proyecto. Los pasos a seguir serian ir al
menú ‘PROJECT’ y crear un nuevo proyecto.




                                Figura 5. Menú “New Project”




                                                14
Memoria descriptiva                                           Prácticas con microcontroladores

       Una vez dado el nombre se abrirá la ventana ‘EDIT project’ donde tenemos que
asignar un nodo al proyecto que será el archivo .ASM en donde está código del programa a
funcionar.




                          Figura 6. Ventana “Edit project”


      Por último tenemos que seleccionar el procesador que queremos utilizar e ir a
‘DEVELOPMENT MODE’ en donde tenemos que asignar si queremos trabajar como
simulador, que sería simplemente para que funcione el código en el PC simulando el
ordenador al µC, o utilizar el ‘MPLAB-ICD Debugger’ que para ello tenemos que tener el kit
MPLAB-ICD.




                            Figura 7. Ventana de “Development Mode”


                                                 15
Memoria descriptiva                                              Prácticas con microcontroladores

       Una vez terminada la creación del proyecto y terminado el código del programa que
queremos probar tenemos que dar al botón de linkiar el programa para crear el archivo que se
tiene que guardar en la memoria de programa del micro.


                                                                          Para ver        Linkar el
                                                                           toda la        programa
                                                                          memoria        para ver si
                                                                            RAM          hay errores




                                                                    Para ver el   Para ver los
                                   Ejecutar el        Ejecutar       programa       registros
                                   programa            paso a       grabado en     especiales
                                                        paso       la ROM del        del µC
                                                                        µC

                               Figura 8. Barra de herramientas MPLAB




Para ver la memoria de la EEPROM, que lo necesitaremos cuando trabajemos con ella, se
tendría que seleccionar en el menú de ‘Windows->EEPROM’ con lo cual se nos abriría una
ventana donde saldrían los valores de la EEPROM.

2.3.3. Explicación del Kit MPLAB-ICD.

2.3.3.1. Introducción

      Este kit es el sistema a través del cual comunicamos el PC con el µC, a través de él
conseguimos poder utilizar todas las funciones del MPLAB.

        La finalidad de este kit es poder programar un PIC y poder ejecutar el código paso a
paso para probar el funcionamiento del código volcado en el µC. Esto es ideal para realizar
nuevos códigos que están en un proyecto de una fábrica en el laboratorio de I+D por ejemplo,
o como en nuestro caso, para los laboratorios de clase, ya que el alumno tiene que programar
una y otra vez el código hasta que funcione.

        Esta opción de programar a los µC es la ideal por si tienes que reprogramar una y otra
vez el µC debido a que tengas que corregir el código debido a que el micro tiene memoria
FLASH.




                                                 16
Memoria descriptiva                                        Prácticas con microcontroladores


        Para programar el µC una vez el código está correcto se hace de diferentes formas. Si
es una fábrica y tiene que fabricar muchos, los fabrica con el código ya programado con
memoria ROM. Si es un usuario que a lo mejor programa algunos para uso personal lo hace
mediante un programador del tipo T-20, que resulta mucho más económico.

2.3.3.2. Características del MPLAB-ICD Module

      Este kit está compuesto de dos partes, una que es el ICD module y la otra es el ICD
Header. El esquema del ICD module es:




                                        Figura 9. MPLAB ICD Module




        Esta parte se encarga de comunicarse a través del puerto serie ‘J2’ con el PC y a
través del conector ‘J3’ con el MPLAB Header.


2.3.3.3. Características del MPLAB-ICD Header

        El MPLAB Header sirve para poder conectarlo a un dispositivo de DIP-28 como es el
18F876, o como para un dispositivo DIP-40 como el 18F877. Un esquema de la placa base
sería el siguiente:




                                              17
Memoria descriptiva                                         Prácticas con microcontroladores




                                         Figura 10. MPLAB ICD Header


2.3.4. Placa base del laboratorio

2.3.4.1.Explicación placa base del laboratorio

       La placa base de la que vamos a hablar ahora es de la que se dipone en laboratorio de
prácticas de la asignatura de “Sistemas electrónicos con miro controladores”. Dicha placa está
compuesta por un regulador de tensión a 5V, Un conector para una pantalla de LCD y un
conector para un teclado. Que serán explicados en lo siguientes apartados.

2.3.5. Regulador de tensión

       Este regulador se coloca en las placas donde tenemos el µC para alimentarlo, con el
regulamos la tensión de alimentación al valor que necesitamos (5V), de tal forma que nos
permite tener una tensión estable para el mejor funcionamiento de nuestro sistema y nos
permite que la fuente de alimentación de la placa pueda variar entre 8 y 15V
aproximadamente.




                                              18
Memoria descriptiva                                        Prácticas con microcontroladores

2.3.6. Descripción Pantalla LCD

2.3.6.1. Introducción

       Un microcontrolador necesita dispositivos para poder comunicarse con el exterior, de
la misma forma que un ordenador necesita un teclado y una pantalla, al µControlador le vamos
a suministrar los teclados de 16 teclas y una pantalla LCD alfanumérica.

        La mayoría de los LCD’s están basados en el microcontrolador HITACHI 44780 u otro
similar, con lo cual la mayoría de estos se programan de forma similar. El tamaño de los
caracteres que se muestran son de 5x7 o 5x10 pixels. Todos ellos tienen como método para
escribir los datos a través de un bus de 8 bits que se conecta al µC/µP aunque también
permiten la conexión a través de 4 bits, simplemente lo que hacen es dividir los datos a enviar
en dos bloques para enviar los datos.

    Hay pantallas de muchos tipos. La forma más fácil de clasificarlas es por el número de
caracteres y por el número de líneas (caracteres x línea) que se pueden introducir. Existen los
siguientes tipos:
    • 8x2
    • 16x1, 16x2, 16x3 y 16x4
    • 20x2 y 20x4
    • 24x2
    • 40x2 y 40x4

2.3.6.2. Que pantalla LCD vamos a utilizar

        Para estas prácticas vamos a utilizar las pantallas ya existentes en el laboratorio de
prácticas para abaratar los costes. Son pantallas de 16x2 con retro-alimentación con 16 pines
de conexión con el µC.

2.3.6.3. Funcionamiento de la pantalla LCD

       La configuración de los pins de la pantalla de LCD que vamos a utilizar en las
prácticas es la siguiente:

       Asignación de los pines del JM162A
       #PIN      Nombre         Función
       1         Vss            Masa (0V)
       2         Vdd            Alimentación (+5V)
       3         Vee            Contraste (Vss=Vee=Vdd)
       4         RS             Selección de modo (dato=1/comando=0)
       5         R/W            Lectura/escritura de comando (lectura=1/ecritura=0)
       6         E              Enable ( Validación DB<7:0> en flanco 1? 0)
       7         DB0            Bit 0 (LSB) de dato
       8         DB1            Bit 1 de dato
       9         DB2            Bit 2 de dato


                                               19
Memoria descriptiva                                                   Prácticas con microcontroladores

       10            DB3                  Bit 3 de dato
       11            DB4                  Bit 4 de dato
       12            DB5                  Bit 5 de dato
       13            DB6                  Bit 6 de dato
       14            DB7                  Bit 7 (MSB) de dato
       15            A                    Anodo (+) retro-iluminación
       16            K                    Cátodo (-) retro-iluminación
                                   Tabla 1. Asignación de los pins del JM162A

        De todos estos pins solamente se van a utilizar 6 de ellos que son los de DB<7:4> para
la comunicación con el µC, no utilizamos los 8 pins para ahorrar salidas en el µC. El
inconveniente es que se tarda algo más en enviar los datos ya que hay que escribir dos veces
en el bus pero la pérdida de tiempo es tan pequeña que nos sale a cuenta reducir el número de
salidas del µC.

       Los otros dos pins que vamos a utilizar van a ser el RS y RW

        Estas pantallas tienen un juego de instrucciones con las cuales podemos ir escribiendo
los datos en la pantalla, los caracteres que queremos escribir es poniendo el código ASCII en
hexadecimal de la letra que queremos poner en el bus de datos, de tal forma que para escribir
una ‘A’ habría que escribir ‘40’H. El juego de instrucciones de estos teclados es el siguiente:


                  CODIGO INSTRUCCIÓN                                                                        Tiempo
                    D D D D D D D                             D                                            Ejecución
INSTRUCCIÓN                                                                 DESCRIPCIÓN
            RS RW B B B B B B B                               B                                             (fosc =
                    7 6 5 4 3 2 1                             0                                            270KHz)
    Clear                                                         Escribe ‘20’H en DDRAM y coloca
             0  0   0 0 0 0 0 0 0                             1                                             1.53ms
   Display                                                        DDRAM addrees en ‘00H’ de AC
                                                                  Coloca ‘00H’ en DDRAM addrees
    Return
                 0    0    0   0      0     0   0   0    1    X   y vuelve el cursor a la posición          1.53ms
    Home
                                                                  original
  Entry mode                                             I/   S   Asigna el movimiento el cursor y si
                 0    0    0   0      0     0   0   1                                                        39µs
      Set                                                D    H   queremos que el cursor se vea o no
                                                                  Set Display (D), cursor (C), y
   Display
                 0    0    0   0      0     0   1   D    C    B   parpadeo del cursor (B) on/off bit         39µs
ON/OFF control
                                                                  de control
                                                                  Set cursor moving and display shift
  Cursor or                                     S/ R/
                 0    0    0   0      0     1         X       X   bit de control y la dirección, sin         39µs
 Display Shift                                  C L
                                                                  cambiar la DDRAM data.
                                                                  Asignar la interface de longitud de
   Function                                 D                     datos (DL:4-bit/8-bit), números de
                 0    0    0   0      1         N   F    X    X                                              39µs
     Set                                    L                     líneas del display (N:1-línea/2-
                                                                  líneas, Display tipo de fuente(F:0...)
                                      A     A   A   A    A    A
 Set CGRAM                                                      Colocar CGRAM addrees en el
                 0    0    0   1      C     C   C   C    C    C                                              39µs
   Addrees                                                      contador de dirección
                                      5     4   3   2    1    0
 Set DDRAM                     A      A     A   A   A    A    A Set DDRAM addrees en el contador
                 0    0    1                                                                                 39µs
   Addrees                     C      C     C   C   C    C    C de dirección



                                                        20
Memoria descriptiva                                                      Prácticas con microcontroladores

                                6    5     4    3   2    1    0
                                                                Whether during internal operation
  Read Busy                     A    A    A    A    A    A    A
                            B                                   or not can be known by reading BF.
   Flag and     0       1       C    C    C    C    C    C    C                                       0µs
                            F                                   The contents of addrees counter can
   Addrees                      6    5    4    3    2    1    0
                                                                also be read
  Write Data                D   D    D    D    D    D    D    D Escribir dato en la RAM
                1       0                                                                             43µs
   To RAM                   7   6    5    4    3    2    1    0 (DDRAM/CGRAM)
  Read Data                 D   D    D    D    D    D    D    D Leer dato de la RAM
                1       1                                                                             43µs
  From RAM                  7   6    5    4    3    2    1    0 (DDRAM/CGRAM)

                                Tabla 2. Juego instrucciones de la pantalla LCD


2.3.7. Descripción del teclado

2.3.7.1. Introducción

       El teclado puede ser de dos tipos, 3x4 o 4x4. Aunque nosotros con el de 3x4 para los
teclados del módulo 1 teníamos bastante, escogemos el teclado de 4x4 ya que es del que se
dispone en el laboratorio y por lo tanto no tendríamos que comprar ningún otro teclado.

2.3.7.2. Funcionamiento del teclado

       El teclado servirá para comunicarnos con el µC. La disposición de las teclas en el
teclado es la siguiente:



                                1               2              3              F

                                4               5              6              E

                                7               8              9              D

                                A               0              B              C


                                         Figura 11. Disposición teclas




        En nuetro sistema hay tres teclados y la configuración de las teclas varia dependiendo
de la utilidad del teclado. La configuración de dichos teclados no influye en el funcionamiento
del teclado, ya que el µC leerá que hay una tecla pulsada y dependiendo del teclado que sea
hará una cosa u otra. Todo esto se hace por software.




                                                        21
Memoria descriptiva                                             Prácticas con microcontroladores

       La configuración de los diferentes teclados es:

   •   Teclado del monedero



                       5 CENT      10 CENT 20 CENT CANCELAR

                       50 CENT      1 EURO        2 EURO




                                        Figura 12. Teclado monedero



   •   Teclado del producto modulo 1


                           1             2               3

                           4             5               6

                           7             8               9

                      ACEPTAR            0        CANCELAR


                                 Figura 13. Teclado producto módulo 1


   •   Teclado del producto módulo 2


                          1             2               3

                          4             5               6              ENVIAR

                          7             8               9          RESETEAR

                      ACEPTAR           0        CANCELAR


                                Figura 14. Teclado producto módulo 2




                                                 22
Memoria descriptiva                                              Prácticas con microcontroladores

       El esquema eléctrico de estos teclados sería:




                                     1                2             3               F



                                     4                5             6               E




                                     7                8             9               D



                                     A                0             B               C


                   4x200O                Figura 15. Esquema eléctrico del teclado


        Con lo cuál, al pulsar una tecla cerramos el interruptor y comunicamos la fila con la
columna, con lo cual dando la fila como entrada y la columna como salida, o viceversa, al
poner un nivel ( ’0’ o ‘1’) la salida si se pulsa la tecla tendríamos que leer el mismo nivel en la
salida.




                                                 23
Memoria descriptiva                                     Descripción funcional de nuestro sistema

2.4. Descripción funcional de nuestro sistema

        Una vez vista la descripción de los elementos que se usan para esta práctica, veremos
el funcionamiento general de todo el sistema dando sentido a todos los elementos que
componen los módulos.

2.4.1. Visión General

       El objetivo de este grupo de prácticas es simular una máquina de vending, como ya se
había mencionado anteriormente. El conjunto de entradas y salidas que componen el sistema
son:

   •   3 teclados.
   •   2 pantallas LCD
   •   Circuito LED’s de cambio
   •   3 pulsadores. 1 para el cambio y 2 para producto.
   •   Display de 7 segmentos
   •   Comunicación por USART entre los dos módulos



     TECLADO      TECLADO      PANTALLA                                   TECLADO      PANTALLA
    MONEDERO     PRODUCTO        LCD                                     PRODUCTO        LCD




                          PRACTICA 3                                            PRACTICA 2
           PRACTICA 1
                            PEDIR                                                CAMBIAR
            TECLADO
                          PRODUCTO                                                PRECIO


                MODULO 1                                                    MODULO 2
                                                                              PRACTICA 5
                          PRACTICA 6
        PRACTICA 4                                                          COMUNICACIÓN
                        COMUNICACIÓN
        DAR CAMBIO                                                              USART
                            USART




   LED’s      PULSADOR PULSADOR LED DAR                       PULSADOR LED DAR
                                                                                             DISPLAY
  CAMBIO       CAMBIO  PRODUCTO PRODUCTO                      PRODUCTO PRODUCTO



                         Figura 16. Diagrama de bloques de entradas y salidas




                                                   24
Memoria descriptiva                                 Descripción funcional de nuestro sistema

        Como se puede ver en el diagrama de bloque de entrada y salida el módulo 1 se
encarga de todo lo que es el control del dinero, ya que tiene las entradas y las salidas de las
monedas y se encarga de la selección del producto. Hay un pulsador de producto y el LED de
entregar el producto que se sería lo que faltaría para poder entregar los productos. Esta entrada
y salida se ha puesto para poder realizar una de las prácticas que componen el código de este
módulo.

        Con este módulo podemos simular el monedero de la máquina para la entrada y salida
del dinero a introducir, revisar y controlar si se ha pagado el producto y dar el cambio si se da
el caso.
        El módulo 2 se hizo para crear alguna práctica para usar la USART del µC. Lo que se a
hecho con el módulo 2 es un sistema para poder cambiar los precios de los productos en
simulación como si fuese un pequeño aparato en el que se graban los precios y que se
conectase a la máquina de vending y le transfiriese todos los precios de lo productos.

        Al mismo tiempo ya que teníamos creado el módulo, lo hemos aprovechado para que
hiciese el control de productos debido a que el PIC del módulo 1 estaba saturado y pensando
en posteriores ampliaciones del sistema. La comunicación entre los dos módulos para el
control de productos se hará también por USART. Con lo cual la comunicación por USART
servirá para el producto y para modificar el precio del producto.

       Para la comunicación con la USART lo suyo sería con un sistema RS232 utilizando el
chip MAX232 y un conector del tipo serie. Pero para nuestro sistema hemos pensado conectar
cruzados los pins RX y TX de los dos micros ya que con ello ahorramos dispositivos y lo
único que perdemos es calidad de transmisión, cosa que para las prácticas no es
imprescindible.

2.4.2. Funcionamiento

2.4.2.1. Funcionamiento general

        El funcionamiento de esta simulación de máquina de vending, es parecido a cualquier
máquina de vending de las que existen en la calle. El sistema está esperando a que se
introduzca una moneda o que se seleccione un producto. Una vez que se selecciona un
producto se revisa si hay suficiente dinero para pagarlo y se revisa si hay producto para ver si
se ha agotado, en el caso de que todo vaya bien, pasaría a calcular el cambio, a dar el cambio
y a entregar el producto. En el caso de haber algún error durante el proceso de elegir un
producto saldrá un error por la pantalla y se cancelará el proceso.

       El módulo 2 se encarga de modificar los precios de la máquina primero guardando los
datos en este módulo y por último transmitiendo todos los precios. En este módulo al mismo
tiempo que se modifican los precios también se hace el control sobre los productos, de tal
forma que cuando se tiene que pedir un producto o dar un producto se envía una señal a este
modulo y este tiene guíe responder dependiendo de si hay producto o no.




                                               25
Memoria descriptiva                                 Descripción funcional de nuestro sistema

2.4.2.2. Funcionamiento Módulo 1

       El módulo 1 está compuesto por los siguientes elementos de entrada o salida:

   •   El teclado que simula el monedero
   •   El teclado para introducir el número del producto
   •   La pantalla LCD
   •   El sistema de LED’s para devolver las monedas
   •   El LED de entregar producto
   •   El interruptor de ‘Cambio’
   •   El interruptor de ‘Producto’
   •   El conector para la comunicación con el módulo 2

        Este módulo como hemos dicho anteriormente se encarga de la selección del producto
y de simular el monedero. Para ello disponemos de los dos teclados que mientras no esté
realizando otra operación estará mirando si se ha pulsado una de las teclas de cualquiera de los
dos teclados.

       Si se pulsa una tecla del teclado del monedero, el µC deberá mirar que tecla ha sido la
pulsada y actuar en consecuencia. Si es la tecla de una moneda deberá incrementar la cantidad
de dinero que ha sido pagada y mostrarla por la pantalla del LCD y si se pulsa la tecla de
cancelar se tendrá que devolver el dinero que haya sido introducido hasta ese momento.

        Si la tecla pulsada es del teclado producto deberá revisar si es un número o la tecla
‘aceptar’ o ‘cancelar’. Si es un número deberá procesar la tecla para conseguir el número del
producto que el usuario quiere pedir, una vez seleccionado un producto saldrá el precio por la
pantalla del LCD, dicho precio está en la EEPROM del µC y el micro esperará a que se pulse
la tecla ‘Aceptar’ o ‘Cancelar’ para seguir el proceso.

       Si es la tecla ‘Cancelar’ sirve para que el usuario cancele el proceso de la selección.
Esto puede servir por si el usuario se equivoca al seleccionar el producto o ve que la cantidad a
pagar es mayor de la que ha introducido.

        En el caso de que sea la tecla ‘Aceptar’ solamente la procesará cuando ya se haya
seleccionado el producto, ya que en cualquier otro caso no haría nada y esperaría otra tecla.
Cuando se haya pulsado y el producto ya se haya seleccionado, lo primero que debe hacer el
módulo es revisar si se ha pagado el producto seleccionado y después revisar si hay producto,
es decir, que no se ha agotado. En este caso lo haremos a través de la comunicación USART
que se le preguntará al otro módulo si existe el producto., también hay otra forma que se
explicará al final.

        Si recibimos respuesta positiva del otro módulo conforme que hay producto,
continuaría el proceso calculando el cambio a dar y en el caso de que hubiese que dar cambio
se revisaría si existe cambio. Para ello miraría el interruptor de ‘CAMBIO’, que dependiendo
de su estado nos diría si hay cambio o no. Este sistema es una forma fácil de controlar si hay
cambio o no y se pensó pensando en algún dispositivo que calcula las monedas que quedan o


                                               26
Memoria descriptiva                                 Descripción funcional de nuestro sistema

de alguna otra forma y que al final lo que hace es mandar una señal de aviso conforme no hay
cambio, que sería el interruptor que hemos puesto. Esta parte que revisa las monedas que hay
para cambio o el sistema que sea podría realizarse en una próxima revisión del proyecto.

       Si hubiese que dar el cambio utilizaría el sistema que he diseñado para entregar las
monedas, que es un decodificador de 3 bits con LED’s, en el cual cada LED representa una de
las monedas a entregar. El micro debería calcular las monedas a devolver una a una e ir
entregándolas.

        Por último debería entregar el producto que como en caso de preguntar si había
producto existen dos posibilidades, nosotros escogemos el pedir el producto al módulo 2
mediante la comunicación USART. La otra posibilidad se explicará al final junto con la
posibilidad de pedir producto.

       Una vez pedido el producto, el µC se inicializará y se quedará esperando a que se pulse
una nueva tecla.

        Al igual que este módulo pregunta si hay producto o da el producto comunicándose
con el otro módulo, el otro módulo puede modificar los precios de este. Lo que hace es volcar
la EEPROM del módulo 2 en este módulo, con lo cual cuando recibamos una interrupción por
recepción de datos, hay que revisar si es para modificar la EEPROM y en el caso de que así
sea, parar el proceso de dar el producto y no permitir que nadie pueda entrar monedas ni
seleccionar producto mientras se modifican los precios de la EEPROM.

       En el caso de que durante el proceso de entregar el producto hubiese algún tipo de
problema del tipo que no existiese el producto seleccionado, no se hubiese pagado, no hubiese
producto o no hubiese cambio, el µC saca un mensaje por la pantalla de LCD diciendo el tipo
de error, se cancelaría el proceso, se inicializarían los registros y se quedaría esperando a que
se pulsase una tecla.

        Por último, vamos a explicar la otra opción que hay para preguntar si hay precio y para
dar producto. Para preguntar si hay precio se podría hacer revisando el estado del interruptor
de producto. Este interruptor esta aquí debido a que en una de las prácticas no se utiliza la
transmisión y lo hace de esta forma para saber si hay producto. Para dar el producto hay un
LED que podemos encender cuando demos el producto. Este LED está aquí por si realizamos
la práctica 4 en la que no usamos comunicación con el otro módulo como pasaba en el caso
del interruptor del producto.

2.4.2.3. Funcionamiento Módulo 2

        El módulo 2 está compuesto por los siguientes elementos de entrada o salida:

   •   El teclado para introducir el número del producto
   •   La pantalla LCD
   •   El sistema del DISPLAY para ver el número del producto que piden
   •   El LED de entregar producto


                                               27
Memoria descriptiva                                 Descripción funcional de nuestro sistema


   •   El interruptor de ‘Producto’
   •   El conector para la comunicación con el módulo 1

       Este módulo, como ya se ha dicho, se encarga de gestionar los productos y de
guardar los precios para después enviar los precios al módulo 1 y modificarlos.

        El funcionamiento de este módulo es que una vez inicializado se pone a testear el
teclado de producto a la espera de que se pulse una tecla o de que se active la interrupción por
recepción de datos.

        Si se pulsa una tecla del teclado el µC deberá mirar que tecla ha sido la pulsada y
actuar en consecuencia. Si se pulsa la tecla RESETEAR el programa nos debería pedir la
confirmación para borrar todos los precios que están almacenados en la EEPROM.

        La tecla ‘CANCELAR’ sirve para parar el proceso de la modificación de precio y para
la confirmación de borrar la memoria. La tecla ‘ACEPTAR’ sirve para confirmar el cambio
de precio, confirmar el borrar la memoria y para comenzar la comunicación con el módulo 1
para cambiar los precios.

        La tecla ‘ENVIAR’ sirve para enviar los precios guardados en la EEPROM al módulo
1 de tal forma que cuando se pulsa nos pide la confirmación y comienza a enviar los datos.

        Las teclas numéricas son para seleccionar el producto al que queremos modificar el
precio y para insertar el nuevo precio.

        Para modificar un precio, primero hay que seleccionar el producto y una vez que se ha
seleccionado nos presentará por la pantalla LCD el precio actual que tiene el producto y se
queda a la espera de introducir el nuevo precio. Una vez insertado el nuevo precio se debería
confirmar y entonces modificar de la EEPROM el precio del producto.

        Para ver el precio de un producto se puede utilizar el mismo método que el de cambiar
el precio, con la diferencia de que una vez seleccionado el producto y salido el precio, cuando
nos pida el precio nuevo debemos cancelar el proceso con lo cual no se modifica dicho precio.

        Para enviar los precios al módulo 1 hay que pulsar la tecla ‘ENVIAR’. Entonces nos
pediría la confirmación para enviar los datos. Una vez confirmada la operación comenzaría el
proceso de comunicación.

       En cualquier momento se puede recibir una interrupción por la recepción de datos
debido a que el otro módulo puede peguntar si hay un producto o dar la orden de dar un
producto.

        En el caso de recibir la pregunta sobre si hay un producto lo que tiene que hacer el µC
es parar el proceso de cambiar un precio y no permitir que se pueda introducir ninguna tecla
por el teclado. Después debería enseñar el número del producto por el display y revisar si hay




                                               28
Memoria descriptiva                                Descripción funcional de nuestro sistema

producto, lo cual se hace mirando el estado del interruptor del producto. Por último
respondería al módulo 1 diciendo si hay o no producto.

       En el caso de recibir la orden de dar el producto tendría que poner el número del
producto en el display como antes y entonces encender el LED de dar producto.

        En posteriores revisiones del proyecto estas salidas pueden servir perfectamente para
montar algún tipo de dispositivo, como una serie de multiplexadores, de tal forma que en vez
de leer el interruptor o encender el LED se puedan leer diferentes sensores o algo parecido.




                                              29
Memoria descriptiva                                                              Descripción circuital

2.5. Descripción circuital

2.5.1. Introducción

        En este apartado se explican los eslementos electtricos y los conectores que están en
los modulos en el siguiente diagrama de bloques veremeos los diferentes sistemas que vamos a
utilizar:



                                          MÓDULO 1



               REGULADOR                                            CONECTOR
                                          CONECTOR
                   DE                                                TECLADO
                                        PANTALLA LCD
                 TENSIÓN                                            PRODUCTO




                                          CONECTOR
                                                                 DECODIFICADOR
                PIC 16f876                 TECLADO
                                                                    74LS138
                                          MONEDAS




                       Figura 17. Diagrama bloques esquema eléctrico Módulo 1


                                          MÓDULO 2



               REGULADOR
                                            CONECTOR
                   DE
                                          PANTALLA LCD
                 TENSIÓN

                                                                    DECODIFICADOR
                                                                        DE BCD
                                                                    A 7 SEGMENTOS
                                                                          7447
                                                                       Y DIPLAY

                                            CONECTOR
                 PIC 16f876                  TECLADO
                                            PRODUCTO




                  Figura 18. Diagrama bloques esquema eléctrico Módulo 2
       A contiuaciuón se explican todos los bloques de cada módulo.


                                                     30
Memoria descriptiva                                                             Descripción circuital

2.5.2. Circuito regulador de tensión

        El circuito regulador de tensión va en lo dos módulos. Este circuito sirve, como bien
dice el nombre, para regular la tensión de entrada a 5V para alimentar el PIC y los diferentes
componentes de los módulos. El sentido de este circuito es para regular y mantener constante
la tensión de 5V independientemente de las variaciones que tengamos en la entrada del
circuito, siempre que estén entre un margen de 8 a 15V aproximadamente.

        El LED que está puesto a la salida del regulador LM7805 es simplemente para ver que
el circuito está conectado

        Este circuito está compuesto por:

   •    2 condensadores de poliéster 100nF
   •    1 condensador electrolítico 47µF
   •    1 resistencia de 1kΩ
   •    1 regulador de tensión LM7805
   •    1 conector de 2 pins para conectar la placa a la fuente de alimentación
   •    1 LED rojo de 5mm



                                            U1
                                          LM7805CT
                                                                             LED1
   J1                                          Vreg

                                          IN      OUT

                       47uF       100nF                              100nF   LED_red      R1
                       C1         C2                                  C3                  1.0kohm
 HDR1X2



                                Figura 19. Regulador de tensión 5V


2.5.2. El microcontrolador

      Recordemos las principales características de un microcontrolador. Un µC está
formado principalmente por:
          • CPU (Unidad Central de Proceso), que es el microprocesador del sistema.
          • Memoria de programa, que puede ser:
                 o ROM:       Dispositivo grabado en fábrica
                 o EPROM: Dispositivo grabable y borrable (Mediante UV)
                 o EEPROM Dispositivo regrabable in-system con VPP = 12 v
                 o FLASH: Dispositivo regrabable in-system
          • Memoria volátil de datos:
                 o RAM:       Almacenamiento de variables del programa



                                                      31
Memoria descriptiva                                                       Descripción circuital

                o SFR:        Special Function Registers, usados para controlar los
                   periféricos, configuraciones, interrupciones,...
          •   Memoria no volátil de datos:
                o EEPROM o FLASH

          •   Puertos de Entrada / Salida
          •   Timers

      El PIC que hemos elegido para montar nuestro circuito es el PIC 16F876 y consta de:
          • Arquitectura Harvard (Memoria de datos y programa separados)
          • Memoria de datos de 8 bit
          • Memoria de programa de 14 bit
          • Líneas E/S de alta corriente
          • Memoria RAM de 368 Bytes
          • Memoria de datos EEPROM de 256 Bytes
          • Memoria FLASH de programa de 14336 Bytes (14bit*8192 word)
          • 3 Puertos de Entrada / salida (1 de 6 bits, 2 de 8 bits)
          • WatchDog (Temporizador especial que hace un reset periódicamente)
          • 1 Timer de 16 bit
          • 2 Timer de 8 bit
          • 5 conversores A/D de 10 bits
          • 1 Puerto Serie por comunicación asíncrona full-duplex
          • Posibilidad de interrupción por el Puerto Serie

      Seguidamente, vemos el esquema del patillaje del PIC 16F876




                            Figura 20. Esquema patillaje del PIC 16F876




      Funciones de cada uno de los pins del PIC 16F876


                                                32
Memoria descriptiva                                                         Descripción circuital



 Nombre del Pin       Nº       Tipo          Tipo de                      Descripción
                      de      E(4) /S(5)     Buffer
                      Pin      /P(6)
OSC1/CLKIN             9         E         ST/CMOS(3)   Entrada oscilador de cristal/Entrada de reloj externo

OSC2/CLKOUT           10          S            -        Salida oscilador de cristal. En modo RC, el pin OSC2
                                                        es la salida CLKOUT, el cual tiene una ¼ de la
                                                        frecuencia de OS1 y denota el tiempo de ciclo de
                                                        instrucción
MCLR*/Vpp              1          E/P         ST(7)     Entrada Master Clear (Reset) o entrada de tensión y
                                                        programación. Este pin es un RESET del dispositivo
                                                        activo por nivel bajo
                                                        PORTA es un Puerto de E/S bidireccional
RA0/AN0                2          E/S        TTL(8)     RA0 puede también ser la entrada analógica 0
RA1/AN1                3          E/S         TTL       RA1 puede también ser la entrada analógica 1
RA2/AN2/Vref-          4          E/S         TTL       RA2 puede también ser la entrada analógica 2 o
                                                        el nodo negativo de la referencia de tensión
                                                        analógica
RA3/AN3/Vref+          5          E/S         TTL       RA3 puede también ser la entrada analógica 3 o
                                                        el nodo positivo de la referencia de tensión
                                                        analógica
RA4/T0CKI              6          E/S          ST       RA4 puede también ser la entrada de reloj del
                                                        Timer 0. La salida es del tipo colector abierto.
RA5/SS*/AN4            7          E/S         TTL       RA5 puede también ser la entrada analógica 5 o
                                                        el selector de esclavo para puerto serie asíncrono
                                                        PORTB es un puerto de E/S bidireccional. Puede ser
                                                        programado por software para habilitar pull-ups
                                                        internos en todas las entradas
RB0/INT               21    E/S            TTL/ST(1)    RB0 puede también ser el pin de interrupción externo

RB1                   22    E/S            TTL
RB2                   23    E/S            TTL
RB3/PGM               24    E/S            TTL          RB3 puede ser la entrada de baja tensión de
RB4                   25    E/S            TTL          programación

RB5                   26    E/S            TTL
RB6/PGC               27    E/S            TTL/ST(2)    Pin de interrupción en cambio de estado
                                                        Pin de interrupción en cambio de estado

RB7/PGD               28    E/S            TTL/ST(2)    Pin de interrupción en cambio de estado o pin para
                                                        programación In-Circuit_Debugger. Reloj de
                                                        programación serie.
                                                        Pin de interrupción en cambio de estado o pin para la
                                                        programación In-CircuitDebugger. Datos en la
                                                        programación serie.
RC0/T1OSO/T1CKI 11                E/S          ST       PORTA en un Puerto E/S bidireccional
                                                        RC0 puede también ser la salida de oscilador del Timer
                                                        1 o la entrada de reloj el Timer 1
RC1/T1OSI/CCP2        12          E/S          ST       RC1 puede también ser la entrada del oscilador del
                                                        Timer 1 o la entrada de Captura2/salida de
                                                        Captura2/salida PWM2


RC2/CCP1              13          E/S          ST       RC2 puede también ser la entrada de Captura1/salida de
                                                        Captura1/salida PWM1

RC3/SCK/SCL           14          E/S          ST       RC3 puede también ser la entrada de reloj del puerto
                                                        serie asíncrono para modos SPI y IIC.
                                                        RC4 puede también ser la entrada de datos SPI (modo
RC4/SDI/SDA           15          E/S          ST       SPI) o el E/S de datos en el modo IIC


RC5/SDO               16          E/S          ST       RC5 puede también ser la salida de datos SPI (modo
                                                        SPI)



                                             33
Memoria descriptiva                                                                    Descripción circuital

RC6/TX/CK               17         E/S                 ST          RC6 puede también ser el pin de transmisión en
                                                                   USART o el reloj asíncrono

RC7/RX/DT               18         E/S                 ST          RC7 puede también ser el pin de recepción en USART
                                                                   o los datos en modo asíncrono
Vss                     8,19         P                   -         Referencia de tierra

Vdd                      20          P                   -         Entrada de tensión positiva



                                  Tabla 3. Funciones de los pins en el PIC 16 F876


   (1) Este buffer es una entrada Schmitt Trigger cuando la configuramos como interrupción externa
   (2) Este buffer es una entrada Schmitt Trigger cuando la usamos en modo de programación Serie
   (3) Este buffer es una entrada Schmitt Trigger cuando la configuramos en modo oscilador RC y como
       entrada CMOS
   (4) E = Entrada
   (5) S = Salida
   (6) P = Power
   (7) ST = Entrada Schmitt Trigger
   (8) TTL = Entrada TTL


2.5.3. Decodificador 74LS138

       Para devolver el cambio o la cantidad de dinero pagada, he pensado en un sistema en el
módulo 1 que tiene que dar una señal para cada una de las diferentes monedas que tenemos
que devolver. Las monedas para dar el cambio serán 5 (5, 10, 20 y 50 céntimos y la de 1 €)

        Para no utilizar 5 salidas del µC utilizaremos una codificación para estas monedas, con
lo cual con tres salidas RA<2:0> sería suficiente y a posterior utilizaremos el 74LS138 para
decodificarlas. Las salidas del 74138 atacarán a unos LEDS que corresponden a la moneda a
entregar.

       A continuación ponemos la codificación que he empleado para las monedas

                                    RA0-RA2              MONEDA
                                                            NO
                                      (0,0,0)
                                                       CONECTADO
                                      (0,0,1)          5 CENTIMOS
                                      (0,1,0)          10 CENTIMOS
                                      (0,1,1)          20 CENTIMOS
                                      (1,0,0)          50 CENTIMOS
                                      (1,0,1)             1 EURO
                                                            NO
                                      (1,1,0)
                                                       CONECTADO
                                                            NO
                                      (1,1,1)
                                                       CONECTADO

                                      Tabla 4. Codificación monedas




                                                    34
Memoria descriptiva                                                                  Descripción circuital

         La tabla de la verdad del 74138 es:




                                           Tabla 5. Tabla de la verdad del 74138


         El circuito está compuesto por:

   •     Decodificador/demultiplexor de 3 a 8 líneas 74138
   •     5 LEDS verdes de 5mm
   •     Resistencia SIP 1x8 de 1KΩ

         El esquema eléctrico del circuito es:



                                                  LED_green
                                                  5 centimos
                                                                                                   VDD
   RA0
                                                                                                         5V
                         U1
                                                                                            R1
                1                   15            LED_green
   RA1                         Y0
                    A               14            10 centimos
                                                                                     2




                                                                                                   1




                2
                               Y1
                    B               13
                                                                                     3




                3
   RA3                         Y2
                    C               12
                                                                                     4




                               Y3                   LED_green
                                    11
                                                                                     5




                               Y4                   20 centimos
   5V                               10
                                                                                     6




                6
                               Y5
                    G1              9
                                                                                     7




                4
                               Y6
                        ~G2A        7
                                                                                     8




                5                                 LED_green
                               Y7
                        ~G2B                      50 centimos
                                                                                     9




                    74LS138N                                                             4.7kOhm



                                                  LED_green
                                                  1 euro


                                         Figura 21. Esquema eléctrico del circuito



                                                          35
Memoria descriptiva                                                        Descripción circuital

2.5.4. Decodificador de BCD a 7 segmentos 7447 y display

       Esto se encuentra en el módulo 2. Su función es que cuando recibe el módulo 2 la
orden de dar el producto o cuando pregunta por algún producto, aparte de realizar otras
operaciones debe mostrar por los diplays el número del producto sobre el que pregunta o da.




                                 Figura 22. Conexiones y esquema display

       La tabla de la verdad del 7447 es:




                                 Tabla 6. Tabla de la verdad del 7447



                                                 36
Memoria descriptiva                                                        Descripción circuital

       El circuito del 7447 y del display esta compuesto por:

   •   14 Resistencias de 1kΩ
   •   2 chips decodificadores de BCD a 7 segmentos 7447
   •   2 Displays SA-0511

       El esquema del circuito es:

   VDD
       5V                                                                          RB2
              RA4   RA3                                                                     RB1
                                                                           VDD
                                           U1           U2                     5VRB3
                                                                                            RB0
            6

            1
            7
       4
       5
       3


            2




                                                                                     6

                                                                                     1
                                                                                     7
                                                                            4
                                                                            5
                                                                            3


                                                                                     2
                      U4 SEVEN_SEG_DISPLAY                     SEVEN_SEG_DISPLAY
    BI/RBO
    RBI OG
    LT OF

    D
    C
    B
    A




                      74LS47N                                                               U3




                                                                            BI/RBO
                                                                            RBI OG
                                                                            LT OF

                                                                            D
                                                                            C
                                                                            B
                                                                            A
         OE
         OD
         OC
         OB
         OA




                                         ABCDEFG     ABCDEFG                                74LS47N




                                                                                 OE
                                                                                 OD
                                                                                 OC
                                                                                 OB
                                                                                 OA
       12
       14
       15

       10
       11

       13
       9




                                 R1
                                                                 R8




                                                                              12
                                                                              14
                                                                              15

                                                                              10
                                                                              11

                                                                              13
                                                                              9
                                1.0kohm
                                 R2                            1.0kohm
                                                                 R9
                                1.0kohm
                                 R3                            1.0kohm
                                                                R10
                                1.0kohm
                                 R4                            1.0kohm
                                                                R11
                                1.0kohm
                                 R5                            1.0kohm
                                                                R12
                                1.0kohm
                                 R6                            1.0kohm
                                                                R13
                                1.0kohm
                                 R7                            1.0kohm
                                                                R14
                                1.0kohm
                                                               1.0kohm


                                     Figura 23. Esquema del circuito




                                                   37
Memoria descriptiva                                                           Descripción circuital

2.5.5. El teclado

       El teclado es el elemento con el cual entramos datos en el µC como hemos dicho antes.
Lo conectamos a través de un cable paralelo de 10 pins. Hay que tener en cuenta que hay tres
teclados por la tanto las conexiones son diferentes para cada uno.

       Sabiendo que el esquema eléctrico del teclado es:




                                           1                2             3         F



                                           4                5             6         E




                                          7                8             9         D



                                           A                0             B         C



                        4x200
                        O          Figura 24. Esquema eléctrico del teclado



      Vamos a explicar las conexiones de los conectores a los µC de los módulos. El teclado
del monedero tiene la siguiente configuración:

                                          R1                     R2
                                          10kohm                 10kohm




                           RA3                  J1
                                                                       RA4


                           RC0                                         RC1


                           RC2                                         RC3


                                               HDR2X5



                           Figura 25. Configuración teclado monedero


                                                 38
Memoria descriptiva                                                                  Descripción circuital

El teclado de seleccionar producto del módulo 1:




                               RC0                J1                    RC1

                               RC2                                      RC3

                               RB0                                      RB1

                               RB2


                                                 HDR2X5



                                        R3        R1            R2
                                        10kohm    10kohm        10kohm




                              Figura 26. Teclado selección producto módulo 1



       El teclado de seleccionar producto del módulo 2:




                        RC0                      J1                            RC1

                        RC2                                                    RC3

                        RA0                                                    RA1

                        RA2                                                    RA3


                                              HDR2X5



                                      R3         R1        R2      R4
                                      10kohm 10kohm        10kohm 10kohm




                           Figura 27. Teclado selección producto módulo 2



                                                  39
Memoria descriptiva                                                               Descripción circuital

         Como se puede comprobar, los teclados de seleccionar producto de los módulos son
prácticamente iguales. El del monedero es un poco diferente, ya que por estética hemos
cambiado las filas por las columnas, cosa que a nivel de hardware no comporta ninguna
dificultad pero a nivel de software hay que tenerlo en cuenta para poder leer correctamente las
filas y las columnas.

2.5.6. Pantalla LCD

        Tanto aquí como en el apartado anterior, vamos a explicar las conexiones del µC con la
pantalla del LCD. Para ello utilizamos un conector de 16 para cable paralelo. Las conexiones
de la pantalla al conector son las siguientes:




                                 Figura 28. Conexiones pantalla LCD al conector


     Tenemos que utilizar dos pantallas de LCD, una para cada módulo. El
esquema de conexión del módulo 1 es:
                                                                    VCC
                                              J1
                                                                              RB3

                                                                              RB4



                        RC0                                                 RC1

                        RC2                                                 RC3



                                            RIBBON_16H

                                   Figura 29. Esquema conexión módulo 1



                                                 40
Memoria descriptiva                                                         Descripción circuital

       Y el del módulo 2 es:


                                                               VCC
                                            J1
                                                                      RB4

                                                                      RB5



                       RC0                                            RC1

                       RC2                                            RC3



                                          RIBBON_16H

                               Figura 30. Esquema conexión módulo 2



        Como se puede observar es muy parecido en los dos módulos. Lo que hay que tener en
cuenta es que como se puede comprobar, los pins DB<3:0> no se utilizan y esto ocurre porque
en vez de enviar los datos en paquetes de 8 bits, los enviamos en paquetes de 4 bits, con lo
cual se ahorra pins de salida del µC, aunque perdemos en tiempo de ejecución ya que hay que
pasar dos veces los datos para poder enviarlos.




                                                 41
Memoria descriptiva                                                        Prácticas a realizar

2.6. Prácticas a realizar

2.6.1. Introducción

       En este apartado vamos a poner las prácticas que he diseñado para ser realizadas por
los alumnos. Estas prácticas se han intentado que sean lo más independientes posible del resto,
aunque si al final de las prácticas se intentan unir todas en una sola, hay que tener una serie de
factores para poder unirlas.

      A continuación se exponen los enunciados de las prácticas realizadas. En ellas se
pueden observar los siguientes apartados:

   •   Equipos y materiales: En este apartado se dicen los materiales necesarios para la
       práctica a realizar.
   •   Descripción del funcionamiento: Aquí vamos a dar un resumen de lo que tiene que
       hacer la práctica a realizar.
   •   Funcionamiento del teclado: Se hace una explicación de como va el teclado y la
       configuración del mismo.
   •   Funcionamiento del display: Se hace una breve explicación del funcionamiento de la
       pantalla deLCD.
   •   Bases teóricas: Una explicación más detallada de lo que tiene que hacer el programa.
   •   Explicación del esquema eléctrico: Una breve explicación de cómo es el esquema
       eléctrico.
   •   Resumen de objetivos: Aquí se muestran los objetivos a realizar por el alumno en la
       práctica.
   •   Diagrama de flujo: Son los diagramas de flujo de un ejemplo de cómo podría
       funcionar la práctica
   •   Otros: En algunas practicas se ha añadido algún otro apartado para así poder explicar
       algún tipo de componente que se utiliza en ella.

2.6.2. Enunciados de prácticas




                                               42
2.6.2.1.                        Práctica núm.1
                                   Monedero
       1.1     Equipos y materiales:

   Para realizar la práctica utilizaremos:
      • Ordenador PC
      • Software MPLAB
      • Teclado de 16 teclas
      • Display SAMSUNG KS0070
      • Cable plano de 16
      • “        “ “ 10
      • Cable comunicación puerto serie
      • Kit MPLAB-ICD debugger
      • PIC 16F876

       1.2     Descripción del funcionamiento

        En ésta práctica tenemos que programar el chip para simular un monedero de una
máquina de autoservicio. Para ello, el microcontrolador debe interpretar una serie de señales
que vienen de un teclado que simulará el detector de monedas de la máquina autoservicio, para
ver su funcionamiento leer el apartado 1.3.

       Una vez se haya detectado una moneda, se debería incrementar el valor de dicha
moneda en un registro que nos irá diciendo la cantidad de dinero que tenemos introducido.
Este registro lo llamaremos ‘PAGADO’ y tendrá el formato que se explica en el apartado 1.5.

       En éste teclado, además de las teclas que corresponden a las monedas a introducir,
también existirá una tecla que nos servirá para la devolución de la cantidad introducida, la cuál
reseteará el registro ‘PAGADO’ (del que se ha hablado anteriormente) y procederá a la
devolución del dinero.

       Como en toda máquina, habrá una cantidad máxima de dinero para insertar. Ésta
cantidad dependerá del valor máximo de los precios que fijaremos o de las limitaciones de
hardware o software que tengamos. Si superamos este valor máximo, nos deberá devolver la
última moneda introducida y no incrementar el valor de lo que llevamos pagado. Para fijar
dicho valor máximo leer el apartado 1.5.

       Por último, dispondremos de un display para poder ver la cantidad de dinero que
llevamos introducido. Para ver el funcionamiento del display y el formato con el que tenemos
que escribir los datos leer el apartado 1.4 y 1.5 respectivamente.




                                               43
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual

Más contenido relacionado

Similar a Manual

Proyecto Final de Carrera. Ing.Informática. HELP-DESK
Proyecto Final de Carrera. Ing.Informática. HELP-DESKProyecto Final de Carrera. Ing.Informática. HELP-DESK
Proyecto Final de Carrera. Ing.Informática. HELP-DESKFernando Leandro
 
Manual mequinform
Manual mequinformManual mequinform
Manual mequinformAnim EUno
 
Mantenimiento de computadores
Mantenimiento de computadoresMantenimiento de computadores
Mantenimiento de computadoreshenca2684
 
Mantenimiento de computadores
Mantenimiento de computadoresMantenimiento de computadores
Mantenimiento de computadoresluisj9212
 
Mherramientasinformaticas[1]
Mherramientasinformaticas[1]Mherramientasinformaticas[1]
Mherramientasinformaticas[1]cgviviana
 
Manual celchino
Manual celchinoManual celchino
Manual celchinodaesel
 
Microprocesadores y microcontroladores_itn
Microprocesadores y microcontroladores_itnMicroprocesadores y microcontroladores_itn
Microprocesadores y microcontroladores_itnddarioooo
 
Manual pilot 2000_esp
Manual pilot 2000_espManual pilot 2000_esp
Manual pilot 2000_espSERVINCOCAR
 
R1 e _copy_
R1 e _copy_R1 e _copy_
R1 e _copy_Natt-N
 
Programa De Mantenimiento Preventivo En Moldes Medellin
Programa De Mantenimiento Preventivo En Moldes MedellinPrograma De Mantenimiento Preventivo En Moldes Medellin
Programa De Mantenimiento Preventivo En Moldes MedellinO&M Ingenieria
 
Microcontroladores: Los microcontroladores AVR de ATMEL parte 1
Microcontroladores: Los microcontroladores AVR de ATMEL parte 1Microcontroladores: Los microcontroladores AVR de ATMEL parte 1
Microcontroladores: Los microcontroladores AVR de ATMEL parte 1SANTIAGO PABLO ALBERTO
 
Aprenda visual basic como si estuviera en primero
Aprenda visual basic como si estuviera en primeroAprenda visual basic como si estuviera en primero
Aprenda visual basic como si estuviera en primerocesar castillo
 
21872 visual-basic-6-curso-paso-a-paso
21872 visual-basic-6-curso-paso-a-paso21872 visual-basic-6-curso-paso-a-paso
21872 visual-basic-6-curso-paso-a-pasoFerney Soler
 
Visual basic 6 (curso paso a paso)
Visual basic 6 (curso paso a paso)Visual basic 6 (curso paso a paso)
Visual basic 6 (curso paso a paso)repiolaje
 

Similar a Manual (20)

Proyecto Final de Carrera. Ing.Informática. HELP-DESK
Proyecto Final de Carrera. Ing.Informática. HELP-DESKProyecto Final de Carrera. Ing.Informática. HELP-DESK
Proyecto Final de Carrera. Ing.Informática. HELP-DESK
 
Manual mequinform
Manual mequinformManual mequinform
Manual mequinform
 
Mantenimiento de computadores
Mantenimiento de computadoresMantenimiento de computadores
Mantenimiento de computadores
 
Mantenimiento de computadores
Mantenimiento de computadoresMantenimiento de computadores
Mantenimiento de computadores
 
Mherramientasinformaticas[1]
Mherramientasinformaticas[1]Mherramientasinformaticas[1]
Mherramientasinformaticas[1]
 
Manual celchino
Manual celchinoManual celchino
Manual celchino
 
Microprocesadores y microcontroladores_itn
Microprocesadores y microcontroladores_itnMicroprocesadores y microcontroladores_itn
Microprocesadores y microcontroladores_itn
 
Manual pilot 2000_esp
Manual pilot 2000_espManual pilot 2000_esp
Manual pilot 2000_esp
 
R1 e _copy_
R1 e _copy_R1 e _copy_
R1 e _copy_
 
Programa De Mantenimiento Preventivo En Moldes Medellin
Programa De Mantenimiento Preventivo En Moldes MedellinPrograma De Mantenimiento Preventivo En Moldes Medellin
Programa De Mantenimiento Preventivo En Moldes Medellin
 
Led´s
Led´sLed´s
Led´s
 
Motor pasopaso
Motor pasopasoMotor pasopaso
Motor pasopaso
 
Manual De Visual Basic
Manual De Visual BasicManual De Visual Basic
Manual De Visual Basic
 
Manual de programación del PLC Festo
Manual de programación del PLC FestoManual de programación del PLC Festo
Manual de programación del PLC Festo
 
Microcontroladores: Los microcontroladores AVR de ATMEL parte 1
Microcontroladores: Los microcontroladores AVR de ATMEL parte 1Microcontroladores: Los microcontroladores AVR de ATMEL parte 1
Microcontroladores: Los microcontroladores AVR de ATMEL parte 1
 
Creacion centro-computo
Creacion centro-computoCreacion centro-computo
Creacion centro-computo
 
Aprenda visual basic como si estuviera en primero
Aprenda visual basic como si estuviera en primeroAprenda visual basic como si estuviera en primero
Aprenda visual basic como si estuviera en primero
 
Vbasic60
Vbasic60Vbasic60
Vbasic60
 
21872 visual-basic-6-curso-paso-a-paso
21872 visual-basic-6-curso-paso-a-paso21872 visual-basic-6-curso-paso-a-paso
21872 visual-basic-6-curso-paso-a-paso
 
Visual basic 6 (curso paso a paso)
Visual basic 6 (curso paso a paso)Visual basic 6 (curso paso a paso)
Visual basic 6 (curso paso a paso)
 

Manual

  • 1. Prácticas PIC basadas en máquina de vending AUTOR: Félix Rizo Lobato DIRECTOR: Nicolau Cañellas Alberich FECHA: Septiembre / 2004
  • 3. 2.- MEMORIA DESCRIPTIVA 1 2.1. INTRODUCCIÓN 2 2.1.1. Antecedentes 2 2.1.2. Objetivos 2 2.2. SOLUCIÓN ADOPTADA 4 2.2.1. Los microcontroladores. Consideraciones previas 4 2.2.2. Ventajas de los diseños basados en microcontroladores 5 2.2.3. Arquitectura básica de los µC 5 2.2.3.1. CPU (Central Process Unit) 6 2.2.3.2. Memoria de programa 6 2.2.3.3. Memoria de datos 6 2.2.3.4. Puertos entrada / salida 7 2.2.3.5. Watch-Dog 7 2.2.3.6. Brown-out 7 2.2.3.7. Contador / timer 7 2.2.3.8. ADC y DAC 8 2.2.3.9. PWM 8 2.2.3.10. Comunicación Serie 8 2.2.4. Que es un PIC? 8 2.2.4.1. Diferencias con otros µC 8 2.2.5. Los microcontroladores PIC 9 2.2.5.1. Características de los microcontroladores PIC 9 2.2.5.2. Familias PICmicro 10 2.2.5.3. ¿Que PIC escogemos? 10 2.2.5.4. PIC 16F876 y 16F877 11 2.3. PRÁCTICAS CON MICROCONTROLADORES 13 2.3.1. Consideraciones previas 13 2.3.2. Descripción del MPLAB 13 2.3.2.1. Introducción programa 13 2.3.2.2. Funcionamiento del MPLAB IDE 14 2.3.3. Descripción del Kit MPLAB-ICD 16 2.3.3.1. Introducción 16 2.3.3.2. Características del MPLAB-ICD Module 17 2.3.3.3. Características del MPLAB-ICD Header 17 2.3.4. Placa base de laboratorio 18 2.3.4.1 Descripción de la paca usada en laboratotio 18 2.3.5. Regulador de tensión 18 2.3.6. Descripción Pantalla LCD 19 2.3.6.1. Introducción 19 2.3.6.2. Que pantalla LCD vamos a utilizar? 19 2.3.6.3. Funcionamiento de la pantalla LCD 19
  • 4. 2.3.7. Descripción teclado 21 2.3.7.1. Introducción 21 2.3.7.2. Funcionamiento del teclado 21 2.4. DESCRIPCIÓN FUNCIONAL DE NUESTRO SISTEMA 24 2.4.1. Visión general 24 2.4.2. Funcionamiento 25 2.4.2.1 Funcionamiento general 25 2.4.2.2 Funcionamiento Módulo 1 26 2.4.2.3 Funcionamiento Módulo 2 27 2.5. DESCRIPCIÓN CIRCUITAL 30 2.5.1. Introducción 30 2.5.2. Circuito regulador de tensión 31 2.5.3. El microcontrolador 31 2.5.4. Decodificador 74LS138 34 2.5.5. Decodificador de BCD a 7 segmentos 7447 y display 36 2.5.6. El Teclado 38 2.5.7. Pantalla LCD 40 2.6. PRÁCTICAS A REALIZAR 42 2.6.1. Introducción 42 2.6.2. Enunciados de prácticas 42 2.6.2.1. Práctica 1 43 2.6.2.2. Práctica 2 50 2.6.2.3. Práctica 3 59 2.6.2.4. Práctica 4 69 2.6.2.5. Práctica 5 78 2.6.2.6. Práctica 6 88 2.7. PROGRAMA ASM 97 2.7.1 Introducción 97 2.7.2. Modulo 1 97 2.7.2.1. Visión general. 97 2.7.2.2. Revisar monedero 98 2.7.2.3. Revisar producto 99 2.7.2.4. Dar cambio 101 2.7.2.5. Interrupción 102 2.7.3. Módulo 2 103 2.7.3.1. Visión general 103 2.7.3.2. Seleccionar producto o precio 104 2.7.3.3. Elegir producto 104 2.7.3.4. Enviar EEPROM 105 2.7.3.5. Interrupción 106
  • 5. 2.7.4. Datos de interés 107 2.7.4.1. Registros de dinero 107 2.7.4.2. Clasificación de los productos. 108 2.7.4.3. Función ‘Escribir_LCD’ 108 2.7.4.4. Función ‘Clear_display’ 109 2.7.4.5. Función ‘EE_escribe’ 109 2.7.4.6. Función ‘EE_LEE’ 109 3.- MEMORIA DE CÁLCULO 110 3.1. CÁLCULOS DE LOS ESQUEMAS ELÉCTRICOS 111 3.2. CÁLCULOS DEL PROGRAMA ASM 112 4.- PRESUPUESTO 114 4.1. LISTA ELEMENTOS 115 4.1.1. Lista de elementos del módulo 1 115 4.1.2. Lista de elementos del módulo 2 116 4.2. LISTA DE PRECIOS 117 4.2.1. Lista de precios de elementos del módulo 1 117 4.2.2. Lista de precios de elementos del módulo 2 118 4.3. COSTE TOTAL 119 4.3.1. Coste total del módulo 1 119 4.3.2. Coste total del módulo 2 120 4.4. RESUMEN DEL PRESUPUESTO 121 5.- PLANOS 122 5.1. ESQUEMAS DE ELEMENTOS 123 5.1.1. Esquema Regulador fuente tensión 123 5.1.2. Esquema del 74LS47 123 5.1.3. Esquema del 74LS138 124 5.1.4. Esquema Comunicación USART 124 5.1.5. Conector teclado 125 5.1.5.1.Teclado producto 125 5.1.5.2.Teclado monedas 125 5.1.5.3.Teclado precio 126 5.1.6. Esquema conector pantalla LCD 126 5.1.6.1. LCD Módulo 1 126 5.1.6.2. LCD Módulo 2 126
  • 6. 5.2. ESQUEMAS PRÁCTICAS MÓDULO 1 127 5.2.1. Esquemas Práctica 1 127 5.2.2. Esquemas Práctica 3 128 5.2.3. Esquemas Práctica 4 129 5.2.4. Esquemas Práctica 6 130 5.2.5. Esquema general 131 5.2.6. Diseño placa base 132 5.3. ESQUEMAS PRÁCTICAS MÓDULO 2 133 5.3.1. Esquemas Práctica 2 133 5.3.2. Esquemas Práctica 5 y Módulo 2 133 5.3.3. Diseño placa base 134 ANEXOS A. LISTA DE CÓDIGOS DE PROGRAMA A.1. Módulo 1 I A.1.1. Programa ASM de práctica 1 I A.1.2. Programa ASM de práctica 3 X A.1.3. Programa ASM de práctica 4 XXV A.1.4. Programa ASM de práctica 6 XXXV A.1.5. Programa ASM del Módulo 1 completo XLVIII A.2. Módulo 2 LXX A.2.1. Programa ASM de práctica 2 LXX A.2.2. Programa ASM de práctica 6 LXXXVI A.2.3. Programa ASM del Módulo 2 completo CI
  • 8. Memoria descriptiva Introducción 2.1. Introducción En este proyecto encontraremos seis prácticas para la asignatura de “Sistemes electrònics amb microcontrolador”, en las cuales se pretende que el alumno aprenda a programar un microcontrolador. Estas prácticas serán diferentes partes de una simulación de una máquina de vending. Cada grupo de alumnos debería realizar una práctica. Al finalizar correctamente todas las prácticas, se deberían poder unir los códigos de todos los grupos y se podría simular dicha máquina, por ello, se tendría que intentar que todos los grupos trabajasen en conjunto para poder unir al final todas las prácticas. Para ello, este proyecto de final de carrera propuesto por Nicolau Cañellas pretende montar el hardware y el software de la máquina de vending y diseñar las diferentes prácticas a realizar por los alumnos. 2.1.1. Antecedentes Nuestro antecedente será la asignatura de “Sistemes electrònics amb microcontrolador” que se realiza en el segundo cuatrimestre del tercer curso de E.T.I. en Electrónica Industrial. Dicha asignatura tiene 3 créditos prácticos con lo cual este proyecto pretende complementar las prácticas ya existentes utilizando al máximo los recursos de hardware ya existentes en estas prácticas. 2.1.2. Objetivos La finalidad de este proyecto es realizar una serie de prácticas con el objetivo de que los alumnos puedan utilizarlas para aprender a programar mediante el MPLAB a un microcontrolador. Al mismo tiempo pretendemos, debido a que las prácticas a realizar son las diferentes partes de una máquina de vending, que estas prácticas puedan unirse, con lo cual pretendemos que exista una unión entre los diferentes alumnos para poder conseguir al final del curso unir todas las prácticas y que funcionen como una sola. Como queriamos una práctica de comunicaciones serie hemos pensado crear un sistema para modificar los precios de la EEPROM. La idea sería guardar todos los precios en un módulo que podríamos conectar a la máquina y transmitir los datos para modificar los precios. También se dejan abiertas una serie de posibilidades para poder añadir diferentes prácticas a estas para mejorar la simulación, con lo cual los alumnos podrían proponer alguna práctica nueva o para un posible proyecto futuro que ampliase los módulos y el número de prácticas. 2
  • 9. Memoria descriptiva Introducción Las diferentes prácticas tienen unos objetivos diferentes. Se ha pretendido que con cada práctica se simule una parte de la máquina de vending, aunque como se ha dicho anteriormente todas estas partes tienen registros en común, como por ejemplo el que realiza la práctica del monedero y el que realiza la práctica del cambio tienen en común el registro que se encarga de saber la cantidad de dinero que se ha pagado. Las diferentes prácticas a realizar tienen como objetivos: - PRÁCTICA 1: Realizar la simulación de un monedero, con el objetivo de guardar la cantidad de dinero que el usuario introduce a una máquina. - PRÁCTICA 2: Realizar un sistema para poder modificar los precios de los productos a vender en la EEPROM. - PRACTICA 3: Realizar el programa que se encarga de pedir el producto, revisar el dinero pagado, el que se tiene que pagar y entregar el producto. - PRACTICA 4: Realizar el programa que se encarga de dar el cambio, tanto cuando seleccionamos un producto como cuando queremos que nos devuelva el dinero pagado. - PRACTICA 5: Realizar el código para poder comunicar dos microcontroladores mediante la comunicación de USART. Este sería para enviar la EEPROM para modificar los precios de los productos. - PRÁCTICA 6: Realizar el código para poder comunicar dos microcontroladores mediante la comunicación de USART. Este sería para pedir producto. 3
  • 10. Memoria descriptiva Solución adoptada 2.2. Solución adoptada 2.2.1.Los microcontroladores. Consideraciones previas. Antes que nada, nos interesa saber que es un microcontrolador, así que partiremos de las funciones que éste hace y haremos una pequeña comparación con otros dispositivos que también hacen esas o otras funciones similares, para descubrir realmente las posibilidades en general de los microcontroladores y de lo que haremos servir en este proyecto. Por esto, haremos unas definiciones previas: Controlador: Dispositivo usado por control automático de un conjunto de procesos Controlador digital: Controlador con lógica de control digital Implementaciones de los controladores digitales: - Lógica discreta • Baja densidad de integración • Diseño (Hardware) sencillo / medio / complejo • Poco generalizable • Coste bajo / medio / alto - PLC (Programmable Logic Controller) • Mayor densidad de integración • Diseño (Software) sencillo • Muy generalizable • Coste elevado - Microprocesador + RAM + ROM + Periféricos (A/D, Timers...) • Elevada densidad de integración • Diseño (Software + Hardware) medio / complejo • Generalizable • Coste bajo / medio - Microcontroladores • Densidad de integración muy elevada • Diseño (Software + Hardware) sencillo / medio • Muy generalizable • Coste bajo 4
  • 11. Memoria descriptiva Solución adoptada 2.2.2. Ventajas de los diseños basados en microcontroladores • Reducción del tamaño y precio: El elevado grado de integración de un microcontrolador (µC) en circuito integrado permite una elevada funcionalidad por área a bajo coste y un menor tamaño del PCB. • Elevada flexibilidad: Un mismo microcontrolador (µC) puede ser usado por un elevado número de aplicaciones variando solo el software. • Rapidez de desarrollo: La adaptación de un µC en otra aplicación puede consistir en adaptar el software y muy poco hardware. • Aumento de la fiabilidad: La disminución de componentes en placa hace disminuir también los riesgos de averías. • Buenas prestaciones: Los µC usan µP que permiten la ejecución eficiente de algoritmos de control. 2.2.3. Arquitectura básica de los µC En este apartado se muestran todos los elementos que puede tener un µC, no quiere decir ue todos lo µC tengan estos dispositivos, esto depende de la versión del µC que escogamos. Este µC se escoge dependiendo de las aplicaciones que necesitemos. Figura 1. Arquitectura de los mC Viendo la descripción de cada uno de los elementos que aparecen en el diagrama anterior, se puede entender mejor. 5
  • 12. Memoria descriptiva Solución adoptada 2.2.3.1. CPU (Central Process Unit) Es el microprocesador del sistema. Sus características y funcionalidad se definen sobretodo a partir de tres clasificaciones: - Clasificación en función del tamaño de los datos: • 4 bit: Aplicaciones muy sencillas y muy económicas • 8 bit: Aplicaciones sencillas /medias y económicas. Es el tipo de µC dominante en el mercado • 16 bit: Aplicaciones medias y coste medio • 32 bit: Aplicaciones complejas y de coste elevado - Clasificación en función del conjunto de instrucciones: • RISC (Reduced Instruction Set Code). Instrucciones sencillas y de rápida ejecución. • CISC (Complex Instruction Set Code). Instrucciones más complejas y de mayor tiempo de ejecución. - Clasificación en función de la arquitectura de buses: • Von Newmann: Buses de datos y direcciones compartidos por la memoria de datos y de programa. Simplifica el diseño y el coste. • Harvard: Buses de datos y direcciones diferentes por la memoria de datos y de programa. Permite acceso simultaneo. 2.2.3.2. Memoria de Programa Ésta es la memoria donde se guarda el programa que escribimos. Es una memoria que se mantiene aunque apaguemos el sistema que la contiene. Existen diferentes tipos de memoria de programa en función de la forma de gravarla y/o borrarla: • ROM: Dispositivo OTP grabado en fábrica • EPROM: Dispositivo OTP o borrable (con ventana) • EEPROM: Dispositivo regrabable in-system con Vpp = 12v • FLASH: Dispositivo regrabable in-system 2.2.3.3. Memoria de datos La podemos diferenciar en dos tipos de memoria, dependiendo de si ésta se mantiene o no en desconectar el programa. Así tenemos: - Memoria volátil de datos: Es la memoria donde se guardan temporalmente variables usadas en el programa. Tenemos dos, una genérica y otra más específica: 6
  • 13. Memoria descriptiva Solución adoptada • RAM: Almacenaje de variables del programa • SFR: (Special Function Regiters). Usados para hacer servir los periféricos, las interrupciones,... - Memoria no volátil de datos: Es un tipo de memoria como la anterior, ya que sirve para almacenar datos, pero con la particularidad de que éstos se mantienen en memoria. Es muy útil, por ejemplo, para guardar en memoria algunos datos que queramos llamar desde diversos programas, como datos de configuración o de seguridad. Existen dos tipos: • EEPROM • FLASH 2.2.3.4. Puertos de Entrada / Salida Son los pins que sirven para la entrada y salida de datos desde o al exterior. Son generalmente de 8 bits, aunque pueden variar según el puerto y algunos de ellos incorporan resistencias de pull-up, la función de las cuales es evitar ponerlas exteriormente en algún tipo de conexión, como entradas procedentes de fuentes de tensión, corriente,... donde tenemos que controlar, por ejemplo las corrientes de entrada. Esto nos hace ahorrar especialmente espacio. 2.2.3.5. WatchDog El WatchDog es un temporizador especial y su función es realizar un reset del microcontrolador periódicamente para refrescarlo. Su funcionamiento no está predefinido, sino que tenemos que introducir un código de programa para hacerlo funcionar como mejor nos convenga y para reinicializarlo en el momento determinado. 2.2.3.6. Brown-out El Brown-out es un circuito interno que sirve como detector de posibles errores en la alimentación del microcontrolador, paralizando el sistema para evitar posibles daños en éste. 2.2.3.7. Contador /Timer En este apartado definimos el contador como un contador de pulsaciones procedentes de un reloj o un dispositivo asincrónico externo y recibidos por un pin destinado a esta función. En cambio, llamamos Timer al contador de ciclos de una señal de reloj generado internamente en el dispositivo, pudiendo programarlo como el anterior para que produzca algún evento en el momento determinado que nos interese según lo programemos. Tanto uno como el otro suelen incluir pre-scaler para multiplicar el valor programado y conseguir así posibles temporizaciones más altas. 7
  • 14. Memoria descriptiva Solución adoptada 2.2.3.8. ADC y DAC Estas opciones son una la inversa de la otra. La primera, mucho más fácil de encontrar, se refiere a la conversión de un valor analógico procedente del exterior en uno de digital dentro de nuestro dispositivo, por esto poder tratarlo. En cambio, el conversor digital analógico nos interesa para transformar un valor que tenemos en formato digital en nuestro dispositivo analógico a la salida al exterior. Pensamos que las señales externas pueden estar en los dos formatos, mientras que en nuestro microcontrolador sólo las podemos tratar en formato digital, de forma que es lógico que el A/D sea en la dirección exterior-interior y el D/A en dirección inversa. 2.2.3.9. PWM El PWM (Pulse Width Modulator) es, como su nombre indica, un generador de pulsos de anchura variable, útil para controles del mismo tipo haciendo la función de duty-cycle, es decir, variaciones en las duraciones de los semiciclos positivos y negativos para obtener tensiones medias variables y conseguir así, por ejemplo, controlar la velocidad de un motor DC. También existe la posibilidad de variar la frecuencia de estos pulsos y conseguir así, por ejemplo, emitir diferentes sonidos en una aplicación. 2.2.3.10. Comunicaciones Serie Los microcontroladores son capaces de enviar o recibir datos del exterior por medio de las comunicaciones serie. Dependiendo del microcontrolador, éstos pueden ser: • SPI (Serial Peripherical Interface) • I2 C (Inter-Integrated Circuit) • UART (Universal Asynchronous Receiver-Transmiter) • USART (Universal Synchronous-Asynchronous Receiver-Transmiter) • CAN (Controller Area Network) • USB (Universal Serial Bus) 2.2.4. Que es un PIC? Un PIC es un microcontrolador fabricado por Microchip Inc. De este fabricante de µC’s será el nuestro. Aparte de este fabricante existen diferentes fabricantes de microcontroladores, National, Motorola, Intel ,Zilog ,Thomson. 2.2.4.1. Diferencias con otros µC. Las pricipales diferencias entre los PIC y otras marcas es que tienen gran variedad de módelos que permiten sleccionar el que más convenga para tu proyecto. Que tienen gran variedad de herraminetas para desarrollar hardware y software. Por su longitud de palabra de 8
  • 15. Memoria descriptiva Solución adoptada 12 bits son los que menos espacio ocupan en la memoria de instrucciones. Y son bastante más rapidos que la mayoría. Déspues de estas diferencias parece que los PIC son los mejores, cosa que no es verdad para aplicaciones muy especificas en lso que las otras marcas pueden dar unas prestaciones más elevadas. 2.2.5. Los microcontroladores PIC 2.2.5.1. Características de los microcontroladores PIC • RISC (Reduced Instruction Code) o Gama baja (PIC 16C5X) 33 instrucciones o Gama media (PIC 16CXXX) 35 instrucciones o Gama alta (PIC 17CXXX/18CXXX) 58/77 instrucciones • Arquitectura Harvard (Buses diferentes para las memorias de datos y direcciones) o Memoria de datos de 8 bits o Memoria de programa de 12/14/16 bits • Arquitectura Pipeline o Todas las instrucciones ocupan 1 palabra de instrucción o Ejecución de todas las instrucciones en 2 ciclos o Throghput 1 ciclo de instrucción, excepto saltos que son 2 ciclos • Pila Hardware • WatchDog Timer (WDT) • Power on Reset (POR) • Modo de bajo consumo (SLEEP) • Líneas E/S de alta corriente (20/25 mA) • Protección de código • Número de serie/código de identificación • Programación: o C = CMOS OTP/EPROM o CR = CMOS ROM o CE = CMOS OTP/EPROM+EEPROM o F = FLASH o HV = High Voltage (15v) o LF = Low Voltage Flash o LC = Low Voltage OTP o LCR = Low Voltage ROM 9
  • 16. Memoria descriptiva Solución adoptada 2.2.5.2. Familias PICmicro Seguidamente se muestran las familias PIC pertenecientes a la marca Microchip, a partir de las características de las cuales escogemos el modelo más apropiado para nuestra aplicación. • Familia PIC 16C5X o 12-bit program word o Familia base o 2 Niveles de pila hardware o No interrupciones o 1 Timer-8bits + WDT • Familia PIC 12C5XXX o 12-bit/14-bit program word o EEPROM o Interrupciones o 1 Timer-8bits + WDT • Familia PIC 16CXXX, 16 FXXX o 14-bit program word o Prestaciones medias o Gran variedad de periféricos on-chip: Comparadores, PWM, 3 Timers, Conversores A/D, EEPROM de datos, USART,... o 8 Niveles de pila hardware o Interrupciones internas y externas • Familia PIC 17CXXX o 14-bit program word o Otras prestaciones o Gran variedad de periféricos on-chip: Comparadores, PWM, 3 Timers, Conversores A/D, EEPROM de datos, USART,... o 16 Niveles de pila hardware o Interrupciones vectorizadas • Familia PIX 18CXXX o 16-bit program word o Muchas otras prestaciones (10 MIPS) o Gran variedad de periféricos on-chip: Comparadores, PWM, 3 Timers, Conversores A/D, EEPROM de datos, USART,... o 32 Niveles de pila hardware o Interrupciones vectorizadas (internas y externas) 2.2.5.3. ¿Que PIC escogemos? Como hemos explicado anteriormente, el PIC a escoger será 16F876 debido a que actualmente en las clases prácticas ya se utiliza este microcontrolador, con lo cual tendremos 10
  • 17. Memoria descriptiva Solución adoptada ya los microcontroladores e incluso los kits del ICD-DEBUGER, con lo que nos podemos ahorrar una gran parte del presupuesto. También lo elegimos ya que es un micro de gama media. Con lo cual tenemos funciones de sobra en el micro para poder realizar las prácticas diseñadas, he incluso sirve para posteriores ampliaciones, ya que no gastamos todos los recursos que nos da el microcontrolador. Se utilizarán dos PIC debido a que queremos hacer una práctica de comunicación por USART y ya que tenemos que utilizar los dos micros utilizaremos el segundo micro tanto en la simulación del módulo para modificar los precios de la EEPROM, como para entregar el producto seleccionado, ya que para posibles ampliaciones de las prácticas se necesitarían más entradas y salidas. De este modo, con este segundo micro se podría seguir ampliando la máquina. 2.2.5.4. PIC 16F876 y 16F877 A continuación se exponen las características principales de estos microprocesador. Estos PIC’s disponen de: • Arquitectura Harvard (Memoria de datos y programa separados) • Memoria de datos de 8 bit • Memoria de programa de 14 bit • Líneas E/S de alta corriente • Memoria RAM de 368 Bytes • Memoria de datos EEPROM de 256 Bytes • Memoria FLASH de programa de 14336 Bytes (14bit*8192 word) • 3 Puertos de Entrada/Salida (1 de 6 bits, 2 de 8bits) en el 16F876 y 5 Puertos de salida en el 16F877 (1 de 3 bits, 1 de 6 bits, 3 de 8 bits) en el 16F877 • WatchDog (Temporizador especial que hace un reset periódicamente) • Timer de 16bit • 2 Timer de 8 bit • 5 conversores A/D de 10 bits en el 16F876 y 8 convresores A/D de 10 bits en el 16F877 • 1 Puerto Serie para comunicación • 1Puerto Paralelo para comunicación en el 16F877 • Posibilidades de interrupciones internas / externas • Posibilidad de interrupción del Puerto Serie 11
  • 18. Memoria descriptiva Solución adoptada Figura 2. Diagrama de bloques del PIC 16F876 12
  • 19. Memoria descriptiva Prácticas con microcontroladores 2.3. Prácticas con microcontroladores 2.3.1. Consideraciones previas En los siguientes apartados vamos a explicar los diferentes dispositivos que necesitamos para poder realizar las prácticas. El teclado, la pantalla de LCD, el kit MPLAB- ICD y una pequeña descripción del funcionamiento del MPLAB. 2.3.2. Descripción del MPLAB 2.3.2.1. Introducción programa En este apartado explicamos el programa que tienen que utilizar los alumnos para programar y realizar las pruebas sobre el µC. Hay varios programas en la página de microchip, la relación de estos es: Integrated Free Demo Development Simulator Part Number Linker Library Development Download Download Compiler Assembler Tools Environment Available Available MPLAB® IDE Yes SW007002 Yes Yes Yes Yes No No Yes v6.60 Motor Control Graphical User Interface (MC- GUI) MPLAB C18 Yes SW006011 Yes Yes No No Yes Yes Yes Application Maestro No Yes Yes Software MPLAB C30 Yes SW006012 Yes Yes No Yes Yes Yes Yes MPLAB Visual Device Initializer MPLAB C17 Yes SW006010 Yes Yes No No Yes Yes Yes FilterLab filter No No No No Yes No No No design software Figura 3. Relación de programas Como se puede comprobar, el programa que vamos a utilizar es el MPLAB© IDE ya que es el único con el cual podemos utilizar el kit MPLAB-ICD. La única diferencia es que utilizaremos una versión más antigua, la del MPLAB v4.1 que es la que está instalada en los ordenadores de los laboratorios de la universidad. 13
  • 20. Memoria descriptiva Prácticas con microcontroladores 2.3.2.2. Funcionamiento del MPLAB IDE Al ejecutar el programa saldrá la siguiente pantalla del MPLAB: Figura 4. Pantalla MPLAB En la cual se puede ver las diferentes barras de elementos y los diferentes menús. Esto es como se abriría en el caso de que no se hubiese trabajado anteriormente con él, si no preguntará si abre los archivos y el proyecto último con el que se estaba trabajando antes de cerrar por última vez. A nosotros nos interesa como crear un nuevo proyecto. Los pasos a seguir serian ir al menú ‘PROJECT’ y crear un nuevo proyecto. Figura 5. Menú “New Project” 14
  • 21. Memoria descriptiva Prácticas con microcontroladores Una vez dado el nombre se abrirá la ventana ‘EDIT project’ donde tenemos que asignar un nodo al proyecto que será el archivo .ASM en donde está código del programa a funcionar. Figura 6. Ventana “Edit project” Por último tenemos que seleccionar el procesador que queremos utilizar e ir a ‘DEVELOPMENT MODE’ en donde tenemos que asignar si queremos trabajar como simulador, que sería simplemente para que funcione el código en el PC simulando el ordenador al µC, o utilizar el ‘MPLAB-ICD Debugger’ que para ello tenemos que tener el kit MPLAB-ICD. Figura 7. Ventana de “Development Mode” 15
  • 22. Memoria descriptiva Prácticas con microcontroladores Una vez terminada la creación del proyecto y terminado el código del programa que queremos probar tenemos que dar al botón de linkiar el programa para crear el archivo que se tiene que guardar en la memoria de programa del micro. Para ver Linkar el toda la programa memoria para ver si RAM hay errores Para ver el Para ver los Ejecutar el Ejecutar programa registros programa paso a grabado en especiales paso la ROM del del µC µC Figura 8. Barra de herramientas MPLAB Para ver la memoria de la EEPROM, que lo necesitaremos cuando trabajemos con ella, se tendría que seleccionar en el menú de ‘Windows->EEPROM’ con lo cual se nos abriría una ventana donde saldrían los valores de la EEPROM. 2.3.3. Explicación del Kit MPLAB-ICD. 2.3.3.1. Introducción Este kit es el sistema a través del cual comunicamos el PC con el µC, a través de él conseguimos poder utilizar todas las funciones del MPLAB. La finalidad de este kit es poder programar un PIC y poder ejecutar el código paso a paso para probar el funcionamiento del código volcado en el µC. Esto es ideal para realizar nuevos códigos que están en un proyecto de una fábrica en el laboratorio de I+D por ejemplo, o como en nuestro caso, para los laboratorios de clase, ya que el alumno tiene que programar una y otra vez el código hasta que funcione. Esta opción de programar a los µC es la ideal por si tienes que reprogramar una y otra vez el µC debido a que tengas que corregir el código debido a que el micro tiene memoria FLASH. 16
  • 23. Memoria descriptiva Prácticas con microcontroladores Para programar el µC una vez el código está correcto se hace de diferentes formas. Si es una fábrica y tiene que fabricar muchos, los fabrica con el código ya programado con memoria ROM. Si es un usuario que a lo mejor programa algunos para uso personal lo hace mediante un programador del tipo T-20, que resulta mucho más económico. 2.3.3.2. Características del MPLAB-ICD Module Este kit está compuesto de dos partes, una que es el ICD module y la otra es el ICD Header. El esquema del ICD module es: Figura 9. MPLAB ICD Module Esta parte se encarga de comunicarse a través del puerto serie ‘J2’ con el PC y a través del conector ‘J3’ con el MPLAB Header. 2.3.3.3. Características del MPLAB-ICD Header El MPLAB Header sirve para poder conectarlo a un dispositivo de DIP-28 como es el 18F876, o como para un dispositivo DIP-40 como el 18F877. Un esquema de la placa base sería el siguiente: 17
  • 24. Memoria descriptiva Prácticas con microcontroladores Figura 10. MPLAB ICD Header 2.3.4. Placa base del laboratorio 2.3.4.1.Explicación placa base del laboratorio La placa base de la que vamos a hablar ahora es de la que se dipone en laboratorio de prácticas de la asignatura de “Sistemas electrónicos con miro controladores”. Dicha placa está compuesta por un regulador de tensión a 5V, Un conector para una pantalla de LCD y un conector para un teclado. Que serán explicados en lo siguientes apartados. 2.3.5. Regulador de tensión Este regulador se coloca en las placas donde tenemos el µC para alimentarlo, con el regulamos la tensión de alimentación al valor que necesitamos (5V), de tal forma que nos permite tener una tensión estable para el mejor funcionamiento de nuestro sistema y nos permite que la fuente de alimentación de la placa pueda variar entre 8 y 15V aproximadamente. 18
  • 25. Memoria descriptiva Prácticas con microcontroladores 2.3.6. Descripción Pantalla LCD 2.3.6.1. Introducción Un microcontrolador necesita dispositivos para poder comunicarse con el exterior, de la misma forma que un ordenador necesita un teclado y una pantalla, al µControlador le vamos a suministrar los teclados de 16 teclas y una pantalla LCD alfanumérica. La mayoría de los LCD’s están basados en el microcontrolador HITACHI 44780 u otro similar, con lo cual la mayoría de estos se programan de forma similar. El tamaño de los caracteres que se muestran son de 5x7 o 5x10 pixels. Todos ellos tienen como método para escribir los datos a través de un bus de 8 bits que se conecta al µC/µP aunque también permiten la conexión a través de 4 bits, simplemente lo que hacen es dividir los datos a enviar en dos bloques para enviar los datos. Hay pantallas de muchos tipos. La forma más fácil de clasificarlas es por el número de caracteres y por el número de líneas (caracteres x línea) que se pueden introducir. Existen los siguientes tipos: • 8x2 • 16x1, 16x2, 16x3 y 16x4 • 20x2 y 20x4 • 24x2 • 40x2 y 40x4 2.3.6.2. Que pantalla LCD vamos a utilizar Para estas prácticas vamos a utilizar las pantallas ya existentes en el laboratorio de prácticas para abaratar los costes. Son pantallas de 16x2 con retro-alimentación con 16 pines de conexión con el µC. 2.3.6.3. Funcionamiento de la pantalla LCD La configuración de los pins de la pantalla de LCD que vamos a utilizar en las prácticas es la siguiente: Asignación de los pines del JM162A #PIN Nombre Función 1 Vss Masa (0V) 2 Vdd Alimentación (+5V) 3 Vee Contraste (Vss=Vee=Vdd) 4 RS Selección de modo (dato=1/comando=0) 5 R/W Lectura/escritura de comando (lectura=1/ecritura=0) 6 E Enable ( Validación DB<7:0> en flanco 1? 0) 7 DB0 Bit 0 (LSB) de dato 8 DB1 Bit 1 de dato 9 DB2 Bit 2 de dato 19
  • 26. Memoria descriptiva Prácticas con microcontroladores 10 DB3 Bit 3 de dato 11 DB4 Bit 4 de dato 12 DB5 Bit 5 de dato 13 DB6 Bit 6 de dato 14 DB7 Bit 7 (MSB) de dato 15 A Anodo (+) retro-iluminación 16 K Cátodo (-) retro-iluminación Tabla 1. Asignación de los pins del JM162A De todos estos pins solamente se van a utilizar 6 de ellos que son los de DB<7:4> para la comunicación con el µC, no utilizamos los 8 pins para ahorrar salidas en el µC. El inconveniente es que se tarda algo más en enviar los datos ya que hay que escribir dos veces en el bus pero la pérdida de tiempo es tan pequeña que nos sale a cuenta reducir el número de salidas del µC. Los otros dos pins que vamos a utilizar van a ser el RS y RW Estas pantallas tienen un juego de instrucciones con las cuales podemos ir escribiendo los datos en la pantalla, los caracteres que queremos escribir es poniendo el código ASCII en hexadecimal de la letra que queremos poner en el bus de datos, de tal forma que para escribir una ‘A’ habría que escribir ‘40’H. El juego de instrucciones de estos teclados es el siguiente: CODIGO INSTRUCCIÓN Tiempo D D D D D D D D Ejecución INSTRUCCIÓN DESCRIPCIÓN RS RW B B B B B B B B (fosc = 7 6 5 4 3 2 1 0 270KHz) Clear Escribe ‘20’H en DDRAM y coloca 0 0 0 0 0 0 0 0 0 1 1.53ms Display DDRAM addrees en ‘00H’ de AC Coloca ‘00H’ en DDRAM addrees Return 0 0 0 0 0 0 0 0 1 X y vuelve el cursor a la posición 1.53ms Home original Entry mode I/ S Asigna el movimiento el cursor y si 0 0 0 0 0 0 0 1 39µs Set D H queremos que el cursor se vea o no Set Display (D), cursor (C), y Display 0 0 0 0 0 0 1 D C B parpadeo del cursor (B) on/off bit 39µs ON/OFF control de control Set cursor moving and display shift Cursor or S/ R/ 0 0 0 0 0 1 X X bit de control y la dirección, sin 39µs Display Shift C L cambiar la DDRAM data. Asignar la interface de longitud de Function D datos (DL:4-bit/8-bit), números de 0 0 0 0 1 N F X X 39µs Set L líneas del display (N:1-línea/2- líneas, Display tipo de fuente(F:0...) A A A A A A Set CGRAM Colocar CGRAM addrees en el 0 0 0 1 C C C C C C 39µs Addrees contador de dirección 5 4 3 2 1 0 Set DDRAM A A A A A A A Set DDRAM addrees en el contador 0 0 1 39µs Addrees C C C C C C C de dirección 20
  • 27. Memoria descriptiva Prácticas con microcontroladores 6 5 4 3 2 1 0 Whether during internal operation Read Busy A A A A A A A B or not can be known by reading BF. Flag and 0 1 C C C C C C C 0µs F The contents of addrees counter can Addrees 6 5 4 3 2 1 0 also be read Write Data D D D D D D D D Escribir dato en la RAM 1 0 43µs To RAM 7 6 5 4 3 2 1 0 (DDRAM/CGRAM) Read Data D D D D D D D D Leer dato de la RAM 1 1 43µs From RAM 7 6 5 4 3 2 1 0 (DDRAM/CGRAM) Tabla 2. Juego instrucciones de la pantalla LCD 2.3.7. Descripción del teclado 2.3.7.1. Introducción El teclado puede ser de dos tipos, 3x4 o 4x4. Aunque nosotros con el de 3x4 para los teclados del módulo 1 teníamos bastante, escogemos el teclado de 4x4 ya que es del que se dispone en el laboratorio y por lo tanto no tendríamos que comprar ningún otro teclado. 2.3.7.2. Funcionamiento del teclado El teclado servirá para comunicarnos con el µC. La disposición de las teclas en el teclado es la siguiente: 1 2 3 F 4 5 6 E 7 8 9 D A 0 B C Figura 11. Disposición teclas En nuetro sistema hay tres teclados y la configuración de las teclas varia dependiendo de la utilidad del teclado. La configuración de dichos teclados no influye en el funcionamiento del teclado, ya que el µC leerá que hay una tecla pulsada y dependiendo del teclado que sea hará una cosa u otra. Todo esto se hace por software. 21
  • 28. Memoria descriptiva Prácticas con microcontroladores La configuración de los diferentes teclados es: • Teclado del monedero 5 CENT 10 CENT 20 CENT CANCELAR 50 CENT 1 EURO 2 EURO Figura 12. Teclado monedero • Teclado del producto modulo 1 1 2 3 4 5 6 7 8 9 ACEPTAR 0 CANCELAR Figura 13. Teclado producto módulo 1 • Teclado del producto módulo 2 1 2 3 4 5 6 ENVIAR 7 8 9 RESETEAR ACEPTAR 0 CANCELAR Figura 14. Teclado producto módulo 2 22
  • 29. Memoria descriptiva Prácticas con microcontroladores El esquema eléctrico de estos teclados sería: 1 2 3 F 4 5 6 E 7 8 9 D A 0 B C 4x200O Figura 15. Esquema eléctrico del teclado Con lo cuál, al pulsar una tecla cerramos el interruptor y comunicamos la fila con la columna, con lo cual dando la fila como entrada y la columna como salida, o viceversa, al poner un nivel ( ’0’ o ‘1’) la salida si se pulsa la tecla tendríamos que leer el mismo nivel en la salida. 23
  • 30. Memoria descriptiva Descripción funcional de nuestro sistema 2.4. Descripción funcional de nuestro sistema Una vez vista la descripción de los elementos que se usan para esta práctica, veremos el funcionamiento general de todo el sistema dando sentido a todos los elementos que componen los módulos. 2.4.1. Visión General El objetivo de este grupo de prácticas es simular una máquina de vending, como ya se había mencionado anteriormente. El conjunto de entradas y salidas que componen el sistema son: • 3 teclados. • 2 pantallas LCD • Circuito LED’s de cambio • 3 pulsadores. 1 para el cambio y 2 para producto. • Display de 7 segmentos • Comunicación por USART entre los dos módulos TECLADO TECLADO PANTALLA TECLADO PANTALLA MONEDERO PRODUCTO LCD PRODUCTO LCD PRACTICA 3 PRACTICA 2 PRACTICA 1 PEDIR CAMBIAR TECLADO PRODUCTO PRECIO MODULO 1 MODULO 2 PRACTICA 5 PRACTICA 6 PRACTICA 4 COMUNICACIÓN COMUNICACIÓN DAR CAMBIO USART USART LED’s PULSADOR PULSADOR LED DAR PULSADOR LED DAR DISPLAY CAMBIO CAMBIO PRODUCTO PRODUCTO PRODUCTO PRODUCTO Figura 16. Diagrama de bloques de entradas y salidas 24
  • 31. Memoria descriptiva Descripción funcional de nuestro sistema Como se puede ver en el diagrama de bloque de entrada y salida el módulo 1 se encarga de todo lo que es el control del dinero, ya que tiene las entradas y las salidas de las monedas y se encarga de la selección del producto. Hay un pulsador de producto y el LED de entregar el producto que se sería lo que faltaría para poder entregar los productos. Esta entrada y salida se ha puesto para poder realizar una de las prácticas que componen el código de este módulo. Con este módulo podemos simular el monedero de la máquina para la entrada y salida del dinero a introducir, revisar y controlar si se ha pagado el producto y dar el cambio si se da el caso. El módulo 2 se hizo para crear alguna práctica para usar la USART del µC. Lo que se a hecho con el módulo 2 es un sistema para poder cambiar los precios de los productos en simulación como si fuese un pequeño aparato en el que se graban los precios y que se conectase a la máquina de vending y le transfiriese todos los precios de lo productos. Al mismo tiempo ya que teníamos creado el módulo, lo hemos aprovechado para que hiciese el control de productos debido a que el PIC del módulo 1 estaba saturado y pensando en posteriores ampliaciones del sistema. La comunicación entre los dos módulos para el control de productos se hará también por USART. Con lo cual la comunicación por USART servirá para el producto y para modificar el precio del producto. Para la comunicación con la USART lo suyo sería con un sistema RS232 utilizando el chip MAX232 y un conector del tipo serie. Pero para nuestro sistema hemos pensado conectar cruzados los pins RX y TX de los dos micros ya que con ello ahorramos dispositivos y lo único que perdemos es calidad de transmisión, cosa que para las prácticas no es imprescindible. 2.4.2. Funcionamiento 2.4.2.1. Funcionamiento general El funcionamiento de esta simulación de máquina de vending, es parecido a cualquier máquina de vending de las que existen en la calle. El sistema está esperando a que se introduzca una moneda o que se seleccione un producto. Una vez que se selecciona un producto se revisa si hay suficiente dinero para pagarlo y se revisa si hay producto para ver si se ha agotado, en el caso de que todo vaya bien, pasaría a calcular el cambio, a dar el cambio y a entregar el producto. En el caso de haber algún error durante el proceso de elegir un producto saldrá un error por la pantalla y se cancelará el proceso. El módulo 2 se encarga de modificar los precios de la máquina primero guardando los datos en este módulo y por último transmitiendo todos los precios. En este módulo al mismo tiempo que se modifican los precios también se hace el control sobre los productos, de tal forma que cuando se tiene que pedir un producto o dar un producto se envía una señal a este modulo y este tiene guíe responder dependiendo de si hay producto o no. 25
  • 32. Memoria descriptiva Descripción funcional de nuestro sistema 2.4.2.2. Funcionamiento Módulo 1 El módulo 1 está compuesto por los siguientes elementos de entrada o salida: • El teclado que simula el monedero • El teclado para introducir el número del producto • La pantalla LCD • El sistema de LED’s para devolver las monedas • El LED de entregar producto • El interruptor de ‘Cambio’ • El interruptor de ‘Producto’ • El conector para la comunicación con el módulo 2 Este módulo como hemos dicho anteriormente se encarga de la selección del producto y de simular el monedero. Para ello disponemos de los dos teclados que mientras no esté realizando otra operación estará mirando si se ha pulsado una de las teclas de cualquiera de los dos teclados. Si se pulsa una tecla del teclado del monedero, el µC deberá mirar que tecla ha sido la pulsada y actuar en consecuencia. Si es la tecla de una moneda deberá incrementar la cantidad de dinero que ha sido pagada y mostrarla por la pantalla del LCD y si se pulsa la tecla de cancelar se tendrá que devolver el dinero que haya sido introducido hasta ese momento. Si la tecla pulsada es del teclado producto deberá revisar si es un número o la tecla ‘aceptar’ o ‘cancelar’. Si es un número deberá procesar la tecla para conseguir el número del producto que el usuario quiere pedir, una vez seleccionado un producto saldrá el precio por la pantalla del LCD, dicho precio está en la EEPROM del µC y el micro esperará a que se pulse la tecla ‘Aceptar’ o ‘Cancelar’ para seguir el proceso. Si es la tecla ‘Cancelar’ sirve para que el usuario cancele el proceso de la selección. Esto puede servir por si el usuario se equivoca al seleccionar el producto o ve que la cantidad a pagar es mayor de la que ha introducido. En el caso de que sea la tecla ‘Aceptar’ solamente la procesará cuando ya se haya seleccionado el producto, ya que en cualquier otro caso no haría nada y esperaría otra tecla. Cuando se haya pulsado y el producto ya se haya seleccionado, lo primero que debe hacer el módulo es revisar si se ha pagado el producto seleccionado y después revisar si hay producto, es decir, que no se ha agotado. En este caso lo haremos a través de la comunicación USART que se le preguntará al otro módulo si existe el producto., también hay otra forma que se explicará al final. Si recibimos respuesta positiva del otro módulo conforme que hay producto, continuaría el proceso calculando el cambio a dar y en el caso de que hubiese que dar cambio se revisaría si existe cambio. Para ello miraría el interruptor de ‘CAMBIO’, que dependiendo de su estado nos diría si hay cambio o no. Este sistema es una forma fácil de controlar si hay cambio o no y se pensó pensando en algún dispositivo que calcula las monedas que quedan o 26
  • 33. Memoria descriptiva Descripción funcional de nuestro sistema de alguna otra forma y que al final lo que hace es mandar una señal de aviso conforme no hay cambio, que sería el interruptor que hemos puesto. Esta parte que revisa las monedas que hay para cambio o el sistema que sea podría realizarse en una próxima revisión del proyecto. Si hubiese que dar el cambio utilizaría el sistema que he diseñado para entregar las monedas, que es un decodificador de 3 bits con LED’s, en el cual cada LED representa una de las monedas a entregar. El micro debería calcular las monedas a devolver una a una e ir entregándolas. Por último debería entregar el producto que como en caso de preguntar si había producto existen dos posibilidades, nosotros escogemos el pedir el producto al módulo 2 mediante la comunicación USART. La otra posibilidad se explicará al final junto con la posibilidad de pedir producto. Una vez pedido el producto, el µC se inicializará y se quedará esperando a que se pulse una nueva tecla. Al igual que este módulo pregunta si hay producto o da el producto comunicándose con el otro módulo, el otro módulo puede modificar los precios de este. Lo que hace es volcar la EEPROM del módulo 2 en este módulo, con lo cual cuando recibamos una interrupción por recepción de datos, hay que revisar si es para modificar la EEPROM y en el caso de que así sea, parar el proceso de dar el producto y no permitir que nadie pueda entrar monedas ni seleccionar producto mientras se modifican los precios de la EEPROM. En el caso de que durante el proceso de entregar el producto hubiese algún tipo de problema del tipo que no existiese el producto seleccionado, no se hubiese pagado, no hubiese producto o no hubiese cambio, el µC saca un mensaje por la pantalla de LCD diciendo el tipo de error, se cancelaría el proceso, se inicializarían los registros y se quedaría esperando a que se pulsase una tecla. Por último, vamos a explicar la otra opción que hay para preguntar si hay precio y para dar producto. Para preguntar si hay precio se podría hacer revisando el estado del interruptor de producto. Este interruptor esta aquí debido a que en una de las prácticas no se utiliza la transmisión y lo hace de esta forma para saber si hay producto. Para dar el producto hay un LED que podemos encender cuando demos el producto. Este LED está aquí por si realizamos la práctica 4 en la que no usamos comunicación con el otro módulo como pasaba en el caso del interruptor del producto. 2.4.2.3. Funcionamiento Módulo 2 El módulo 2 está compuesto por los siguientes elementos de entrada o salida: • El teclado para introducir el número del producto • La pantalla LCD • El sistema del DISPLAY para ver el número del producto que piden • El LED de entregar producto 27
  • 34. Memoria descriptiva Descripción funcional de nuestro sistema • El interruptor de ‘Producto’ • El conector para la comunicación con el módulo 1 Este módulo, como ya se ha dicho, se encarga de gestionar los productos y de guardar los precios para después enviar los precios al módulo 1 y modificarlos. El funcionamiento de este módulo es que una vez inicializado se pone a testear el teclado de producto a la espera de que se pulse una tecla o de que se active la interrupción por recepción de datos. Si se pulsa una tecla del teclado el µC deberá mirar que tecla ha sido la pulsada y actuar en consecuencia. Si se pulsa la tecla RESETEAR el programa nos debería pedir la confirmación para borrar todos los precios que están almacenados en la EEPROM. La tecla ‘CANCELAR’ sirve para parar el proceso de la modificación de precio y para la confirmación de borrar la memoria. La tecla ‘ACEPTAR’ sirve para confirmar el cambio de precio, confirmar el borrar la memoria y para comenzar la comunicación con el módulo 1 para cambiar los precios. La tecla ‘ENVIAR’ sirve para enviar los precios guardados en la EEPROM al módulo 1 de tal forma que cuando se pulsa nos pide la confirmación y comienza a enviar los datos. Las teclas numéricas son para seleccionar el producto al que queremos modificar el precio y para insertar el nuevo precio. Para modificar un precio, primero hay que seleccionar el producto y una vez que se ha seleccionado nos presentará por la pantalla LCD el precio actual que tiene el producto y se queda a la espera de introducir el nuevo precio. Una vez insertado el nuevo precio se debería confirmar y entonces modificar de la EEPROM el precio del producto. Para ver el precio de un producto se puede utilizar el mismo método que el de cambiar el precio, con la diferencia de que una vez seleccionado el producto y salido el precio, cuando nos pida el precio nuevo debemos cancelar el proceso con lo cual no se modifica dicho precio. Para enviar los precios al módulo 1 hay que pulsar la tecla ‘ENVIAR’. Entonces nos pediría la confirmación para enviar los datos. Una vez confirmada la operación comenzaría el proceso de comunicación. En cualquier momento se puede recibir una interrupción por la recepción de datos debido a que el otro módulo puede peguntar si hay un producto o dar la orden de dar un producto. En el caso de recibir la pregunta sobre si hay un producto lo que tiene que hacer el µC es parar el proceso de cambiar un precio y no permitir que se pueda introducir ninguna tecla por el teclado. Después debería enseñar el número del producto por el display y revisar si hay 28
  • 35. Memoria descriptiva Descripción funcional de nuestro sistema producto, lo cual se hace mirando el estado del interruptor del producto. Por último respondería al módulo 1 diciendo si hay o no producto. En el caso de recibir la orden de dar el producto tendría que poner el número del producto en el display como antes y entonces encender el LED de dar producto. En posteriores revisiones del proyecto estas salidas pueden servir perfectamente para montar algún tipo de dispositivo, como una serie de multiplexadores, de tal forma que en vez de leer el interruptor o encender el LED se puedan leer diferentes sensores o algo parecido. 29
  • 36. Memoria descriptiva Descripción circuital 2.5. Descripción circuital 2.5.1. Introducción En este apartado se explican los eslementos electtricos y los conectores que están en los modulos en el siguiente diagrama de bloques veremeos los diferentes sistemas que vamos a utilizar: MÓDULO 1 REGULADOR CONECTOR CONECTOR DE TECLADO PANTALLA LCD TENSIÓN PRODUCTO CONECTOR DECODIFICADOR PIC 16f876 TECLADO 74LS138 MONEDAS Figura 17. Diagrama bloques esquema eléctrico Módulo 1 MÓDULO 2 REGULADOR CONECTOR DE PANTALLA LCD TENSIÓN DECODIFICADOR DE BCD A 7 SEGMENTOS 7447 Y DIPLAY CONECTOR PIC 16f876 TECLADO PRODUCTO Figura 18. Diagrama bloques esquema eléctrico Módulo 2 A contiuaciuón se explican todos los bloques de cada módulo. 30
  • 37. Memoria descriptiva Descripción circuital 2.5.2. Circuito regulador de tensión El circuito regulador de tensión va en lo dos módulos. Este circuito sirve, como bien dice el nombre, para regular la tensión de entrada a 5V para alimentar el PIC y los diferentes componentes de los módulos. El sentido de este circuito es para regular y mantener constante la tensión de 5V independientemente de las variaciones que tengamos en la entrada del circuito, siempre que estén entre un margen de 8 a 15V aproximadamente. El LED que está puesto a la salida del regulador LM7805 es simplemente para ver que el circuito está conectado Este circuito está compuesto por: • 2 condensadores de poliéster 100nF • 1 condensador electrolítico 47µF • 1 resistencia de 1kΩ • 1 regulador de tensión LM7805 • 1 conector de 2 pins para conectar la placa a la fuente de alimentación • 1 LED rojo de 5mm U1 LM7805CT LED1 J1 Vreg IN OUT 47uF 100nF 100nF LED_red R1 C1 C2 C3 1.0kohm HDR1X2 Figura 19. Regulador de tensión 5V 2.5.2. El microcontrolador Recordemos las principales características de un microcontrolador. Un µC está formado principalmente por: • CPU (Unidad Central de Proceso), que es el microprocesador del sistema. • Memoria de programa, que puede ser: o ROM: Dispositivo grabado en fábrica o EPROM: Dispositivo grabable y borrable (Mediante UV) o EEPROM Dispositivo regrabable in-system con VPP = 12 v o FLASH: Dispositivo regrabable in-system • Memoria volátil de datos: o RAM: Almacenamiento de variables del programa 31
  • 38. Memoria descriptiva Descripción circuital o SFR: Special Function Registers, usados para controlar los periféricos, configuraciones, interrupciones,... • Memoria no volátil de datos: o EEPROM o FLASH • Puertos de Entrada / Salida • Timers El PIC que hemos elegido para montar nuestro circuito es el PIC 16F876 y consta de: • Arquitectura Harvard (Memoria de datos y programa separados) • Memoria de datos de 8 bit • Memoria de programa de 14 bit • Líneas E/S de alta corriente • Memoria RAM de 368 Bytes • Memoria de datos EEPROM de 256 Bytes • Memoria FLASH de programa de 14336 Bytes (14bit*8192 word) • 3 Puertos de Entrada / salida (1 de 6 bits, 2 de 8 bits) • WatchDog (Temporizador especial que hace un reset periódicamente) • 1 Timer de 16 bit • 2 Timer de 8 bit • 5 conversores A/D de 10 bits • 1 Puerto Serie por comunicación asíncrona full-duplex • Posibilidad de interrupción por el Puerto Serie Seguidamente, vemos el esquema del patillaje del PIC 16F876 Figura 20. Esquema patillaje del PIC 16F876 Funciones de cada uno de los pins del PIC 16F876 32
  • 39. Memoria descriptiva Descripción circuital Nombre del Pin Nº Tipo Tipo de Descripción de E(4) /S(5) Buffer Pin /P(6) OSC1/CLKIN 9 E ST/CMOS(3) Entrada oscilador de cristal/Entrada de reloj externo OSC2/CLKOUT 10 S - Salida oscilador de cristal. En modo RC, el pin OSC2 es la salida CLKOUT, el cual tiene una ¼ de la frecuencia de OS1 y denota el tiempo de ciclo de instrucción MCLR*/Vpp 1 E/P ST(7) Entrada Master Clear (Reset) o entrada de tensión y programación. Este pin es un RESET del dispositivo activo por nivel bajo PORTA es un Puerto de E/S bidireccional RA0/AN0 2 E/S TTL(8) RA0 puede también ser la entrada analógica 0 RA1/AN1 3 E/S TTL RA1 puede también ser la entrada analógica 1 RA2/AN2/Vref- 4 E/S TTL RA2 puede también ser la entrada analógica 2 o el nodo negativo de la referencia de tensión analógica RA3/AN3/Vref+ 5 E/S TTL RA3 puede también ser la entrada analógica 3 o el nodo positivo de la referencia de tensión analógica RA4/T0CKI 6 E/S ST RA4 puede también ser la entrada de reloj del Timer 0. La salida es del tipo colector abierto. RA5/SS*/AN4 7 E/S TTL RA5 puede también ser la entrada analógica 5 o el selector de esclavo para puerto serie asíncrono PORTB es un puerto de E/S bidireccional. Puede ser programado por software para habilitar pull-ups internos en todas las entradas RB0/INT 21 E/S TTL/ST(1) RB0 puede también ser el pin de interrupción externo RB1 22 E/S TTL RB2 23 E/S TTL RB3/PGM 24 E/S TTL RB3 puede ser la entrada de baja tensión de RB4 25 E/S TTL programación RB5 26 E/S TTL RB6/PGC 27 E/S TTL/ST(2) Pin de interrupción en cambio de estado Pin de interrupción en cambio de estado RB7/PGD 28 E/S TTL/ST(2) Pin de interrupción en cambio de estado o pin para programación In-Circuit_Debugger. Reloj de programación serie. Pin de interrupción en cambio de estado o pin para la programación In-CircuitDebugger. Datos en la programación serie. RC0/T1OSO/T1CKI 11 E/S ST PORTA en un Puerto E/S bidireccional RC0 puede también ser la salida de oscilador del Timer 1 o la entrada de reloj el Timer 1 RC1/T1OSI/CCP2 12 E/S ST RC1 puede también ser la entrada del oscilador del Timer 1 o la entrada de Captura2/salida de Captura2/salida PWM2 RC2/CCP1 13 E/S ST RC2 puede también ser la entrada de Captura1/salida de Captura1/salida PWM1 RC3/SCK/SCL 14 E/S ST RC3 puede también ser la entrada de reloj del puerto serie asíncrono para modos SPI y IIC. RC4 puede también ser la entrada de datos SPI (modo RC4/SDI/SDA 15 E/S ST SPI) o el E/S de datos en el modo IIC RC5/SDO 16 E/S ST RC5 puede también ser la salida de datos SPI (modo SPI) 33
  • 40. Memoria descriptiva Descripción circuital RC6/TX/CK 17 E/S ST RC6 puede también ser el pin de transmisión en USART o el reloj asíncrono RC7/RX/DT 18 E/S ST RC7 puede también ser el pin de recepción en USART o los datos en modo asíncrono Vss 8,19 P - Referencia de tierra Vdd 20 P - Entrada de tensión positiva Tabla 3. Funciones de los pins en el PIC 16 F876 (1) Este buffer es una entrada Schmitt Trigger cuando la configuramos como interrupción externa (2) Este buffer es una entrada Schmitt Trigger cuando la usamos en modo de programación Serie (3) Este buffer es una entrada Schmitt Trigger cuando la configuramos en modo oscilador RC y como entrada CMOS (4) E = Entrada (5) S = Salida (6) P = Power (7) ST = Entrada Schmitt Trigger (8) TTL = Entrada TTL 2.5.3. Decodificador 74LS138 Para devolver el cambio o la cantidad de dinero pagada, he pensado en un sistema en el módulo 1 que tiene que dar una señal para cada una de las diferentes monedas que tenemos que devolver. Las monedas para dar el cambio serán 5 (5, 10, 20 y 50 céntimos y la de 1 €) Para no utilizar 5 salidas del µC utilizaremos una codificación para estas monedas, con lo cual con tres salidas RA<2:0> sería suficiente y a posterior utilizaremos el 74LS138 para decodificarlas. Las salidas del 74138 atacarán a unos LEDS que corresponden a la moneda a entregar. A continuación ponemos la codificación que he empleado para las monedas RA0-RA2 MONEDA NO (0,0,0) CONECTADO (0,0,1) 5 CENTIMOS (0,1,0) 10 CENTIMOS (0,1,1) 20 CENTIMOS (1,0,0) 50 CENTIMOS (1,0,1) 1 EURO NO (1,1,0) CONECTADO NO (1,1,1) CONECTADO Tabla 4. Codificación monedas 34
  • 41. Memoria descriptiva Descripción circuital La tabla de la verdad del 74138 es: Tabla 5. Tabla de la verdad del 74138 El circuito está compuesto por: • Decodificador/demultiplexor de 3 a 8 líneas 74138 • 5 LEDS verdes de 5mm • Resistencia SIP 1x8 de 1KΩ El esquema eléctrico del circuito es: LED_green 5 centimos VDD RA0 5V U1 R1 1 15 LED_green RA1 Y0 A 14 10 centimos 2 1 2 Y1 B 13 3 3 RA3 Y2 C 12 4 Y3 LED_green 11 5 Y4 20 centimos 5V 10 6 6 Y5 G1 9 7 4 Y6 ~G2A 7 8 5 LED_green Y7 ~G2B 50 centimos 9 74LS138N 4.7kOhm LED_green 1 euro Figura 21. Esquema eléctrico del circuito 35
  • 42. Memoria descriptiva Descripción circuital 2.5.4. Decodificador de BCD a 7 segmentos 7447 y display Esto se encuentra en el módulo 2. Su función es que cuando recibe el módulo 2 la orden de dar el producto o cuando pregunta por algún producto, aparte de realizar otras operaciones debe mostrar por los diplays el número del producto sobre el que pregunta o da. Figura 22. Conexiones y esquema display La tabla de la verdad del 7447 es: Tabla 6. Tabla de la verdad del 7447 36
  • 43. Memoria descriptiva Descripción circuital El circuito del 7447 y del display esta compuesto por: • 14 Resistencias de 1kΩ • 2 chips decodificadores de BCD a 7 segmentos 7447 • 2 Displays SA-0511 El esquema del circuito es: VDD 5V RB2 RA4 RA3 RB1 VDD U1 U2 5VRB3 RB0 6 1 7 4 5 3 2 6 1 7 4 5 3 2 U4 SEVEN_SEG_DISPLAY SEVEN_SEG_DISPLAY BI/RBO RBI OG LT OF D C B A 74LS47N U3 BI/RBO RBI OG LT OF D C B A OE OD OC OB OA ABCDEFG ABCDEFG 74LS47N OE OD OC OB OA 12 14 15 10 11 13 9 R1 R8 12 14 15 10 11 13 9 1.0kohm R2 1.0kohm R9 1.0kohm R3 1.0kohm R10 1.0kohm R4 1.0kohm R11 1.0kohm R5 1.0kohm R12 1.0kohm R6 1.0kohm R13 1.0kohm R7 1.0kohm R14 1.0kohm 1.0kohm Figura 23. Esquema del circuito 37
  • 44. Memoria descriptiva Descripción circuital 2.5.5. El teclado El teclado es el elemento con el cual entramos datos en el µC como hemos dicho antes. Lo conectamos a través de un cable paralelo de 10 pins. Hay que tener en cuenta que hay tres teclados por la tanto las conexiones son diferentes para cada uno. Sabiendo que el esquema eléctrico del teclado es: 1 2 3 F 4 5 6 E 7 8 9 D A 0 B C 4x200 O Figura 24. Esquema eléctrico del teclado Vamos a explicar las conexiones de los conectores a los µC de los módulos. El teclado del monedero tiene la siguiente configuración: R1 R2 10kohm 10kohm RA3 J1 RA4 RC0 RC1 RC2 RC3 HDR2X5 Figura 25. Configuración teclado monedero 38
  • 45. Memoria descriptiva Descripción circuital El teclado de seleccionar producto del módulo 1: RC0 J1 RC1 RC2 RC3 RB0 RB1 RB2 HDR2X5 R3 R1 R2 10kohm 10kohm 10kohm Figura 26. Teclado selección producto módulo 1 El teclado de seleccionar producto del módulo 2: RC0 J1 RC1 RC2 RC3 RA0 RA1 RA2 RA3 HDR2X5 R3 R1 R2 R4 10kohm 10kohm 10kohm 10kohm Figura 27. Teclado selección producto módulo 2 39
  • 46. Memoria descriptiva Descripción circuital Como se puede comprobar, los teclados de seleccionar producto de los módulos son prácticamente iguales. El del monedero es un poco diferente, ya que por estética hemos cambiado las filas por las columnas, cosa que a nivel de hardware no comporta ninguna dificultad pero a nivel de software hay que tenerlo en cuenta para poder leer correctamente las filas y las columnas. 2.5.6. Pantalla LCD Tanto aquí como en el apartado anterior, vamos a explicar las conexiones del µC con la pantalla del LCD. Para ello utilizamos un conector de 16 para cable paralelo. Las conexiones de la pantalla al conector son las siguientes: Figura 28. Conexiones pantalla LCD al conector Tenemos que utilizar dos pantallas de LCD, una para cada módulo. El esquema de conexión del módulo 1 es: VCC J1 RB3 RB4 RC0 RC1 RC2 RC3 RIBBON_16H Figura 29. Esquema conexión módulo 1 40
  • 47. Memoria descriptiva Descripción circuital Y el del módulo 2 es: VCC J1 RB4 RB5 RC0 RC1 RC2 RC3 RIBBON_16H Figura 30. Esquema conexión módulo 2 Como se puede observar es muy parecido en los dos módulos. Lo que hay que tener en cuenta es que como se puede comprobar, los pins DB<3:0> no se utilizan y esto ocurre porque en vez de enviar los datos en paquetes de 8 bits, los enviamos en paquetes de 4 bits, con lo cual se ahorra pins de salida del µC, aunque perdemos en tiempo de ejecución ya que hay que pasar dos veces los datos para poder enviarlos. 41
  • 48. Memoria descriptiva Prácticas a realizar 2.6. Prácticas a realizar 2.6.1. Introducción En este apartado vamos a poner las prácticas que he diseñado para ser realizadas por los alumnos. Estas prácticas se han intentado que sean lo más independientes posible del resto, aunque si al final de las prácticas se intentan unir todas en una sola, hay que tener una serie de factores para poder unirlas. A continuación se exponen los enunciados de las prácticas realizadas. En ellas se pueden observar los siguientes apartados: • Equipos y materiales: En este apartado se dicen los materiales necesarios para la práctica a realizar. • Descripción del funcionamiento: Aquí vamos a dar un resumen de lo que tiene que hacer la práctica a realizar. • Funcionamiento del teclado: Se hace una explicación de como va el teclado y la configuración del mismo. • Funcionamiento del display: Se hace una breve explicación del funcionamiento de la pantalla deLCD. • Bases teóricas: Una explicación más detallada de lo que tiene que hacer el programa. • Explicación del esquema eléctrico: Una breve explicación de cómo es el esquema eléctrico. • Resumen de objetivos: Aquí se muestran los objetivos a realizar por el alumno en la práctica. • Diagrama de flujo: Son los diagramas de flujo de un ejemplo de cómo podría funcionar la práctica • Otros: En algunas practicas se ha añadido algún otro apartado para así poder explicar algún tipo de componente que se utiliza en ella. 2.6.2. Enunciados de prácticas 42
  • 49. 2.6.2.1. Práctica núm.1 Monedero 1.1 Equipos y materiales: Para realizar la práctica utilizaremos: • Ordenador PC • Software MPLAB • Teclado de 16 teclas • Display SAMSUNG KS0070 • Cable plano de 16 • “ “ “ 10 • Cable comunicación puerto serie • Kit MPLAB-ICD debugger • PIC 16F876 1.2 Descripción del funcionamiento En ésta práctica tenemos que programar el chip para simular un monedero de una máquina de autoservicio. Para ello, el microcontrolador debe interpretar una serie de señales que vienen de un teclado que simulará el detector de monedas de la máquina autoservicio, para ver su funcionamiento leer el apartado 1.3. Una vez se haya detectado una moneda, se debería incrementar el valor de dicha moneda en un registro que nos irá diciendo la cantidad de dinero que tenemos introducido. Este registro lo llamaremos ‘PAGADO’ y tendrá el formato que se explica en el apartado 1.5. En éste teclado, además de las teclas que corresponden a las monedas a introducir, también existirá una tecla que nos servirá para la devolución de la cantidad introducida, la cuál reseteará el registro ‘PAGADO’ (del que se ha hablado anteriormente) y procederá a la devolución del dinero. Como en toda máquina, habrá una cantidad máxima de dinero para insertar. Ésta cantidad dependerá del valor máximo de los precios que fijaremos o de las limitaciones de hardware o software que tengamos. Si superamos este valor máximo, nos deberá devolver la última moneda introducida y no incrementar el valor de lo que llevamos pagado. Para fijar dicho valor máximo leer el apartado 1.5. Por último, dispondremos de un display para poder ver la cantidad de dinero que llevamos introducido. Para ver el funcionamiento del display y el formato con el que tenemos que escribir los datos leer el apartado 1.4 y 1.5 respectivamente. 43