Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller 3 Pic Básico
Taller 3 Pic Básico
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
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
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
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);
}
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
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)
{
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;
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;
IF (valor=='2')
{
led1 = 0; //Activa Led
led2 = 1; //Activa Led;
IF (valor=='3')
{
led1 = 0; //Activa Led
led2 = 0; //Activa Led
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
Figura 3