Sie sind auf Seite 1von 18

FORMATO DE GUÍA DE PRÁCTICA DE LABORATORIO / TALLERES /

CENTROS DE SIMULACIÓN – PARA ESTUDIANTES

CARRERA: INGENIERÍA ELÉCTRICA ASIGNATURA: SISTEMAS MICROPROSESADOS I


NRO. PRÁCTICA: 01 TÍTULO PRÁCTICA: SECUENCIA DE LUCES – ENCENDIDO DE BUZZER –
ENCENDIDO DE RELÉ
OBJETIVO GENERAL:

Diseñar e implementar un circuito y programa que sea una secuencia de luces, encienda un buzzer y un relé
mediante un PIC PORTAL c.

OBJETIVO ESPECÍFICO:

• Realizar un programa en Mikro.C el cual permita controlar luces led.


• Diseñar 6 secuencias diferentes de controlas las luces led.
• Realizar que se encienda un buzzer.
• Realizar de la misma manera que el pic encienda un Relé.

ACTIVIDADES POR DESARROLLAR


1. MARCO TEORICO

a) PIC16F877A
Procede de una familia de microcontroladores de 8 bits, los cuales poseen arquitectura Harvard, tecnología
RISC y tecnología CMOS. Estas características hacen que el dispositivo sea altamente eficiente tanto en el
uso de la memoria de datos y el programa como en la velocidad de ejecución. Este microcontrolador es de
gama media el cual posee 35 instrucciones de 14 bits.

Figura. 1 PIC 16F877A

b) Puerto A
Puerto bidireccional de 6 bits RA0-RA5. Los pines RA0:3 y RA5 de este puerto tienen como función alternativa
ser parte del módulo conversor A/D. RA5 también puede ser una entrada de selección de esclavo del módulo
SPI.
Figura 2. Estructura Puerto A

c) PUERTO B.
Puerto bidireccional de 8 bits RA0-RA7 Si el bit de TRISB es un ‘1’ es entrada y si es un ‘0’ es salida. En el
momento que el pin de PORTB pase a ser una salida (TRISB=0) el circuito de pull-up se desactiva. Disponen
de resistencias “pull-up” en todos los pines. Se utilizan para que las entradas al puerto no queden al “aire”.
Se configura con un “0” en el bit 7 del reg. OPTION (RBPU).
El pin RB0 puede emplearse como entrada de interrupción (INT). Para su configuración se usa el bit INTEDG
(OPTION_REG). Los pines RB4-RB7 pueden emplearse para generar interrupciones cuando se produzca
un cambio en el valor de cualquiera de dichos pines. Para ello el bit RBIE=1 (INTCON). La interrupción por
cambio en el PORTB puede despertar al micro del modo dormido SLEEP.

Figura 3. Estructura de LOS pines RB7.


32 /

Figura 4. Estructura de los pines RB0.

d) LED’s
Los LED’s son diodos emisores de luz, estos funcionan al momento de estar polarizados en directa, los
electrones se recombinan con los huecos del dispositivo liberando energía en forma de fotones.

Figura. 5 Diodos LED

e) PULSANTE
Un pulsante es utilizado para al momento de ser accionado realiza una función en específico, como prende
o apagar un LED.

Figura. 6 Pulsante

f) Resistencia
Se le denomina resistencia eléctrica a la oposición al flujo de corriente eléctrica a través de un conductor. La
unidad de resistencia en el Sistema Internacional es el ohmio, que se representa con la letra griega omega
(Ω).
Figura.7 Resistencia

g) Optotransistores
Es un circuito electrónico que funciona como un interruptor aislado opticamente. Es decir, que permite una
conexión eléctricamente aislada entre dos circuitos que operan a distintos voltajes. Esta construido por un
led y un circuito de control activado por luz infrarroja.

Figura. 8 Optotransistor

h) Relé
es un dispositivo electromagnético que funciona como un interruptor controlado por un circuito eléctrico en el
que, por medio de una bobina y un electroimán, se acciona un juego de uno o varios contactos que permiten
abrir o cerrar otros circuitos eléctricos independientes.

