Problema PIC16F688 + LCD

Que tal?
El año pasado intenté realizar un proyecto con este 16F688 y una LCD, estuve batallando varios días, y no logré hacer funcionar la LCD.

Ahora, debo utilizar un microcontrolador pequeño, y la LCD. Tengo 2 PICs de éstos y sería un desperdicio no usarlos.

Estoy trabajando en PIC Simulator IDE (ya lo intenté también en MikroBasic y no funciona). El comando LCDInit sí funciona, pero de allí en adelante, solamente se queda como que reescribiendo en la misma posición, y de allí se borra automáticamente.

Lo más curioso es que guardé el código, y lo abrí nuevamente, pero ahora en la simulación con un PIC16F887. El código está exactamente igual, lo compilo, y con este nuevo PIC funciona de maravilla!
De igual forma, armé el circuito en Proteus con un 16F688, y no funciona la LCD; luego, al cambiar el 16F688 por un 16F887 y colocarle el mismo código (solamente que compilado para el 16F887), funciona todo!
Ya he buscado en varios foros, y no he encontrado respuesta. Espero puedan ayudarme.

Gracias,
Iván.



PD: Ya deshabilité todos los módulos posibles que pudiesen estar interfiriendo en el funcionamiento: ADC, EUSART, INTERRUPCIONES, Etc.
 
Última edición:
Hola, que puertos del pic usas para datos y control del lcd.
Si puedes sube el codigo.

Saludos
 
Bueno, los puertos que estoy utilizando son estos:

LCD:
D0=GND
D1=GND
D2=GND
D3=GND
D4=RC0
D5=RC1
D6=RC2
D7=RC3
EN=RA4
RS=RC4

Aparte de esto, tengo conectado un teclado PS/2, que al parecer, funciona adecuadamente.
PS/2:
DATA=RA4
CLK=RA5


El código:
Código:
program test16f688

dim LCD_RS as sbit at RC4_bit
    LCD_EN as sbit at RA0_bit
    LCD_D4 as sbit at RC0_bit
    LCD_D5 as sbit at RC1_bit
    LCD_D6 as sbit at RC2_bit
    LCD_D7 as sbit at RC3_bit

    LCD_RS_Direction as sbit at TRISC4_bit
    LCD_EN_Direction as sbit at TRISA0_bit
    LCD_D4_Direction as sbit at TRISC0_bit
    LCD_D5_Direction as sbit at TRISC1_bit
    LCD_D6_Direction as sbit at TRISC2_bit
    LCD_D7_Direction as sbit at TRISC3_bit

dim PS2_Data          as sbit at RA4_bit
    PS2_Clock         as sbit at RA5_bit

    PS2_Data_Direction  as sbit at TRISA4_bit
    PS2_Clock_Direction as sbit at TRISA5_bit



dim txt as char[16]
dim txt2 as char[3]
dim x as byte
dim cx as char

dim dato as byte
dim special as byte
dim down as byte


main:
  delay_ms(10)
  trisa=%110000
  trisc=0x00
  ansel=0
  osccon=%01110111
  option_reg.7=0
  txsta=0
  rcsta=0
  wdtcon=0
  wpua=0xff
  porta=0x00
  portc=0x00
  delay_ms(150)
  ps2_config()

  delay_ms(5)
  trisc=0x00
  LCD_init()
  delay_ms(5)
  Lcd_Cmd(_LCD_CLEAR)
  delay_ms(5)
  Lcd_Cmd(_LCD_UNDERLINE_ON)
  delay_ms(5)
  lcd_out(1,1,"Hola Mundo")
  delay_ms(100)
  for x=1 to 128
      bytetostr(x,txt2)
      txt="Numero " + txt2
      lcd_out(2,1,txt)
      delay_ms(3)
  next x
  lcd_out(1,1,"Presione tecla  ")
  while TRUE
        if Ps2_Key_Read(dato, special, down) then
            if (down <> 0) and (dato = 16) then


            else
                if (down <> 0) and (dato = 13) then

                else
                  if (down <> 0) and (special = 0) and (dato <> 0) then
                     lcd_cmd(_LCD_CLEAR)
                     delay_ms(10)
                     lcd_out(2,1,"Tecla ")
                     delay_ms(10)
                     lcd_chr_cp(dato)
                     delay_ms(20)
                  end if
                end if
            end if
        end if
  wend
end.


Ya probé la simulación en Proteus, y funciona de maravilla. Lo tengo armado en protoboard, y ya probé todas las continuidades. El PIC y la LCD están en perfecto estado; lo comprobé realizando un programa en PIC Simulator IDE, y allí si funciona el PIC con la LCD.
 
Hola necesito ayuda para programar un teclado hexadecimal pero lo quiero manejar con el puerto b y las dos primeras del puerto b ya que la profesora quiere que le coloque un display 7 segmento en el puerto C del pic, y en el puerto D conectar 4 leds en los bits menos significativos. apenas me inicializo en esto es apenas mi primera practica lo veo muy complejo, ya que es apenas la primera practica y ni eh visto clase teorica estado leyendo tutorial de proton y proteus, El micro q uso es el PIC 16f877 y lo estoy programando en lenguaje basic. quientenga algo parecido o por lo menos ideas del teclado 4x4, por favor necesito ayuda de como lograrlo
 
Hola ivanmorales, según recuerdo he leído en algun foro sobre el PIC16F688 (que también estoy aprendiendo a usar) que la .dll del mismo no funciona bien en las simulaciones de ISIS, pero que los .hex si lo hacen en los montajes en protoboard, intentalo y nos cuentas que pasa?
 
Atrás
Arriba