Microprocesadores y Microcontroladores

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 14

MICROPROCESADORES Y MICROCONTROLADORES

Paso 4

Tito J. Rodríguez Saavedra

94 538 465

Tutor

Jhon Jairo Leiva

Grupo:

309696_6

Universidad Nacional Abierta y a Distancia – UNAD


Escuela de Ciencias Básicas tecnología e ingeniería
Ingeniería Electrónica
Santiago de Cali
2017
INTRODUCCIÓN

En el siguiente escrito se realizaran dos circuitos con la utilización del


microcontrolador PIC16F877A, uno ayudara a censar la temperatura con alarmas
visuales auditivas, y el otro dará una serie de información que desplegara
totalmente legible en un display; esta unidad nos permitirá adquirir los
conocimientos relacionados con la implementación de microcontroladores.
CENSOR DE TEMPERATURA

Censara 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.

Código de programación para el PIC en función de censor de temperatura.

#include <16F877A.h> ///microcontrolador


#device adc=10 ///resolucion de lectura analoga a 10 bits
#fuses XT,NOWDT
#use delay(clock = 4000000)
#include <lcd.c> ////////libreria para el LCD
#BYTE PORTA = 0X05 //DIRECCION DE LOS PUERTOS
#BYTE TRISA = 0X85
#BYTE PORTB = 0X06
#BYTE TRISB = 0X86
#BYTE PORTC = 0X07
#BYTE TRISC = 0X87
#BIT green = PORTB.0 ///////////pines a trabajar
#BIT yellow = PORTB.1
#BIT red = PORTB.2
#BIT enable = PORTB.3
#BIT motor = PORTB.4

int16 lect=0; ///Variables para lectura y conversion de temperatura


float Tp=0.0;
float Temp=0.0;

void main(){
trisb=0B11100000;
trisa=0X00;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
lcd_init();
green=0;
yellow=0;
red=0;
motor = 1; ///////motor inicia apagado
enable = 1;
while(true){
set_adc_channel(0);
delay_ms(10);
lect=read_adc();
Tp = 5000.0 * lect/1023.0; /// Se mide temperatura en mV
Temp= Tp/10.0; // se pasa valor de temp a unidad
lcd_gotoxy(1,1);
printf(lcd_putc,"Temp Amb: %.2F",Temp);
/*estado bajo de la temp si la temperatura es menor o igual a 20 grados
el led verde se enciende y parpadea cada 2 segundos
y el motor esta apagado
*/
if (temp <= 20.0){
lcd_gotoxy(1,2);
printf(lcd_putc," ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MOTOR : OFF");
delay_ms(2);
red=0;
yellow=0;
green=1;
delay_ms(2000);
green=0;
delay_ms(2000);
}
/*si la temperatura es mayor a 20 y menor o igual a 28 el led amarillo
se enciende*/
if ((Temp > 20.0) && (Temp <= 28.0 )){
delay_ms(10);
green=0;
red=0;
yellow=1;
}
/*si la temperatura supera los 28 grados centigrados se enciende el motor
y el led rojo parpadea instantaneamente
*/
if ((Temp > 28.0) && (Temp <= 40.0)){
lcd_gotoxy(1,2);
printf(lcd_putc," ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MOTOR : ON");
delay_ms(2);
green=0;
yellow=0;
red=1;
delay_ms(250);
red=0;
delay_ms(250);
}
/*si la temperatura es superior a 28.0 el motor se enciende y se muestra
en pantalla, cuando la temperatura se estabiliza a 20 grados el ventilador
se apaga y se muestra en pantalla
*/
if (Temp >= 28.0){
delay_ms(2);
lcd_gotoxy(1,2);
printf(lcd_putc," ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MOTOR : ON");
motor=0;
enable=1;
} else if(Temp <= 20){
delay_ms(2);
motor=1;
enable=1;
lcd_gotoxy(1,2);
printf(lcd_putc," ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MOTOR : OFF");
}
}
}
Simulación en Proteus
detector de temp.rar

DISPLAY INFORMATIVO

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)

Código de programación para el PIC en función del display informativo.

#include <16F877A.H>
#FUSES XT,NOWDT
#USE delay(clock=4000000)
#include <lcd.c>
#use STANDARD_IO(B)

int16 var=0,save=0;
void main(){
lcd_init();
var=0;
while (true){
if (input(PIN_B0)==1){
var=1;
delay_ms(150);
lcd_putc('\f');
}
if (input(PIN_B1)==1){
var=2;
delay_ms(150);
lcd_putc('\f');
}
if (input(PIN_B2)==1){
var=3;
delay_ms(150);
lcd_putc('\f');
}
if (input(PIN_B3)==1){
var=4;
delay_ms(150);
lcd_putc('\f');
}
if (input(PIN_B4)==1){
var=5;
delay_ms(150);
lcd_putc('\f');
}
save=var;
switch(save){
case 0:
lcd_gotoxy(1,1);
printf(lcd_putc,"MicroProcesadorS");
lcd_gotoxy(2,2);
printf(lcd_putc,"Grupo 309696_6");
break;
case 1:
lcd_gotoxy(5,1);
printf(lcd_putc,"DIANA TORO");
lcd_gotoxy(2,2);
printf(lcd_putc,"Grupo 309696_6");
break;
case 2:
lcd_gotoxy(1,1);
printf(lcd_putc," ROGER RODRIGUEZ");
lcd_gotoxy(2,2);
printf(lcd_putc,"Grupo 309696_6");
break;
case 3:
lcd_gotoxy(1,1);
printf(lcd_putc,"TITO J RODRIGUEZ");
lcd_gotoxy(2,2);
printf(lcd_putc,"Grupo 309696_6");
break;
case 4:
lcd_gotoxy(1,1);
printf(lcd_putc,"LUIS FERNE ACOSTA");
lcd_gotoxy(2,2);
printf(lcd_putc,"Grupo 309696_6");
break;
case 5:
lcd_gotoxy(1,1);
printf(lcd_putc,"JEISON HERNANDEZ");
lcd_gotoxy(2,2);
printf(lcd_putc,"Grupo 309696_6");
break;
}
}
}
name per button.rar
CONCLUSIONES

En la actividad se puede evidenciar la utilización de Microcontroladores simulando


circuitos que tienen bastante aplicabilidad en muchas áreas de trabajo, como por
ejemplo las instalaciones de tipo hospitalario y clínico, el censor de temperatura
podría implementarse en una habitación con ambiente controlado para pacientes
de alto riesgo, el display informativo podría aplicarse a el área comercial indicando
ubicación, salidas de emergencia etc.
REFERENCIAS

 MODULO DE MICROPROCESADORES & MICROCONTROLADORES.


HECTOR URIEL VILLAMIL GONZALEZ. UNIVERSIDAD NACIONAL
ABIERTA Y A DISTANCIA ESCUELA DE CIENCIAS BASICAS
TECNOLOGIA E INGENIERIA. CHIQUINQUIRA Julio de 2009

También podría gustarte