RECEPCIÓN SERIAL RS-232 CON PIC

34
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 COMUNICACIÓN SERIAL ENTRE PIC’S Y PC En la actualidad con el avance tecnológico, en lo que se refiere sistemas microcontrolados, resulta de vital importancia la comunicación entre nuestro micro-controlador y una PC ya sea para adquirir datos, comandar nuestro sistema desde una PC, monitorear el sistema o incluso integrar varios sistemas dentro de uno mismo. Por lo cual abordaremos en esta oportunidad de un modo no muy complejo las pautas para lograr dicha comunicación enviando una cadena de texto desde el PC y mostrarlo en una pantalla LCD gobernada por un PIC 16F877A. 1. OBJETIVOS: Comunicar la PC con un micro-controlador PIC 16F877A por medio de su modulo USART (Universal Synchronous Asynchronous Receiver Transmitter). Describir el funcionamiento del modulo USART. Conocer los principios acerca de la comunicación serial de la norma RS-232. Manejar Visual Basic para aplicaciones de Windows Fonts. Conocer el funcionamiento del transceptor MAX 232. 2. FUNDAMENTO TEORICO: A continuación daremos un pequeño alcance sobre el manejo del modulo USART del PIC 16F877A; también sobre la aplicación que fue diseñada en el programa Visual Basic para poder seleccionar el puerto a utilizar así SOFTWARE 5 INSTITUTO IDAT Página 1

description

USO DEL PIC 16F877A PARA RECIBIR TEXTO DESDE LA PC

Transcript of RECEPCIÓN SERIAL RS-232 CON PIC

Page 1: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

COMUNICACIÓN SERIAL ENTRE PIC’S Y PC

En la actualidad con el avance tecnológico, en lo que se refiere sistemas microcontrolados, resulta de vital importancia la comunicación entre nuestro micro-controlador y una PC ya sea para adquirir datos, comandar nuestro sistema desde una PC, monitorear el sistema o incluso integrar varios sistemas dentro de uno mismo. Por lo cual abordaremos en esta oportunidad de un modo no muy complejo las pautas para lograr dicha comunicación enviando una cadena de texto desde el PC y mostrarlo en una pantalla LCD gobernada por un PIC 16F877A.

1. OBJETIVOS:

Comunicar la PC con un micro-controlador PIC 16F877A por medio de su modulo USART (Universal Synchronous Asynchronous Receiver Transmitter).

Describir el funcionamiento del modulo USART. Conocer los principios acerca de la comunicación serial de la

norma RS-232. Manejar Visual Basic para aplicaciones de Windows Fonts. Conocer el funcionamiento del transceptor MAX 232.

2. FUNDAMENTO TEORICO:

A continuación daremos un pequeño alcance sobre el manejo del modulo USART del PIC 16F877A; también sobre la aplicación que fue diseñada en el programa Visual Basic para poder seleccionar el puerto a utilizar así como el determinar el envió de los datos; hablaremos acerca del transceptor MAX 232 y por ultimo tocaremos el tema de pantallas LCD de 16x2.

A. MODULO USART:

SOFTWARE 5 INSTITUTO IDAT Página 1

Page 2: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

La USART (Universal Synchronous Asynchronous Receiver Transmitter) es uno de los dos periféricos contenidos en el PIC que le permiten realizar comunicación en serie. La USART, también conocida como SCI (Serial Communications Interface) puede configurarse como una unidad de comunicación en serie para la transmisión de datos asíncrona con dispositivos tales como terminales de computadora o computadoras personales, o bien para comunicación síncrona con dispositivos tales como convertidores A/D o D/A, circuitos integrados o memorias EEPROM con comunicación serie, etc.

La gran mayoría de los sistemas de comunicación de datos digitales actuales utilizan la comunicación en serie, debido a las grandes ventajas que representa esta manera de comunicar los datos:

Económica.- Utiliza pocas líneas de transmisión inclusive puede usar sólo una línea.

Confiable.- Los estándares actuales permiten transmitir datos con bits de paridad y a niveles de voltaje o corriente que los hacen poco sensibles a ruido externo. Además por tratarse de información digital, los cambios en amplitud de las señales (normalmente causadas por ruido) afectan muy poco o nada a la información.

Versátil.- No está limitada a usar conductores eléctricos como medio de transmisión, pudiendo usarse también: fibra óptica, aire, vacío, etc. Además el tipo de energía utilizada puede ser diferente: luz visible, infrarroja, ultrasonido, pulsos eléctricos, radio frecuencia, microondas, etc.

