- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Probleme mit der Lcd-ansteuerung

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    15.09.2007
    Alter
    33
    Beiträge
    15
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo
    vielen Dank das du das durchgeguckt hast. Da muss ich mich wohl ein bisschen geirrt haben . Das Servo funktioniert jetzt einwandfrei.
    Jetzt bleibt nur noch die Frage mit dem Display, warum das nichts macht. Liegt das vielleicht auch an den Ausgängen an PortA, brauchen die auch einen Widerstand? Schließlich sind das ja fast so aufgebaut wie PWM-Signale.
    Gruß,
    Johann

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.05.2007
    Beiträge
    193
    Hallo,
    die restlichen Pins sind ganz "normal". Vielleicht schaue ich mir das morgen mal an.
    Gruß,
    Michael

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    15.09.2007
    Alter
    33
    Beiträge
    15
    Es funktioniert endlich mit deinem Code. Der Fehler lag überhaupt nicht in der Schaltung sondern in der Initialisierung des Microkontrollers. Der interne 4Mhz-Takt klappt bei mir nämlich nicht. Das war ja eingestellt, ich habs umgestellt auf 3f21 und jetzt klappt es wunderbar. Vielen Dank für deine Hilfe.
    Gruß,
    Johann

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.05.2007
    Beiträge
    193
    Hallo,
    meinen Glückwunsch!
    Ich wollte mir soeben das Programm für das Display ansehen, hat sich ja dann erledigt.
    Weiterhin viel Spaß.
    Gruß,
    Michel

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2007
    Beiträge
    8
    Hallo Jojo12,

    ich habe das gleiche Problem mit einem Displaytech 161A.

    Bei der initialisierung schaltet es in den 2-Zeilenmodus, danach passiert nichts mehr...

    Beschäftige mich zum ersten Mal mit Displays.

    Wo kann man den Takt 3F21 einstellen ? Was muss ich im Source ändern ?

    Gruß,
    Heiko

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.05.2007
    Beiträge
    193
    Hallo,
    3F21 ist der Wert für das Konfigurationswort, damit legt man z. B. fest welchen Oszillator (RC, XT, HS, LP usw.) man verwenden möchte. Entweder stellt man das im Brennprogramm ein oder man gibt es am Anfang im Quelltext mit dem Befehl
    __config 3f21h
    an. Dabei auf die 2 (!) Unterstriche achten. In MPLAB kann man sich den Wert über Configure > Configuration Bits ansehen.
    Gruß,
    Michael

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    02.11.2007
    Beiträge
    8
    Hallo Michael,

    danke ! Ich habs ans laufen bekommen.

    Hatte auch noch ein paar andere Fehler im Programm.

    Jetzt funktionierts aber

    Gruß
    Heiko

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    23.08.2007
    Ort
    Bielefeld
    Beiträge
    39

    LCD - spinnt?

    Hallo,

    es liegt bei mir ein ähnliches Problem vor. Ich verwende allerdings einen PIC16F84A und 162C-LCD-Anzeige.

    Mein Skript:
    Code:
    list p=16f84
    ;**************************************************************
    ;*  	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 
    ;*	
    ;**************************************************************
    ;
    ;
    ; LCD-Display 
    ;
    ; Taktquelle: 4 MHz
    ;
    ;**************************************************************
    ; Includedatei für den 16F84 einbinden
    
    	#include <P16F84A.INC>
    	
    ; Configuration festlegen
    ; bis 4 MHz: Power on Timer, kein Watchdog, XT-Oscillator
    
    	__CONFIG	_PWRTE_ON & _WDT_OFF & _XT_OSC
    ;**************************************************************
    ; Variablennamen vergeben
    
    loops   Equ     0x22            ; Zähler für Warteschleife 
    loops2  Equ     0x23            ; Zähler für Warteschleife 
    Daten	Equ		0x24 
    ;**************************************************************
    ;Ersetzungen:
    LcdE	equ	0		; enable Lcd
    LcdRw	equ	3		; read Lcd
    LcdRs	equ	2		; Daten Lcd (nicht control)	
    
    
    
    
    Init:
    	bsf   STATUS,RP0; ->Bank 1
    	movlw B'00000000' 
    	movwf TRISB;->PortB: alle outputs
    	bcf   STATUS,RP0; ->Bank 0
    	movwf PORTB;-> alles auf null setzen
    	call InitLcd;-> initialisieren
    	;Buchstabe einfuegen
    	movlw 'H'
    	bsf	PORTB, LcdRs	; auf den Textpuffer schreiben
    	call Datenreinkopieren; Die Daten werden herein kopiert
    	bcf	PORTB, LcdRs
    Main ;Endlosschleife
    	goto Main
    InitLcd
    	;auf das Ende des internen Resets warten 
    	call Warten
    	call Warten
    	call Warten
    	call Warten
    	call Warten
    	call Warten
    	call Warten
    	call Warten
    	call Warten
    	call Warten
    	call Warten
    	;Interface auf 8 bit Eingang setzen
    	call Achtbitsetzen
    	call Achtbitsetzen
    	call Achtbitsetzen
    	;Interface auf 4-bit Eingang setzen
    	call Vierbitsetzen
    	;Interface als zwei zeilig einstellen
    	call zweizeilig
    	call Display_aus
    	call Displayloeschen
    	call kurser_rechts_shift
    	call Display_ein
    	return
    Achtbitsetzen; Achtbit-Datenbus einstellen
    	call Aufnullsetzten; alle Ausgaenge von PortB werden auf low setztrn
    	bsf PORTB,5
    	bsf PORTB,4
    	call Absenden
    	return
    Vierbitsetzen; Vierbit-Datenbus einstellen
    	call Aufnullsetzten; alle Ausgaenge von PortB werden auf low setzen
    	bsf PORTB,5
    	call Absenden
    	return
    Absenden
    	bsf PORTB,LcdE
    	call Warten
    	call Warten
    	call Warten
    	bcf PORTB,LcdE	
    	call Warten
    	return
    Aufnullsetzten
    	movlw B'00000000'
    	movwf PORTB
    	return
    Datenreinkopieren
    	call Aufnullsetzten; alle Ausgaenge von PortB werden auf low setzen
    	;Erster Teil einfuegen (ersten vier Bit)
    	btfsc Daten, 7
    		bsf PORTB,7
    	btfsc Daten, 6
    		bsf PORTB,6
    	btfsc Daten, 5
    		bsf PORTB,5
    	btfsc Daten, 4
    		bsf PORTB,4
    	call Absenden
    	call Aufnullsetzten; alle Ausgaenge von PortB werden auf low setzen
    	;Zweiter Teil einfuegen 
    	btfsc Daten, 3
    		bsf PORTB,7
    	btfsc Daten, 2
    		bsf PORTB,6
    	btfsc Daten, 1
    		bsf PORTB,5
    	btfsc Daten, 0
    		bsf PORTB,4
    	call Absenden
    	return
    Displayloeschen
    	movlw B'00000001'
    	movwf Daten
    	call Datenreinkopieren
    	return
    Display_aus
    	movlw B'00001000'
    	movwf Daten
    	call Datenreinkopieren
    	return
    
    Display_ein
    	movlw B'00001100'
    	movwf Daten
    	call Datenreinkopieren
    	return
    zweizeilig
    	movlw B'00100000'
    	movwf Daten
    	call Datenreinkopieren
    	return
    kurser_rechts_shift
    	movlw B'00000010'
    	movwf Daten
    	call Datenreinkopieren
    	movlw B'00001111'
    	movwf Daten
    	call Datenreinkopieren
    	return
    Warten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	call MSWarten
    	return
    MSWarten
            movlw   .110           ; Zeitkonstante für 1ms
            movwf   loops2
    
    Wai2    nop 
            nop
            nop
            nop
            nop
            nop
            decfsz  loops2, F      ; 1 ms vorbei?
            goto    Wai2           ; nein, noch nicht 
            return;
            
            
            end
    Es passiert nichts. Wenn man den Kontrast hochregelt, stellt man fest das nur in der unteren Zeile graue Kästchen erscheinen.
    Mit einem Logikprüfer habe ich schon meinen PIC überprüft, es scheint als ob der PIC funktionieren würde. Müssen noch irgendwelche Widerstände zwischen PIC und LCD eingebaut werden? / Oder woran kann so ein Verhalten liegen?


    mfg
    Sebastian

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.05.2007
    Beiträge
    193
    Hallo,
    auf den ersten Blick sehe ich keinen Fehler. Am besten schreibst du mal eine Warteschleife nachdem dein PIC initialisiert ist und greifst dann erst auf Display zu. Außerdem mal die Verdrahtung prüfen. Wenn du nciht sicher bist ob der PIC arbeitet kannst du PORTA als Ausgänge setzen, ein paar LEDs anschließen und an bestimmten Programmstellen einschalten. Außer dem Trimmpoti für den Kontrast braucht man am Display nichts weiter, ein 100nF kondensator schadet aber wie immer nicht. Das Config habe ich nicht überprüft (ich schreibe das was ich will immer als Hex-Wert), vielleicht macht der Watchdogtimer Probleme? Ich weis jetzt nicht auswendig ob der aktiviert ist oder nicht.

    Gruß,
    Michael

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    23.08.2007
    Ort
    Bielefeld
    Beiträge
    39
    Hallo,

    danke für die schnelle Antwort. Die Drahtverbindungen sind alle ok. Ich hab vor 2 Minuten das Problem doch gelöst und zwar war der Controller noch "busy" während ich schreibe... mmh naja .. ich hatte mich erst nach den Zeiten im Datenblatt gehalten... entweder waren meine Warteschleifen zu kurz oder der LCD zu langsam.
    mfg
    Sebastian

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen