TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
22 de Agosto de 2014, 10:43:33

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
347475 Mensajes en 38989 Temas por 40588 Usuarios
Último usuario: loralangelo
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Microcontroladores PIC
| |-+  Lenguaje Basic para microcontroladores PIC (Moderadores: dogflu66, doppel, jansuini, Marioguillote, aitopes)
| | |-+  Teclado y LCD com Mikrobasic
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Marcar como favorito Imprimir
Autor Tema: Teclado y LCD com Mikrobasic  (Leído 6080 veces)
Moyin
PIC16
***
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 102

La perseverancia una virtud de triunfadores....


« : 09 de Diciembre de 2006, 01:36:27 »

Que tal mis amigos, aquí nuevamente con algunas dudas....he tratado de emplear el código de samples de MKB para implementar un circuito de teclado donde recurro al
keypad_init(portx) del juego mde instrucciones  del programa, después de un buen rato veo que el código lo que hace es barrer columna por columna un "1" por los bits altos del puerto, estuve monitoreando mediante el otro puerto la salida que  genera el teclado a través de una variable que igualé al puerto:
      kp = Keypad_Read
       portc=keypad_read
la situación es que no encuentro una lógica para emplearlo con otro dispositivo por ejemplo con un lcd, en lo samples del programa viene un ejemplo pero talvez traiga un error ya que no me funciona es más no hace nada. Alguien tiene idea de como usar esta función,  el código de ejemplo es el siguiente:


program keypad_test

dim kp, cnt as byte
dim txt as string[5]

main:

  cnt = 0
  Keypad_Init(PORTC)
  Lcd_Init(PORTB)          ' Initialize LCD on PORTC
  Lcd_Cmd(LCD_CLEAR)       ' Clear display
  Lcd_Cmd(LCD_CURSOR_OFF)  ' Cursor off

  Lcd_Out(1, 1, "Key  :")
  Lcd_Out(2, 1, "Times:")

  while TRUE
    kp = 0

    '--- Wait for key to be pressed
    while kp = 0
      '--- un-comment one of the keypad reading functions
      kp = Keypad_Released
      'kp = Keypad_Read
    wend

    Inc(cnt)

    '--- prepare value for output
    if kp > 10 then
      kp = kp + 54
    else
      kp = kp + 47
    end if

    '--- print it on LCD
    Lcd_Chr(1, 10, kp)
    WordToStr(cnt, txt)
    Lcd_Out(2, 10, txt)
  wend
end.

Que significa esa suma de +47 y +54, es acaso alguna forma de conversión?
Un saludos a todos....gracias Mr. Green
En línea

Sonrie Cristo te ama
navaismo
Jubilado Todopic
PIC24H
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1973



« Respuesta #1 : 09 de Diciembre de 2006, 02:09:10 »

Hola pues si es una especie de conversion esas sumas mira prueba este codigo:

program Key_LCD

dim key as byte
dim keyt as string[5]

main:                'inicializacion de lcd y keypad
delay_ms(1000)

keypad_init(portb)
lcd_config(portd,3,2,1,0,portd,4,5,6)
lcd_cmd(lcd_clear)
lcd_cmd(lcd_cursor_off)

 leek:
   key = keypad_read     ' lee la tecla que se apreto
   ByteToStr(key,keyt)
   lcd_out(1,1,"Tecla #: ")  'ver la tecla en el lcd
   lcd_out_cp(keyt)
 goto leek
end.

y aqui la conexion segun la ayuda tambien es compatible con Keypads de 4x1 4x2 y 4x3 pero no logro hacerlo jalar bien habria que ver que pasa pero en modo 4x4 funciona



Y si conectaste como el ejemplo de la ayuda tendrias que cambiar el puerto porque usan el PORTC para el Keypad y en la imagen lo conectan al PORTB

se me olvido aclarar que: funciona a 4x4 porque si presionas la tecla 4 te dara el valor 5 asume el programa que puse que existen 4 columnas hay que checar eso
« Última modificación: 09 de Diciembre de 2006, 02:12:00 por navaismo » En línea

"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."
Moyin
PIC16
***
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 102

La perseverancia una virtud de triunfadores....


« Respuesta #2 : 10 de Diciembre de 2006, 01:27:44 »

Nuevamente gracias Max ya vi tu ejemplo y lo probe y funcionó miuy bien, de hecho hice una poequeña modificación para ver en binario el código de la tecla presionada, este es el ´programa:

program Teclado
dim key as byte

main:
trisc=0
delay_ms(1000)

keypad_init(portb)    'Inicializo el puertoB para el teclado

   key = keypad_read     'Lee la tecla que se apreto
portc=key                'Muestra el código de la teclka en el byte del puertoC

end.



Un saludo  rebotando
En línea

Sonrie Cristo te ama
navaismo
Jubilado Todopic
PIC24H
****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1973



« Respuesta #3 : 10 de Diciembre de 2006, 01:40:07 »

Excelente Moyin, que bien que te quede como querias y para eso estamos pa ayudarnos Wink



PD: Moyin checa tu Sexo lol
En línea

"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."
Moyin
PIC16
***
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 102

La perseverancia una virtud de triunfadores....


« Respuesta #4 : 10 de Diciembre de 2006, 03:19:57 »

Gracias Max por la observación, ya  corregí el detalle  lol
En línea

Sonrie Cristo te ama
Draycko
PIC10
*
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 13


« Respuesta #5 : 16 de Diciembre de 2006, 03:42:04 »

Hola moyin! Smile

La suma que se hace de var+48 o var+$30 es para convertir el numero obtenido a valor ASCII

por ejemplo el número 1 es el valor 31 hexadecimal y 49 decimal

podrás encontrar varios ejemplos en la carpeta de instalación de Mikrobasic---- Examples

Éxito!!!
En línea
TODOPIC
   

 En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines XHTML 1.0 válido! CSS válido!
Página creada en 0.054 segundos con 23 consultas.
anything