Upload
alejandro-avila-reyes
View
60
Download
2
Embed Size (px)
DESCRIPTION
reportes sobre practicas echas en pic 16f887
Citation preview
SISTEMAS INTEGRADOS EMBEBIDOS
Reportes de las practicas realizadas en pic 16f887
Alumnos:
Jesica Montelongo quintero, Ricardo Vázquez Córdova, José Alejandro Ávila Reyes
PRPFESOR:
Ing. JURADO MARRUFO ADRIAN
PRACTICA #1 pic 16f887 blink:
Objetivo:
Conocer el funcionamiento del pic 16f887 así como sus componentes principales y aprender la programación básica.
Contenido de la práctica:
Programa:
void main() {
ANSEL=0; // TODAS LAS ENTRADAS DEL UESTO A SON DIGITALES.
ANSELH=0;
C1ON_bit= 0; //Deshabilita la comparación
C2ON_bit=0; // " "
TRISA=0b00000001; // configura RA1_bit como salida y los demás del puerto a como entrada
while(1) // se inicia un ciclo repetitivo
{
RA1_bit=0; // se le asigna un valor a la salida durante un tiempo
delay_ms(1000); // se ajusta el tiempo de lo que se ejecutara
RA1_bit=1; // se le asigna un valor a RA1_bit en este caso para que mande 5v en el bit y active el led
delay_ms(1000); // se ajusta el tiempo en el que la acción se ejecutaran
} // se cierra el ciclo while
} // fin del programa
Diagrama eléctrico:
Conclusión:
En esta práctica se aprendió mucho acerca de los pic ya que nunca habíamos trabajado con ninguno de ellos y mucho menos programarlos y de esta manera se tiene una opción más para poder realizar nuestros proyectos económicamente y de una manera más viable.
Practica 2 # pasword
Objetivo:
Realizar un programa capaz de hacer que por medio de un teclado de 4x4 y una pantalla de cristal líquido poder abrir una puerta automáticamente ingresando un código
Contenido de la práctica:
Programa:
//////////////////// definir variables y tipo de dato que usaran///////
unsigned short tecla;
int num=0;
int enter=0; // iniciar todas las variables en 0
int valor=0;
// conexiones del keypad
char keypadPort at PORTD; // el keypad se conectara en el puerto D
//////////////////// conexiones del LCD///////////////////////////////////
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
//inicia programa
void main()
{
ANSEL = 0; //todo es digital
ANSELH = 0;
TRISA=0b00000001; // configura los pines del port a como entradas y solo RA1 como salida
C1ON_bit= 0; //Deshabilita la comparación
C2ON_bit=0; // " "
num=0;
enter=0; // Las variables se inician en 0
valor=0;
Keypad_Init(); // Inicializa el Keypad
Lcd_Init(); // Inicializa el LCD
Lcd_Cmd(_LCD_CLEAR); // limpia el display
Lcd_Cmd(_LCD_CURSOR_OFF); //deshabilita el cursos
Lcd_Out(1,1,"Contraseña:"); //introduce texto de inicio
do
{ //inicio do
tecla=0; //se asigna un valor a la variable tecla
do
tecla = Keypad_Key_Click(); //leer estado del teclado si se presionó alguna tecla
while (!tecla); //mientras que la variable sea diferente de 0
switch(tecla)
{ //inicio switch
case 1:
tecla = '1'; valor=1;
break; // 1 //se asignan los valores ASCI y numéricos a cada tecla
case 2:
tecla = 50; valor=2; break; // 2
case 3: tecla = 51; valor=3;break;// 3
case 5: tecla = 52; valor=4;break; // 4
case 6: tecla = 53; valor=5; break;// 5
case 7: tecla = 54; valor=6; break; // 6
case 9: tecla = 55; valor=7; break; // 7
case 10: tecla = 56; valor=8; break; // 8
case 11: tecla = 57; valor=9; break;// 9
case 14: tecla = 48; valor=0; break; // 0
case 15: tecla = 35 ; //#
Lcd_Cmd(_LCD_CLEAR); //limpiar pantalla
if (num==1407) //clave correcta
{
Lcd_Out(1,1,"Bienvenido");
RA1_bit=1;
delay_ms(5000);
RA1_bit=0;
}
else
{
Lcd_Out(1,1,"Codigo invalido");
RA1_bit=0;
delay_ms(1000);
}
num=0;
Keypad_Init();
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,"contraseña:");
enter=1;
valor=0;
break;
} //fin switch
num=(num*10)+valor; //acumular el numero
if (tecla!='#')
Lcd_Chr_Cp(tecla); //imprimir la tecla presionada
delay_ms(20);
} //fin del do
while (1);
} //fin de programa
Diagrama eléctrico:
Conclusion:
En esta practica se demostro la abilidad que se ha adquirido durante el curso para realizar programas complejos, utilizar librerias y diferentes variables asi como tambien los ciclos repetitivos para aplicar los programas a una situacion real como lo es en una puerta.
Firmas de las prácticas: