Professional Documents
Culture Documents
Debe desarrollar un circuito micro controlado con lenguaje de programación C el cual debe
tener los siguientes elementos:
Display 16 X 2
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:
5𝑉 5𝑉
resolución = = = 4.89𝑚 𝑉
2𝑛 − 1 1024 − 1
• Absoluto (de 0 𝑎 + ).
– 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();
}
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);
}
}
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);
}
}
}