Está en la página 1de 11

TALLER 3

Microcontroladores PIC
BÁSICO
LCD1
LM016L

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
1
2
3

4
5
6

7
8
9
10
11
12
13
14
C2

U1
1

1nF X1
13 33
CRYSTAL OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
C1 RB2
35
2 36
2

RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
1nF 4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
R1 RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
1k 9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
RD6/PSP6
29 LCD2
30 LM016L
RD7/PSP7
PIC16F877A
VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
1
2
3

4
5
6

7
8
9
10
11
12
13
14

C4

U2
1

1nF X2
13 33
CRYSTAL OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
C3 RB2
35
2 36
2

RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
1nF 4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
R2 8
RE0/AN5/RD RC1/T1OSI/CCP2
16
1k 9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

Por Helber Vergara


INTRODUCCIÓN

El desarrollo de esta Actividad permitirá Afianzar conocimientos adquiridos durante


la formación en el tema de entradas y salida Análogas, Pantalla LCD y
Comunicación Serial, para ello se realizarán los montajes físicos y en Simulador
PROTEUS

Para la realización del taller se puede guiar por el libro Compilador CSS y Simulador
PROTEUS para microcontroladores PIC de Eduardo Garcia Breijo que lo puede
encontrar en la biblioteca del SENA o en el link de biblioteca virtual del SENA
https://elibro-net.bdigital.sena.edu.co/es/ereader/senavirtual/35709

Objetivos

➢ Iniciar al participante en el mundo de los sistemas con


microcontroladores.

➢ Conocer los componentes de hardware básicos para enviar y


recibir datos de forma serial y comunicarse con otros dispositivos
para interactuar con el mundo físico.

➢ Implementar proyectos sencillos microcontroladores.

➢ Realizar programas y ejecutarlos mediante simulaciones y en


montajes físicos
Manejando el puesto serial

Actividad 1- Comunicación serial


Cuestionario (Contextualizar respuestas con el tema de microcontroladores)
• ¿Qué es la comunicación serial?
• ¿Tipos de Comunicación serial Básicas y característica?
• ¿En qué aplicaciones se usa?
• ¿Teniendo en cuenta su programa de formación, describa tres aplicaciones donde
usar la comunicación serial?
ACTIVIDADES DE ENTRENAMIENTO
De cada Practica realizada debe tomar tres pantallazos y adjuntarlos al Documento.
*En la imagen de la Simulación debe aparecer su nombre y documento de Identidad

Actividad 2-Practica-Comunicación serial N°1


