Hallo, ich versuche mit einem PIC 16F628A ein Nokia 3310 LCD anzusteuern, dafür habe ich den Code [ASM] einfach wie ich das aus dem Datenblatt für's Display entnehmen konnte der Reihe nach runter getippt um zu schauen was passiert. Das Ergebnis ist allerdings: Es passiert nichts. Zum Test habe ich das Display wie hier beschrieben provisorisch in Betrieb genommen mit Erfolg: http://hobbyelektronik.org/VB/gLCD/PCD8544/index.htm Es muss also an meinem Programm liegen. Wäre nett wenn mir jemand helfen könnte. Danke und MfG Andreas Hier mein Code ; PINBELEGUNGEN ; ; PIN LCD PIN PIC ; ------- ------- ; SCL (2) RB7 ; SDA (3) RB6 ; D/C (4) RB5 ; SCE (5) RB4 ; RES (8) RB3 LIST P=16F628A ; Use the PIC16F628 #include "P16F628A.INC" ; Include header file __config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON CBLOCK 0x20 ; Declare variable addresses starting at 0x20 loops loops2 ENDC ORG 0x000 ; Program starts at 0x000 ; ; -------------------------------- ; SET ANALOG/DIGITAL INPUTS PORT A ; -------------------------------- ; ; movlw 7 ; movwf CMCON ; CMCON=7 set comperators off ; ; ---------------- ; INITIALIZE PORTS ; ---------------- ; bsf STATUS,RP0 ; RAM PAGE 1 movlw b'11111111' movwf TRISA ; portA all pins input movlw b'00000000' ; Alle Pins auf output movwf TRISB bcf STATUS,RP0 ; RAM PAGE 0 clrf PORTB ; Alle "B"-Pins auf "low" ; ; --------- ; MAIN PART ; --------- ; ; Kurze Pause am Anfang.. 2x 10ms call Wait10 call Wait10 ; Display-Reset ; RES auf "low" setzen, 100ms warten und wieder auf "high" bcf PORTB,3 call Wait100 bsf PORTB,3 ; Seriellen Datenstrom deaktivieren und wieder zulassen bsf PORTB,4 call Wait100 bcf PORTB,4 ; Grundeinstellungen tätigen bcf PORTB,5 ;D/C "low", Kommando ausführen ;Bitfolge 00100110 schicken (RB6 Bit anlegen, RB7 "bestätigen") bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 ;Grundeinstellungen getätigt ;Displayeinstellungen festlegen bcf PORTB,5 ;D/C "low", Kommando ausführen ;Bitfolge 00001100 schicken (RB6 Bit anlegen, RB7 "bestätigen") bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 ;Displayeinstellungen festgelegt ;Y-Adresse Cursor einstellen bcf PORTB,5 ;D/C "low", Kommando ausführen ;Bitfolge 01000011 schicken (RB6 Bit anlegen, RB7 "bestätigen") bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 ;Y-Adresse Cursor eingestellt ;X-Adresse Cursor einstellen bcf PORTB,5 ;D/C "low", Kommando ausführen ;Bitfolge 10101000 schicken (RB6 Bit anlegen, RB7 "bestätigen") bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 ;X-Adresse Cursor eingestellt ; Wieder mal Grundeinstellungen tätigen um den Befehlssatz zu wechseln bcf PORTB,5 ;D/C "low", Kommando ausführen ;Bitfolge 00100111 schicken (RB6 Bit anlegen, RB7 "bestätigen") bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 ;Grundeinstellungen getätigt, Befehlssatz gewechselt ;Temperaturkompensation festlegen bcf PORTB,5 ;D/C "low", Kommando ausführen ;Bitfolge 00000110 schicken (RB6 Bit anlegen, RB7 "bestätigen") bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 ;Temperaturkompensation festgelegt ;Bias festlegen bcf PORTB,5 ;D/C "low", Kommando ausführen ;Bitfolge 00010011 schicken (RB6 Bit anlegen, RB7 "bestätigen") bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 ;Bias festgelegt ;Kontrast einstellen bcf PORTB,5 ;D/C "low", Kommando ausführen ;Bitfolge 10101100 (127dez) schicken (RB6 Bit anlegen, RB7 "bestätigen") bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 ;Kontrast eingestellt ;Daten aufs Display schreiben bsf PORTB,5 ;D/C "high", Daten schreiben ;Bitfolge 10101000 schicken (RB6 Bit anlegen, RB7 "bestätigen") bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bsf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 bcf PORTB,6 bsf PORTB,7 bcf PORTB,7 ;Daten aufs Display geschrieben loop ;Endlosschleife goto loop ;*********************************************************************** ********* ; PROGRAMMENDE ;*********************************************************************** ********* ; ; FUNKTIONEN: ; ;*********************************************************************** ********* ; ; Warteschleife 100ms Wait100 movlw D'100' movwf loops goto Wai ; ; Warteschleife 10ms Wait10 movlw D'10' movwf loops goto Wai Wai movlw .110 ;Zeitkonstante für 1ms movwf loops2 Wai2 nop nop nop nop nop nop decfsz loops2,F ;1ms vorbei? goto Wai2 ;nein, noch nicht decfsz loops,F ;100ms/10ms vorbei? goto Wai ;nein, noch nicht retlw 0 ;Zeit vorbei - zurückkehren ; Alibimäßiges Programmende END
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.