You are on page 1of 4

Practica motor DC y teclado 4*4

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);
}}}}}

Pantalla y teclado matricial

Objetivo : Desde el teclado matricial se ingresa un dato y se visualiza en la pantalla LCD

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)

#define LCD_DB4 PIN_D4


#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>
#include <kbd1.c>
void main()
{
char k;
lcd_init(); //inicializa el lcd
kbd_init(); //inicializar el teclado
lcd_putc("\f");//limpia la lcd
lcd_gotoxy(1,1); //ubica el cursor en la parte 1 1
Lcd_putc("\f BIENVENIDOS");// escribe en la posición del goto xy
lcd_gotoxy(1,2); //escribe la posición 1,2 en la pantalla lcd
printf (lcd_putc,"Presione una tecla");
delay_ms(2000);
printf (lcd_putc,"\f");//limpia la lcd
while(true) //inicia el bucle infinito
{
k=kbd_getc();//obtiene el dato del teclado y lo guarda en la variable char k

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
}}}