NHD-0216HZ-FSW-FBW-33V3C Cajas negras en línea Pantalla LCD

0

Instalé un NHD-0216HZ-FSW-FBW-33V3C con un MSP430g2553. Intenté inicializarlo para el modo de 4 bits en lenguaje ensamblador, pero las cajas negras aún se muestran y creo que la inicialización no se ha completado.

Mis conexiones son: DB4-DB7 - > P1.4-P1.7 respectivamente, RS - > P2.0, R / W - > P2.1, Habilitar - > P2.2

Aquí está mi código:

Init:     bic.b     #0xFF,P1OUT  ;Clear P1, P1 = 0
      bis.b     #0x01,&P2OUT ;High RS = 1
      bic.b     #0x01,&P2OUT ;Clear RS = 0
      call      #Delay100ms
      mov.b     #0x30,&P1OUT 
      call      #Nibble      ;Wake up 1
      call      #Delay10ms 
      call      #Nibble      ;Wake up 2
      call      #Delay10ms       
      mov.b     #0x20,P1OUT
      call      #Nibble      ;Wake up 3
      call      #Command28
      call      #Command10
      call      #Command0F
      call      #Command06
      ret
Nibble  bis.b      #0x04,&P2OUT ;Enable High
      call       #Delay1ms
      bic.b      #0x04,&P2OUT ;Clock Enable - Falling Edge
      ret
Command28     mov.b     #0x28,&P1OUT //Data in port
      bic.b     #1,&P2OUT    //RS = 0 : Send Instruction
      bic.b     #0x02,&P2OUT //R/W = 0 : Write
      call      #Nibble      //Send Lower 4 Bits
      mov.b     #0x28,R4
      push      R4
      mov.b     #4,R5       ;Rotate Left Counte
C28           rla.b     R4
      dec       R5
      jnz       C28
      mov.b     R4,&P1OUT   //put data in output port
      call      #Nibble     //Send upper 4 bits
      pop       R4
      and.b     #0xF0,R4
      mov.b     R4,&P1OUT
      ret

Este código está siguiendo el código en la hoja de datos NHD-0216HZ-FSW-FBW-33V3C de enlace . Si alguien me puede ayudar.

    
pregunta EMPV

1 respuesta

1

Primero que todo: aunque la hoja de datos no lo dice explícitamente, la pantalla con la que está trabajando es totalmente compatible con la Hitachi HD44780 estándar de visualización. (Incluso está utilizando el mismo pinout que la mayoría de las placas HD44780).

De todos modos. El comportamiento que está describiendo es típico de una pantalla HD44780 que no se ha inicializado correctamente. En su caso, esto se debe a que no está enviando las mitades bajas de los comandos de "activación". Estas órdenes son como todas las demás; Si está utilizando la interfaz de 4 bits, debe enviar la mitad superior seguida de la mitad inferior. Mi código de muestra envía 20, 20, 20, 28 (o, es decir, 2, 0, 2, 0, 2, 8 ) para forzar la visualización en modo de 4 bits; Le recomendaría que haga lo mismo en su código, en lugar de poner la pantalla temporalmente en modo de 8 bits con 30 .

Además, le recomiendo encarecidamente que escriba una sola rutina para enviar los dos nibbles de un byte a la pantalla, en lugar de crear un grupo de rutinas separadas de código duro como el Command28 que tiene aquí. Tu código será mucho más sencillo una vez que hayas hecho esto.

    
respondido por el duskwuff

Lea otras preguntas en las etiquetas