Professional Documents
Culture Documents
NACIONAL
DE
LOJA
INFORME DE LA
PRCTICA # 1 DE MICROCONTROLADORES
PROGRAMACION DE MICROCONTROLADORES PARA ENCENDIDO DE LEDS
INTEGRANTES:
Fernanda Macas Torres cjnarvaez@hotmail.com
DOCENTE:
Ing. Ximena Acaro
FECHA:
03/05/2016
Loja Ecuador
OBJETIVOS:
MATERIALES Y REACTIVOS
Grupo
PIC16F877A
1 cristal de 4MHz
8 resistencias de 330
1 resistencia de 10k
2 capacitores de 22pF
8 leds
1pulsador
Datasheet PIC16F877A
INSTRUCCIONES:
Colocar las mochilas en los casilleros
Prohibido consumo de alimentos
Prohibido equipo de diversin, celulares etc.
Prohibido jugar
Prohibido mover o intercambiar los equipos de los bancos de trabajo
Prohibido sacar los equipos del laboratorio sin autorizacin.
Ubicar los equipos y accesorios en el lugar dispuesto por el responsable del laboratorio, luego de
terminar las prcticas.
Uso adecuado de equipos
Uso obligatorio del mandil
Presentar el preparatorio al docente a cargo de la materia al inicio de la jornada.
Por
Encendido de led
1. Realizar la programacin utilizando el software Micro C Pro.
2. Construir el circuito electrnico de la Fig. 1.1, utilice el software especializado dispuesto en el
laboratorio.
C1
U1
1
13
14
1
22p
4MHZ
CRYSTAL
2
3
4
5
6
7
C2
22p
8
9
10
R6
10k
OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RE0/AN5/RD
RC2/CCP1
RE1/AN6/WR
RC3/SCK/SCL
RE2/AN7/CS
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
D1
PIC16F877
LED-RED
R1
330
3.
Crear un programa que encienda y apague un led, ubicado en la terminal RD7 del puerto D. El
tiempo de encendido es de 1000 milisegundo y el de apagado de 500 milisegundos .
Luces secuenciales
1. Realizar la programacin utilizando el software Micro C Pro.
2. Construir el circuito electrnico de la Fig. 1.2, utilice el software especializado dispuesto en el
laboratorio.
U1
13
14
X1
C1
CRYSTAL
22p
C2
22p
2
3
4
5
6
7
8
9
10
R10
10k
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
PIC16F877A
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
R1
R8
330 OHms
U2
1
2
3
4
5
6
7
8
9
10
20
19
18
17
16
15
14
13
12
11
LED-BARGRAPH-GRN
3. Crear un programa que encienda una gama de leds de forma secuencial ubicados en los
terminales del puerto D, empezando por RD0 con un tiempo de 500ms durante la ejecucin en
cada terminal hasta llegar a RD7, una vez llegado hasta este terminal debe volver a empezar.
4. Realizar 4 tipos de rutinas que se ejecuten de forma secuencial.
MARCO TERICO:
El PIC16F877A
El PIC16F877 es un microcontrolador con memoria de programa tipo FLASH, lo que representa
gran facilidad en el desarrollo de prototipos y en su aprendizaje ya que no se requiere borrarlo con
luz ultravioleta como las versiones EPROM, sino que permite reprogramarlo nuevamente sin ser
borrado con anterioridad. El PIC16F877 es un microcontrolador de Microchip Technology fabricado
en tecnologa CMOS, su consumo de potencia es muy bajo y adems es completamente esttico, esto
quiere decir que el reloj puede detenerse y los datos de la memoria no se pierden. El encapsulado
ms comn para este microcontrolador es el DIP (Dual In-line Pin) de 40 pines, propio para usarlo
en experimentacin. La referencia completa es PIC16F877-04 para el dispositivo que utiliza cristal
oscilador de hasta 4 MHz, PIC16F877-20 para el dispositivo que utiliza cristal oscilador de hasta 20
MHz o PIC16F877A-I para el dispositivo tipo industrial que puede trabajar hasta a 20 MHz. Sin
embargo, hay otros tipos de encapsulado que se pueden utilizar segn el diseo y la aplicacin que se
quiere realizar. Por ejemplo, el encapsulado tipo surface mount (montaje superficial) tiene un
reducido tamao y bajo costo, que lo hace propio para producciones en serie o para utilizarlo en
lugares de espacio muy reducido.
Caractersticas principales
Memoria de programa : FLASH, 8 K de instrucciones de 14 bits c/u.
Memoria de datos : 368 bytes RAM, 256 bytes EEPROM.
Pila (Stack) : 8 niveles (14 bits).
Fuentes de interrupcin : 13
Instrucciones : 35
Encapsulado : DIP de 40 pines.
Frecuencia oscilador : 20 MHz (mxima)
Temporizadores/Contadores: 1 de 8 bits (Timer 0); 1 de 16 bits (Timer 1); 1 de 8 bits (Timer 2) con
pre y post escalador. Un perro guardin (WDT)
Lneas de E/S : 6 del puerto A, 8 del puerto B, 8 del puerto C, 8 del puerto D y 3 del puerto E,
adems de 8 entradas anlogas.
Dos mdulos de Captura, Comparacin y PWM:
- Captura: 16 bits. Resolucin mx. = 12.5 nseg.
Los pines del puerto A y del puerto E pueden trabajar como entradas para el convertidor Anlogo a
Digital interno, es decir, all se podra conectar una seal proveniente de un sensor o de un circuito
analgico para que el microcontrolador la convierta en su equivalente digital y pueda realizar algn
proceso de control o de instrumentacin digital.
El pin RB0/INT se puede configurar por software para que funcione como interrupcin externa, para
configurarlo se utilizan unos bits de los registros que controlan las interrupciones.
El pin RA4/TOCKI del puerto A puede ser configurado como un pin de entrada/salida o como
entrada del temporizador/contador. Cuando este pin se programa como entrada digital, funciona
como un disparador de Schmitt (Schmitt trigger), puede reconocer seales un poco distorsionadas y
llevarlas a niveles lgicos (cero y cinco voltios). Cuando se usa como salida digital se comporta
como colector abierto (open collector), por lo tanto, se debe poner una resistencia de pull-up
(resistencia externa conectada a un nivel de cinco voltios). Como salida, la lgica es inversa: un "0"
escrito al pin del puerto entrega en el pin un "1" lgico. Adems, como salida no puede manejar
cargas como fuente, slo en el modo sumidero.
El puerto E puede controlar la conexin en modo microprocesador con otros dispositivos utilizando
las lneas RD (read), WR (write) y CS (chip select). En este modo el puerto D funciona como un bus
de datos de 8 bits (pines PSP).
La mxima capacidad de corriente de cada uno de los pines de los puertos en modo sumidero (sink)
o en modo fuente (source) es de 25 mA . La mxima capacidad de corriente total de los puertos es:
La asignacin de datos se la realiza mediante literales enteros, que en s son constantes enteras que
pueden estar expresadas en los formatos hexadecimal (base 16), decimal (base 10), octal (base 8) o
binaria (base 2).
Los literales enteros con el prefijo 0x (o 0X) se consideran nmeros hexadecimales. Por ejemplo,
0x8F.
En el formato decimal los literales enteros se representan como una secuencia de dgitos con el
prefijo opcional + o (no estn delimitados por coma, espacio en blanco o puntos). Si no se
especifica el prefijo, el valor de la constante se considera positiva. Por ejemplo, el nmero 6258
equivale a +6258.
Las constantes literales enteras que empiezan con 0 se consideran nmeros octales. Por ejemplo,
0357.
Las constantes con el prefijo 0b (o 0B) se consideran nmeros binarios. Por ejemplo, 0b10100101.
Ejemplo de las constantes literales:
0x11 (literal hexadecimal equivale a literal decimal 17)
11 (literal decimal)
011 (literal octagonal equivale a literal decimal 9)
0b11 (literal binaria equivale a literal decimal 3)
RESULTADOS OBTENIDOS.
Simulacin realizada del primer circuito de la prctica:
C1
22p
U1
X1
CRYSTAL
C2
2
22p
R1
10k
13
14
2
3
4
5
6
7
8
9
10
1
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
PIC16F877A
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
D1
LED-RED
R2
330
C4
1
U2
22pF
X2
CRYSTAL
2
C3
13
14
2
3
4
5
6
7
22pF
R3
10k
8
9
10
1
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
PIC16F877A
U3
1
2
3
4
5
6
7
8
9
10
20
19
18
17
16
15
14
13
12
11
LED-BARGRAPH-GRN
const time=500;
unsigned cont=0;
void main() {
TRISD = 0x00;// Configurar los pines
de PORTD como salidas
PORTD = 0x00;// Apagar los LEDs en
PORTD
while(cont<4){
PORTD.RD0=0xFF; // Enciende el LED
en PORTD.RD0
Delay_ms(time);// Retraso de un
segundo
PORTD.RD0= 0x00;// Apaga el LED en
PORTD.RD0
PORTD.RD1 = 0xFF; // Enciende el
LED en PORTD.RD1
Delay_ms(time);// Retraso de un
segundo
PORTD.RD1= 0x00;// Apaga el LED en
PORTD.RD1
PORTD.RD2 = 0xFF; // Enciende el
LED en PORTD.RD2
Delay_ms(time);// Retraso de un
segundo
PORTD.RD2= 0x00;// Apaga el LED en
PORTD.RD2
PORTD.RD3 = 0xFF; // Enciende el
LED en PORTD.RD3
22pF
X2
CRYSTAL
C3
2
Delay_ms(time);// Retraso de un
segundo
PORTD.RD3= 0x00;// Apaga el LED en
PORTD.RD3
PORTD.RD4 = 0xFF; // Enciende el
LED en PORTD.RD4
Delay_ms(time);// Retraso de un
segundo
PORTD.RD4= 0x00;// Apaga el LED en
PORTD.RD4
PORTD.RD5 = 0xFF; // Enciende el
LED en PORTD.RD5
Delay_ms(time);// Retraso de un
segundo
PORTD.RD5= 0x00;// Apaga el LED en
PORTD.RD5
PORTD.RD6 = 0xFF; // Enciende el
LED en PORTD.RD6
Delay_ms(time);// Retraso de un
segundo
PORTD.RD6= 0x00;// Apaga el LED en
PORTD.RD6
PORTD.RD7 = 0xFF; // Enciende el
LED en PORTD.RD7
Delay_ms(time);// Retraso de un
segundo
PORTD.RD7= 0x00;// Apaga el LED en
PORTD.RD7
cont++;
}
PORTD = 0x00;
}
22pF
R3
10k
13
14
2
3
4
5
6
7
8
9
10
1
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
PIC16F877A
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
U3
1
2
3
4
5
6
7
8
9
10
20
19
18
17
16
15
14
13
12
11
LED-BARGRAPH-GRN
Cdigo utilizado para el encendido de las luces secuenciales (con rutinas diferentes)
// SECUENCIA PARA LAS 4 RUTINAS
const time=500;
void main() {
TRISD = 0x00;// Configurar los pines de PORTD como salidas
PORTD = 0x00;// Apagar los LEDs en PORTD
Delay_ms(time);// Retraso de un segundo
while(1){
PORTD=0B10011110;// Enciende el LED en PORTD.RD0
Delay_ms(time);// Retraso de un segundo
PORTD=0B10011110; // Enciende el LED en PORTD.RD0
Delay_ms(time);// Retraso de un segundo
PORTD=0B01100000; // Enciende el LED en PORTD.RD0
Delay_ms(time);// Retraso de un segundo
PORTD=0B01100100; // Enciende el LED en PORTD.RD0
Delay_ms(time);// Retraso de un segundo
PORTD=0B11101100; // Enciende el LED en PORTD.RD0
Delay_ms(time);// Retraso de un segundo
}
PORTD = 0x00;
}
Figura 10. Simulacin del encendido de las luces de cuatro semforos sincronizados.
PORTB.RB2=1;
PORTD.RD2=1;
PORTB.RB4=1;
PORTD.RD4=1;
Delay_ms(verde);
j=0;
while(j<4){
PORTB.RB1=1;
PORTD.RD1=1;
Delay_ms(time);
PORTB.RB1=0;
PORTD.RD1=0;
Delay_ms(time);
j=j++;
}
PORTB.RB4=0;
PORTD.RD4=0;
PORTD.RD3=0;
PORTB.RB3=0;
PORTB.RB2=0;
PORTD.RD2=0;
}
PORTD = 0x00;
PORTB = 0x00;
}
DISCUSIN.
El presente trabajo nos deja notar el uso importante del microcontrolador, el mismo que lo hemos
usado en la presente prctica, gracias a los puertos de salida C y D se dise un circuito el cual
permite tener intermitente el LED (color rojo), de la misma forma se realiz con 8 LED varias
secuencias de encendido de los LEDs, y para la tercera y ltima parte se realiz la simulacin de
cuatro semforos en la interseccin de una ciudad, el cual se logr al 100% de simulacin como se lo
puede apreciar en la figura 10, y el cdigo correspondiente seguidamente, el problema que se obtuvo
fue a la hora de armar el circuito en el protoboard, con un tiempo de anlisis del mismo, se lleg a la
conclusin de que no exista continuidad en este por su uso, pero una vez armado en otro protoboard
se obtuvo lo requerido.
10 CONCLUSIONES
En un microcontrolador se puede utilizar un oscilador interno o externo, que fue lo que se realiz en
esta prctica, pero adems nos permite utilizar un botn reset que reanuda o reiniciara, todo el
funcionamiento o proceso q este realizando el microcontrolador.
Que, en s, un circuito por grande o simple que sea, mas all del funcionamiento de los componentes
o el funcionamiento del circuito, todo depender desde un principio de la programacin que tenga el
microcontrolador.
Ya sea por un signo mal puesto o un comando mal asignado, el cdigo no servir.
11 RECOMENDACIONES
Verificar que las conexiones estn correctamente realizadas, con respecto a los pines del
microcontrolador.
Realizar el ensamblado del circuito, en un protoboard que se encuentre con conectividad en todas sus
interconexiones.