PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : merkwürdiges LCD



orph
09.06.2006, 23:37
Hallo

Hm, ich habe mir nun folgendes LCD zugelegt: http://www1.ch2.conrad.com/scripts/wgate/zcop_ch2/?~template=pcat_product_details_document&object_guid=1E147B3B5FF4615AE10000000A010220&master_guid=&master_typ=&no_brotkrumennavi=&ownrow=112&p_load_area=0212040~1&p_artikelbilder_mode=Ein&p_sortopt=object_description&page=3&p_catalog_max_results=25&cachedetail=

Doch wenn ich den 1. und den 3. Pin an Masse und den 2. Pin an 5V anschliesse bekomme ich nur solche kuriose Anzeigen, wie auf dem Photo dargestellt. Auch wenn ich den Kontrast über eine Potentiometer anschliesse und den Kontrast variabel einstelle, ändert sich ausser des Kontrastes nichts. Die Anzeige zeigt übrigens nicht immer dasselbe an, sonder ändert sich teilweise auch unter angeschlossener Spannung, jedoch nie dazu, dass alle 32 Quadrate richtig angezeit werden.

Wass könnte hier das Problem sein?

Gruss orph

shaun
09.06.2006, 23:45
Auf dem Foto hast Du die Pins 3,4 und 5 angeschlossen. Ist das bei diesem Display korrekt, d.h. hat es die Anschlüsse für die Hintergrundbeleuchtung wirklich auf 1+2? Ich hatte die bisher immer entweder auf 15+16 oder separat auf der Platine. Dein Warenkorb-Link zu Conrad nützt leider nicht viel, poste lieber die Bestellnummer.

orph
10.06.2006, 00:00
Die Artikelnummer ist folgende: Artikel-Nr.: 184594 - 62

Nach dem Datenblatt sollte die Pinbelegung korrekt sein, jedoch ist sie wirklich ein bisschen kurios. Also ist die Beleuchtung schon auf den beiden Pins rechts aussen, jedoch sind die nicht 1+2 sondern 15+16.

linux_80
10.06.2006, 00:11
Komische Nummerierung !

Wenn ein LCD nur an Spannung angeschlossen wird, ohne Initialisiert zu werden, ist immer nur die 1. Zeile (i.d.Regel) so wie das da zu sehen ist.

Ich hätte deshalb gesagt, das Display steht so wie hier zu sehen auf dem Kopf.

shaun
10.06.2006, 00:15
Ok,
Belegung passt. Ich habe durchaus schon Displays gehabt, die bevor sie initialisiert wurden nur quark anzeigen, und offene Eingänge sind auch nicht so wirklich förderlich. Ich würde das Ding einfach mal an den Controller hängen, den Du benutzen willst, und ein kleines Testprogramm schreiben. Vielleicht reicht es ja schon, wenn die Pegel auf den Displayanschlüssen definiert sind. Ein bisschen Abblocken würde ich die Displayanschlüsse auch.

orph
10.06.2006, 00:18
Hm, das mit der 1. Zeile stimmt schon, ich sehe die 2. nur wenn ich den Kontrast ganz hochschraube, und dann sehe ich sie aber immer noch schwächter als die 1.

Jedoch wird auch jetzt noch i der 1. Zeile die 1. und die 4 Reihe der Pixels durch alle Quadrat hindurch (wagerecht) nicht angezeigt.

hm, dann werde ich mal das Display an den Pic anhängen und schauen obs funzt.

orph
21.06.2006, 21:14
Hallo Leute

Da ich kurz vor dem Verzweifeln stehe, melde ich mich hier nochmals.
Ich hab nun euren Rat befolgt, und versucht das Display zu initialisieren. Den Code habe ich mal sicherheitshalber grösstenteils von sprut übernommen, um den meisten Fehlerquellen aus dem Weg zu gehen.
Doch es funktionieret immer noch gleich wenig wir zuvor.
Ich denke mal, dass ich bei der Initialisierung oder so etwas falsch mache, denn das LCD zeigt dauernd noch den selben Mist wie zuvor an.

Hier mal den Link zum Datenblatt des LCD: http://www2.produktinfo.conrad.com/datenblaetter/175000-199999/184594-da-01-ml-LCD-Modul_16x2_Zeichen_LED_de-en.pdf

Des weiteren ist hier noch den Code, den ich verwende:


