TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado 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.
-
hola!! :P Bienvenido al FORO :-/ :-/
primero en que estas programando en C?
-
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.
-
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.
-
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.
-
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
-
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.
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.
-
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:
-
Si, con el último post hize que el tema no perteneciese ahi, en todo caso thx por la info.
-
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
-
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
-
Esta excelente eso, lo voy a estudiar, no pensé que fuese posible hacer eso, mis respetos al que lo diseño.
-
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
-
Y en el caso mio es todo lo contrario, a duras penas me defiendo en basic.
-
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 ! 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:
-
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:
-
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:
-
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.