You are on page 1of 6

Ejercicio 1

Debe desarrollar un circuito micro controlado con lenguaje de programación C el cual debe
tener los siguientes elementos:

Micro controlador Pic16f877A

Display 16 X 2

Lm35 (sensor de temperatura)

2 leds (rojo , verde)

Motor 12 vdc (ventilador)

Parlante.

5 pulsadores

Debe sensar la temperatura ambiente y si está menor o igual de 20 grados el led verde se
encenderá y dará un solo sonido cada 2 segundos, si la temperatura esta entre los 20 y 28
grados se encenderá un led amarillo, y si supera los 28 grados hasta los 40 grados. El led
rojo se prendera y debe dar una alarma constante y prenderse el ventilador hasta que baje la
temperatura menor o igual a 20 grados. En el display se debe visualizar el valor de la
temperatura y la activación de motor como MOTOR ON o MOTOR OFF.

Especificaciones:

– ADC de aproximaciones sucesivas.

– Resolución = 10 Bits (1024 pasos).

» Ejemplo: para una tensión analógica de entrada de 5V

5𝑉 5𝑉
resolución = = = 4.89𝑚 𝑉
2𝑛 − 1 1024 − 1

– Tensión de referencia configurable:

• Absoluto (de 0 𝑎 + ).

• En un margen (−𝑉𝑟𝑒𝑓 𝑎 + 𝑉𝑟𝑒𝑓)

– ADC de 8 canales.
#include <16f877a.h>
#fuses hs,nowdt
#device ADC=10 //bits de resolución del pic
#use delay(clock=20M)
#define lcd_rs_pin pin_b0
#define lcd_rw_pin pin_b1
#define lcd_enable_pin pin_b2
#define lcd_data4 pin_b4
#define lcd_data5 pin_b5
#define lcd_data6 pin_b6
#define lcd_data7 pin_b7
#include <lcd.c>

float temperatura;
int intermitencia=0;
int periodo=44;
void pito()
{
if (intermitencia>=periodo)
{
output_high(pin_d4); // pito en alto
intermitencia=0;
}
else
{
output_low(pin_d4); // pito en bajo
intermitencia=intermitencia+1;
}

}
void main()
{
//*************************************
setup_adc_ports(RA0_ANALOG); //ENTRADA DE LM35
setup_adc(ADC_CLOCK_INTERNAL);//configuración del reloj
setup_COUNTERS(RTCC_internal.rtcc_div_1); //marca de división
set_adc_channel(0);//selecciona el canal 0 como entrada analógica
set_tris_d(0x00);
//******************************************
output_low(pin_d4);
lcd_init();//inicializar la LCD
lcd_gotoxy(5,1);
printf(lcd_putc,"Temperatura");

delay_ms(350);
lcd_init();

while(true)
{
temperatura=(float)read_adc()/2;//se asigna a la variable temperatura el dato leído
//***********grados centígrados
lcd_gotoxy(5,1);
printf(lcd_putc,"%f",temperatura);//muestro en pantalla el valor almacenado en temperatura
lcd_gotoxy(14,1);
printf(lcd_putc,"Grados");
delay_ms(20);
//**************si la temperatura es mayor a 20

pito();

if (temperatura<=20)//secuencia de programa cuando la temperatura es menor o igual a 20


{
output_high(pin_d0);//enciendo led verde
output_low(pin_d1);//apago led amarillo
output_low(pin_d2);//apago led rojo
output_low(pin_d3);//apago el motor
periodo=44;
lcd_gotoxy(5,2); //ubico el cursor del lcd
printf(lcd_putc,"Motor off");//mostrar en pantalla motor ON
delay_ms(20);

}
else if (temperatura <=28)//secuencia de programa cuando la temperatura es mayor de 20
pero menor o igual a 28
{
output_low(pin_d0);//apago led verde
output_high(pin_d1);//enciendo led amarillo
output_low(pin_d2);//apago led rojo

lcd_gotoxy(5,2);
printf(lcd_putc,"Motor off");//mostrar en pantalla motor ON
delay_ms(20);

//********************si la temperatura es menor o igual a 20


else
{
output_low(pin_d0);//apago led verde
output_low(pin_d1);//apago led amarillo
output_high(pin_d2);//enciendo led rojo
output_high(pin_d3);//enciendo el motor
periodo=0;
lcd_gotoxy(5,2);
printf(lcd_putc,"Motor on ");
delay_ms(20);
}

}
}
Ejercicio 2

El cual deberá en un display 16X2 desplegar el nombre del curso, numero de grupo y los nombres
uno por uno de los integrantes del grupo seguido del número de cedula los cuales cambiaran al
presionar cada uno de los 5 pulsadores (1 al 5 igual número de integrantes)

#include <16f877a.h>

#fuses hs,nowdt
#device ADC=10 //bits de resolución del pic
#use delay(clock=20M)
#define lcd_rs_pin pin_b0
#define lcd_rw_pin pin_b1
#define lcd_enable_pin pin_b2
#define lcd_data4 pin_b4
#define lcd_data5 pin_b5
#define lcd_data6 pin_b6
#define lcd_data7 pin_b7
#include <lcd.c>
int a;

void main()
{
set_tris_d(0x3F);
lcd_init();//inicializar la LCD
lcd_gotoxy(1,1);
//printf(lcd_putc,"MICROPRO GRUPO07");
//lcd_gotoxy(1,2);
//printf(lcd_putc,"PULSE UN BOTON ");
// delay_ms(350);

while(true)
{
a=input_d();
lcd_gotoxy(1,1);
printf(lcd_putc,"MICROPRO GRUPO07");
lcd_gotoxy(1,2);
printf(lcd_putc,"PULSE UN BOTON ");
if (a==16)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Leonel Moya Gutierrez ");
lcd_gotoxy(1,2);
printf(lcd_putc,"CC 1116544801 ");
delay_ms(1300);
}
else if(a==8)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Cesar Edwardo Gaviria ");
lcd_gotoxy(1,2);
printf(lcd_putc,"CC 73571209 ");
delay_ms(1300);
}
else if (a==4)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Luis Eduardo Pérez ");
lcd_gotoxy(1,2);
printf(lcd_putc,"CC 72202881 ");
delay_ms(1300);
}

else if (a==2)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Fauner Roballo ");
lcd_gotoxy(1,2);
printf(lcd_putc,"CC 1116020128");
delay_ms(1300);
}

}
}

You might also like