list p=16f628a
;************************************************* *************
;* Pinbelegung
;* ----------------------------------
;* PORTA: 0 -
;* 1 -
;* 2 -
;* 3 -
;* 4 -
;* PORTB: 0 LCD Display E
;* 1
;* 2 LCD Display RS
;* 3 LCD Display R/W
;* 4-7 LCD Display D4 .. D7
;

#include <P16f628a.inc>


__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON & _LVP_OFF

;************************************************* *************
; Variablen festlegen

w_copy Equ 0x20
s_copy Equ 0x21
LcdDaten Equ 0x22
LcdStatus Equ 0x23
loops EQU 0x24
loops2 EQU 0x25

; Constanten festlegen

PORTC equ PORTB ; LCD-Control-Port
PORTD equ PORTB ; LCD-Daten-Port
LcdE equ 0 ; enable Lcd
LcdRw equ 3 ; read Lcd
LcdRs equ 2 ; Daten Lcd (nicht control)
Ini_con Equ B'00000000' ; TMR0 -> Intetupt disable
Ini_opt Equ B'00000010' ; pull-up

;************************************************* *******
; Das Programm beginnt mit der Initialisierung

Init bsf STATUS, RP0 ; Bank 1
movlw Ini_opt ; pull-up on
movwf OPTION_REG
movlw B'11111000' ; RA0 .. RA2 outputs, RA3, RA4 input
movwf TRISA ;
movlw B'00000000' ; PortB alle outputs
movwf TRISB
bcf STATUS, RP0 ; Bank 0
clrf PORTA
clrf PORTB

movlw Ini_con ; Interupt disable
movwf INTCON

call InitLCD ; Display initialisieren

; am LCD "Hallo" ausgeben

movlw 'H'
movwf LcdDaten
call OutLcdDaten
movlw 'a'
movwf LcdDaten
call OutLcdDaten
movlw 'l'
movwf LcdDaten
call OutLcdDaten
movlw 'l'
movwf LcdDaten
call OutLcdDaten
movlw 'o'
movwf LcdDaten
call OutLcdDaten

sleep
Main
goto Main


WAIT
top movlw .249 ; timing adjustment variable (1ms)
movwf loops2
top2 nop ; sit and wait
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
decfsz loops2, F ; inner loops complete?
goto top2 ; no, go again
;
decfsz loops, F ; outer loops complete?
goto top ; no, go again
retlw 0 ; yes, return from subWAIT

;************************************************* *********
; Initialisierung des LCD-Displays

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

movlw B'00110000' ; 1
movwf PORTB
bsf PORTB, LcdE
nop
bcf PORTB, 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

call OutLcdControl
movlw B'00101000' ; 5 function set, 4-bit 2-zeilig, 5x7
call OutLcdControl
movlw B'00001111' ; 6 display on
call OutLcdControl
movlw b'00000001' ; 7 clear display
call OutLcdControl
movlw B'00000110' ; 8 entry mode, increment, disable display-shift
call OutLcdControl
movlw B'00000011' ; 9 cursor home, cursor home
call OutLcdControl
return

; ein Steuerbyte 8-bittig übertragen
Control8Bit
movwf PORTB
bsf PORTB, LcdE
nop
bcf PORTB, LcdE
movlw D'10'
movwf loops
call WAIT
return

; darauf warten, daß das Display bereit zur Datenannahme ist
LcdBusy
bsf PORTA, 1 ; Test LED 1 on
bsf STATUS, RP0 ; make Port B4..7 input
movlw B'11110000'
iorwf TRISB, f
bcf STATUS, RP0
BusyLoop
bcf PORTC, LcdRs
bsf PORTC, LcdRw ; Lesen
bsf PORTC, LcdE
nop
movf PORTD, w
movwf LcdStatus
bcf PORTC, LcdE
nop
bsf PORTC, LcdE ; Enable
nop
bcf PORTC, LcdE
btfsc LcdStatus, 7 ; teste bit 7
goto BusyLoop
bcf PORTC, LcdRw
bsf STATUS, RP0 ; make Port B4..7 output
movlw B'00001111'
andwf TRISB, f
bcf STATUS, RP0
bcf PORTA, 1 ; Test LED 1 off
return

; ein Byte mit Steuerdaten von LcdDaten zum Display übertragen
OutLcdControl
movwf LcdDaten
call LcdBusy
movf LcdDaten, w
andlw H'F0'
movwf PORTD ; Hi-teil Daten schreiben
bsf PORTC, LcdE
nop
bcf PORTC, LcdE ; Disable LcdBus
swapf LcdDaten, w
andlw H'F0'
movwf PORTD ; Lo-teil Daten schreiben
bsf PORTC, LcdE
nop
bcf PORTC, LcdE ; Disable LcdBus
return

