TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Mac_Aco en 07 de Junio de 2003, 14:08:00
-
Hola primero un saludo a este foro que acabo de encontrar y que me gusta mucho
Me gustaría si alguno de vosotros me puede colocar un pequeño ejemplo para mandar a un LCD un mensaje, por ejemplo "Hola"
El problema viene en que tengo el Micro Pic Trainer V 1,1 y este LCD creo que es de 8 bits por eso no me funciona nada en ese Lcd
Si alguno de ustedes dispone de ese entrenador y me puede poner un ejemplo (con los define claro) se lo agradecería
Gracias y un Saludo
-
Tengo puesto esto despues de mirar como está conectado el LCD , pero no funciona
DEFINE LCD_DREG PORTB " Puerto de Datos del Lcd
DEFINE LCD_DBIT 0 " Selección del bit de inicio (0 or 4 si
"es 4-bit bus)
DEFINE LCD_RSREG PORTA " Puerto para Registro de
"Selección
DEFINE LCD_RSBIT 0 " Set de Bit del Registro de Selección
DEFINE LCD_EREG PORTA " Set Puerto para Enable
DEFINE LCD_EBIT 2 " Set bit de Enable
DEFINE LCD_RWREG PORTA " Set del puerto para
"Read/Write
DEFINE LCD_RWBIT 1 " Set de bit para Read/Write
DEFINE LCD_BITS 8 " Set Tamaño del bus (4 or 8 bits)
DEFINE LCD_LINES 2 " Set Número de lines del Lcd
DEFINE LCD_COMMANDUS 2000 " Set Retraso del
"comando en us
DEFINE LCD_DATAUS 50 " Set Retraso de datos en us
PAUSE 500
LCDOUT $FE, 1
LCDOUT "Hola"
end
¿alguna idea?
Gracias
-
Podrias mandar informacion de como esta conectado el lcd al micro?
No tengo el micropic trainer
Jorge
-
Hola Mac:
Yo tambien tengo el trainer y para poder mostrar datos en el display con un 16F84 utilicé el siguiente código:
DEFINE OSC 4 " Definición de la frecuencia de reloj
DEFINE LCD_DREG PORTB " Define el bus de datos del LCD
DEFINE LCD_RSREG PORTA " Define el port de registro
DEFINE LCD_RSBIT 0 " Define el bit 0 de port A como RS
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 2
DEFINE LCD_BITS 8
DEFINE LCD_LINES 2
pause 700 " pausa para inicializar el display
lcdout $FE,1 " limpia el visor
lcdout $FE,2 " primera línea
lcdout "Hola"
lcdout $FE,$C0 " segunda línea
lcdout "Como estas"
Y me funcionó, eso si, pon SW2 y SW4 en Off y SW3 a 0 si no no funciona, ya que rn mi esquema la entrada r/w siempre estaba en w,
salu2
-
Ante todo gracias por contestar, a mi no me ha funcionado tu ejercicio y es extraño pues con ensamblador e incluyendo la librería de Lcd (Lcdxx.inc) va perfecto, pero claro me empezaba a gustar esto del Basic
No encuentro cual puede ser el problema
Para Eduagra: El Lcd está conectado con los bits de datos de Rb0 a Rb7de portb, Rs a Ra0, Rw a Ra1 y E a Ra2 de porta (con un pequeño jumper que lo activa)
-
Ave Mac.
He vuelto a probar el código que te he dejado escrito y a mi me funciona OK. Si t fijas la configuración es la misma que tienes tu.
Lo he probado en el Trainer y funciona bien.
¿Que pic estas usando?, recuerda que si usas un 16F628 debes de poner la siguiente línea:
CMCON = 7 " Configura todos los pines como digitales
Un saludo y a ver si lo solucionamos.
-
He probado con f84 y f876 este último colocando ADCON1 = % 00001111 y no me funciona
Solo queda por preguntar ¿cual es tu editor ?
Yo uso el microcode studio 2.0.2.2
De todas formas mañana mismo por poco que pueda iré a la tienda a comprar un lcd de 4 bits (hasta que funcione esto) y luego ya iré por el hermano mayor
Muchas gracias y un saludo
-
Hola Mac,
Te envío un ejemplo simple que hice con el micropic Trainer. A mi me funciono en su día.
"********************************************
"* AUTOR: Ricardo Gamboa *
"* FECHA: 29/04/2001 *
"* VERSION:1.00 *
"********************************************
"
"********************************************
"* DESCRIPCION:una LCD de 2x16 se visualiza *
"* una opcion de menu y con un boton se va *
"* cambiando el valor de esa opcion *
"********************************************
"********************************************
"* MICROCONTROLADOR: 16F84A *
"* Estado ultima compilacion: Funciona *
"********************************************
"**********************************************
"* REVISIONES *
"* REV *
"**********************************************
"
" La conexion del LCD con el microcontrolador Pic debe ser:
" LCD PIC
" D0 PortB.0
" D1 PortB.1
" D2 PortB.2
" D3 PortB.3
" D4 PortB.4
" D5 PortB.5
" D6 PortB.6
" D7 PortB.7
" RS PortA.0
" E PortA.2
" RW PortA.1
" Vdd 5 V
" Vss Masa
" Vo 10K potenciometro
"ATENCION: LOS INTERRUPTORES RA0, RA1 Y RA2 DEBEN ESTAR EN POSICION 1
"ATENCION: SI SE PRUEBA EL PROGRAMA EN UN MICROPIC TRAINER.
" DEFINICIONESPARA EL LCD **********************
DEFINE LCD_DREG PORTB "Defino el puerto de datos
" DEFINE LCD_DBIT 0 "BIT de comienzo en bus de 4 bits, no aplicado aquí
DEFINE LCD_RSREG PORTA "Ajusto puerto para el Regiter Select
DEFINE LCD_RSBIT 0 "Defino el bit del puerto A para RS
DEFINE LCD_EREG PORTA "Defino el puerto de ENABLE
DEFINE LCD_EBIT 2 "Defino el bit del puerto A que controla Enable
DEFINE LCD_RWREG PORTA "Defino el puerto para control RW
DEFINE LCD_RWBIT 1 "Defino el bit del puerto A que controla RW
DEFINE LCD_BITS 8 "Defino el tamaño del bus de datos, bus de 8 bits
DEFINE LCD_LINES 2 "Defino el numero de lineas del display
DEFINE LCD_COMMANDUS 2000 "Defino el tiempo de retaardo de comando en microseg.
DEFINE LCD_DATAUS 50 "Defino el tiempo de retardo de dato en microsegundos
" FIN DEFINICIONES LCD *************************
" VARIABLES **********************
i VAR WORD
" FIN VARIABLES ******************
i=1200
TRISA.3=1
Pause 1000 " Espero 1 segundos para inicializar LCD
GoSub ver
bucle:
Pause 250
IF PORTA.3=1 Then
i=i*2
IF i>=34000 Then i=1200
GoSub ver
EndIF
GoTo bucle " Repito un bucle infinito
ver:
LCDOut $fe, 1 " Borro el display
LCDOut "Velocidad" " Visualizo velocidad
LCDOut $fe,$C0 " Pongo cursor al principio de la segunda linea
LCDOut DEC i
Return
Saludos
Ricky
-
Bueno por fin , tu ejercicio funciona correctamente en el trainer
Ahora compararé lo que se ha puesto en los anteriores con el tuyo a ver donde se producía mi error o cual es la diferencia
Muchas grácias