PROYECTOS EN MICROCONTROLADORES PIC
Transcript of PROYECTOS EN MICROCONTROLADORES PIC
UNIVERSIDAD POLITECNICA SALESIANA
SISTEMAS MICROPROCESADOS 1
PRACTICA 1
INTEGRANTES:
Echeverría Jonathan
Duque Diego
Velásquez Lenin
PRACTICA 1
Tema: Entrada y Salida en el microcontrolador pic.
Objetivo: Utilizar los puertos del microcontrolador pic, como interface digital al mundo exterior.
PROCEDIMIENTO:
1.1 Escribir en el puerto B el valor 55h Código: program Practica1 main: 'Parte principal del programa trisb=0 'Habilita el puerto B como salida portb= $55 'Escribe en el puerto B el valor 55H=01010101 delay_ms(1000) 'Retardo de un segundo end. 'Fin del programa Esquemático:
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
R910k
D1
LED-BLUE
D2
LED-BLUE
D3
LED-BLUE
D4
LED-BLUE
D5
LED-BLUE
D6
LED-BLUE
D7
LED-BLUE
D8
LED-BLUE
X1CRYSTAL
C1
33p
C2
33p
Practico:
1.2 Ejercicio de aplicación escribir en el puerto b el valor AA program Practica1 main: 'Parte principal del programa trisb=0 'Habilita el puerto B como salida portb= $AA delay_ms(1000) 'Retardo de un segundo end. 'Fin del programa
Esquematico:
Practico:
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
R910k
D1
LED-BLUE
D2
LED-BLUE
D3
LED-BLUE
D4
LED-BLUE
D5
LED-BLUE
D6
LED-BLUE
D7
LED-BLUE
D8
LED-BLUE
X1CRYSTAL
C1
33p
C2
33p
1.3 Ejercicio de aplicación en el puerto C escribir el valor FO program Practica1 main: 'Parte principal del programa trisc=0 'Habilita el puerto C como salida portc= $f0 delay_ms(1000) 'Retardo de un sugundo end. 'Fin del programa Esquemático:
Practico:
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
R910k
D1
LED-BLUE
D2
LED-BLUE
D3
LED-BLUE
D4
LED-BLUE
D5
LED-BLUE
D6
LED-BLUE
D7
LED-BLUE
D8
LED-BLUE
X1CRYSTAL
C1
33p
C2
33p
1.4 Leer en el puerto C y escribir en el puerto B Código: program Practica2 dim valor as byte main: lazo: trisc=$ff trisb=0 valor=portc portb=valor goto lazo end.
Esquematico:
Practico:
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
R910k
D1
LED-BLUE
D2
LED-BLUE
D3
LED-BLUE
D4
LED-BLUE
D5
LED-BLUE
D6
LED-BLUE
D7
LED-BLUE
D8
LED-BLUE
X1CRYSTAL
C1
33p
C2
33p
OF
FO
N1 2 3 4 5 6 7 8
16
15
14
13
12
11
10 9
DSW1DIPSW_8
R10
10k
R11
10k
R12
10k
R13
10k
R14
10k
R15
10k
R16
10k
R17
10k
1.5 Ejercicio de aplicación Leer en el puerto a y escribir en el puerto D Código: program Practica3 dim valor1 as byte main: lazo: trisa=$3f trisd=0 valor1=porta portd=valor1 goto lazo end. Esquematico:
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
D1
LED-BLUE
D2
LED-BLUE
D3
LED-BLUE
D4
LED-BLUE
D5
LED-BLUE
D6
LED-BLUE
D7
LED-BLUE
D8
LED-BLUE
X1CRYSTAL
C1
33p
C2
33p
OF
FO
N1 2 3 4 5 6 7 8
16
15
14
13
12
11
10 9
DSW1DIPSW_8
R10
330
R11
330
R12
330
R13
330
R14
330
R15
330
R910k
1.6 Escribir en un display de 7 segmentos sin utilizar decodificador, un valos ascendente entre 0 y F. Código: program Practica6 main: trisb=$0 lazo: portb=%00111111 delay_ms(2000) portb=%00000110 delay_ms(2000) portb=%01011011 delay_ms(2000) portb=%01001111 delay_ms(2000) portb=%01100110 delay_ms(2000) portb=%01101101 delay_ms(2000) portb=%01111101 delay_ms(2000) portb=%00000111 delay_ms(2000) portb=%01111111 delay_ms(2000) portb=%01100111 delay_ms(2000) portb=%01110111 delay_ms(2000) portb=%01111100 delay_ms(2000) portb=%01011000 delay_ms(2000)
portb=%01011110 delay_ms(2000) portb=%01111001 delay_ms(2000) portb=%01110001 delay_ms(2000) portb=%01110001 delay_ms(2000) goto lazo end.
Esquematico:
Practico:
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R910k
X1CRYSTAL
C1
33p
C2
33p
1.7 Ejercicio de aplicación mediante un display alfanumérico mostrar en orden descendente todas las letras del alfabeto de la Z a la A. Código program display_alfanumerico main: trisb=$0 trisc=$0 lazo: portb=%00110011 'Z portc=%01000100 delay_ms(1000) portb=%00000000 'y portc=%00100101 delay_ms(1000) portb=%00000000 'X portc=%01010101 delay_ms(1000) portb=%11001100 'W portc=%01010000 delay_ms(1000)
portb=%11000000 'V portc=%01000100 delay_ms(1000) portb=%11111100 'U portc=%00000000 delay_ms(1000) portb=%00000011 'T portc=%00100010 delay_ms(1000) portb=%10111011 'S portc=%10001000 delay_ms(1000) portb=%11000111 'R portc=%10011000 delay_ms(1000) portb=%11111111 'Q portc=%00010000 delay_ms(1000) portb=%11000111 'P portc=%10001000 delay_ms(1000) portb=%11111111 'O portc=%00000000 delay_ms(1000) portb=%11001100 'N portc=%00010001 delay_ms(1000) portb=%11001100 'M portc=%00000101 delay_ms(1000) portb=%11110000 'L portc=%00000000 delay_ms(1000)
portb=%11000000 'K portc=%10010100 delay_ms(1000) portb=%01100011 'J portc=%00100010 delay_ms(1000) portb=%00110011 'I portc=%00100010 delay_ms(1000) portb=%11001100 'H portc=%10001000 delay_ms(1000) portb=%11111011 'G portc=%00001000 delay_ms(1000) portb=%11000011 'F portc=%10001000 delay_ms(1000) portb=%11110011 'E portc=%10001000 delay_ms(1000) portb=%00111111 'D portc=%00100010 delay_ms(1000) portb=%11110011 'C portc=%00000000 delay_ms(1000) portb=%00111111 'B portc=%00101010 delay_ms(1000) portb=%11001111 'A portc=%10001000 delay_ms(1000)
goto lazo end. Esquematico:
Practico:
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330R910k
X1CRYSTAL
C1
33p
C2
33p
R8
330
R10
330
R11
330
R12
330
R13
330
R14
330
R15
330
R16
330R17
330
1.8 Lógica boolena con microcontrolador Código program Practica8 main: trisc=$ff trisb=$0 portb.0=portc.0 and portc.1 portb.1=portc.2 or portc.3 portb.2=portc.4 xor portc.5 goto main end. Esquematico:
Practico:
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD40
RB6/PGC39
RB538
RB437
RB3/PGM36
RB235
RB134
RB0/INT33
RD7/PSP730
RD6/PSP629
RD5/PSP528
RD4/PSP427
RD3/PSP322
RD2/PSP221
RC7/RX/DT26
RC6/TX/CK25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
R910k
D1
LED-BLUE
D2
LED-BLUE
D3
LED-BLUE
D4
LED-BLUE
D5
LED-BLUE
D6
LED-BLUE
D7
LED-BLUE
D8
LED-BLUE
X1CRYSTAL
C1
33p
C2
33p
OF
FO
N1 2 3 4 5 6 7 8
16
15
14
13
12
11
10 9
DSW1DIPSW_8
R10
10k
R11
10k
R12
10k
R13
10k
R14
10k
R15
10k
R16
10k
R17
10k
Flujo gramas:
Practica 1.1
Inicio
Configurar
puerto B
como salida
Portb=$55
Retardo de 1
segundos
Escribir en el puerto B
en forma hexagesimal el
valor$55
Practica 1.2
Inicio
Configurar
puerto B
como salida
Portb=$AA
Retardo de 1
segundos
Escribir en el puerto B
en forma hexagesimal el
valor$AA
Practica 1.3
Inicio
Configurar
puerto C
como salida
Portc=$f0
Retardo de 1
segundos
Escribir en el puerto B
en forma hexagesimal el
valor $f0
PRACTICA 1.4
Inicio
Configurar puerto B
para escribir y C para
leer
a=portb.0 i=portc.0
b=portb.1 j=portc.1
c=portb.2 k=portc.2
d=portb.3 l=portc.3
e=portb.4 m=portc.4
f=portb.5 n=portc.5
g=portb.6 o=portc.6
h=portb.7 p=portc.7
Leer en el puerto B y C
en forma binaria.
Muestrear
en salidas.
Dar tiempo
de 1
segundo
PRACTICA 1.5
Inicio
Configurar puerto D
para escribir y
A para leer
a=porta.0 i=portd.0
b=porta.1 j=portd.1
c=porta.2 k=portd.2
d=porta.3 l=portd.3
e=porta.4 m=portd.4
f=porta.5 n=portd.5
g=porta.6 o=portd.6
h=porta.7 p=portd.7
Leer en el puerto A y
D en forma binaria.
Muestrear
en salidas.
Dar tiempo
de 1
segundo
PRACTICA 1.6
Inicio
Configurar
puerto B
como salida
a=portb.0
b=portb.1
c=portb.2
d=portb.3
e=portb.4
f=portb.5
g=portb.6
Escribir en el puerto B
en forma binaria.
Muestrear
en display.
Dar tiempo
de 2
segundos
PRACTICA 1.7
Inicio
Configurar
puerto B y C
como salida
a=portb.0 i=portc.0
b=portb.1 j=portc.1
c=portb.2 k=portc.2
d=portb.3 l=portc.3
e=portb.4 m=portc.4
f=portb.5 n=portc.5
g=portb.6 o=portc.6
h=portb.7 p=portc.7
Escribir en el puerto B
y C en forma binaria.
Muestrear
en display.
Dar tiempo
de 1
segundo
PRACTICA 1.8
Conclusiones:
- Aprendimos la utilización del equipo para uso de los microcontroladores pic. - Utilizamos prácticamente los periféricos de entrada y salida de los microcontroladores. - Vimos la práctica de la entrada de puertos y la respuesta en la salida.
Bibliografía:
- Información otorgada por el Ing. Luis Oñate Universidad Politécnica Salesiana. - Microcontroladores PIC Programación en Basic, Segunda Edición 2006, Carlos A. Reyes
Inicio
Configurar puerto
B como salidas y
C como entradas
portb.0 = portc.0 and portc.1
portb.1 = portc.2 or portc.3
portb.2 = portc.4 xor portc.5