Este modulo puede ser configurado para trabajar de tres maneras diferentes:

Modo Asíncrono - (transmisión y recepción simultáneas),

Modo Síncrono – Maestro (half duplex) Modo Síncrono – Esclavo (half duplex)

SOFTWARE 5 INSTITUTO IDAT Página 2

Page 3: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

Para este trabajo solo describiremos el modo asíncrono y trabajaremos en el modo simplex, existiendo también half-duplex y duplex.

Un canal simplex permite la transferencia de datos en un solo sentido. Un canal half-duplex soporta transferencias de datos en cualquier sentido, pero utilizando solo uno de ellos en cada comunicación. Un canal duplex (también llamado full-duplex) soporta transferencias en ambos sentidos simultáneamente.

MODO ASÍNCRONO.

En este modo la USART usa un formato estándar NRZ asíncrono, el cual para la sincronización usa: 1 bit de inicio (I), 8 o 9 bits de datos y 1 bit de paro (P). Mientras no se están transmitiendo datos la USART envía continuamente un bit de marca. El modo asíncrono se selecciona limpiando el bit SYNC del registro TXSTA (98H). El modo asíncrono es deshabilitado durante el modo SLEEP.

Cada dato es transmitido y recibido comenzando por el LSB. El hardware no maneja bit de Paridad, pero el noveno bit puede ser usado para este fin y manejado por software.

Normalmente cuando no se realiza ninguna transferencia de datos, la línea del transmisor se encuentra en esto de (idle) este quiere decir en estado alto.

El módulo Asíncrono de la USART consta de 3 módulos fundamentales:

El circuito de muestreo El generador de frecuencia de transmisión (Bau

Rate) El transmisor asíncrono

SOFTWARE 5 INSTITUTO IDAT Página 3

Page 4: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

El receptor asíncrono.

A continuación describiremos los registros asociados a este modulo:

REGISTROS ASOCIADOS:

El módulo USART dispone de una serie de registros, que son los siguientes:

RCSTA: Registro de estado y control de recepción de datos.

Bit 7 SPEN: Habilitación del puerto serie

1 = Puerto serie habilitado (configura RC7/RX/DT y RC6/TX/CK como pines del puerto serial)

0 = Puerto serie deshabilitadoBit 6 RX9: Habilita el bit 9 de recepción

1 = Selecciona recepción de 9 bits0 = Selecciona recepción de 8 bits

Bit 5 SREN: Configura la recepción sencilla

Modo asíncrono no incluye:

Modo síncrono maestro:

1 = Habilita recepción sencilla0 = Deshabilita recepción sencilla

Modo síncrono esclavo no se utiliza:

Bit 4 CREN: Configura la recepción continua.

Modo asíncrono:1 = Habilita modo de recepción continua.0 = Deshabilita recepción continua.

Modo síncrono:

SOFTWARE 5 INSTITUTO IDAT Página 4

Page 5: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

1 = Habilita recepción continua hasta que el bit CREN es borrado.

0 = Deshabilita recepción continua.

Bit 3 ADDEN: Detección de dirección.

Modo asíncrono con 9 bits (RX9 = 1):

1 =Activa la detección de dirección, activa la interrupción y descarga el buffer de recepción al activarse RSR<8>

0 =Desactiva la detección de dirección, todos los bits son recibidos y el bit 9 puede ser utilizado como bit de paridad.

Bit 2 FERR: Bit de error de trama.

