www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik T6963 Fehlerhafte Darstellung im Textmodus


Autor: hans23 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich betreibe ein 128x128 Pixel LC Display im Textmodus.
Dazu hab ich einfach mal den Zeichensatz von T6963 von den Buchstaben 
bis zum Ende vom Alphabet ausgegeben. Also von 10h bis 5Ah.
Problem: er zeigt mir immer 4 Zeichen an, dann 4 Zeichen leer und dann 
die nächsten 4 Zeichen. Alternativ zeigt er auch stelle der 4 leeren 
stellen irgendwelchen müll an. ein Bild davon ist in der RAR-Datei.
Ich hab schon probiert die "Text Area" also die Splatenbreite zu 
variieren, hat aber nichts gebracht.
Habt Ihr da noch eine Idee? Ich versuche schon den ganzen Tag das Ding 
zum laufen zu kriegen....

Autor: hans23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier nochmal der config-teil fürs LCD einzeln:
lcd_config
  
;Mode Set
  movlw   b'10000100'  ;internal ROM, Text only
  call  write_command

;Display Mode 
  movlw   b'10010110'  ;graphic off, text on, cursor on, blink off  
  call  write_command

;8 Zeilen Cursor
  movlw   0xA7
  call  write_command

;Cursor Pointer Set
  movlw   0x00
  call  write_data
  movlw   0x00
  call  write_data
  movlw   0x21
  call  write_command

;Adress Pointer Set
  movlw   0x00
  call  write_data
  movlw   0x00
  call  write_data
  movlw   0x24
  call  write_command

;Text Home Adress Set
  movlw   0x00
  call  write_data
  movlw   0x00
  call  write_data
  movlw   0x40
  call  write_command

;Text Area Set
  movlw   d'16'  ;Columns 
  call  write_data
  movlw   0x00
  call  write_data
  movlw   0x41
  call  write_command

;Set Data Auto Write
  movlw   0xB0    
  call  write_command

  return

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Das 'Set Data Auto Write' ist da fehl am Platz. Das ist zum Schreiben 
grosser Datenmengen in einem Rutsch. Für normale Ausgaben nimmt man 
'Data Write' mit Adressincrement.

MfG Spess

Autor: hans23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das 'Set Data Auto Write' ist da fehl am Platz.
Stimmt. Ich dachte es wär so eine art Voreinstellung, dass man danach 
die Daten mit ADP auto incement sendet. Was quatsch ist.

>Für normale Ausgaben nimmt man 'Data Write' mit Adressincrement.
 genau das kam bei mir ja gleich danch (halt nur nicht mehr im config 
teil)
  movlw   0x28
  call  write_data
  movlw   0xC0      ;Data Write - Address Pointer Auto Incremented (C0H)
  call  write_command