1. Realice el montaje de la figura 1 y cargue el código en cada uC según corresponda,
verifique que el programa y la simulación Funcionan Correctamente.
2. Analice el código y coloque en cada línea del mismo que sucede en esa línea.
3. Haga que al iniciar la ejecución en el simulador en Uc1 el mensaje en la primera fila
que aparece en la pantalla LCD sea su Nombre y el de la segunda fila su apellido
esto durante 3 segundos.
4. Realice un cambio en el código que permita hacer un conteo descendente de 1# a
0, (Cambie # por ultimo digito de su Documento de Identidad) en el uC Transmisor
y envié este dato al uC receptor, se deben ver los datos enviados en ambas
pantallas LCD
LCD1
LM016L

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
1
2
3

4
5
6

7
8
9
10
11
12
13
14
C2

U1 TX
1
1nF X1
13 33
CRYSTAL OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
C1 RB2
35
2 36
2
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
1nF 4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
R1 RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
1k 9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
RD6/PSP6
29 LCD2
30 LM016L
RD7/PSP7
PIC16F877A

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
1
2
3

4
5
6

7
8
9
10
11
12
13
14
C4

U2
RX
1

1nF X2
13 33
CRYSTAL OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
C3 RB2
35
2 36
2

RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
1nF 4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
R2 8
RE0/AN5/RD RC1/T1OSI/CCP2
16
1k 9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT

Ing Helber Vergara RD0/PSP0


RD1/PSP1
19
20
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

Figura 1

Código U1-TX
#define LCD_RS_PIN PIN_B2
#define LCD_RW_PIN PIN_B1
#define LCD_ENABLE_PIN PIN_B0
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <16F877A.h>
#FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
#include <LCD.C>

void main() {

int valor;

lcd_init();

while(1){
for (valor=0;valor<=10;valor++) {
PUTC(valor);
printf(lcd_putc,"\fenviando=%1D",VALOR);
delay_ms(500);
}
}
}

Código U2-RX
#define LCD_RS_PIN PIN_B2
#define LCD_RW_PIN PIN_B1
#define LCD_ENABLE_PIN PIN_B0
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <16f887.h>
#fuses xt,nowdt
#use delay(crystal=4000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,bits=8)
#include <lcd.c>
char valor;
//Define la interrupción por recepción Serial
#INT_RDA
RDA_isr()
{
valor=getc(); //Captura el dato recibido del PIC 1
}
void main()
{
lcd_init(); //Inicializa el LCD
enable_interrupts(INT_RDA); //HAbilita interrupcion por puerto serial
enable_interrupts(GLOBAL); // Habilita las interrupcciones globales
LCD_PUTC("\f"); //Borrar el contenido del LCD
lcd_gotoxy(1,1);
printf(lcd_putc,"Recibido= %1d",valor);
}

Actividad 3-Practica-Comunicación serial N°2


Se envían datos desde uC1 a uC2 para Activar Salidas digitales
1. Realice el montaje de la figura 2 y cargue el código en cada uC según corresponda,
verifique que el programa y la simulación Funcionan Correctamente.
2. Analice el código y coloque en cada línea del mismo que sucede en esa línea.
3. Cambie los pulsadores de la entrada en el uC1 a otros pines y cambie los led en el
uC2, modifique los programas para que funcionen
LCD1
LM016L

VDD
VSS

VEE
C2

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
1

1
2
3

4
5
6

7
8
9
10
11
12
13
14
1nF X1
CRYSTAL
C1 U1
TX
2
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
1nF 35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
R3 R4 25
RC6/TX/CK
26
RC7/RX/DT LCD2
19 LM016L
RD0/PSP0
20
RD1/PSP1
1k 1k 21
R1 RD2/PSP2
22
RD3/PSP3
1k 27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
PIC16F877A

1
2
3

4
5
6

7
8
9
10
11
12
13
14
C4

U2 RX
1

1nF X2
13 33
CRYSTAL OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
C3 RB2
35
2 36
2

RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
1nF 4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
R2 8
RC0/T1OSO/T1CKI
16 D1
9
RE0/AN5/RD RC1/T1OSI/CCP2
17
R5
1k RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL 220
23 LED-YELLOW
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO D2
25
RC6/TX/CK
26 R6
RC7/RX/DT

ing. Helber Vergara RD0/PSP0


RD1/PSP1
19
20
LED-YELLOW
220

21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

Figura 2

Código U1-TX
#define LCD_RS_PIN PIN_B2
#define LCD_RW_PIN PIN_B1
#define LCD_ENABLE_PIN PIN_B0
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <16F877A.h>
#use delay(clock=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,NOPUT,NOLVP
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7,BITS=8)
#include <lcd.c> // Libreria PantaLla LCD
#byte trisa = 85
#byte porta = 05
#byte trisb = 86
#byte portb = 06
#byte trisc = 87
#byte portc = 07
#bit Pul1 = porta.0 //Declara Variable
#bit Pul2 = porta.1 //Declara Variable

void main()
{
lcd_init ();
set_tris_a (0b11111111);
set_tris_b (0b00000000);
set_tris_c (0b00000000);

WHILE (1)
{

IF (pul1 == 1 && pul2 == 0)


{
LCD_PUTC ("\f"); //Borrar el contenido del LCD
lcd_gotoxy (1, 1) ;
printf (lcd_putc, "\fboton_1") ;
PUTC ('1');
delay_ms (500);
}

IF (pul1 == 0 && pul2 == 1)


{
LCD_PUTC ("\f"); //Borrar el contenido del LCD
lcd_gotoxy (1, 1) ;
printf (lcd_putc, "\fboton_2");
PUTC ('2');
delay_ms (500);
}

IF (pul1 == 0 && pul2 == 0)


{ lcd_gotoxy (1, 1) ;
printf (lcd_putc, "\fsin boton");
PUTC ('3');
delay_ms (500);
}
}
}