Figura. 9 Relé

i) Condensador cerámico
Es un dispositivo pasivo, utilizado en electricidad y electrónica, capaz de almacenar energía sustentando un
campo eléctrico. Está formado por un par de superficies conductoras, generalmente en forma de láminas o
placas, en situación de influencia total separadas por un material dieléctrico o por la permitividad eléctrica
del vacío.

Figura.10. Condensador cerámico

j) Buzzer
Es un transductor electroacústico que produce un sonido o zumbido continuo o intermitente de un mismo
tono. Sirve como mecanismo de señalización o aviso y se utiliza en múltiples sistemas, como en automóviles
o en electrodomésticos, incluidos los despertadores.
Figura.11. Zumbador o buzzer

k) Dip Switch
El Dip Switch 8 se trata de un conjunto de micro-interruptores eléctricos que se presenta en un formato
encapsulado la totalidad del paquete de interruptores se puede también referir como interruptor DIP en
singular, pueden contener 1,2,3,4, 6, 8 hasta 9 micro-interruptores. Es esta característica lo que diferencia a
estos micro-interruptores del resto.

Figura. 12 Dip switch de 8 entradas

l) Oscilador de Quarzo
Un oscilador de cristal es un oscilador electrónico que utiliza la resonancia mecánica de un cristal vibratorio
de material piezoeléctrico para crear una señal eléctrica con una frecuencia precisa.123 Esta frecuencia se
utiliza comúnmente para controlar el tiempo, como en los relojes de cuarzo, para proporcionar una señal de
reloj estable para circuitos integrados digitales y para estabilizar las frecuencias de los transmisores y
receptores de radio.

Figura. 13 oscilador de Quarzo

m) Transistores
Es un dispositivo electrónico semiconductor utilizado para entregar una señal de salida en respuesta a una
señal de entrada. Cumple funciones de amplificador, oscilador, conmutador o rectificador. El término
‘transistor’ es la contracción en inglés de transfer resistor (resistor de transferencia).
Figura. 4. Transistor

2. ANALISIS

Circuito Anti reboté:

Tiempo de rebote
𝑡𝑟𝑒𝑏 = [10 𝑎 20𝑚𝑠]
𝑡𝑟𝑒𝑏 𝑚𝑎𝑥 = [50, 100, 200𝑚𝑠]

𝑡𝐶 = ln(2) ∗ 𝑅 ∗ 𝐶
𝑅 = 4.7 𝑘Ω
𝑇𝑐 = 20𝑚𝑠
𝑡𝑐
𝐶=
ln(2) ∗ 𝑅
𝐶 = 6.13𝜇𝐹
𝐶 = 10𝜇𝐹

Pulsantes:

𝑉 =𝐼∗𝑅
5𝑉𝐶𝐶
𝑅=
1𝑚𝐴
𝑅 = 4.7𝑘Ω
Rango Aceptable
1𝑘Ω ≤ 𝑅 ≤ 10𝑘Ω

Leds alto brillo:

𝑉0 − 𝑉𝑑
𝑖=
𝑅

𝑉0 − 𝑉𝑑
𝑅=
𝑖

5 − 3.7
𝑅=
20𝑚

𝑅 = 65 Ω ≈ 68Ω

Opto transistor:

𝑉0 − 𝑉𝑅𝑁 − 𝑉𝐷 = 0
𝑉0 − 𝑅𝑁 ∗ 𝐼 − 𝑉𝐷 = 0

5 − 0.7
𝑅=
20 ∗ 10−3

𝑅 = 215 Ω ≈ 220Ω

Dado que se considera dos resistencias RD0 y R de la fuente que va al opto transistor serio (215 y 5 Ω) lo óptimo
comercial (220 y 4.7 Ω)

Ajustes de resistencia de salida de opto transistor a bjt control de relé o buzzer:

𝑉0 − 𝑉𝑅𝑁 − 𝑉𝐷 = 0