hab das 'Set Data Auto Write' mal rausgenommen, aber hat auch nicht 
geholfen :(....

Autor: hans23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habs jetzt mal mit dem Data Auto Write gemacht, so wie es gedacht ist, 
aber zeigt mir auch nur die Hälfte an...

;Data Auto Write
  movlw   0xB0    
  call  write_command

  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28
  call  write_data
  movlw   0x28

;Set Data Auto Reset
  movlw   0xB2
  call  write_command


Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Du weisst, das bei Autowrite ein anderes BusyFlag abgefragt werden muss?

MfG Spess

Autor: hans23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt. Aber tut leider auch nichts zur Sache...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Aber tut leider auch nichts zur Sache...

Da bin ich anderer Meinung. Poste doch mal deine 'write_data'-Routine. 
Ich habe prinzipiell keine Lust irgendwelche Zip-Dateien zu öffnen.

MfG Spess

Autor: hans23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich habe prinzipiell keine Lust irgendwelche Zip-Dateien zu öffnen.
Okay, konnte ich ja nicht wissen. Ich dachte es wär übersichtlicher als 
den ganzen Code hier zu posten.

Naja aber eigentlich will ich den Text ja nicht im Auto Modus schreiben, 
aber hier der Code dazu:
write_command
  movwf  command
;  call  wait100ms
;status check
  call   read_status
  btfss  STA0
  goto  write_command
  btfss  STA1
  goto  write_command

;PORTC auf Ausgang umschalten
  banksel  TRISC
  movlw  d'0'
  movwf  TRISC
  banksel  PORTC

  movfw  command
  movwf  PORTC

   bsf  RD_    ;read disabled
  bsf  CD_    ;command
  bcf  WR_    ;write énabled
  bcf  CE_    ;chip enabled
  call   wait1ms
  bsf  CE_    
  return

;wie write_command, nur STA3 abgefragt
write_auto_command
  movwf  command
;  call  wait100ms
;status check
  call   read_status
  btfss  STA3
  goto  write_auto_command

;PORTC auf Ausgang umschalten
  banksel  TRISC
  movlw  d'0'
  movwf  TRISC
  banksel  PORTC

  movfw  command
  movwf  PORTC

   bsf  RD_    ;read disabled
  bsf  CD_    ;command
  bcf  WR_    ;write énabled
  bcf  CE_    ;chip enabled
  call   wait1ms
  bsf  CE_    
  return


;wie write_data, nur anderes busy-flag wird abgefragt
write_auto_data
  movwf  txdaten
;  call  wait100ms
;status check
  call   read_status
  btfss  STA3
  goto  write_auto_data

;PORTC auf Ausgang umschalten
  banksel  TRISC
  movlw  d'0'
  movwf  TRISC
  banksel  PORTC

  movfw  txdaten
  movwf  PORTC
   bsf  RD_    ;read disabled
  bcf  CD_    ;data
  bcf  WR_    ;write énabled
  bcf  CE_    ;chip enabled
  call   wait1ms
  bsf  CE_    
  return
  
read_status
;PORTC auf Eingang umschalten
  banksel  TRISC
  movlw  d'255'
  movwf  TRISC
  banksel  PORTC
  bsf  WR_    ;write disabled
  bsf  CD_    ;status
   bcf  RD_    ;read enabled
  bcf  CE_    ;chip enabled
  call   wait1ms
  movfw  PORTC
  movwf  status
  bsf  CE_  
  return


write_test_auto
;Set Data Auto Write
  movlw   0xB0    
  call  write_command

  movlw   0x28
  call  write_auto_data
  movlw   0x28
  call  write_auto_data
  movlw   0x28
  call  write_auto_data
  movlw   0x28
  call  write_auto_data
  movlw   0x28
  call  write_auto_data
  movlw   0x28
  call  write_auto_data
  movlw   0x28
  call  write_auto_data
  movlw   0x28
  call  write_auto_data
  movlw   0x28
  call  write_auto_data
  movlw   0x28
  call  write_auto_data

;Set Data Auto Reset
  movlw   0xB2
  call  write_auto_command

  return


Autor: hans23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier nochmal der Code für den normalen ADP auto increment mode:

write_command
  movwf  command
;  call  wait100ms
;status check
  call   read_status
  btfss  STA0
  goto  write_command
  btfss  STA1
  goto  write_command

;PORTC auf Ausgang umschalten
  banksel  TRISC
  movlw  d'0'
  movwf  TRISC
  banksel  PORTC

  movfw  command
  movwf  PORTC

   bsf  RD_    ;read disabled
  bsf  CD_    ;command
  bcf  WR_    ;write énabled
  bcf  CE_    ;chip enabled
  call   wait1ms
  bsf  CE_    
  return


write_data
  movwf  txdaten
;  call  wait100ms
;status check
  call   read_status
  btfss  STA0
  goto  write_data
  btfss  STA1
  goto  write_data

;PORTC auf Ausgang umschalten
  banksel  TRISC
  movlw  d'0'
  movwf  TRISC
  banksel  PORTC

  movfw  txdaten
  movwf  PORTC
   bsf  RD_    ;read disabled
  bcf  CD_    ;data
  bcf  WR_    ;write énabled
  bcf  CE_    ;chip enabled
  call   wait1ms
  bsf  CE_    
  return

  
read_status
;PORTC auf Eingang umschalten
  banksel  TRISC
  movlw  d'255'
  movwf  TRISC
  banksel  PORTC
  bsf  WR_    ;write disabled
  bsf  CD_    ;status
   bcf  RD_    ;read enabled
  bcf  CE_    ;chip enabled
  call   wait1ms
  movfw  PORTC
  movwf  status
  bsf  CE_  
  return

write_char
  call  write_data
  movlw   0xC0
  call  write_command
  return

write_test2
  
  movlw   0x0F  
  movwf  ziffer
zloop
  incf  ziffer,f
  movfw  ziffer
  call  write_char
  movfw  ziffer
  sublw  0x5A
  btfss   zero
  goto  zloop  

  return


Autor: hans23 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier dann nochmal das Bild wie es im normalen Modus aussieht. (ist zwar 
im Archiv, aber hier nochmal einzeln)

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mich stürt an dem Bild noch was ganz anderes, nämlich das in den 
Vierergruppen das 2. und 3. Zeichen vertauscht sind. Kann es sein, das 
zufälligerweise die Datenleitungen D0 und D1 vertauscht sind und das 
Display dadurch falsch initialisiert wurde. Nur so ein Gedanke.

Autor: hans23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daran liegts leider auch nicht. Hab das nochmal überprüft.

Autor: hans23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja aber wenn die Datenleitungen vertauscht sind, würde er ja gar 
nichts anzeigen.
Ich hab mir jetzt unzählige Beispiele angeguggt und die machen auch 
nichts anderes.
Hab auch schon verscheidene RAM Adressen probiert, und OR Modus usw, 
aber tut sich nichts.
Vielleicht liegts ja an den Unterprogrammen "Daten senden" etc.
Ist eigentlich die Reihenfolde in der man die Pins (C/D RW WR setzt egal 
?
Also natürlich bevor man CE auf low setzt.
Nach dem CE low hab ich ihm ja auch genug Zeit gegeben (1ms)...

Autor: hans23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So hab das Problem gelöst.
Ich hab ja viel rumprobiert, aber die gravierendste Änderung war 
vermutlich, dass ich auf den OR Modus gewechselt habe. (Obwohl ich das 
zwischendurch auch mal gemacht hatte, aber ohen Erfolg - warum auch 
immer).
Vermutlich will er im Text Modus noch mehr haben...

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.