- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 10

Thema: merkwürdiges LCD

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Alter
    35
    Beiträge
    122

    merkwürdiges LCD

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo

    Hm, ich habe mir nun folgendes LCD zugelegt: http://www1.ch2.conrad.com/scripts/w...5&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
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken p1010007.jpg  

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    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.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Alter
    35
    Beiträge
    122
    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.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    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.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    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.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Alter
    35
    Beiträge
    122
    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.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Alter
    35
    Beiträge
    122
    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/d..._LED_de-en.pdf

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

    Code:
    	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
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken p1010008.jpg  

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Crazy Harry
    Registriert seit
    15.01.2006
    Ort
    Raum Augsburg - Ulm
    Beiträge
    1.308
    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.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Alter
    35
    Beiträge
    122
    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

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Alter
    35
    Beiträge
    122
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test