hola
'-------------------------------------Puertos del LCD-----------------------------------------------
Define LCD_BITS = 4 'indicamos que el bus de datos del lcd sera de 4bit
Define LCD_DREG = PORTB 'el bus de datos sera el puerto B
Define LCD_DBIT = 0 'se usan los 4 bit menos significativos del puerto B
Define LCD_RSREG = PORTB 'RS estará en el puerto B
Define LCD_RSBIT = 4 'se usará RB4 para RS
Define LCD_EREG = PORTB 'E estará en el puerto B
Define LCD_EBIT = 5 'se usará el RB5 para E
Define LCD_RWREG = PORTB 'RW estará en el puerto B
Define LCD_RWBIT = 6 'se usará el RB6 para RW
Define LCD_COMMANDUS = 5000 'Tiempo de espera despues de ejecutar un comando del lcd en uSeg.
Define LCD_DATAUS = 100 'Tiempo de espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 100 'Tiempo de espera despues de inicializar el Display, solo se ejecuta una vez en mSeg.
'E (enable) habilita el lcd
'RS (register select) indica si es un comando o un carácter
'R/W (read/write) indica si es una lectura o escritura.
'la conexión R/W del LCD puede ir directamente a gnd, evitándonos su conexión al pic
'sin embargo su uso permite un mayor control sobre el lcd ya que podemos interrogarle acerca de su estado
'y saber cuando está listo para recibir un nuevo comando
'si R/W está conectado al pic y en PSI usamos la directiva Define LCD_READY_BUSY_FLAG = 1 los tiempos de espera
'serán ignorados por el compilador, ajustándose estos al estado de la 'bandera' (busy flag) del lcd
Define LCD_BITS = 4 / 8 'el bus de datos del lcd sera de 4 u 8 bits
'si es de 4 bits los datos se enviarán en el formato de primero nibble alto y después nibble bajo
Define LCD_DBIT = 0 'se usan los 4 bit menos significativos del puerto (RB0..RB3)
Define LCD_DBIT = 4 'se usan los 4 bit menos significativos del puerto (RB4..RB7)
'si el bus es de 8 bits este valor no se tiene en cuenta.
*************************
Para que los datos se muestren correctamente en proteus ( irección: -> dirección:) no es necesario cambiar las propiedades del lcd, es suficiente con poner R/W a gnd o conectarlo al pic.
El motivo por el cual no muestra la segunda línea en el modo de 4 bits (que si lo hace en una configuración de 8 bits) no lo se, pero tal como te decía anteriormente en la práctica funciona perfectamente a 4 bits.
En la web del amigo aitopes (
www.uControl.com.ar) tienes ya tres números de su revista, y en dos de ellas sendos artículos sobre el lcd, cuya lectura te recomiendo
un saludo
pd: no tomes proteus como un referente final porque te llevarás bastantes sorpresas.
EDITO: no es Define LCD_READY_BUSY_FLAG = 1 ... sino LCD_READ_BUSY_FLAG = 1