; ein Datenbyte von LCDDaten zum Display übertragen
OutLcdDaten
bsf PORTA, 2 ; Test LED 2 on
movwf LcdDaten
call LcdBusy
movf LcdDaten, w
andlw H'F0'
movwf PORTD ; Hi-teil Daten schreiben
bsf PORTC, LcdRs ; Daten
bsf PORTC, LcdE ; Enable LcdBus
nop
bcf PORTC, LcdE ; Disable LcdBus
swapf LcdDaten, w
andlw H'F0'
movwf PORTD ; Lo-teil Daten schreiben
bsf PORTC, LcdRs ; Daten
bsf PORTC, LcdE
nop
bcf PORTC, LcdE ; Disable LcdBus
bcf PORTC, LcdRs ;
bcf PORTA, 2 ; Test LED 2 on
return

end


Und als Attachment ein Foto der aufgebauten Schaltung.

Ich hoffe, dass mir jemand einen guten Ratschlag geben kann, und danke schon im Voraus.

Gruss orph

Crazy Harry
22.06.2006, 05:54
da ja in der ersten zeile eine lücke ist, würde ich sagen das display ist defekt. ohne µC sieht man nur die erste zeile und die komplett angesteuert.
das display steht (wie linux_80 schon gesagt hat) auf dem kopf.

[EDIT] ich hab mir das datenblatt angeschaut und stimm dir mal zu, daß das ein seltsames LCD ist. laut datenblatt ist es nicht auf dem kopf. es hätte mich stutzig machen müssen: wenn man das lcd dreht, wären die anschlüsse oben rechts - normal ist oben links.

zu deinem problem: ich kenne den code nicht, aber ich weiß daß ein KS0066-controller nicht 100%ig HD44780-kompatibel ist (hatte auch mal enorme probleme) und daher deine probleme kommen könnten.

orph
22.06.2006, 20:46
Ja hallo,

Hm, also wenn das LCD tatsächlich defekt ist, wäre ich derb entäuscht von Conrad. (2 Wochen Lieferzeit, etwa 3/4 der bestellten Ware geliefert, obwohl laut Onlineshop alles verfügbar war, ond ev. noch defekte Hardware geliefert.) Denn dieses Ding war wirklich ganz neu und ich habe auch nie einen Kurzschluss oder ähnliches verursacht. Dann hoffe ich doch nur mal dass das Ding hat noch Garantie. (Sonst fliegt das Teil mal gegen ne Wand ;-))

Ich habe hier noch n Datenblatt gefunden, mit nem Bild, das zu 95% meinem LCD entspricht. Daher, dort sind die Pinanschlüsse auch unten links. Link: http://www.fush.lv/Bolymin/Data/BC1602H.pdf

Mit dem Controller könnte was dran sein. Weisst du ev. was du damals für Probleme/Lösung damit hattest? Ich wäre sehr froh darüber.
Doch nach dem Datenblatt sollte der ks0066 eigentlich ganz kompatibel mit dem HD44780 sein.

Da ich noch ziemlich unerfahren mit Assembler bin, wäre ich froh, wenn mir ev. jemand den Code einer ganz einfachen Initialisierung mit nem Pic zeigen könnte.


Gruss orph

orph
22.06.2006, 21:51
lol, Lcd=Zufallsgenerator oder wasn?

Plötzlich funzt es! (jedenfallst teilweise)
Ich hab nun einfach mal alle Pins ausser Vdd an Masse gehenkt, doch dass nützte nichts (ausser dass das Potentiometer für den Kontrast plötzlich zu rauchen begann, aber es hat es überlebt), dann habe ich alles wider zurückgebaut und nun funktioniert es. Naja...

Aber ein Problem habe ich immer noch: In der 1. Zeile funtz di 1. und die 4 Reihe der Pixels horizontal nicht. Doch bei den Buchstaben "H" und den beiden "L" blinken dort die Pixels, die in diesen Reihen eigentlich erscheinen sollten mit dem Takt des Cursors. (Jedoch tun sie das nur, wenn der Kontrast ziemlich hoch ist.)
Ist an dieser Stelle das LCD futsch?


Loool, ich kanns kaum fassen. Jetzt habe ich kurz den Storm abgeschaltet und wieder angemacht, schon zeigt das LCD nichts mehr an.
Ich werd verrückt, drecks-Conrad mit seinen Billig-Produkten.

Gruss orph