Professional Documents
Culture Documents
2
Nombre: Dayra Lucia Delgado
Curso: Microprocesadores y Microcontroladores
Ejercicio No. 1
Debe sensar la temperatura ambiente y si est menor o igual de 30 grados el led verde
se encender y dar un solo sonido cada 2 segundos , si la temperatura esta entre los 30
y 38 grados se encender un led amarillo , y si supera los 39 grados hasta los 50 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 activacin de motor como MOTOR ON o MOTOR OFF.
#include<16f877A.h>
#device adc=100
# device *=16
#use delay (clock=4M)
#include <lcd.c>
#fuses xt, hs, nowdt,noprotect,nolvp
// configuracin de puertos
#define led_bajo pin_a1 // led verde
#define led_medio pin_a2 // led amarillo
#define led_alto pin_a3 // led rojo
#define sonido pin_b4 // speaker sonido
#define motor pin_b5 // motor
// definicin de variables
float temperatura;
void main(){
//******************
setup_adc_ports (RA0_ANALOG);//entrada lm35
setup_adc (ADC_CLOCK_INTERNAL); //***convertidor analgico digital
setup_COUNTERS (RTCC_internal.rtcc_div_1) ; //marca divisin para convertidor
set_adc_channel (0);
//*******************************
Lcd_init();//******inicio lcd
lcd_gotoxy(1,1);
printf(lcd_putc,"SENSOR TEMPERATURA");
delay_ms(200);
while(true){
temperatura= (float)read_adc()/2-1;// lectura convertidor anlogo
lcd_gotoxy(1,2);
printf(lcd_putc,"%f",temperatura);
delay_ms(100);
//**************Logica
if(temperatura<=30)
{
output_high(led_bajo); //led verde ON
output_low(led_medio); //led amarillo OFF
output_low(led_alto); //led rojo OFF
output_low(motor);
output_low(sonido);
lcd_gotoxy(8,2);
printf(lcd_putc, "MOTOR OFF");
}
if (temperatura>=30.1&&temperatura<=38){
output_low(led_bajo); //led verde OFF
output_high(led_medio); //led amarillo ON
output_low(led_alto); //led rojo OFF
output_high(motor);
delay_ms(100);
output_low(sonido);
output_high(sonido);
delay_ms(20);
output_low(sonido);
lcd_gotoxy(8,2);
printf(lcd_putc, "MOTOR ON ");
}
if (temperatura>=38.1&&temperatura<=50){
output_low(led_bajo); //led verde OFF
output_low(led_medio); //led amarillo OFF
output_high(led_alto); //led rojo ON
output_high(motor);
output_high(sonido);
lcd_gotoxy(8,2);
printf(lcd_putc, "MOTOR ON ");
}
}
}
Una vez realizado la lgica del cdigo, se pasa al siguiente paso que es abrir el compilador
que reconoce el cdigo (CCS C compiler).
Se abre un nuevo proyecto con un clik en File, luego en New Proyect Wizard, se elige la
familia del el Pic a utilizar (PIC 16f877A) y se escribe el cdigo, se guarda el archivo con
el nombre de SesorTemp.c.
Luego en el men superior le damos click en Compiler y luego Buid,
Si el cdigo no tiene errores aparecer el siguiente mensaje en la parte inferior
De esta manera internamente el programa crea los archivos compilados incluido el archivo
.hex que posteriormente ser llamado por Proteus.
Paso 2: Montaje de piezas en simulador (PROTEUS)
Se de la clik en el men File y luego New, en esta parte se lo gua a la ruta de archivos
previamente creada.
A continuacin se crea un mapa de trabajo en blanco para crear el diagramas con los
componentes, para ello se le da las opciones por defecto.
La siguiente ventana se le da clic por defecto.
Una vez cargado el cdigo se lo pone a funcionar con el botn play de la ventana del
proteus en el men inferior izquierdo
El valor de la temperatura aparece de manera permanente en el display, se puede aumentar
o disminuir el valor de la temperatura para identificar el proceso del PIC. Es decir, cuando
la temperatura tiene un valor menor o igual a 30 (en este caso 26.00), el led rojo y amarillo
se apagan, el led verde se enciende, mientras que los dems componentes se encuentran
apagados, el motor apagado, el sonido apagado, y el mensaje del display muestra Motor
OFF de la siguiente manera:
Cuando la temperatura tiene un valor mayor a 30 y menor o igual a 38 (en este caso 37.00),
el led rojo y verde se apagan, se enciende el led amarillo, empieza a girar el motor, el
sonido tambin se enciende con intermitencia de 2segundos, y el display muestra el
mensaje del motor en ON, de la siguiente manera:
Ahora, cuando la temperatura tiene un valor mayor a 38 y menor o igual a 50 (en este caso
46.00), el led verde y amarilo se apagan, se enciende el led rojo, el motor continua girando,
el sonido no tiene intermitencia y es continuo y el display muestra el mensaje del motor
ON, de la siguiente manera: