top of page

UART-COMUNICACIÓN SERIAL RS232

Wikipedia indica que el UART, proviene de las siglas en inglés de Universal Asynchronous Receiver-Transmitter, en español: Transmisor-Receptor Asíncrono Universal, es el dispositivo que controla los puertos y dispositivos serie. Se encuentra integrado en la placa base o en la tarjeta adaptadora del dispositivo. Es.wikipedia.org. (2017). Universal Asynchronous Receiver-Transmitter. [online] Available at: https://es.wikipedia.org/wiki/Universal_Asynchronous_Receiver-Transmitter [Accessed 20 May 2017].

IMAGEN 1 - Simulación en proteus.

Nos hemos trazado el objetivo de incorporar a nuestro sistema microcontrolador, LCD 16x2. un sistema de comunicación lineal con el modulo UART RS232.

IMAGEN 2 - MODULO DE COMUNICACIÓN MAX 232 .

Estos módulos permiten que el Microcontrolador se comunique con los ordenadores mediante una envió de información serial, ademas para la transmisión de datos utilizamos un cable USB y DB9 para conectar el modulo y el computador.

/*

IMAGEN 3- MODULO DE COMUNICACIÓN MAX 232 .

* File: main.c * Author: GUILLERMO ANGULO NIQUEN *CURSO DE MICROCONTROLADORES PIC 18F - MICROTECSD * Created on 19 de abril de 2017, 22:15 */

#include <xc.h> #include <stdio.h> #include <stdlib.h> #include <plib/usart.h> #include "CONFIGURE.h" #include "DELAY.h" #include "lcd.h"

#define EAUSART_V4 //Le especifica al compilador la versión de las funciones del mosdulo USART que se deben declarar. //Esto lo debería hacer el compilador automaticamente pero debe haber un error y no lo hace. char CaracterRx; char MensajeTx[] = "Por favor digite una tecla: "; void main(void) { unsigned int a; TRISD = 0x00; Lcd_Init(); MsDelay(2000); // UN TIEMPO DE ESPERA. Lcd_Clear(); Lcd_Set_Cursor(1,1); Lcd_Write_String(" MICROTECSD"); Lcd_Set_Cursor(2,1); Lcd_Write_String("USART PIC18F4550"); MsDelay(2000); // UN TIEMPO DE ESPERA. MsDelay(2000); // UN TIEMPO DE ESPERA. for(a=0;a<15;a++) { MsDelay(1000); // UN TIEMPO DE ESPERA. Lcd_Shift_Left(); }

for(a=0;a<15;a++) { MsDelay(1000); // UN TIEMPO DE ESPERA. Lcd_Shift_Right(); } MsDelay(2000); // UN TIEMPO DE ESPERA OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & //Activar la interrupcion por la recepcion de dato del buffer de Rx del USART USART_ASYNCH_MODE & //Modo asincrono (fullduplex) USART_EIGHT_BIT & //8 bits de datos USART_CONT_RX & //Recepción continua USART_BRGH_HIGH, 129); //9600 Baudios INTCONbits.PEIE = 1; //Activamos interrupcion de perifericos INTCONbits.GIE = 1; //Activamos las interrupciones globales

while(BusyUSART()); //Se espera a que el buffer de Tx este libre putsUSART(MensajeTx); //Se envía un string while(1); //Bucle infinito }

void interrupt Interrupcion() //Funcion que atiende las interrupciones { volatile int Data = ReadUSART(); //Se lee el dato que esta en el buffer de Rx del USART while(BusyUSART()); // putsUSART("\n\rUsted digito la tecla: "); while(BusyUSART()); WriteUSART(Data); Lcd_Clear(); Lcd_Set_Cursor(1,1); Lcd_Write_String("Usted a Digitado"); Lcd_Set_Cursor(2,8); Lcd_Write_Char(Data); MsDelay(2000); // UN TIEMPO DE ESPERA PIR1bits.RCIF = 0; //Desactivamos la bandera de recepción en el buffer de entrada del USART }

El presente código tiene como finalidad enviar un mensaje de presentación, realizar unos desplazamiento (I-D) e inmediatamente enviar un mensaje que le solicite al usuario un dígito, inmediatamente el usuario va ingresar este dato mediante su ordenador el cual sera transmitido y recibido por el Microcontrolador y finalmente mostrado en el LCD, con el objetivo de demostrar la existencia de una comuncacion.

Vídeo 1 - COMUNICACIÓN MAX 232 + LCD´s 16x2+ PIC .

Finalmente podéis descargar el archivo en el siguiente link:

https://www.dropbox.com/s/7hn6cani0oud0rw/USART1.X.zip?dl=0

O escríbenos a Tecnologia3dtec@gmail.com

Gracias por su atención, pronto tendremos mucho mas.


About Me.

I'm a paragraph. Click here to add your own text and edit me. I’m a great place for you to tell a story and let your users know a little more about you.

  • Black Facebook Icon
  • Black Instagram Icon
  • Black Twitter Icon
Never Miss a Post!
bottom of page