Documentos de Académico
Documentos de Profesional
Documentos de Cultura
co 1
OBJETIVOS
INTRODUCCIÓN:
En este tutorial se explica una comunicación vía puerto serial al PC, para ello
manejaremos el módulo USART del microcontrolador PIC16F887.
Realizaremos una envío de datos a ser visualizados en el LCD.
¿Porque serial?
Hay muchas razones diferentes para usar una interfaz serial. Una de las más
comunes es la necesidad de hacer interfaces con PCs, durante el desarrollo y
en la aplicación. Casi todos los PCs tienen algún tipo de interfaz con bus serial
disponible para conectar los periféricos.
Terminología
• En un bus asíncrono, los datos son enviados sin una señal de reloj, un
bus síncrono envía los datos con una señal de reloj.
• Full duplex significa que los datos pueden ser transmitidos y recibidos
simultáneamente. Half-duplex es cuando los datos pueden ser enviados
o recibidos, pero no al mismo tiempo.
• Las interfaces punto a punto o par a par son las que tienen dos
dispositivos que tienen una relación de igual a igual, el uno al otro; no
hay maestro ni hay esclavos. Las interfaces pares son frecuentemente
asíncronas.
1) Los cables seriales pueden ser más largos que los cables paralelos. El
puerto serial transmite un '1' como un -3 ó -25 voltios y un '0' como un +3 ó +25
voltios. La variación en voltaje puede llegar a ser de hasta 50 V mientras que
con el puerto paralelo es de 5V.
2) No se necesitan tantos cables para la transmisión paralela.
3) se puede adaptar a interfaces infrarrojas.
El diagrama superior muestra la forma de onda que sale del modulo serial
cuando se utiliza un formato común 8N1. 8N1 significa 8 bits de datos, no
Paridad y un bit de Stop. La línea RS232, cuando en estado de espera está en
el estado de uno lógico. Una transmisión comienza con un bit que es un cero
lógico. A continuación cada bit es enviado por la línea, uno ala vez. El LSB (Bit
menos significativo) es enviado primero. Un bit de Stop (uno lógico) es luego
adherido a la señal para cerrar la transmisión.
El diagrama, muestra que el siguiente bit después del bit de stop es un cero
lógico. Esto significa que otra palabra está siguiendo en la transmisión, y este
es el bit de Start. Si no hay más datos siguiendo, entonces la línea receptora
estará en un estado de espera (uno lógico). Nosotros podemos encontrar en la
transmisión serial algo llamado una señal de "Break". Esto ocurre cuando la
línea de datos es mantenida en un estado de cero lógico por un tiempo superior
al necesario para enviar una palabra completa. Desde luego, si uno no lleva la
línea de nuevo al estado de espera, la terminal receptora interpretará esto
como una señal de break.
Los datos están enmarcados entre el bit de Start y el bit de Stop. Los datos que
se envían de esta forma se dice que están enmarcados.
Los niveles RS-232 utilizan desde +3 a +25 voltios para significar un "espacio"
(cero lógico) y desde -3 a -25 voltios para significar una "marca"(uno lógico).
Cualquier voltaje en estas regiones (entre -3 y +3 voltios) es indefinido. La
señal digital normalmente se lleva a una etapa de conversión de niveles
RS232. Esta es la señal presente en el puerto RS-232 del computador como se
observa en la imagen.
Casi todos los dispositivos digitales requieren niveles lógicos TTL o CMOS. El
primer paso para conectar un dispositivo a un puerto RS-232 es transformar los
niveles RS-232 a niveles de 0 y 5 voltios. Como hemos comentado
anteriormente esto es realizado con convertidores de nivel RS-232.
datos de transmisión y recepción. No será necesario utilizar dos chips, uno será
usado para la línea de recepción y otra para la línea de transmisión.
Bit 7: CSRC: Este bit no se usa en modo asíncrono, en modo síncrono indica si
se es maestro o esclavo.
Bit 6: TX9: Este bit indica si se van a transmitir 8 bits (0) o 9 bits (1),
generalmente en una comunicación con el PC se usan 8 bits, el noveno bit se
usa en ocasiones para direccionamiento o paridad.
Bit 4: SYNC: Selecciona entre modo síncrono (1) o asíncrono (0), recuerdese
que trabajaremos en modo asíncrono.
Bit 3: No implementado.
Bit 2: BRGH: Este bit controla el generador de baudios, este bit conjuntamente
con el registro SPBRG controla los baudios a los cuales trabajará la
comunicación.
Bit1: TRMT: Este bit es una bandera (solo lectura) que indica si el registro de
desplazamiento TSR esta lleno (0) o vacío (1). Puede servir para identificar el
fin de una transmisión al colocarse en 1.
Bit 3: ADDEN: Se usa para activar un modo especial del usart en el cual se usa
el 9 bit para propósitos de direccionamiento, no trabajaremos con este modo
por lo tanto este bit lo pondremos en cero.
Bit 2: FERR: Esta bandera indica que sucedió un Framing Error, este error
sucede cuando el bit de parada no se recibe correctamente. Se libera al leer el
RCREG y recibir el siguiente dato válido.
Bit 1: OERR: Bandera que indica que sucedió un error de Overrun, sucede
cuando se recibe un bit antes de haberse leído el anterior en el registro
RCREG lo cual produce que el dato anterior se pierda. Se limpia al poner en
cero CREN.
Usando interrupciones:
La transmisión y la recepción pueden realizarse usando interrupciones,
esto permite realizar otros procesos mientras se están enviando o
recibiendo datos.
CODIFICACIÓN:
#include <pic.h>
#include "delay.h"
#include "lcd.h"
while(1)
{
while(RCIF==0)
{
//Espero recepción de dato
}
contador++; //Incremento contador de datos
if(contador==15)
{
contador=0; //Prevengo llenado de la linea del LCD
lcd_goto(0x40);
}
lcd_putch(RCREG); //Al recibir dato lo envio al LCD.
TXREG=RCREG; //Inicio el reenvio del dato recibido.
while(TRMT==0)
{
//Espero fin de transmisión.
}
}
}
Diagrama de conexiones:
Para comunicacionserial se utiliza el chip MAX232, que sirve de interface entre
los voltajes del computador y el micro, aquí se presenta la forma de conectar
dichi integrado y un pic 16F877A, similarmente es para el 16F887, en la pagina
siguiente se muestra el circuito de la simulacion en proteus
TXREG=RCREG+1;