Professional Documents
Culture Documents
Objetivo controlar el giro del motor desde un teclado matricial 4*4 y visualizar mensajes de
funcionamiento en una pantalla LCD
Programación
#include <16f887.h>
#fuses hs,nowdt,mclr,NOLVP //configuracion de los fusibles
#use delay(clock=4M) //oscilador interno
#use fast_io(B) //uso para el teclado
#use standard_io(D) //Puerto para el LCD
#use fast_io(C)// salidas
//#byte port_c=0x07
#define LCD_DB4 PIN_D4 //configuración para el LCD
#define LCD_DB5 PIN_D5
#define LCD_DB6 PIN_D6
#define LCD_DB7 PIN_D7
#define LCD_RS PIN_D2
#define LCD_E PIN_D3
#include <lcd1.c> //libreria para la pantalla LCD
#include <kbd1.c> //Libreria para el teclado matricial
void main()
{
char k;
set_tris_b(0x3F); //establecer el puerto b como salidas
set_tris_c(0x00);
output_c(0x00);//establecer el puerto d en cero
lcd_init(); //inicia el lcd
kbd_init(); //inicia el teclado
lcd_putc("\f"); //limpia la pantalla lcd
lcd_gotoxy(1,1); //coloca el cursor en la posicion 1 del lcd
lcd_putc("\f BIENVENIDOS");
delay_ms(2000);
while(true){
k=kbd_getc();//obtener
printf(lcd_putc,"\f");
lcd_gotoxy(1,2);
printf(lcd_putc," Press A=ON D=OFF");
delay_ms(1000);
// Inicio del control del motor
if(k=='A'){
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
lcd_putc("f\ ENCENDIDO ");
delay_ms(1000);
output_high(pin_c0);
lcd_gotoxy(1,2);
printf(lcd_putc,"Elija sentido ");
delay_ms(2000);
lcd_putc("\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"DER--1 IZ--2");
while(k!='D')
{
k=kbd_getc(); // Se obtiene el dato del teclado
// Inicio de la programación para el cambio de giro
if(k=='1')
{
lcd_putc("\f");
delay_ms(50);
lcd_gotoxy(1,1);
lcd_putc("\f Giro Derecha");
output_low(pin_c3);
output_low(pin_c4);
output_high(pin_c1);
output_high(pin_c2);
}
if(k=='2')
{
lcd_putc("\f");
delay_ms(50);
lcd_gotoxy(1,1);
lcd_putc("\f Giro izquierda");
output_low(pin_c1);
output_low(pin_c2);
output_high(pin_c3);
output_high(pin_c4);
}
if(k=='D'){
lcd_putc("\f");
delay_ms(50);
lcd_gotoxy(1,1);
lcd_putc("\f Apagado");
output_c(0x00);
}}}}}
Programación
#include <16f887.h>
#fuses hs,nowdt,mclr,NOLVP //configuracion de los fusibles
#use delay(clock=8M)//oscilador interno
#use fast_io(B)
#use standard_io(D) //Puerto para el LCD
#use fast_io(C)
if(k!=0)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"tecla pulsada: %c",k);//imprime la variable almacenada cada ves que se pulsa
una tecla
}}}