𝑉0 − 𝑅𝑁 ∗ 𝐼 − 𝑉𝐷 = 0

5 − 0.7
𝑅=
10 ∗ 10−3

𝑅 = 430 Ω ≈ 470Ω

3. FLUJOGRAMA
Subrutina Menu Principal
iMain[]

jConfigPic16F877A
jsec01Leds();
jsec02Leds();
jsec03Leds();
jsec04Leds();
jpul01();
jcontra();

PORTC=0b00000000;
!SW7 && !SW6 &&
SI Apagado de leds
!SW5 && SW4
LEDS=0x00;

NO

!SW7 && !SW6 && jsec01Leds();


SI
!SW5 && SW4 Secuencia 1 de Leds

NO

!SW7 && !SW6 && jsec02Leds();


SI
!SW5 && SW4 Secuencia 2 de Leds

NO

!SW7 && !SW6 && jsec03Leds();


SI
!SW5 && SW4 Secuencia 3 de Leds

NO

!SW7 && !SW6 && jsec04Leds();


SI
!SW5 && SW4 Secuencia 3 de Leds

NO

PORTC=0b11111111();
!SW7 && !SW6 &&
SI Encendido de leds
!SW5 && SW4
Leds=0xFF;

NO
PORT C=0X00;
!SW7 && !SW6 && PB0==0 PORT A=0X00;
SI
!SW5 && SW4 Activacion FOCO
jpul01(void);

NO

PORT C=0X00;
PB1==0 PORT A=0X00;
SI
Activacion BUZZER
jcontra(void);

NO

NO PORT C=0X00;
PORT A=0X00;
PB2==0 SI PORT A=0X00;
Activacion secuencia 4
jSec04Leds(void);

NO

PORTC=0b11111111();
PB3==0 SI Encendido de leds
Leds=0xFF;

NO

SALIR

Si

Salir
Subrutina Leds 1.
Void jSecLed01(void)

i=0;
LEDS=0;

i<7;i++ No

si