1 = Error de trama (puede ser actualizado leyendo el registro RCREG y recibir el siguiente dato válido.

0 = No hay error de trama.

Bit 1 OERR: Bit de error de sobre-escritura.

1 = Error de sobre-escritura (puede ser borrado escribiendo un 0 en el bit CREN).

0 = No hay error de sobre-escritura.

Bit 0 RX9D: Bit 9 del dato recibido (Puede ser el bit de paridad).

SPBRG y TXSTA controla la velocidad de transmisión:

Bit 7 CSRC: bit de selección de reloj.

Modo asíncrono: no incluye.

SOFTWARE 5 INSTITUTO IDAT Página 5

Page 6: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

Modo síncrono:

1 = Modo maestro (reloj generado internamente desde BRG).

0 = Modo esclavo (reloj generado por una fuente externa).

Bit 6 TX9: Habilita el bit 9 de transmisión.

1 = Selecciona transmisión de 9 bits.

0 = Selecciona transmisión de 8 bits.

Bit 5 TXEN: Activa la transmisión.

1 = Transmisión activada.

0 = Transmisión desactivada.

Nota: SREN/CREN anula TXEN en modo síncrono.

Bit 4 SYNC: Bit de selección del modo del USART.

1 = Modo síncrono.

0 = Modo asíncrono.

Bit 3 No implementado: Leído como '0'

Bit 2 BRGH: Bit de selección de la velocidad de baudios.

Modo asíncrono:

1 = Alta velocidad.

0 = Baja velocidad.

Modo Síncrono:

No se usa en este modo.

Bit 1 TRMT: Bit de estado del registro de desplazamiento de transmisión.

1= TSR vacío.

SOFTWARE 5 INSTITUTO IDAT Página 6

Page 7: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

0 = TSR no vacío.

Bit 0 TX9D: Bit 9 del dato a transmitir (puede ser el bit de paridad).

Para nuestro trabajo trabajaremos en baja velocidad (2400 Baudios) y un cristal de 4MHZ; bajo estas condiciones el fabricante nos da una tabla donde nos da el valor que tendremos que cargarle al registro SPBRG el cual mostraremos a continuación, para mayores alcances consultar la hoja técnica que proporciona el fabricante en http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf .

RCREG: es el registro que almacena el carácter recibido, para capturarlo tendremos que leer este registro.

TXREG: es donde tendremos que escribir el carácter que queremos enviar.En el siguiente cuadro se muestran todos los registros asociados al modulo USART.

SOFTWARE 5 INSTITUTO IDAT Página 7

Page 8: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

PROCEDIMIENTO Y DESCRIPCION PARA EL TRANSMISOR:

El corazón de este módulo es el registro de corrimiento (transmit shift register, TSR). La única manera de acceder al registro TSR es a través del registro TXREG (19H).

Para transmitir un dato, el programa deberá ponerlo primero en el registro TXREG. En cuanto el TSR termina de enviar el dato que tenía (en cuanto transmite el bit de paro) lee el dato contenido en TXREG (si hay alguno) esto ocurre en un ciclo TCY. En cuanto el dato de TXREG es transferido al TSR el TXREG queda vacío esta condición es indicada mediante el bit bandera TXIF (que es el bit 4 del registro PIR1 (0Ch)), el cual se pone en alto. Este bit NO puede ser limpiado por software, sólo dura un instante en bajo cuando se escribe un nuevo dato a TXREG. Si se escribe un dato seguido de otro (back to back) a TXREG el primero se transfiere inmediatamente a TSR y el otro tiene que esperar hasta que el TSR termine de enviar el bit de Stop del primero. Durante esta espera TXIF permanece en bajo.

Existe otro bit, llamado TRMT (TXSTA<1>), el cual muestra el estado del TSR. TRMT se pone en alto cuando TSR está vacío, y en bajo cuando TSR está transmitiendo un dato. Mientras que TXIF puede generar una interrupción TRMT no lo puede hacer, TRMT está pensado para ser consultado por “poleo” (sin usar interrupciones).

Diagrama de bloques del transmisor:

SOFTWARE 5 INSTITUTO IDAT Página 8

Page 9: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

Para habilitar el módulo de transmisión es necesario poner en alto el bit TXEN (TXSTA<5>), mientras no se habilite el módulo, la patita de transmisión (RC6/TX/CK) se mantiene en alta impedancia. Si TXEN es deshabilitada a la mitad de una transmisión, está será abortada y el transmisor será reseteado. Si se está usando un noveno bit TX9 (TXSTA<6>), éste deberá ser escrito antes de escribir los 8 bits restantes a TXREG, ya que en cuanto se escribe un dato a este registro inmediatamente es transferido a TSR (si éste está vacío).

De acuerdo a lo anterior, la inicialización del módulo de transmisión consiste en los siguientes pasos:

1.º. Inicializar baud rate escribiendo al registro SPBRG el divisor adecuado y opcionalmente al bit BRGH.

2.º. Habilitar comunicación asíncrona limpiando el bit SYNC y poniendo el bit SPEN.

3.º. Si se van a usar interrupciones, poner el bit TXIE (PIE<4>).

4.º. Poner el bit TX9 si se desea transmitir datos de 9 bits

5.º. Habilitar transmisión poniendo el bit TXEN, lo cual pondrá el bit TXIF.

6.º. Colocar el noveno bit del dato en TX9D si se están usando datos de 9 bits.

7.º. Cargar el dato al registro TXREG (inicia la transmisión).

PROCEDIMIENTO Y DESCRIPCION PARA EL RECEPTOR:

SOFTWARE 5 INSTITUTO IDAT Página 9

Page 10: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

El módulo de recepción es similar al de transmisión, en la siguiente figura se muestran los bloques que lo constituyen.

Una vez que se ha seleccionado el modo asíncrono, la recepción se habilita poniendo en alto el bit CREN (RCSTA<4>). El dato es recibido mediante la línea RC7/RX/DT, la cual maneja un registro de corrimiento de alta velocidad (16 veces el Baud rate).

El corazón del receptor es el registro de corrimiento RSR. Este registro no es accesible por software, pero, cuando el dato recibido se ha completado (se ha recibido el bit de Stop) el dato de RSR es transferido automáticamente al registro RCREG (1Ah) si éste está vacío y al mismo tiempo es puesto en alto la bandera de recepción RCIF (PIR1<5>). La única manera de limpiar la bandera RCIF es leyendo el ó los datos del registro RCREG.

El registro RCREG puede contener hasta dos datos, ya que es un buffer doble que funciona como una cola de dos posiciones. Si las dos posiciones del registro RCREG están llenas (no han sido leídas) y se detecta el bit de Stop de un tercer dato de recepción, lo cual ocasiona un transferencia automática del dato recibido a RCREG, esto destruirá el primer dato recibido y activará el indicador de sobreescritura OERR (RCSTA<1>). Para

SOFTWARE 5 INSTITUTO IDAT Página 10

Page 11: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

evitar esto, se deberán leer los dos datos en RCREG haciendo dos lecturas consecutivas.

La única manera de limpiar el bit OERR una vez que ha sido activado es reseteando el módulo de recepción (limpiando CREN y volviéndolo a poner a 1), si no se limpia OERR se bloquea la transferencia de datos de RSR a RCREG y no puede haber más recepción de datos.

Si se detecta un bit nivel bajo en la posición del bit de stop se pone el indicador de error de encuadre (frame error) FERR RCSTA<2>. Tanto este indicador como el noveno bit RX9D de los datos están en una cola de dos posiciones al igual que los datos recibidos, de manera que al leer RCREG se actualizan FERR y RX9D con nuevos valores, por lo cual estos bits deberán ser leídos antes de leer RCREG para no perder su información.

De acuerdo a lo anterior, la inicialización del módulo de recepción es como sigue:

1.º. Inicializar el baud rate escribiendo al registro SPBRG el divisor adecuado y opcionalmente al bit BRGH.

2.º. Habilitar el puerto serie asíncrono limpiando el bit SYNC y poniendo el bit SPEN.

3.º. Si se van a usar interrupciones, poner el bit RCIE (PIE<5>).

4.º. Si se desea recepción de datos de 9 bits se deberá poner el bit RX9 (RCSTA<0>).

5.º. Habilitar la recepción poniendo el bit CREN (RCSTA<4>).

6.º. El bit RCIF se pondrá a “1” cuando la recepción de un dato se complete y se generará una interrupción si RCIE está en “1”.

7.º. Leer el registro RCSTA para obtener el noveno bit (si se están recibiendo datos de 9 bits) o para determinar si ha ocurrido un error de recepción.

SOFTWARE 5 INSTITUTO IDAT Página 11

Page 12: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

8.º. Leer los 8 bits del dato recibido leyendo el registro RCREG.

9.º. Si ocurrió algún error este se limpia al poner a “0” el bit CREN, el cual deberá volver a ponerse a “1” si se desea continuar la recepción.

B. VISUAL BASIC APLICACIONES PARA WINDOWS FONTS:

Visual Basic es un ambiente gráfico de desarrollo de aplicaciones para el sistema operativo Microsoft Windows. Las aplicaciones creadas con Visual Basic están basadas en objetos y son manejadas por eventos.

Visual Basic se deriva del lenguaje Basic, el cual es un lenguaje de programación estructurado. Sin embargo, Visual Basic emplea un modelo de programación manejada por eventos.

En las aplicaciones manejadas por eventos, la ejecución no sigue una ruta predefinida. En vez de esto, se ejecutan diferentes secciones de código en respuesta a eventos. Los eventos se desencadenan por acciones del usuario, por mensajes del sistema o de otras aplicaciones. La secuencia de eventos determina la secuencia en que el código se ejecuta. Es por esto que la ruta que sigue el código de la aplicación es diferente cada vez que se ejecuta el programa.

Una parte esencial de la programación manejada por eventos es el escribir código que responda a los posibles eventos que pueden ocurrir en una aplicación. Visual Basic facilita la implementación del modelo de programación manejada por eventos.

El Entorno Integrado de Desarrollo (IDE):

Cuando se inicia Visual Basic, se crea un proyecto nuevo con un formulario. El IDE de Visual Basic consta de los siguientes elementos:

SOFTWARE 5 INSTITUTO IDAT Página 12

Barra de menú y Barra de herramientas

Diseñador de Formularios Explorador de Proyectos

Page 13: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

C. PANTALLAS LCD 16 X 2:

Las pantallas de cristal líquido LCD o display LCD para mensajes (Liquid CristalDisplay) tienen la capacidad de mostrar cualquier carácter alfanumérico, permitiendo representar la información que genera cualquier equipo electrónico de una forma fácil y económica.La pantalla consta de una matriz de caracteres (normalmente de 5x7 o 5x8 puntos) distribuidos en una, dos, tres o cuatro líneas de 16 hasta 40 caracteres cada línea.El proceso de visualización es gobernado por un microcontrolador incorporado a la pantalla, siendo el Hitachi 44780 el modelo de controlador más utilizado.

SOFTWARE 5 INSTITUTO IDAT Página 13

Cuadro de Herramientas

Cuadro de Código Cuadro de Propiedades

Page 14: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

Las características generales de un módulo LCD 16x2 son las siguientes:

Consumo muy reducido, del orden de 7.5mW.

Pantalla de caracteres ASCII, además de los caracteres japoneses Kanji, caracteres griegos y símbolos matemáticos.

Desplazamiento de los caracteres hacia la izquierda o a la derecha.

Memoria de 40 caracteres por línea de pantalla, visualizándose 16 caracteres por línea.

Movimiento del cursor y cambio de su aspecto.

Permite que el usuario pueda programar 8 caracteres.

Pueden ser gobernados de 2 formas principales:

o Conexión con bus de 4 bits.o Conexión con bus de 8 bits.

A continuación se presenta la descripción de señales empleadas por el módulo LCD así como el número de patilla a la que corresponden.

SOFTWARE 5 INSTITUTO IDAT Página 14

Page 15: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

D. MORMA RS-232:

Ante la gran variedad de equipos, sistemas y protocolos que existen surgió la necesidad de un acuerdo que permitiera a los equipos de varios fabricantes comunicarse entre sí. La EIA(Electronics Industry Association) elaboro la norma RS-232, la cual define la interface mecánica, los pines, las señales y los protocolos que debe cumplir la comunicación serial.

NIVELES DE TENSION NORMA RS-232:

SOFTWARE 5 INSTITUTO IDAT Página 15

Page 16: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

Los cuadros anteriores nos describen los parámetros y características de la norma RS-232.En resumen se diría que:

Un “1” lógico es un voltaje comprendido entre –5v y –15v en el transmisor y entre -3v y –25v en el receptor.

Un “0” lógico es un voltaje comprendido entre +5v y +15 v en el trasmisor y entre +3v y +25 v en el receptor.

El envío de niveles lógicos (bits) a través de cables o líneas de transmisión necesita la conversión a voltajes apropiados. En los microcontroladores para representar un “0” lógico se trabaja con voltajes inferiores a 0.8v, y para un 1 lógico con voltajes mayores a 2.0V. En general cuando se trabaja con familias TTL y CMOS se asume que un “0” lógico es igual a cero Volts y un “1” lógico es igual a cinco Volts.

La importancia de conocer esta norma, radica en los niveles de voltaje que maneja el puerto serial del ordenador, ya que son diferentes a los que utilizan los microcontroladores y los demás circuitos integrados. Por lo tanto se necesita de una interface que haga posible la conversión de los niveles de voltaje a los estándares manejados por los CI TTL.

SOFTWARE 5 INSTITUTO IDAT Página 16

Page 17: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

E. TRANCEPTOR MAX 232:

Este circuito soluciona los problemas de niveles de voltaje cuando se requiere enviar unas señales digitales sobre una línea RS-232.

Este chip se utiliza en aquellas aplicaciones donde no se dispone de fuentes dobles de +12 y –12 Volts. El MAX 232 necesita solamente una fuente de +5V para su operación, internamente tiene un elevador de voltaje que convierte el voltaje de +5V al de doble polaridad de +12V y –12V. Cabe mencionar que existe una gran variedad de CI que cumplen con la norma RS-232 como lo son: MAX220, DS14C232, MAX233, LT1180A.

La configuración que se utilizara en este trabajo es similar a la siguiente, salvo que los capacitores que usaremos serán de 1uF:

Sobre los capacitores a utilizar presentaremos un cuadro donde se indican las opciones disponibles.

SOFTWARE 5 INSTITUTO IDAT Página 17

Page 18: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

Además de este CI también necesitaremos un cable tipo DB9 que describiremos:

EL CONECTOR DB9 DEL PC

En los PCs hay conectores DB9 macho, de 9 pines, por el que se conectan los dispositivos al puerto serie. Los conectores hembra que se enchufan tienen una colocación de pines diferente, de manera que se conectan el pin 1 del macho con el pin 1 del hembra, el pin2 con el 2, etc.

La información asociada sobre la función de cada pin es:

Número de pin Señal

1 DCD (Data Carrier Detect)

2 RX

3 TX

4 DTR (Data Terminal Ready)

5 GND

6 DSR (Data Sheet Ready)

7 RTS (Request To Send)

8 CTS (Clear To Send)

9 RI (Ring Indicator)

3. PROGRAMAS A UTILIZAR: Utilizamos los siguientes programas:

Proteus v7.8: Para simular los el programa y verificar su correcto funcionamiento antes de implementar el circuito físico.

Mplab de Microchip: Editor y compilador de código assembler para microcontroladores PIC de Microchip.

Visual Studio 2010: Concretamente la aplicación para Windows Fonts.

Virtual Serial Ports: Emulador que se utilizo para simular con Proteus el programa.

SOFTWARE 5 INSTITUTO IDAT Página 18

Page 19: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

4. CIRCUITOS A IMPLEMENTAR:

Configuración del MAX 232 y del conector DB9.

5. CONCLUCIONES:

Las posibilidades de control que se abren con la comunicación PC a PIC son innumerables.

El amplio rango de voltajes de la norma RS-232 responde a que se tiene que contrarrestar las perdidas en la línea de

SOFTWARE 5 INSTITUTO IDAT Página 19

Page 20: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

transmisión y además asegura el envío correcto de los datos.

La transmisión serial de datos es una manera económica y eficaz de comunicación entre dispositivos.

Las aplicaciones de Windows Fonts son una herramienta muy versátil y fácil de usar.

6. ANEXOS:

En esta sección detallaremos el programa en el lenguaje assembler del compilador MPLAB para la recepción de datos y su posterior muestra en una pantalla LCD 16x2; así como el respectivo código de la aplicación para Windows Fonts creada en Visual Studio 2010.

1.º. APLICACIÓN DE WINDOWS FONTS:

La siguiente es la aplicación en sí que utilizaremos para este trabajo y consta de:

SOFTWARE 5 INSTITUTO IDAT Página 20

Page 21: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

BOTON “DETERMINAR PUERTOS”:

Con este botón seleccionamos el puerto serie, con el que deseemos trabajar, de una lista creada automáticamente por el programa.

BOTON CONECTAR:

Este botón nos conecta con el puerto seleccionado y habilitando al siguiente botón que inicia la transmisión; cada vez que se cambie de puerto se tendrá que conectar al mismo de lo contrario la transmisión se hará por el puerto antes seleccionado.

BOTON ENVIAR:

Haciendo un clic en este botón iniciamos la transmisión de los datos contenidos en el TextBox, que previamente se cargaron el buffer de salida del PC, hacia el pic; cada vez que se haga un clic en este puerto se enviaran los datos.

TEXT BOX:

Este cuadro de texto muestra el dato o la cadena de datos que se enviaran hacia el PIC.

COMBO BOX:

Este es una lista que se genera al buscar todos los puertos COM del PC, asignándoles números a cada uno, es decir COM1, COM2, etc.

Código de programa para esta aplicación:

Public Class Form1

Dim datotx As String //declaracion de variables Dim datorx As String

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

SOFTWARE 5 INSTITUTO IDAT Página 21

Page 22: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

datotx = "" datorx = ""

btn_conectar.Enabled = False btn_enviar.Enabled = False tmr_pausa.Enabled = False

End Sub

***********************************************************************************

Private Sub btn_det_con_Click(sender As System.Object, e As System.EventArgs) Handles btn_det_con.Click cbo_puerto.Items.Clear() For Each puertosdisponible As String In My.Computer.Ports.SerialPortNames cbo_puerto.Items.Add(puertosdisponible) Next If cbo_puerto.Items.Count > 0 Then cbo_puerto.Text = cbo_puerto.Items(0) MessageBox.Show("SELECCIONE PUERTO CON EL QUE SE DESEA TRABAJAR") btn_conectar.Enabled = True Else MessageBox.Show("NO SE ENCONTRO NINGUN PUERTO") btn_conectar.Enabled = False btn_enviar.Enabled = False cbo_puerto.Items.Clear() cbo_puerto.Text = False

End If End Sub************************************************************************************ Private Sub btn_conectar_Click(sender As System.Object, e As System.EventArgs) Handles btn_conectar.Click If btn_conectar.Text = "CONECTAR" Then sp_puertos.PortName = cbo_puerto.Text btn_conectar.Text = "DESCONECTAR" btn_enviar.Enabled = True tmr_pausa.Enabled = True sp_puertos.Open()

ElseIf btn_conectar.Text = "DESCONECTAR" Then btn_conectar.Text = "CONECTAR" btn_enviar.Enabled = False tmr_pausa.Enabled = False sp_puertos.Close()

End If End Sub********************************************************************************** Private Sub btn_enviar_Click(sender As System.Object, e As System.EventArgs) Handles btn_enviar.Click sp_puertos.DiscardOutBuffer() datotx = txt_dato_tx.Text sp_puertos.WriteLine(datotx)

SOFTWARE 5 INSTITUTO IDAT Página 22

Page 23: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

End Sub

Private Sub tmr_pausa_Tick(sender As System.Object, e As System.EventArgs) Handles tmr_pausa.Tick End SubEnd Class

2.º. DIAGRAMA DE FLUJO PARA EL PIC 16F877A:

NO

SI

SOFTWARE 5 INSTITUTO IDAT Página 23

INICIO

CONFIGURO PUERTOSPORTB = SALIDASPORTC,7 = ENTRADAVELOCIDAD DE 2400

BAUDIOS

INICIA LCD MODO 4 BITS

CREACION DE BUFFER PARA RECEPCION

ENCIENDE EL MÓDULO USART Y CONFIGURA PARA RECEPCION CONTINUA 8 BITS SIN BIT DE PARIDAD

¿HA LLEGADO ALGÚN DATO?

LEE 2 VESES EL RCREG

CARGA 16 AL CONTADOR DE BYTES

GUARDA ESTE DATO EN EL BUFFER

BORRA BANDERA RCIF

SELECCIONO LA SIGUIENTE DIRECCIÓN DE

MEMORIA

¿HAY MAS DATOS?

IR A SEGUNDA LINEA PANTALLA LCD

LEER PRIMERA DIRECCION DEL BUFFER

ESCRIBRIR EN PANTALLA

ESPERA 4200 us

INCREMETA DIRECCION DE MEMORIA

CARGA 16 AL CONTADOR DE BYTES

¿LLEGO ÚLTIMO DBYTE?

FIN

Page 24: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

1.º. CODIGO EN ASSEMBLER PARA EL PIC:

LIST P=16F877AINCLUDE P16F877A.INC

CBLOCK 0X20INDICE,REG,R1,R2,R3,BUFFER,BYTS

ENDC

ORG 0X2007DW 0X3F7AORG 0GOTO INICIOORG 0X05

INICIO

BANKSEL TRISC ;seleccionamos banco 1BSF TRISC,7 ;como salida al pin 7 del

puertoCCLRF TXSTA ; configuracion del TXSTA como

para baja velocidadMOVLW .25 ; para trabajar a 2400 baudiosMOVWF SPBRGCLRF TRISB ; para trabajar la pantalla por el

puerto DBANKSEL PORTB ; banco 0CLRF BUFFER ;borramos el registro bufferCLRF PORTC ; borramos el puerto DCLRF RCREG ; borramos el RCREG

CALL T_20MS ; espara para inicial la pantalla

CLRWMOVWF INDICE ; primer dato de comando de inicio

de pantallaX2

; configuramos:CALL COMANDOS ; modo 4 bitsMOVWF REG ; borrar pantallaXORLW 0XFF ;pantalla activa/cursor off/no

parpadeoBZ X1 ; dos lineas

SOFTWARE 5 INSTITUTO IDAT Página 24

Page 25: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

MOVFW REG ; caracter de 5 x 7 puntosMOVWF PORTB ; posicion a partir del segundo cuadro CALL ENABLE ; para el tituloINCF INDICE,FMOVFW INDICE ; luego iremos a escribir el tituloGOTO X2

COMANDOSADDWF PCL,FDT

0X20,0X20,0X20,0X80,0X00,0X60,0X00,0XC0,0X00,0X10,0X80,0X10,0XFFX1

CLRW ; borramos WMOVWF INDICE ; se mueve a indice

X4 CALL TITULO

MOVWF REGXORLW '&'BZ X5 ; cuando se termina de escribir

el tituloMOVFW REG ; saltamos habilitar el modulo

USARTCALL MUESTRASWAPF REG,WCALL MUESTRAINCF INDICE,FMOVFW INDICEGOTO X4

TITULOADDWF PCL,FDT "TX Y RX SERIAL",'&' ; caracteres a mostrarse en

pantallaX5

MOVLW B'10010000'MOVWF RCSTA

NUEVOMOVLW .16MOVWF BYTSMOVLW 0X30MOVWF FSR

S1 MOVLW .32MOVWF INDFINCF FSR,F

SOFTWARE 5 INSTITUTO IDAT Página 25

Page 26: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

DECFSZ BYTS,FGOTO S1

MOVLW .16MOVWF BYTSMOVLW 0X30MOVWF FSRBTFSS PIR1,RCIFGOTO $-1

S3 MOVFW RCREGMOVFW RCREGMOVWF INDFBCF PIR1,RCIFINCF FSR,FCALL SERIALCALL MASCALL MASBTFSS PIR1,RCIFGOTO VERDECFSZ BYTS,FGOTO S3

VERCALL T_1MS ; tiempo de espera requerida

por la pantallaBCF PORTB,0 ; bits para enviar un comando a

la pantallaBCF PORTB,1 ; para enviar la nueva pocicion

del cursorCALL T_1MS ; a la linea 2 donde se

escribiran los datosMOVLW 0XC0MOVWF PORTBCALL ENABLE ; rutina de habilitacion de

pantallaMOVLW 0X00MOVWF PORTBCALL ENABLE

MOVLW .16MOVWF BYTS

MOVLW 0X30

SOFTWARE 5 INSTITUTO IDAT Página 26

Page 27: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

MOVWF FSRS2

MOVFW INDFMOVWF BUFFERCALL MUESTRASWAPF BUFFER,WCALL MUESTRAINCF FSR,FDECFSZ BYTS,FGOTO S2GOTO NUEVO

;******* SUB RUTINA DE MUESTRA EN MODO 4 BITS POR PUERTO D ******MUESTRA

ANDLW 0XF0 ; SOLO SE VE EL NIBLE ALTO DE LO QUE SE QUIERE MOSTRAR

IORLW 0X02 ; RS A 1 PARA ENVIAR DATO MOVWF PORTB ; ENVIO A PUERTO DCALL ENABLE ; HABILITAR LA PANTALLA PARA

PODER ESCRIBIRRETURN ; RETORNAMOS DE LA SUB

RUTINA

;******* SUB RUTINA DE HABILITACION DE LA PANTALLA *****ENABLE

CALL T_1MS ; ESPERA NESESARIA RECOMENDAD POR EL FABRICANTE

BSF PORTB,0 ; A 1 EL BIT ENABLE CALL T_1MS ; ESPERA NESESARIABCF PORTB,0 ; HACEMOS 0 EL BIT ENABLE,

YA QUE CON ESTA ACCION CALL T_1MS ; HABILITAMOS A LA PANTALLA

PÁRA RECIBIR DATOSRETURN ; REGRESAMOS DE LA SUB

RUTINA

; **** TIEMPO SEGUN FABRICANTE NESESARIO PARA LA PANTALLA ****SERIAL

MOVLW .4

SOFTWARE 5 INSTITUTO IDAT Página 27

Page 28: RECEPCIÓN SERIAL RS-232 CON PIC

COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9

MOVWF R3CALL TMPODECFSZ R3,FGOTO $-2RETURN

MASMOVLW .24MOVWF R3NOPDECFSZ R3,FGOTO $-2RETURN

T_1MSMOVLW .3MOVWF R3CALL TMPODECFSZ R3,FGOTO $-2RETURN

; ****** SUB RUTINA DE 1 MILISEGUNDO APROXIMADAMENTE *-*****TMPO

MOVLW .249MOVWF R1NOPDECFSZ R1,FGOTO $-2RETURN

; ******** TIEMPO REQUERIDO SEGUN FABRICANTE PARA QUE LA PANTALLA INICIE ***T_20MS

MOVLW .15MOVWF R2CALL TMPODECFSZ R2,FGOTO $-2RETURN

END

SOFTWARE 5 INSTITUTO IDAT Página 28