miércoles, 16 de marzo de 2011

Envio de cadena de caracteres y visualización en LCD

Programa para PIC16F84A
  • Este programa recibe una cadena de 16 caracteres ASCII de la calculadora HP 50g y la muestra en un LCD con controlador Hitachi 44780.
  • Se utiliza Direccionamiento Indirecto para guardar la cadena de caracteres en registros sucesivos a partir de la dirección 20h.
  • Los datos en serie se reciben a 9600 baudios por el pin RA4.
Funcionamiento:
  • Según el siguiente diagrama de tiempos de envio de datos en serie:
  •  El programa espera a que se presente un "0" (bit START). Cuando esto ocurre se ejecuta una rutina que guarda los bits que llegan en serie, a partir del menos significativo, en la dirección de memoria al que apunta el registro FSR (Direccionamiento indirecto). 
  • Una vez recibidos los 8 bits, debidamente sincronizados a 9600 baudios mediante retardos, se ejecuta un retardo más a la espera del primer bit STOP (para evitar falsas lecturas de "0" que podría ser el 8 bit de datos).
  • Se incrementa FSR para apuntar a la dirección sucesiva y se incrementa un contador de caracteres recibidos.
  • Si ya se recibieron 16 caracteres se salta a la rutina que muestra la cadena en un LCD, una vez finalizada se repite el proceso nuevamente . Caso contrario se espera un nuevo "0" (bit START) para recibir el siguiente caracter. 
Diagrama de Conexión:

  • La cantidad de caracteres a recibir se puede modificar en el archivo .ASM (donde se indica).
  • Opcional: para enviar caracteres desde la calculadora crear el siguiente programa que permite enviar 10 cadenas cada vez que se ejecuta. Escribir la cadena entre comillas (".....") cuando se solicite.
                       << 'a'    PURGE  
                            1    10
                            FOR   j
                               "CADENA   A   ENVIAR"
                               {":a:"  {0 0}   V}
                               INPUT
                                OBJ→    'a'    STO    a
                                9600 BAUD
                                XMIT
                                DROP
                            NEXT
                            'a'   PURGE >>

Archivos .ASM y .HEX:


    5 comentarios:

    1. Oie y como envio numeros de matlab a un pic y los saco en un lcd??

      ResponderEliminar
    2. Depende que interfaz de comunicación vayas a usar:

      RS232 => pic con interfaz UART + MAX232, basta con manejar comandos de envio de datos en serie desde matlab (revisa los comandos serial, fopen, fclose, fprintf)y programar el pic para recepcion de datos en serie.

      USB => pic serie 18, mas complicado, necesitas instalar driver...yo lo hice con Labview pero no con Matlab.

      ResponderEliminar
    3. hey yo soy sólo tendrá que conectar un circuito a través del exetrno hp50g
      quería saber si me pueden sujerir algun modo de hacerlo gracias

      ResponderEliminar
    4. Hola, tienes que conseguirte un cable para el puerto serial de la HP50g (yo compré un mini usb de 4 pines como se muestra en este enlace http://dragonsystem-web.com/catalog/images/1111111111111111111.jpg) y lo tienes que cortar. tendrías que identificar los pines con un multímetro. Como la calculadora trabaja a 3.3 V pero el PIC a 5 V, se requiere adaptar voltajes, en este caso utilizo un transistor como driver (unidireccional 3.3V a 5 V) pero en mis otras entradas eqtiquetadas como "HP50g" encontrarás un driver bidireccional.

      ResponderEliminar