- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 10

Thema: LC-Display Nokia 3310 Übertragen von daten in x und y positi

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63

    LC-Display Nokia 3310 Übertragen von daten in x und y positi

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi,

    bin gerade dabei daten an das display Nokia 3310 zu senden,
    das funktioniert auch teilweise.

    Wenn eine taste gedrückt wird, wird was Übertragen und am Display ausgegeben.
    Wird noch mal gedrückt wird es dann in einer anderen Position Ausgegeben.

    Wie kann ich es anstellen, das nach Tastendruck die Ausgabe immer an der
    selben stelle erscheint?

    Unterprogramme:
    Code:
    Declare Sub Ukommando(byval Wert As Byte)
    Declare Sub Udata(byval Wert As Byte)
    Declare Sub Initialisierung
    Declare Sub Lcdloeschen
    Declare Sub Keypressed
    Declare Sub Menueuhr
    Declare Sub Menuetrip1
    Declare Sub Menuetrip2
    Declare Sub Menuekm
    Tastendruck:
    Code:
    Do
      Debounce Pind.0 , 0 , Keypressed , Sub
    Loop
    Nach dem Tastendruck (menü):
    Code:
    Sub Keypressed
    
     Select Case Menue
            Case Menueuhr : Menuetrip1
            Case Menuetrip1 : Menuetrip2
            Case Menuetrip2 : Menuekm
            Case Else : Menueuhr
     End Select
    
    End Sub
    Unterprogramm:
    Code:
    ' ----------------Uhr des Menüs----------------------------------------------
    Sub Menueuhr
    
    Lcdloeschen
    
    
    Udata &H3F
    Udata &H40
    Udata &H40
    Udata &H40
    Udata &H3F
    
    Udata &H00
    Udata &H7F
    Udata &H08
    Udata &H08
    Udata &H08
    Udata &H7F
    
    Udata &H00
    Udata &H7F
    Udata &H09
    Udata &H19
    Udata &H29
    Udata &H46
    
    Menue = Menueuhr
    
    End Sub
    
    ' ----------------Trip1 des Menüs----------------------------------------------
    Sub Menuetrip1
    
    Lcdloeschen
    
    
    Udata &H01
    Udata &H01
    Udata &H7F
    Udata &H01
    Udata &H01
    
    Udata &H00
    Udata &H7F
    Udata &H09
    Udata &H19
    Udata &H29
    Udata &H46
    
    Udata &H00
    Udata &H00
    Udata &H41
    Udata &H7F
    Udata &H41
    Udata &H00
    
    Udata &H00
    Udata &H7F
    Udata &H09
    Udata &H09
    Udata &H09
    Udata &H06
    
    Udata &H00
    Udata &H00
    Udata &H42
    Udata &H7F
    Udata &H40
    Udata &H00
    
    Menue = Menuetrip1
    
    End Sub
    Initialisierung:
    Code:
    ' ----------------Initialisierung----------------------------------------------
    Sub Initialisierung
       Ukommando &H21                                           'Erweiterter Kommando-Mode
       Ukommando &H13                                           'Bias (Kontrast) Einstellung Original Nokia = &H13
       Ukommando &HA8                                           'Kontrasteinstellung Original Nokia = &HC8
       Ukommando &H06
    
    
       Ukommando &H0C
       Ukommando &H20                                           'Wieder in den normalen Kommando-Mode
          End Sub
    Display Löschen:
    Code:
    ' ----------------Display Löschen----------------------------------------------
    Sub Lcdloeschen
      Local I As Word
       Ukommando &H20                                           'Normaler Kommando-Mode
       Ukommando &H0C                                           'Normaler Bildschirm
       Ukommando &H80                                           'Setze RAM-Adresse auf 0
       Dc = 1                                                   'Sicherstellen, dass man im Daten-Mode ist
       For I = 0 To 503
          Udata &H00
       Next
    End Sub
    Kommando & Daten senden:
    Code:
    '------------Kommando Senden---------------------------------------------------
    
    Sub Ukommando(byval Wert As Byte)
       Dc = 0                                                   'in den Kommando-Mode
       Spiout Wert , 1
       Dc = 1                                                   'zurück in den Daten-Mode
    End Sub
    
    '------------Daten Senden------------------------------------------------------
    Sub Udata(byval Wert As Byte)
       Dc = 1                                                   'um sicher zu gehen, dass man auch wirklich im Datenmode ist
       Ce = 0
       Spiout Wert , 1
       Ce = 1
    End Sub
    Das Datenblatt vom Nokia hab ich mir schon angesehen, komm jedoch damit nicht klar.
    http://www.mikrocontroller.net/attac...82/pcd8544.pdf

    Da steht das man in der X Richtung das z.B. so machen kann:
    "&B10000100"
    Jetzt sollte es im Achten Pixel beginnen, macht er aber nicht.


    Ich hoffe da kann mir einer weiterhelfen!
    Gruß Wasi...

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Hallo,

    Code:
    Sub Position(byval X_Wert As Byte, byval Y_Wert As Byte) 
       Dc = 0                                                   'in den Kommando-Mode 
       X_Wert = X_Wert XOR &H80                   'X_Wert = Spalte 0-83
       Spiout X_Wert , 1
       Y_Wert = Y_Wert XOR &H40                   'Y_Wert = Zeile 0-5 
       Spiout Y_Wert , 1
       Dc = 1                                                   'zurück in den Daten-Mode 
    End Sub
    Damit kannst du die Position für die Textausgabe festlegen ...

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63
    Hallo AL,

    hab dein Code mal eingebaut, leider geht wie zuvor nur die Y Position, aber
    die X Position nicht.

    Was mach ich Falsch?

    Code:
    Declare Sub Ukommando(byval Wert As Byte)
    Declare Sub Udata(byval Wert As Byte)
    Declare Sub Position(byval X_wert As Byte , Byval Y_wert As Byte)
    Declare Sub Initialisierung
    Declare Sub Lcdloeschen
    Declare Sub Keypressed
    Declare Sub Menueuhr
    Declare Sub Menuetrip1
    Declare Sub Menuetrip2
    Declare Sub Menuekm
    
    Initialisierung
    Lcdloeschen
    
    Menue = Menuetrip1
    
    Do
      Debounce Pind.0 , 0 , Keypressed , Sub
    Loop
    
    
    Sub Keypressed
    
     Select Case Menue
            Case Menueuhr : Menuetrip1
            Case Menuetrip1 : Menuetrip2
            Case Menuetrip2 : Menuekm
            Case Else : Menueuhr
     End Select
    
    End Sub
    
    ' ----------------Initialisierung----------------------------------------------
    Sub Initialisierung
       Ukommando &H21                                           'Erweiterter Kommando-Mode
       Ukommando &H13                                           'Bias (Kontrast) Einstellung Original Nokia = &H13
       Ukommando &HA8                                           'Kontrasteinstellung Original Nokia = &HC8
       Ukommando &H06
    
    
       Ukommando &H0C
       Ukommando &H20                                           'Wieder in den normalen Kommando-Mode
    
    End Sub
    
    ' ----------------Display Löschen----------------------------------------------
    Sub Lcdloeschen
      Local I As Word
       Ukommando &H20                                           'Normaler Kommando-Mode
       Ukommando &H0C                                           'Normaler Bildschirm
       Ukommando &H80                                           'Setze RAM-Adresse auf 0
       Dc = 1                                                   'Sicherstellen, dass man im Daten-Mode ist
       For I = 0 To 503
          Udata &H00
       Next
    End Sub
    
    ' ----------------Uhr des Menüs----------------------------------------------
    Sub Menueuhr
    
    Lcdloeschen
    Position &B10001100 , &B01000101
    Udata &H3F
    Udata &H40
    Udata &H40
    Udata &H40
    Udata &H3F
    
    Udata &H00
    Udata &H7F
    Udata &H08
    Udata &H08
    Udata &H08
    Udata &H7F
    
    Udata &H00
    Udata &H7F
    Udata &H09
    Udata &H19
    Udata &H29
    Udata &H46
    
    Menue = Menueuhr
    
    End Sub
    
    ' ----------------Trip1 des Menüs----------------------------------------------
    Sub Menuetrip1
    
    Lcdloeschen
    Position &B10111100 , &B01000011
    Udata &H01
    Udata &H01
    Udata &H7F
    Udata &H01
    Udata &H01
    
    Udata &H00
    Udata &H7F
    Udata &H09
    Udata &H19
    Udata &H29
    Udata &H46
    
    Udata &H00
    Udata &H00
    Udata &H41
    Udata &H7F
    Udata &H41
    Udata &H00
    
    Udata &H00
    Udata &H7F
    Udata &H09
    Udata &H09
    Udata &H09
    Udata &H06
    
    Udata &H00
    Udata &H00
    Udata &H42
    Udata &H7F
    Udata &H40
    Udata &H00
    
    Menue = Menuetrip1
    
    End Sub
    
    '------------Position x & y---------------------------------------------------
    Sub Position(byval X_wert As Byte , Byval Y_wert As Byte)
       Dc = 0                                                   'in den Kommando-Mode
       X_wert = X_wert Xor &H80                                 'X_Wert = Spalte 0-83
       Spiout X_wert , 1
       Y_wert = Y_wert Xor &H40                                 'Y_Wert = Zeile 0-5
       Spiout Y_wert , 1
       Dc = 1                                                   'zurück in den Daten-Mode
    End Sub
    
    '------------Kommando Senden---------------------------------------------------
    
    Sub Ukommando(byval Wert As Byte)
       Dc = 0                                                   'in den Kommando-Mode
       Spiout Wert , 1
       Dc = 1                                                   'zurück in den Daten-Mode
    End Sub
    
    '------------Daten Senden------------------------------------------------------
    Sub Udata(byval Wert As Byte)
       Dc = 1                                                   'um sicher zu gehen, dass man auch wirklich im Datenmode ist
       Ce = 0
       Spiout Wert , 1
       Ce = 1
    End Sub
    Gruß Wasi...

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Hallo,

    Position &B10001100 , &B01000101
    so kann das auch nicht funktionieren.
    &B10000000 ($80) ist die X-Adresse und dort wird die X-Position dazu addiert.

    Position (0,0) wäre 1.Spalte 1.Zeile
    Position (0,5) wäre 1.Spalte 6.Zeile

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63
    Hi AL,

    heißt das das es so richtig ist?
    Code:
    ' ----------------Uhr des Menüs---------------------------------------------- 
    Sub Menueuhr 
    
    Lcdloeschen 
    Position(10,5)
    Udata &H3F 
    Udata &H40 
    Udata &H40 
    Udata &H40 
    Udata &H3F 
    
    Udata &H00 
    Udata &H7F 
    Udata &H08 
    Udata &H08 
    Udata &H08 
    Udata &H7F 
    
    Udata &H00 
    Udata &H7F 
    Udata &H09 
    Udata &H19 
    Udata &H29 
    Udata &H46 
    
    Menue = Menueuhr 
    
    End Sub
    Gruß Wasi...

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63
    Hab das jetzt so gemacht!

    Code:
    ' ----------------Uhr des Menüs---------------------------------------------- 
    Sub Menueuhr 
    
    Lcdloeschen 
    Call Position(10,5) 
    Udata &H3F 
    Udata &H40 
    Udata &H40 
    Udata &H40 
    Udata &H3F 
    
    Udata &H00 
    Udata &H7F 
    Udata &H08 
    Udata &H08 
    Udata &H08 
    Udata &H7F 
    
    Udata &H00 
    Udata &H7F 
    Udata &H09 
    Udata &H19 
    Udata &H29 
    Udata &H46 
    
    Menue = Menueuhr 
    
    End Sub
    Das funktioniert aber nicht, was ist den noch falsch?
    Gruß Wasi...

  7. #7
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Hallo,

    ich habe mir nur das Datenblatt angesehen.
    Aber ich denke schon, dass es so funktioniert.

  8. #8
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    ich habe nochmal nachgesehen.
    Auf Seite 11 ist ein Ablaufdiagramm. Es kann sein, dass die Reihenfolge so eingehalten werden muss.

    1. im Kommandomode Funktion setzen &H20 ( Chip aktiv, horizontale Adressierung und Basic Instruktionen )
    2. Display Control setzen &H0C ( Normal Mode )
    3. Y Adressierung ( Zeile )
    4. X Adressierung ( Spalte )

    EDIT:http://www.mikrocontroller.net/forum/read-4-96909.html
    *** damit dürften alle Fragen geklärt sein ***

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63
    EDIT*** das mit dem Link hab ich schon durch, da steht auch nichts genaues was die Positionierung angeht, Leider.

    Hab das jetzt mal so gemacht:
    Code:
    ' ----------------Trip1 des Menüs----------------------------------------------
    Sub Menuetrip1
    
    Lcdloeschen
    
    Call Position(5 , 5)
    Udata &H01
    Udata &H01
    Udata &H7F
    Udata &H01
    Udata &H01
    
    Udata &H00
    Udata &H7F
    Udata &H09
    Udata &H19
    Udata &H29
    Udata &H46
    
    Udata &H00
    Udata &H00
    Udata &H41
    Udata &H7F
    Udata &H41
    Udata &H00
    
    Udata &H00
    Udata &H7F
    Udata &H09
    Udata &H09
    Udata &H09
    Udata &H06
    
    Udata &H00
    Udata &H00
    Udata &H42
    Udata &H7F
    Udata &H40
    Udata &H00
    
    Menue = Menuetrip1
    
    End Sub
    '------------Position x & y---------------------------------------------------
    Sub Position(byval X_wert As Byte , Byval Y_wert As Byte)
                 Ukommando &H20
                 Ukommando &H0C
       Dc = 0                                                   'in den Kommando-Mode
       X_wert = X_wert Xor &H80                                 'X_Wert = Spalte 0-83
       Spiout X_wert , 1
       Y_wert = Y_wert Xor &H40                                 'Y_Wert = Zeile 0-5
       Spiout Y_wert , 1
       Dc = 1                                                   'zurück in den Daten-Mode
    End Sub
    
    '------------Kommando Senden---------------------------------------------------
    
    Sub Ukommando(byval Wert As Byte)
       Dc = 0                                                   'in den Kommando-Mode
       Spiout Wert , 1
       Dc = 1                                                   'zurück in den Daten-Mode
    End Sub
    Leider tut sich weder was in X noch in Y.

    Meiner meinung nach müßte das passen, Vielleicht weiß jemand weiter???

    Ich werde noch ....
    Gruß Wasi...

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    22.10.2005
    Beiträge
    63
    Hab jetzt ein Code gefunden wo die Positionierung drin ist, werde ich mir
    erst mal Anschauen.

    Danke dir albundy!
    Gruß Wasi...

Berechtigungen

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

Labornetzteil AliExpress