Código U2-RX
#define LCD_RS_PIN PIN_B2
#define LCD_RW_PIN PIN_B1
#define LCD_ENABLE_PIN PIN_B0
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7

#include <16F877A.h>
#use delay(clock=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,NOPUT,NOLVP
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7,BITS=8)
#include <lcd.c> // Libreria PantaLla LCD
#byte trisa = 0x85
#byte porta = 0x05
#byte trisb = 0x86
#byte portb = 0x06
#byte trisc = 0x07
#byte portc = 0x07

char valor;

#bit led1 = portc.0 //Declara Variable


#bit led2 = portc.1 //Declara Variable

//Define la interrupción por recepción Serial


#INT_RDA
RDA_isr()
{
valor = getc(); //Captura el dato recibido del PIC 1
}

VOID main()
{
set_tris_c (0b10000000);
enable_interrupts (INT_RDA); //HAbilita interrupcion por puerto serial
enable_interrupts (GLOBAL); // Habilita las interrupcciones globales
while(1){

IF (valor=='1')
{
led1 = 1; //Activa Led
led2 = 0; //Activa Led;

LCD_init (); //Inicializa el LCD


LCD_PUTC ("\f"); //Borrar el contenido del LCD
lcd_gotoxy (1, 1) ;
printf (lcd_putc, "Led 1 Activo");
}

IF (valor=='2')
{
led1 = 0; //Activa Led
led2 = 1; //Activa Led;

LCD_init (); //Inicializa el LCD


LCD_PUTC ("\f"); //Borrar el contenido del LCD
lcd_gotoxy (1, 1) ;
printf (lcd_putc, "Led 2 Activo");
}

IF (valor=='3')
{
led1 = 0; //Activa Led
led2 = 0; //Activa Led

LCD_init (); //Inicializa el LCD


LCD_PUTC ("\f"); //Borrar el contenido del LCD
lcd_gotoxy (1, 1) ;
printf (lcd_putc, "Ninguno Activo");
}
}
}

Actividad 3-Practica-Comunicación serial Aplicación

Realice un robot con control rf el cual cuenta con dos etapas el control remoto que es el
transmisor y el Robot que es el receptor, puede guiarse por la figura 3, el robot debe
realizar los siguientes movimientos Adelante, atrás, derecha, izquierda y detenido, cada
parte debe contar con una pantalla LCD que muestre el estado, “adelante, atrás…..”
LCD1
LM016L

VDD
VSS

VEE
C2

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
1

1
2
3

4
5
6

7
8
9
10
11
12
13
14
1nF X1
CRYSTAL
C1 U1
TX
2

13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
1nF 35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
1
MCLR/Vpp/THV
RC4/SDI/SDA
RC5/SDO
23
24
25
Se cambia por un sistema de RF
R3 R4 R5 R6 RC6/TX/CK
26
RC7/RX/DT LCD2
19 LM016L
RD0/PSP0
20
RD1/PSP1
1k 1k 1k 1k 21
R1 RD2/PSP2
22
RD3/PSP3
1k 27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
PIC16F877A

1
2
3

4
5
6

7
8
9
10
11
12
13
14
C4

U2 RX
1

1nF X2
13 33
CRYSTAL OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
C3 RB2
35
2 36
2

RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
1nF 4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
R2 8
RE0/AN5/RD RC1/T1OSI/CCP2
16
1k 9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26 16 8 U3
RC7/RX/DT

ing. Helber Vergara RD0/PSP0


RD1/PSP1
19
20
2
7
1
IN1
IN2
VSS VS OUT1
OUT2
3
6
21 EN1
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4 9
28 EN2
RD5/PSP5 10 11
29 IN3 OUT3
RD6/PSP6 15 14
30 IN4 GND GND OUT4
RD7/PSP7
PIC16F877A
L293D

Figura 3

También podría gustarte