If(r==0){
LEDS=LEDS<<1; Return cycle
Delay_ms(200)

Subrutina Leds 2.
Void jSecLed02(void)

If(!PB1){
LEDS=0b11000
000}

i=0; i<6; No

si

LEDS=LEDS>>1;
Return cycle
Delay_ms(200)

si

else{LEDS=0b01010101
LEDS=LEDS<<1;
Delay_ms(200)};

Subrutina Leds 3.

Void jSecLed03(void)

i=0
LEDS=0b11111111

i=<4 No

si

LEDS=LEDS>>i; Return cycle


Delay_ms(700)
Subrutina Leds 4.
Void jSecLed04(void)

i=7

i>=1; No

si

If(r==0){
LEDS=LEDS>>i; Return cycle
Delay_ms(200)

si

else(r==0){
LEDS=LEDS<<i;
Delay_ms(200)

Subrutina Pulsantes 1.
Void jPulsantes(void)

i=0;
LEDS=0;
si

!PB0&&!PB1

BUZZER=1;
no
Delay_ms(500);

si

!PB0&&!PB1

(!PB2&&!PB3)
no RELE=1;
Delay_ms(500);

Return cycle
Subrutina Pulsantes 2.
Void
jPulsantes2(void)

i=0;
LEDS=0;
si si

!PB0 !PB3

no no
Delay_ms(600); Delay_ms(600);

si si

!PB1 !PB2

no no
Delay_ms(600); Delay_ms(600);

!PB1 !PB1

no no
Delay_ms(600); Delay_ms(600);

i=1;I<=3; i=1;I<=3;
i++ i++

si si

BUZZER=0; BUZZER=0;
no no
Delay_ms(250); Delay_ms(250);

si si

BUZZER=1; BUZZER=1;
Delay_ms(250); Delay_ms(250);

Return cycle

.
4. ESQUEMA DE SIMULACION

Figura. 14 Esquema de simulación sin funcionar

Figura.15. Esquema en funcionamiento en una de las secuencias.


5. Código de programación en Mikro.C

/*----------------------------------------------------------------------------*/
/* UNIVERSIDAD POLITECNICA SALESIANA */
/* CARRERA DE INGENIERIA ELECTRICA */
/* */
/* Proj02PuertosIO.c */
/* */
/* Autor: JOHAN ALEXANDER PEREZ CAÑARTE
JORGE SALVADOR QUIENDE SANTIAGO */
/* Creacion: 06-Nov-2019 */
/* Revision: 06-may-2019 */
/* Descripcion: */
/* este programa visualiza varias secuencias de leds y manejo de swicht pulsantes
buzzery reles atravez de opto transistores. */

/*==============================================================================
1. DEFINICIóN DE BITS-PINES (ALIAS) Y CONSTANTES

==============================================================================*/
sbit SW7 at RB7_bit; //switch conectado al pin RB7
sbit SW6 at RB6_bit; //switch conectado al pin RB6
sbit SW5 at RB5_bit; //switch conectado al pin RB5
sbit SW4 at RB4_bit; //switch conectado al pin RB4
sbit PB3 at RB3_bit; //pulsador P3 conectado al pin RB3
sbit PB2 at RB2_bit; //pulsador P2 conectado al pin RB2
sbit PB1 at RB1_bit; //pulsador P1 conectado al pin RB1
sbit PB0 at RB0_bit; //pulsador P0 conectado al pin RB0
sbit RELE at RA0_bit; // BUZZER conectado al pin RA4
sbit BUZZER at RA4_bit; // RELE conectado al pin RA0
char LEDS at PORTC; //Redefine al PORTC como LEDS
/*==============================================================================
2. DEFINICI?N DE VARIABLES GLOBALES, TYPEDEF, ESTRUCTURAS
==============================================================================*/
int jVariableGlobal=0; //ejemplo de variable global

/*==============================================================================
3. PROTOTIPO DE FUNCIONES
==============================================================================*/
//Prototipo de funciones
void jConfigPic16f877A(void);
void jSecLed01(void);
void jSecLed02(void);
void jSecLed03(void);
void jSecLed04(void);
void jpulsantes(void);
void jpulsantes02(void);
/*==============================================================================
4. DEFINICION DE LAS SUBRUTINAS UTILIZADAS EN SUB´S INTERRUPT Y/O INTERRUPT LOW
==============================================================================*/
/*==============================================================================
5. DEFINICION DE LAS SUB INTERRUPT Y/O INTERRUPT LOW
==============================================================================*/
/*==============================================================================
6. DEFINICION DE LAS SUBRUTINAS UTILIZADAS EN SUB MAIN
==============================================================================*/
/*==============================================================================
6.1 Subrutina que configura los periféricos del Pic 16f877A
==============================================================================*/
void jConfigPic16f877A(void){
//RETADOR para inicialización de módulos-periféricos externos u
delay_ms(100);
//configuración del Puerto A
ADCON1=0x07; //configura los puertos A y E como digitales
CMCON=0x07; //desactiva las entradas del comparador analógico (necesario solo PUERTO
A)
TRISA=0b00000000;
PORTA=0x00; // BORRA INICILAMENTE EL PUERTO A
//configuración del Puerto B
TRISB=0b11111111;
PORTB=0x00;
//configuración del Puerto C
TRISC=0b00000000;
PORTC=0x00;
/*//configuración del Puerto D
TRISD=0b00000000;
PORTD=0x00;
//configuración del Puerto E
TRISE=0b00000000;
PORTE=0x00;*/
}
/*==============================================================================
6.2 Subrutina secuencia de led 1
==============================================================================*/
void jSecLed01(void){
unsigned char i=0;
LEDS=0;
RC0_bit=1;
delay_ms(200);
for(i=0;i<7; i++){
LEDS=LEDS<<1;
delay_ms(200);
}
LEDS=0;
}
/*==============================================================================
6.3 Subrutina secuencia de led 2
==============================================================================*/
void jSecLed02(void){
unsigned char i=0;
if (!PB1){
LEDS=0b11000000;
delay_ms(200);
for (i=0;i<6;i++){
LEDS=LEDS>>1;
delay_ms(200);
}
} else{

LEDS=0b01010101;
delay_ms(200);
LEDS=LEDS<<1;
delay_ms(200);
}

}
/*==============================================================================
6.4 Subrutina secuencia de led 3
==============================================================================*/
void jSecLed03(void){
unsigned char i=0;
LEDS=0b11111111;
delay_ms(200);
for (i=1;i<=4;i++){
LEDS=LEDS>>i;
delay_ms(700);
}
LEDS=0;
}
/*==============================================================================
6.5 Subrutina secuencia de led 4
==============================================================================*/
void jSecLed04(void){
unsigned char i;
unsigned char r;
LEDS=0;
RC0_bit=1;
delay_ms(200);
for(i=7;i>=1;i--){
r=i%2;
if(r==0){
LEDS=LEDS>>i;
Delay_ms(200);
} else {
LEDS=LEDS<<i;
Delay_ms(200);
}
}
LEDS=0;
}
/*==============================================================================
6.6 Subrutina PULSANTES01
==============================================================================*/
void jpulsantes(void){

if (!PB0&&!PB1){
BUZZER=1;
delay_ms(500);
}
if (!PB2&&!PB3){
RELE=1;
delay_ms(500);
}
RELE=0;
BUZZER=0;
}
/*==============================================================================
6.7 Subrutina PULSANTES02
==============================================================================*/
void jpulsantes02(void){
unsigned char i;

if (!PB0){
delay_ms(600);
if (!PB1){
delay_ms(600);
if (!PB2){
for(i=1;i<=3;i++){
BUZZER=0;
delay_ms(250);
BUZZER=1;
delay_ms(250);
}
}
}
}
if (!PB3){
delay_ms(600);
if (!PB2){
delay_ms(600);
if (!PB1){
for(i=1;i<=3;i++){
RELE=0;
delay_ms(250);
RELE=1;
delay_ms(250);
}
}
}
}

RELE=0;
BUZZER=0;
}
/*==============================================================================
7. DEFINICION DE LA SUBRUTINA MAIN (PROGRAMA PRINCIPAL)
==============================================================================*/
int main() {
jConfigPic16f877A();
while(1){
if (SW7==0 && SW6==0 && SW5==0 && SW4==0)
LEDS=0x00;
if (SW7==0 && SW6==0 && SW5==0 && SW4==1)
jSecLed01();
if (SW7==0 && SW6==0 && SW5==1 && SW4==0)
jSecLed02();
if (SW7==0 && SW6==0 && SW5==1 && SW4==1)
jSecLed03();
if (SW7==0 && SW6==1 && SW5==0 && SW4==0)
jSecLed04();
if (SW7==1 && SW6==1 && SW5==1 && SW4==1)
LEDS=0B11111111;
if (SW7==1 && SW6==1 && SW5==0 && SW4==0)
jpulsantes();
if (SW7==0 && SW6==1 && SW5==0 && SW4==1)
jpulsantes02();
}
}

6. CONCLUSIONES

En esta practica se obtuvo los conocimientos con respecto a los PIC16F877A, como usar sus pines con respecto a
la programación como deben activarse sus puertos a esto se incluye la ayuda del datasheet del mismo. Para esta
practica se realizo la simulación con el software MikroC.
Se pudo concluir que con ayuda del software de programación pudimos activar todos sus puertos como controlar las
entradas y salidas de ADCOM Y CNCOM con los cuales realizamos desde los encedidos de los leds hasta el buzzer
y el rele.
De manera unánime se puede concluir que para realizar estos procesos se necesita la ayuda del grabador de pic en
este caso se uso el software PicKIt2 para compilar el programa en el pic
ING. ITALO ROMAN MOGROVEJO PEÑALOZA
Docente UPS de Sistemas Microprocesados I

_______________________________ _______________________________

Jorge Quinde Johan Pérez

Das könnte Ihnen auch gefallen