www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Nur 2 Zeilen statt 4 auf EA W164B-NLW


Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

versuche seit Tagen auf dem W164B-NLW von Electronic Assembly
eine vernünftige Anzeige hinzubekommen. Doch während der Initialisierung 
und später bei der Anzeige, werden nur die Zeilen 2+4 angezeigt (alle 
korrekt), die komischerweise auf dem Display als Zeile 1+3 erscheinen 
(haben aber die RAM-Adressen von Zeile 2+4).

Mir fehlen also zwei Zeilen!
Mache ich da irgendwas falsch, oder ist mein Display im Eimer?

Hier meine init-Sequenz:


  movlw  D'255'    ; 250 ms Pause nach dem Einschalten
  movwf  loops
  call  WAIT

  movlw  B'00110000'  ; 1
  movwf  PORTC
  bsf  PORTC, LcdE
  nop
  bcf  PORTC, LcdE

  movlw  D'50'    ; 50 ms Pause
  movwf  loops
  call  WAIT

  movlw  B'00110000'  ; 2
  call  Control8Bit
  movlw  B'00110000'  ; 3
  call   Control8Bit
  movlw  B'00100000'  ; 4
  call   Control8Bit

  movlw  B'00000001'  ; löschen und cusor home
  call  OutLcdControl
  movlw  B'00101000'  ; 5 function set, 4-bit  2-zeilig,  5x7
  call  OutLcdControl
  movlw  B'00001000'  ; 6 display off
  call  OutLcdControl
  movlw  B'00000110'  ; 7 entry mode, increment, disable display-shift
  call  OutLcdControl
  movlw  B'00000011'  ; 8 cursor home, cursor home
  call  OutLcdControl
  movlw  B'00001111'  ; 9 display on
  call  OutLcdControl

Vielleicht fällt dem einen oder anderen irgendetwas auf oder hatte ein 
ähnliches Problem. Danke im Vorraus.

MfG
Hannes

Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> movlw  B'00101000'  ; 5 function set, 4-bit  2-zeilig,  5x7

Ich kenne das Display leider nicht, aber wäre es möglich, dass man das 
Ding vielleicht auf "4-zeilig" einstellen muss?

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Handbuch steht nur was von 2-zeilig, und das ist das 2. Bit neben der 
ersten 1 (was schon gesetzt ist). Nach Handbuch müsste durch setzen 
automatisch 4-zeilig gewählt werden. Bei zweizeiligen Displays würden 
zwei zeilen angezeigt werden, und bei vierzeiligen eben vier (laut 
Handbuch).
Bei einem Vierzeilendisplay kann ich somit zwischen einer Zeile wählen 
und vier Zeilen.

Kann natürlich auch anders sein. Vielleicht besitzt jemand ein 
vierzeiliges Display von EA. Wie habt ihr dort 4 Zeilen eigestellt?

MfG
Hannes

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die vierzeiligen Displays haben i.d.R. nur zwei "echte" (logische) 
Zeilen. Die dritte Zeile ist meist die Fortsetzung der ersten und die 
vierte eine Fortsetzung der zweiten, was die Adressen der 
Display-Character angeht.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@johnny.m

>Die vierzeiligen Displays haben i.d.R. nur zwei "echte" (logische)
>Zeilen. Die dritte Zeile ist meist die Fortsetzung der ersten und die
>vierte eine Fortsetzung der zweiten, was die Adressen der
>Display-Character angeht.

Genau.

http://www.zing.com.tw/WINTEK/wm-c1604m.htm

MFg
Falk

Autor: ecslowhand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
EADIP_init:
  D_cs_LOW   ; Chipselect LOW
  ldi  r16, 0b11111000      ; Load START-BYTE
  sts  LCD_STARTBYTE, r16    ; LCD_STARTBAYTE setzen
  rcall  Send_Startbyte      ; Startbyte senden

  ldi  r17, 0b00110100
  rcall  LCD_Send_BYTE
  rcall  WAIT_45uS

  ldi  r17, 0b00001001
  rcall  LCD_Send_BYTE
  rcall  WAIT_45uS

  ldi  r17, 0b00110000
  rcall  LCD_Send_BYTE
  rcall  WAIT_45uS

  ldi  r17, 0b00001100
  rcall  LCD_Send_BYTE
  rcall  WAIT_45uS

  ldi  r17, 0b00000001
  rcall  LCD_Send_BYTE
  rcall  WAIT_1600uS

  ldi  r17, 0b00000110
  rcall  LCD_Send_BYTE
  rcall  WAIT_45uS

  D_cs_HIGH   ; Chipselect HIGH

  ret


Beispiel von einem EA-DIP204.

Lg EC

Autor: ecslowhand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Zeilen
  movlw  B'00101000'  ; 5 function set, 4-bit  2-zeilig,  5x7
  call  OutLcdControl

betriffen wie von Dir angemerkt "FUNCTION SET".

Du musst den VIER-Zeilenmodus im "EXTENDED(!) FUNCTION SET" aktivieren.

Geht bei mir so:
  ldi  r17, 0b00110100 ; 8-Bit Datenlänge, extension Bit RE=1
  rcall  LCD_Send_BYTE
  rcall  WAIT_45uS

  ldi  r17, 0b00001001 ; 4 Zeilen Modus
  rcall  LCD_Send_BYTE
  rcall  WAIT_45uS

  ldi  r17, 0b00110000 ; 8-Bit Datenlänge, extension Bit RE=0
  rcall  LCD_Send_BYTE
  rcall  WAIT_45uS

Versuchs mal.

LG EC

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ecslowhand:
Mein LCD von EA hat leider nur 16 Pins, und die Extended Function kennt 
er auch nicht.

Ich weiß jetzt aber woran es lag. Es war die Verbindung zwischen 
Testplatine und LCD, die war locker.

Trotzdem danke und hier ist der funktionierende init-code:

InitLCD
  movlw  D'255'    ; 250 ms Pause nach dem Einschalten
  movwf  loops
  call  WAIT

  movlw  B'00110000'  ; 1
  movwf  PORTC
  bsf  PORTC, LcdE
  nop
  bcf  PORTC, LcdE

  movlw  D'50'    ; 50 ms Pause
  movwf  loops
  call  WAIT

  movlw  B'00110000'  ; 2
  call  Control8Bit
  movlw  B'00110000'  ; 3
  call   Control8Bit
  movlw  B'00110000'  ; 4
  call   Control8Bit

  movlw  B'00101000'  ; 5 function set, 4-bit  2-zeilig,  5x7
;   call  OutLcdControl
;   movlw  B'00001000'  ; 6 display off
  call  OutLcdControl
;   movlw  B'00000110'  ; 7 entry mode, increment, disable display-shift
;   call  OutLcdControl
  movlw  B'00000011'  ; 8 cursor home, cursor home
  call  OutLcdControl
  movlw  B'00001111'  ; 9 display on
  call  OutLcdControl
  movlw  B'00000001'  ; löschen und cusor home
  call  OutLcdControl


  return

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hannes

>Ich weiß jetzt aber woran es lag. Es war die Verbindung zwischen
>Testplatine und LCD, die war locker.

Wackelkontakt. Immer wieder gern genommen . . . ;-)

MFG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.