www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2x8 LCD nach Beschreiben des DDRAMS nur noch BUSY


Autor: Pete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe hier ein Display mit 2x8.
Es lässt sich initialisieren und auch Zeichen wiedergeben. Allerdings 
wir beim schreiben oder lesen aufs display die DDRAM-Adresse 
incrementiert. Ist ja auch so eingestellt. Da ich aber immer das 
Busy-Flag abfrage muss ich die DDRAM-Adresse korigieren.
Hier ist mein Problem dass es laut Datenblatt wie bei all den anderen 
Hitachi kompatiblen displays ist. Allerdings ist es bei mir so dass sich 
das display nach Beschreiben der DDRAM-Adresse nicht mehr ansprechen 
lassen kann. Sprich ich lese nanach immer dass das Display Busy ist.

weiss einer nen Rat?

gruss,
pete

Autor: Pete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

irgendwie komm ich hier nicht weiter.
in die 2te zeile komme ich erst wenn ich so lange schreibe bis ich bei 
Adresse 0x40 gelandet bin. Somit funktionieren zumindest beide Zeilen.
Aber ich kann immer noch nicht den Cursor auf eine bestimmte position 
setzen.

zwischen jedem schreiben und lesen warte ich 2msec.
die Initialisierung sieht wie folgt aus:

FunktionSET (8bit, 2-zeilig, 5x7font)
DisplayOFF
LCDClear
LCDModeSet (curser hochzählen)
LCDON
LCDHome (setze cursor auf Adresse 0x00)

dass funktioniert alles prima. Dann kann ich auf der ersten Zeile was 
schreiben. Wenn ich aber die Adresse beschreiben will sprich den cursor 
wo anders hin setzten möchte (zeile 1: 0x00 bis 0x07, zeile 2 0x40 bis 
0x47) dann kann ich danach das Display nicht beschreiben da das Busy 
flag gesetzt bleibt. Wenn ich diese ignoriere und weiter schreibe. Steht 
der Cursor auf der letzten position. Sprich es sieht so aus als ob da 
nichts passiert wäre.

Was könnte denn mein fehler sein???

gruss,
pete

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja das problem mit dem cusor hatte ich auch mal, und zwar so:
in der ersten zeile konnte ich den cursor beliebig verschieben, und ich 
konnte in auf 0x40 also 2. zeile verschieben, aber in der zweiten zeile 
nicht an eine beliebige stelle, er landete immer an 0x40. hat da jemand 
infos?
uLuxx

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher LCD-Controller?
Bei manchen kann man das Inc für jede Zeile getrennt einstellen.

Autor: MKer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ist in der Zwischenzeit eine Lösung gefunden worden?
Habe leider dasselbe Problem. Benutze ein Batronix ISP-Board mit einem 
Atmel T89C51-AC2 und einem LCD von Displaytech (162C) mit einem HD44780.
Kann den Cursor in der 1. Zeile verschieben, aber den Cursor an keine 
Spalte direkt setzen. Die 2. Zeile wird nur durch Zufall mal erreicht.
Habe meinen Quelltext angehängt.
Hoffentlich kann mir jemand helfen, ich bin am verzweifeln...

Danke,
Markus

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

Bewertung
0 lesenswert
nicht lesenswert
Jetzt auch mit Quelltext...

Autor: Jörn Paschedag (jonnyp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne keine LCD´s bei denen der Adressbereich kontinuierlich 
durchgeht für 2-zeilige (oder mehr) displays durchgeht. Da ist immer ein 
Offset dazwischen. Genaues sagt das Datenblatt. Das Busy-Flag kann man 
direkt unter seiner Adresse auslesen, dazu braucht man den Pointer nicht 
zu ändern. Allerdings muss man die Flag-Adresse 2 mal lesen falls das 
Display im 4 Bit Modus angesteuert wird.

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

Bewertung
0 lesenswert
nicht lesenswert
Jo,

laut datenblatt 1.Zeile 0x00, 2.Zeile 0x40,

für den 162C eine routine zum schreiben, der schreibt von links nach 
rechts und überspringt dabei die bandlücke (muhahaha, typisch phyisk)
(8Bit modus, Char @ temp1)

Der rest ist im anhang, falls ihr fragen habt, könnt ihr mir auch eine 
mail schreiben,.. grüüüüße
;#######################################################################################################
;Routine lcd_data_trans_l
; uses specific delay routine
; and sets automaticly the right addressroom
;#######################################################################################################
lcd_data_trans_l:
           ldi temp1,0x00
       out lcd_port,temp1
       rcall delay50us
       
           cpi lcd_pos_counter,8
       brlt low_pos_l
       
high_pos_l:mov temp2,lcd_pos_counter
       subi temp2,8
           ldi temp1,0x40
       add temp1,temp2
           ori temp1,0b10000000
       out lcd_port,temp1
       rcall lcd_enable
       rjmp pos_set_l

low_pos_l: ldi temp1,0b10000000
       or temp1,lcd_pos_counter
       out lcd_port,temp1           
           rcall lcd_enable

pos_set_l: rcall delay50us
       sbi lcd_ctrl,lcd_RS                ;set Enable
       sbi lcd_ctrl,lcd_E                 ;set RS
       out lcd_port,lcd_data              ;set Port with Data
       nop                                ;wait 7 cycles (normaly 6, +1 to be sure)
       nop
       nop
       nop
       nop
       nop
       nop
       cbi lcd_ctrl,lcd_E                 ;clear Enable
       cbi lcd_ctrl,lcd_RS                ;clear RS
       cpi lcd_pos_counter,16
       brge l_pos_too_high
       inc lcd_pos_counter
           ret                              ;return
       l_pos_too_high:
       ldi lcd_pos_counter,0
       ret
;#######################################################################################################

;#######################################################################################################



Autor: MKer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal zum Verständnis:
Du springst nicht direkt auf eine bestimmte Zeile/Spalte, sondern 
verschiebst einfach den Cursor solange (???nach rechts???) bis du die 
gewünschte Zeile/Spalte erreicht hast?

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.