Professional Documents
Culture Documents
Práctica No. 5
Grupo De Laboratorio:
2. MARCO TEÓRICO:
2.1. PIC16F877A
Los PIC16F87X forman una subfamilia de microcontroladores PIC (Peripheral Interface
Controller) de gama media de 8 bits, fabricados por Microchip Technology Inc.
Cuentan con memoria de programa de tipo EEPROM Flash mejorada, lo que permite
programarlos fácilmente usando un dispositivo programador de PIC. Esta característica
facilita sustancialmente el diseño de proyectos, minimizando el tiempo empleado en
programar los microcontroladores (µC). Esta subfamilia consta de los siguientes
modelos que varían de acuerdo a prestaciones, cantidad de terminales y encapsulados:
PIC16F870
PIC16F871
PIC16F872
PIC16F873A
PIC16F874A
PIC16F876A
PIC16F877A
La "A" final de los modelos PIC16F873A, PIC16F874A, PIC16F876A y PIC16F877A
indica que estos modelos cuentan con módulos de comparación analógicos. El hecho de
que se clasifiquen como microcontroladores (MCU) de 8 bits hace referencia a la
longitud de los datos que manejan las instrucciones, y que se corresponde con el tamaño
del bus de datos y el de los registros de la CPU.
ILUSTRACIÓN 1: PIC16F628A
ILUSTRACIÓN 2: DISTRIBUCION DE PINES DEL PIC
2.2. Resistencia
El símbolo de la resistencia es:
Una resistencia también llamado resistor es un elemento que causa oposición al paso de
la corriente, causando que en sus terminales aparezca una diferencia de tensión (un
voltaje).
La máxima cantidad de corriente que puede pasar por una resistencia, depende del
tamaño de su cuerpo. Los valores de potencia comunes de las resistencias son: 1/4, 1/2,
1 watt, aunque hay de valores mayores.
ILUSTRACIÓN 3: R ESISTENCIA
2.3. LCDs
En este caso vamos a emplear un LCD de 16x2, esto quiere decir que dispone de 2
filas de 16 caracteres cada una. Los píxeles de cada símbolo o carácter, varían en
función de cada modelo. (Isaxan, 2014)
Lo podemos dividir en los Pines de alimentación, pines de control y los pines del bus
de datos bidireccional. Por lo general podemos encontrar ademas en su estructura los
pines de Anodo de led backlight y cátodo de led backlight.
Pines de control:
RS: Corresponde al pin de selección de registro de control de datos (0) o registro de
datos(1). Es decir el pin RS funciona paralelamente a los pines del bus de datos. Cuando
RS es 0 el dato presente en el bus pertenece a un registro de control/instrucción. y
cuando RS es 1 el dato presente en el bus de datos pertenece a un registro de datos o un
carácter.
RW: Corresponde al pin de Escritura(0) o de Lectura(1). Nos permite escribir un dato
en la pantalla o leer un dato desde la pantalla.
E: Corresponde al pin Enable o de habilitación. Si E(0) esto quiere decir que el LCD no
está activado para recibir datos, pero si E(1) se encuentra activo y podemos escribir o
leer desde el LCD.
Pines de Bus de datos:
El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la
comunicación con el LCD podemos hacerlo utilizando los 8 bits del bus de datos(D0 a
D7) o empleando los 4 bits más significativos del bus de datos(D4 a D7). En este caso
vamos a explicar la comunicación con el bus de 4 bits. (Isaxan, 2014)
3. MATERIALES:
Fuente de 5V
2 PIC16F877A
Conectores (Jumpers)
Resistencias
Protoboard
SUPERPRO Model 3000U
Software SUPERPRO
Potenciómetros
Crystal 4MHz
LCD 16x2
4. PROCEDIMIENTO:
f) Un clic en erase.
j) Se da un clic en Program.
5. ANÁLISIS DE RESULTADOS:
CIRCUITO 1
char cadena[];
int16 x;
float valor;
int i;
void main()
{
setup_adc_ports(0);
setup_adc(adc_clock_internal);
while(true)
{
set_adc_channel(0);
x=read_adc();
valor=5.0*x/1023.0;
//printf(lcd_putc,"Voltaje: %1.2f",y);
printf("%01.2f",valor);
//printf(cadena,"%1.2f",y);
printf("\r");
sprintf(cadena,"%01.2f", valor);
}
for(i=0;i<=5;i++)
{
putc(cadena[i]);
delay_ms(150);
}
Programación del receptor en PIC C:
#include <16F877A.h>
#include <stdlib.h>
#fuses XT, NOWDT
#use delay (clock=4M)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
#define LCD_RS_PIN PIN_B0
#define LCD_RW_PIN PIN_B1
#define LCD_ENABLE_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <LCD.c>
char cadena[];
int i;
float valor;
#int_RDA
rda_uno()
{
cadena[i]=getc();
i++;
lcd_init();
if(i==6)
{
i=0;
valor = atof(cadena);
lcd_gotoxy(1,1);
printf(lcd_putc,"\fVoltaje recibido");
printf(lcd_putc,"\n%01.2fV",valor);
}
delay_ms(200);
}
void main()
{
enable_interrupts(int_rda);
enable_interrupts(global);
/*
while(true)
{
//lcd_gotoxy(1,1);
//printf(lcd_putc,"%c",dato);
//delay_ms(5);
}
*/
}
6. CONCLUSIONES:
7. RECOMENDACIONES: