TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: AABHGA en 10 de Septiembre de 2006, 21:26:07

Título: Teclado y LCD Juntos
Publicado por: AABHGA en 10 de Septiembre de 2006, 21:26:07
Hola a todos los miembros de esta comunidad, soy no muy nuevo por aca pero es la primera vez que pregunto, frecuentemente visito su web y saco información que me ha sido muy valiosa en algunos proyectos.

Lo que intento hacer actualmente es con un PIC 16F628 es conectar un lcd y un teclado de 4x4, ya tengo el programa y me trabaja muy bien, pero en un 16F877, al quererlo pasar al 628 he encontrado algunos problemas ya resueltos casi todos excepto uno que es el uso 16 puertos como I/O y no he podido configurar el PORTA(5) (Pin Nº 4) para que me trabaje de esta manera, no se si la respuesta a esto será de configuración a la hora de grabar el programa en el micro o alguna modificación en la electrónica del proyecto.

Bueno eso es todo, mil gracias y espero su respuesta.
Título: Re: Teclado y LCD Juntos
Publicado por: samshiel_pic en 10 de Septiembre de 2006, 21:33:50
hola!!  :P Bienvenido al FORO :-/ :-/

primero en que estas programando en C?
Título: Re: Teclado y LCD Juntos
Publicado por: Veguepic en 10 de Septiembre de 2006, 23:32:42
Hola AABHGA:

Pues te ocurre eso porque el pin RA5 es solo entrada, todo los demas son I/O.

Dale una revisada al datasheet pagina 11, 13 segun adobe.

Suerte.
Título: Re: Teclado y LCD Juntos
Publicado por: AABHGA en 11 de Septiembre de 2006, 00:28:31
Gracias por tu respuesta veguepic, no había revisado eso, si es solo entrada, pero entonces me queda una duda, ¿es necesario utilizar siempre la resistencia de 4.7K que va entre este pin y el positivo? si no es necesario, ¿debo aplicar alguna instrucción en especial en el programa como un DEFINE?

Para samshiel_pic, estoy programando en Basic, ya que desde hace muchos años conozco este lenguaje y me defiendo muy bien con el, porque C la verdad no me es muy agradable y Assembler me encanta pero no le he dedicado el tiempo suficiente a aprender.

De nuevo gracias.
Título: Re: Teclado y LCD Juntos
Publicado por: Veguepic en 11 de Septiembre de 2006, 01:08:23
Sin un diagrama para ver como conectas tus pines es bastante dificil responderte. Supongo que la resistencia de 4.7K es de pull up, por lo cual dependiendo de lo que quieres hacer sera necesaria, pues en el puerto A no tiene internamente.

Con respecto al DEFINE, sin saber que deseas hacer no sabria decirte.

Saludos.
Título: Re: Teclado y LCD Juntos
Publicado por: samshiel_pic en 11 de Septiembre de 2006, 05:38:54
hola  AABHGA (parece que me e  atragantao jeje  :D) prueba poniendo este define.

@ DEVICE PIC16F628,WDT_OFF,PWRT_ON,MCLR_OFF,BOD_OFF,CPD_OFF,PROTECT_OFF

con esto creo que deberias de solucionar lo de RA5, ya que no estoy muy ducho en basic
Título: Re: Teclado y LCD Juntos
Publicado por: AABHGA en 11 de Septiembre de 2006, 14:32:40
Gracias por la info samshiel_pic, voy a probar haber que tal, en si lo que ando haciendo es un sistema donde pueda diferenciar tipos de moneda (estilo teléfono monedero) para el cual necesito un LCD que consume 6 puertos en total, los optoacopladores que son 2 puertos, y los 8 que se consume el teclado de 4x4.

Lo de la resistencia de 4.7K si es una pull up (que la verdad no se que significa xD).

Ahora otro problema que se me presenta es que necesité modificar el programa para reducir algunas lineas porque la verdad el proyecto final me va a consumir casi toda la capacidad del 628, al hacer las variaciones en el código me presentó el problema que no trabaja, aca a continuación les dejo un copy/paste del código haber si me pueden dar una pequeña mano que la verdad no se de donde viene el error.

Código: [Seleccionar]
DEFINE LCD_DREG PORTA
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 6
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 7
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

COL VAR BYTE
FIL VAR BYTE
KEY VAR BYTE

TECLADO:
FOR  COL = 0 TO 3 STEP 1
    HIGH PORTB(COL)
        FOR FIL = 3 TO 7 STEP 1
            IF PORTB(FIL) = 1 THEN
                IF FIL = 4 THEN KEY = (COL+1) + (FIL-3) + 47
                IF FIL = 5 THEN KEY = (COL+1) + (FIL-3) + 49
                IF FIL = 6 THEN KEY = (COL+1) + (FIL-3) + 51
                IF FIL = 7 THEN
                    IF COL = 0 THEN KEY = 42
                    IF COL = 1 THEN KEY = 48
                    IF COL = 2 THEN KEY = 35
                ENDIF
                IF COL = 3 THEN
                    IF FIL = 4 THEN KEY = 65
                    IF FIL = 5 THEN KEY = 66
                    IF FIL = 6 THEN KEY = 67
                    IF FIL = 7 THEN KEY = 68
                ENDIF
                GOSUB DISPLAY
            ENDIF
        NEXT FIL   
    PAUSE 50
    LOW PORTA(COL)
    PAUSE 50
NEXT COL
GOTO TECLADO

DISPLAY:
LCDOUT $FE, 1, KEY
RETURN
END

Por si se preguntan porque asigno valores en vez de la letra es porque utilizo el código ASCII correspondiente a cada letra, asi acorto muchas lineas de código.

Gracias de nuevo.
Título: Re: Teclado y LCD Juntos
Publicado por: Veguepic en 11 de Septiembre de 2006, 16:23:28
Una traduccion literial seria "jalar arriba"  :?, la wiki-pic de Nocturno te explica mejor:

http://www.elrebujito.es/modules.php?name=Guiki&MODE=SHOW&PAGE=Pull-Up

Tu tema no pertenecia al foro de primeros pasos, en este lugar tendras mayor probabilidad de respuesta.

Suerte.  :wink:
Título: Re: Teclado y LCD Juntos
Publicado por: AABHGA en 11 de Septiembre de 2006, 16:53:01
Si,  con el último post hize que el tema no perteneciese ahi, en todo caso thx por la info.
Título: Re: Teclado y LCD Juntos
Publicado por: navaismo en 11 de Septiembre de 2006, 18:56:40
Hola AABHGA por aqui pusieron un teclado con pullups pero para ahorrate la busqueda aqui lo pongo, el autor hijole, no me acuerdo deja checo........no pues no lo encontre.

aqui el programa

optionreg.7 = 0 'habilitar pullups

 Col    var byte            ' COLUMNAS
 Row    var byte            ' FILAS
 Key    var byte[3]         ' TECLAS



 main:

  Gosub Getkey             ' LEER TECLA PRESIONADA
 
goto main

getkey:

  pause 50              ' ANTIRREBOTE

 getkeyu:               ' ESPERA QUE TODAS LAS TECLAS ESTEN ABIERTAS           

 PORTB = 0              ' TODO EL PORTB APAGADO
 TRISB = 240            ' MITAD SALIDA Y MITAD ENTRADA
 If (PORTB >> 4) <> 15 Then Getkeyu ' SI CUALQUIER TECLA ES APRETADA, REGRESA
 
 pause 50               ' ANTIREBOTE

 getkeyp:
                        ' ESPERA POR UNA TECLA
         
  For Col = 0 to 3            ' 4 COLUMNAS EN TECLADO
   PORTB = 0                  ' TODOS LOS PINES DE SALIDA APAGADOS
   TRISB = (Dcd Col) ^ 255    ' PONER UN PIN DE COLUMNA COMO SALIDA
   row = PORTB >> 4           ' LEER FILA
    If Row <> 15 Then Gotkey  ' SI UNA TECLA APRETADA VE A GOTKEY
  Next Col

 Goto Getkeyp                 


 Gotkey:                      ' CAMBIA FILA Y COLUMNA POR TECLA DE 0-9, * o #
      lcdout $fe,1,bin row
      pause 1000
     Key = (Col * 3) + (Ncd (Row ^ 15))
     
     if key=10 then
      goto ini
      endif
   
     if key=11 then
      key=0
     endif
     
     if key=12 then
      key="#"
     endif
return

es para un 877 por el option reg no se como se habiliten en el 628 si sirve  comprobado.
---------------------------------------------------------------------------

Ya encontre pude entrar a MIarroba gracias a Pao fue LEDROJ quien me lo paso y aqui lo dejo tal cual me lo mando



Título: Re: Teclado y LCD Juntos
Publicado por: LordLafebre en 12 de Septiembre de 2006, 18:35:40
Hola:

mira aqui:

http://www.todopic.com.ar/foros/index.php?topic=3676.15

Batman123 puso un teclado y un lcd en un solo puerto y le funciono sin problemas, puedes estudiar ese codigo, este es el diagrama:

(http://img170.imageshack.us/img170/853/adjuntosiz4.jpg)

y aqui esta el hex:

http://miarroba.com/foros/ver.php?foroid=348538&temaid=3821626
Título: Re: Teclado y LCD Juntos
Publicado por: AABHGA en 12 de Septiembre de 2006, 19:52:03
Esta excelente eso, lo voy a estudiar, no pensé que fuese posible hacer eso, mis respetos al que lo diseño.
Título: Re: Teclado y LCD Juntos
Publicado por: samshiel_pic en 13 de Septiembre de 2006, 12:05:10
Yo todos mis montajes con LCD y teclado son como se muestran en la foto anterior y todo va de lujo no ahi ningun problema ni diferencia solo que tienes que utilizar una libreria modificada de lcd y teclado.
El problema es que yo el programa lo realizo en CCS y en basic como que toy muy pez  :D
Título: Re: Teclado y LCD Juntos
Publicado por: AABHGA en 13 de Septiembre de 2006, 15:33:48
Y en el caso mio es todo lo contrario, a duras penas me defiendo en basic.
Título: Re: Teclado y LCD Juntos
Publicado por: AABHGA en 15 de Septiembre de 2006, 14:35:15
Lord, una última preguntica, traté de comunicarme con batman123 pero parece que no se conecta mucho, la duda es que revisando el código, veo que no hay nada de especial en la lectura del teclado ni en mostrar las cosas en el lcd, entonces me preguntaba si cuando uno usa el teclado, no empieza a mostar cosas raras en el lcd?
Título: Re: Teclado y LCD Juntos
Publicado por: samshiel_pic en 15 de Septiembre de 2006, 15:07:03
hola !  segun mi experiencia en el trabajo con ese tipo de montajes es que se usa exactamente igual pero lounicco que difiere es el uso de unas librerias modificadas de teclado y lcd (siempore hablo del trabajo en CCS). Pero que no hace cosas raras jeje :mrgreen:
Título: Re: Teclado y LCD Juntos
Publicado por: LordLafebre en 15 de Septiembre de 2006, 15:45:25
Lord, una última preguntica, traté de comunicarme con batman123 pero parece que no se conecta mucho, la duda es que revisando el código, veo que no hay nada de especial en la lectura del teclado ni en mostrar las cosas en el lcd, entonces me preguntaba si cuando uno usa el teclado, no empieza a mostar cosas raras en el lcd?

Hola:

no habia probado eso, pero la unica manera de saberlo es probando  :mrgreen:
Título: Re: Teclado y LCD Juntos
Publicado por: electronando en 17 de Septiembre de 2006, 21:24:55
disculpen me acuerdo de ese programa de batman , pero no quiero pecar de aguafiestas pero segun uno analiza el esquema no es tan seguro para una aplicacion digamos comercial pues supongamos q en un instante de tiempo en que estoy mandando datos o displayando un mensaje se me ocurra jugar con el teclado no me alteraria los datos q estoy mandando bueno es una acotacion no se si ocurrira lo que comento pero a veces por ahorrar al final nos sale caro  :mrgreen:
Título: Re: Teclado y LCD Juntos
Publicado por: AABHGA en 17 de Septiembre de 2006, 23:58:05
Pues en las pruebas que yo hize, si me daba por hacer pendejadas con el teclado, el lcd mostraba cosas raras, me comuniqué por mail con batman y me dijo que dentro de la rutina el desactivaba y activaba el LCD segun fuera el caso, pero la verdad no vi eso.