Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Que presentan:
Estudiantes de la carrera:
Ingeniera en Sistemas Computacionales
Fecha:
Introduccin:
Prctica 1.- SEMFORO
Prctica 2.- LETRERO CON DESPLAZAMIENTO
Prctica 3.- CONTROL DE TEMPERATURA
Prctica 4.- COMUNICACIN SERIAL
Introduccin:
Hoy en da, la tecnologa est por todos lados, estamos en una poca donde el desarrollo
va de la mano con la tecnologa, y con tanta mquina, Como crees que se controlan?. El
microcontrolador es uno de los logros ms sobresalientes del siglo XX. Hace un cuarto de
siglo tal afirmacin habra parecido absurda. Pero cada ao, el microcontrolador se acerca
ms al centro de nuestras vidas, forjndose un sitio en el ncleo de una mquina tras otra.
Su presencia ha comenzado a cambiar la forma en que percibimos el mundo e incluso a
nosotros mismos. Cada vez se hace ms difcil pasar por alto el microcontrolador como otro
simple producto en una larga lnea de innovaciones tecnolgicas.
Los microcontroladores tienen millones de usos, pero para que te des una idea, esta es una
pequea lista con alguno de los mbitos en los que se usan:
Componentes
Los componentes que ocuparemos para esta prctica son:
1 LED verde
1 LED amarillo
3
1 LED rojo
1 microcontrolador PIC16F688
3 resistencias de 270 Ohms
El diagrama de conexiones es el siguiente:
#use delay(clock=4M)
#use fast_io(a) //Declara puerto a usar
#byte salidas=0x05 //se ubica en qu direccin de memoria est el puerto
#bit verde=0x05.0 //PA0 controla foco verde
#bit amarillo=0x05.1 //PA1 controla foco amarillo
#bit rojo=0x05.2 ////PA0 controla foco rojo
//Funciones
void inicializar(){
salidas=0;
set_tris_a(0b00000000);
SETUP_ADC(ADC_OFF); //Se apaga el convertidor analgico-digital
}
void parpadeo_verde()
{
verde=0;
delay_ms(500);
verde=1;
delay_ms(500);
}
void main()
{
inicializar();
while(TRUE)
{
verde=1; //Prende el foco verde
delay_ms(3000); //Espera 3 segundos
parpadeo_verde(); //Llama a la funcin de parpadeo del foco verde
parpadeo_verde();
verde=0; //Apaga el foco verde
amarillo=1; //Prende el foco amarillo
delay_ms(2000); //Espera 3 segundos
amarillo=0; //Apaga el foco amarillo
rojo=1; //Prende el foco rojo
delay_ms(3000); //Espera 3 segundos
rojo=0; //Apaga el foco rojo
}
}
#use delay(clock=4M)
#include <lcd_flex.c>
/*es importante que la librera se invoque
despus de haber declarado la velocidad del reloj de otra
forma mandar error en la compilacin*/
#use fast_io(c)
#use fast_io(a) /*la librera est creada para controlarse
en el puerto A y C dentro de la misma librera se declara
como se van a usar estos puertos que sera como salidas, es por
eso que ya no se necesita declarar el puerto en la parte de
funciones*/
//No se necesita funcin para inicializar el micro, la funcin lcd_init() lo hace
signed int i; int j;
void limpiar(int p) //Para limpiar la LCD a medida que se escribe
{ //"p" es la direccin donde se borra
lcd_gotoxy(1,p);
for(j=1; j<=16; j++) //Ciclo para limpiar todas las columnas de la fila
printf(lcd_putc," ");
}
void main() //Funcion principal
{
lcd_init(); //funcin para iniciar LCD, incluida en lcd_flex.c
while(true) //Repetir indefinidamente
{
for(i=16; i>0; i--)
{
j=i; if(i<5) j=5; //'j' toma el valor de 'i' excepto si i<5
/*Esto con el propsito de que el letrero se mueva
de derecha a izquierda y que quede centrado*/
lcd_gotoxy(j,1);
printf(lcd_putc,"Sistemas"); //Solo se imprime en el rengln 1 y queda centrado por 'j'
lcd_gotoxy(i,2);
printf(lcd_putc, "segundo semestre");
//Para escribir en el segundo rengln
delay_ms(100); //Retardo de desplazamiento de las letras
if(i==1) //Si el rengln 2 llega a la localidad 1, se har un retardo ms largo
delay_ms(900);
limpiar(1); //Limpia el rengln 1
limpiar(2); //Limpia el rengln 2
}
}
}
El diagrama a bloques:
//funciones
inicializar(){
set_tris_a(0b00001011);
setup_adc_ports(sAN0|VSS_VREF);
setup_adc(ADC_CLOCK_DIV_32);
set_adc_channel(0);
set_tris_c(0x00);
lcd_init();
}
//principal
main(){
inicializar();
while(TRUE){
temp=read_adc(); //aqui se obtiene la temperatura que est registrando el sensor
temp_final= temp* 0.1466; //aqui se hace el clculo para que el micro sepa interpretar la
informacin
lcd_gotoxy(2,1); //ajuste de coordenadas de impresin en la LCD
printf(lcd_putc,"T= %3.2f grados",temp_final); //despliegue en la LCD de la temperatura
que se est midiendo
if (temp_final>34)
{
vent=1; //Encendido del ventilador
delay_ms(3500); //retardo de 3.5 segundos
}
else
{
vent=0;
printf(lcd_putc,"\f");
}
}
}
10
11
//Funciones
inicializar(){//funcin que inicializa el microcontrolador. Debe ser lo primero en invocarse en
el programa
leds=0;//limpiamos el puerto A q se le puso el nombre de leds
set_tris_a(8);// puertoa como salida para exhibir lo que se recibio de la PC
//menos el PA3 q es entrada para el MCLR, as q la informacin de la PC no se
//ver completa por la falta de 3 pines en el puerto A
set_tris_c(0b00100000);//PC4 salida (transmisin) PC5 entrada (recepcin)
}
12
Anexos:
Diagrama de pines PIC16f688
13
14