- Akku Tests und Balkonkraftwerk Speicher         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 36

Thema: LCD an CControl1 ohne Application Board

  1. #21
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    54
    Beiträge
    1.258
    Anzeige

    Praxistest und DIY Projekte
    Hallo RCO,
    hmmm, ich weiss nicht, womit heutzutage Conrad seine C-Controls ausliefert, bei mir waren sie dabei
    Online stellen werd ich sie nicht, ich geb dir aber den Link darauf:
    http://www.c-control.de/downloads/appboard.zip
    Gruss, Michael

    Edit am 21.07.2009:
    Die C-Control-Software findet man mittlerweile unter:
    http://www1.conrad.de/information/do..._ccontrol.html

  2. #22
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Danke Michael, ist genau was ich gesucht habe.
    Das Ding ist, ich habe ja kein Application-Board, von daher auch keine Software, nur das Display und nen Starterboard.
    Eigentlich hatte ich auch auf C-control.de gesucht, aber es wohl nicht gefunden.

    Danke nochmal

  3. #23
    CapSob(1)
    Gast
    Hy!

    Also es funtzt jetzt. Ich habe mit Matthias zusammen eine Art "Engine" programmiert für die CControl/Basic. Bei gelegenheit werde ich sie mal posten.

    mfg,
    CapSob.

  4. #24
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    14.12.2003
    Alter
    34
    Beiträge
    1.187
    Code:
    '---------- Variblen Deklaration ----------
    define lcd_out byteport[2] '9=D4 10=D5 11=D6 12=D7
    define rs port[13]
    define enable port[14]
    'rw auf Masse
    define buffer byte
    define zeichen byte 'Zu uebertragendes Zeichen
    
    '---------- Hauptprogramm ----------
    
    gosub lcd_init 'LCD Initialisierungs-Routine
    zeichen = 1
    gosub lcd_line 'Start in Zeile 1
    
    zeichen = 82
    gosub lcd_write 'R
    zeichen = 101
    gosub lcd_write 'e
    zeichen = 110
    gosub lcd_write 'n
    zeichen = 101
    gosub lcd_write 'e
    goto ende
    
    '---------- LCD Funktionen ----------
    #lcd_init
    lcd_out=off
    zeichen=&h38:gosub lcd_command
    lcd_out=&b00000010
    tog enable
    tog enable
    zeichen=&h28:gosub lcd_command
    zeichen=&h0c:gosub lcd_command
    
    #lcd_cls
    zeichen=&h02:gosub lcd_command
    zeichen=&h02:gosub lcd_command
    return
    
    #lcd_write
    buffer = &b00010000
    goto lcd_send
    
    #lcd_line
    if zeichen = 1 then zeichen = &h80
    if zeichen = 2 then zeichen = &hC0
    
    #lcd_command
    buffer = off
    
    #lcd_send
    lcd_out = buffer or (zeichen shr 4)
    tog enable
    tog enable
    lcd_out = buffer or (zeichen and &h0f)
    tog enable
    tog enable
    return
    
    #ende
    end
    Ich glaube so war's, oder?

  5. #25
    Gast
    Jein, ich hab nen Quelltext gefunden, der deinem ziemlich ähnlich ist, allerdings verstehe ich nciht, warum rw auf Masse gezogen wird, denn wenn ich das bei dem Display mache, kommt nur Müll auf dem Display an.
    Oder vielleicht hab ich auch ne falsche Dokumentation vom Display, dass finde ich noch raus...
    Mit der Beispieldatei läuft es auf jeden Fall wunderbar.

  6. #26
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Sorry, war nicht inegloggt, aber kann mir das jemand sagen?
    Warum ist rw auf Masse, beim C-control-Display passiert nix wenn man es auf Masse zieht, ebenfalls nix, wenn man high setzt.
    CCplus steuert den irgendwie an, also wenn man ne LEd dranhängt blingt die beim Übertragen.

  7. #27
    Gast
    Ist das was MAtthias da geschhrieben hat eure Engine?
    Ach ja, könnte einer von euch mir diese Beiden Zeilen erklären, also nicht was sie machen, sondern, welcher Befehl was bedeutet, und bewirkt.

    lcd_out = buffer or (zeichen shr 4)
    lcd_out = buffer or (zeichen and &h0f)

    Danke

  8. #28
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    49
    Beiträge
    851
    Ein Beispielprgramm das ich kurz aus einem meiner programme zusammengeschnitten hab als Demo mit den wichtigsten Funktionen zur LCD-Ausgabe. Es wird ein Text ausgegeben auf das Display welcher in einer Tabelle ist am Ende und danach in Wert angezeigt (8-Bit).

    Code:
    '----------------------------------------------------------------------------
    ' Texte und Werte ausgeben
    '----------------------------------------------------------------------------
    
    'I/O-Ports definieren
    '--------------------
    Define LCDPort        BytePort[2]  'LC-Display Port
    Define D4             Port[9]      'LCD D4        4-Bit (D0 / D4)
    Define D5             Port[10]     'LCD D5        4-Bit (D1 / D5)
    Define D6             Port[11]     'LCD D6        4-Bit (D2 / D6)
    Define D7             Port[12]     'LCD D7        4-Bit (D3 / D7)
    Define RW             Port[13]     'LCD RW        0=Schreiben / 1=Lesen
    Define RS             Port[14]     'LCD RS        0=Befehl    / 1=ASCII
    Define EN             Port[15]     'LCD E         Datenübernahme (neg. Flanke)
    
    
    'Variablen definieren
    '--------------------
    Define TempWort       Word[9]      'Universelles Temp-Wort (16-Bit) für Berechnungen
    Define TempByte       Byte[19]     'Universelles Temp-Byte (8-Bit)  für Berechnungen
    Define VarLcdData     Byte[20]     'Datenbyte an/vom LC-Display
    Define LcdBuf         Byte[21]     'LCD-Buffer
    Define LcdParam       Byte[22]     'Übergabewert an LC-Display.
    Define VarTextNr      Byte[23]     'Text-Ausgabe (Nr.)
    Define kk             Byte[24]     'Zählvariable
    
    
    'Assembler-Einsprungpunkte definieren
    '------------------------------------
    Define LcdCmd         &H0101       'Sys: Kommando an LCD senden
    Define LcdChar        &H0107       'Sys: Zeichen an LCD senden
    Define LcdPulse       &H0120       'Sys: Impuls an Enable ausgeben
    
    
    'Konstanten definieren
    '---------------------
    Define LcdClear               &B00000001
    Define LcdCursorHome          &B00000010
    Define LcdDisplayEin          &B00001100
    Define LcdDisplayAus          &B00001000
    Define LcdCursorEin           &B00001110
    Define LcdCursorAus           &B00001100
    Define Z1S1                   &H80             'Zeile 1 Spalte 1
    Define Z1S2                   &H81             'Zeile 1 Spalte 2
    Define Z1S3                   &H82             '...
    Define Z1S4                   &H83
    Define Z1S5                   &H84
    Define Z1S6                   &H85
    Define Z1S7                   &H86
    Define Z1S8                   &H87
    Define Z1S9                   &H88
    Define Z1S10                  &H89
    Define Z1S11                  &H8A
    Define Z1S12                  &H8B
    Define Z1S13                  &H8C
    Define Z1S14                  &H8D
    Define Z1S15                  &H8E
    Define Z1S16                  &H8F
    Define Z2S1                   &HC0             'Zeile 2 Spalte 1
    Define Z2S2                   &HC1             'Zeile 2 Spalte 2
    Define Z2S3                   &HC2             '...
    Define Z2S4                   &HC3
    Define Z2S5                   &HC4
    Define Z2S6                   &HC5
    Define Z2S7                   &HC6
    Define Z2S8                   &HC7
    Define Z2S9                   &HC8
    Define Z2S10                  &HC9
    Define Z2S11                  &HCA
    Define Z2S12                  &HCB
    Define Z2S13                  &HCC
    Define Z2S14                  &HCD
    Define Z2S15                  &HCE
    Define Z2S16                  &HCF
    Define EOT                    &H00             'Text Ende-Kennung
    Define Schreiben              Off
    Define Lesen                  On
    Define CommandMode            Off
    Define AsciiMode              On
    Define Lo                     Off
    Define Hi                     On
    Define Enabled                Off
    Define Diabled                On
    Define Down                   Off
    Define Up                     On
    
    
    'ASCII-Codes definieren
    '----------------------
    Define xA_              &H41      ' A
    Define xB_              &H42      ' B
    Define xC_              &H43      ' C
    Define xD_              &H44      ' D
    Define xE_              &H45      ' E
    Define xF_              &H46      ' F
    Define xG_              &H47      ' G
    Define xH_              &H48      ' H
    Define xI_              &H49      ' I
    Define xJ_              &H4A      ' J
    Define xK_              &H4B      ' K
    Define xL_              &H4C      ' L
    Define xM_              &H4D      ' M
    Define xN_              &H4E      ' N
    Define xO_              &H4F      ' O
    Define xP_              &H50      ' P
    Define xQ_              &H51      ' Q
    Define xR_              &H52      ' R
    Define xS_              &H53      ' S
    Define xT_              &H54      ' T
    Define xU_              &H55      ' U
    Define xV_              &H56      ' V
    Define xW_              &H57      ' W
    Define xX_              &H58      ' X
    Define xY_              &H59      ' Y
    Define xZ_              &H5A      ' Z
    Define x_a              &H61      ' a
    Define x_b              &H62      ' b
    Define x_c              &H63      ' c
    Define x_d              &H64      ' d
    Define x_e              &H65      ' e
    Define x_f              &H66      ' f
    Define x_g              &H67      ' g
    Define x_h              &H68      ' h
    Define x_i              &H69      ' i
    Define x_j              &H6A      ' j
    Define x_k              &H6B      ' k
    Define x_l              &H6C      ' l
    Define x_m              &H6D      ' m
    Define x_n              &H6E      ' n
    Define x_o              &H6F      ' o
    Define x_p              &H70      ' p
    Define x_q              &H71      ' q
    Define x_r              &H72      ' r
    Define x_s              &H73      ' s
    Define x_t              &H74      ' t
    Define x_u              &H75      ' u
    Define x_v              &H76      ' v
    Define x_w              &H77      ' w
    Define x_x              &H78      ' x
    Define x_y              &H79      ' y
    Define x_z              &H7A      ' z
    Define xae              &HE1      ' ä
    Define xoe              &HEF      ' ö
    Define xue              &HF5      ' ü
    Define x_0              &H30      ' 0
    Define x_1              &H31      ' 1
    Define x_2              &H32      ' 2
    Define x_3              &H33      ' 3
    Define x_4              &H34      ' 4
    Define x_5              &H35      ' 5
    Define x_6              &H36      ' 6
    Define x_7              &H37      ' 7
    Define x_8              &H38      ' 8
    Define x_9              &H39      ' 9
    Define x__              &H20      ' Leerzeichen
    Define xPz              &H25      ' %
    Define xSt              &H2A      ' *
    Define xPl              &H2B      ' +
    Define xKo              &H2C      ' ,
    Define xMi              &H2D      ' -
    Define xDt              &H2E      ' .
    Define xDP              &H3A      ' :
    Define xGl              &H3D      ' =
    Define ESC              27        ' ESC-Zeichen
    Define Tab              9         ' Tabulator
    
    
    'Textbeschreibungen
    '------------------
    Define TxtVersion1         0      'Hochlauf-Text (nach dem Einschalten)
    Define TxtVersion2         13
    
    
    'Initialisierung des Steuergeräts:
    '---------------------------------
    '  Nach einem Reset oder nach dem Einschalten wird diese Routine durchlaufen. Dabei
    '  wird das digitale Potentiometer und das LC-Display initialisiert.
    '  Danach wird für drei Sekunden eine Hochlaufmeldung des Steuergeräts angezeigt.
    
    #Programm
      GoSub LCDReset                                                   'Das LC-Display initialisieren im 4-Bit Modus
      Sys LcdCmd LcdClear
      Pause 1
      'Text-String ausgeben (aus der Tabelle)
      VarTextNr = TxtVersion1
      Sys LcdCmd Z1S1
      GoSub LCDWriteText
      VarTextNr = TxtVersion2
      Sys LcdCmd Z2S1
      GoSub LCDWriteText
      Pause 80
      Sys LcdCmd LcdClear
      'Wert ausgeben
      TempByte = 20
      Sys LcdCmd Z2S11
      GoSub LCDWriteCount8Bit
      End
    
    ' Routinen für das LC-Display (2x16 Zeichen):
    ' -------------------------------------------
    '   Das LC-Display wird beim Initialisieren auf 4-Bit Modus umgestellt und arbeitet
    '   danach nur noch auf den Datenleitungen D4 bis D7. Dabei werden bei jedem
    '   Kommando zuerst das niederwertigere Nibble und danach das höherwertige Nibble
    '   übertragen. Es stehen Einzelzeichen und komfortable Textausgaben zur Verfügung,
    '   welche den Umgang mit dem Display vereinfachen. Desweiteren kann auch vom
    '   Display gelesen werden.
    
    #LCDReset
      'Das LC-Display initialisieren und den Display-Inhalt löschen
      'LC-Display initialisieren im 4-Bit Modus
      LcdPort =  &H80                                                  'Alle Ports auf Low setzen
      Sys LcdCmd &H38                                                  '8-Bit-Modus aktivieren
      LcdPort =  &H82                                                  'Mit 8-Bit Kommando in 4-Bit-Modus umschalten
      Sys LcdPulse
      Sys LcdCmd &H28                                                  'Ab jetzt 4-Bit-Modus
      Sys LcdCmd &H0C
    
    #LCDClearZeile1
      'Erste Zeile im LC-Display löschen
      Sys LcdCmd Z1S1
      GoTo LCDClearZeile
    
    #LCDClearZeile2
      'Zweite Zeile im LC-Display löschen
      Sys LcdCmd Z2S1
    
    #LCDClearZeile
      'Ausgewählte Zeile im LC-Display löschen
      For kk = 1 to 16
        Sys LcdChar &H20
      Next kk
      Return
    
    #LCDWriteCount8Bit
      '8-Bit Integer an Display ausgeben
      kk = TempByte / 100
      If TempByte > 99 Then Sys LcdChar &H30 + kk
      kk = (TempByte - (kk * 100)) / 10
      If TempByte > 9 Then Sys LcdChar &H30 + kk
      kk = TempByte MOD 10
      Sys LcdChar &H30 + kk
      Return
    
    #LCDRead
      'Daten von LC-Display lesen als zwei 4-Byte Blöcke (zuerst Higher, dann Lower)
      Deact D4
      Deact D5
      Deact D6
      Deact D7
      RW = Lesen
      Sys LcdPulse
      VarLcdData = &H0F And (LCDPort ShL 4)
      Sys LcdPulse
      VarLcdData = VarLcdData Or (LCDPort And &H0F)
      RW = Schreiben
      Return
    
    #LCDWriteText
      LookTab TabTexte, VarTextNr, VarLcdData
      If VarLcdData = EOT Then Return
      Sys LcdChar VarLcdData
      VarTextNr = VarTextNr + 1
      GoTo LCDWriteText
    
    
    'Texte für das LC-Display:
    '-------------------------
    '  Zeichenfolgen welche als gesamtes ausgegeben werden. Es ist immer eine Einsprung-
    '  Adresse vorhanden, ab der die Zeichenfolge steht. Am Ende folgt ein ASCII-Code 0
    '  der das Ende der Textausgabe anzeigt, damit die Ausgabe beendet wird und der nach-
    '  folgende Text nicht ebenfalls ausgfegeben wird.
    '
    '  Tabellenstruktur:  ASCII-Zeichen 1,  ASCII-Zeichen 2, ... Ende-Kennung (EOT)
    
    Table TabTexte
      xV_  x_e  x_r  x_s  x_i  x_o  x_n  xDP  x__  x_1  xDt  x_0  EOT                       '0   - Version 1.0
      xW_  x_o  x_l  x_f  x_g  x_a  x_n  x_g  x__  xS_  x_c  x_h  x_m  x_i  x_d  EOT        '13  - Wolfgang Schmid
    TabEnd
    
    SysCode "LCD.S19"
    Die zugehörige LCD.S19 Datei mit dem Assemblerprogramm von mit das die LCD-Routinen enthält:

    Code:
    S11B0101A680B7B52004A6A0B7B5B69244444444CD011CB692A40FCD70
    S11B0119011C81BAB5B7021C021D02811D01B692B1B727F723093CB73B
    S11801311801CD014120ED3AB71901CD014120E41A011B0181AA
    S9030000FC
    Viel Spass damit.

    Grüsse Woflgang[/code]

  9. #29
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Mal kurz zwischendurch, nicht ganz zum Thema, aber wie stelle ich folgendes an?

    Ich will eine if-Bedingung, und bei then sollen dann mehrer anweisungen folgen.
    Folgendes funktioniert nicht:
    if a then d : b : c
    if a then (d : b : c)
    if a tehn (d b c)

  10. #30
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    49
    Beiträge
    851
    Hallo RCO!

    Das geht mit der IDE auch nicht zu programmieren. Man kann nur direkt eine Aktion nach THEN schreiben. Du kannst nur eine Sprungmarke verwenden die bei Nichterfüllung über die auszuführenden Aktionen hinwegspringt.

    Code:
      ...
      If Not(Wert1 = Wert2) Then GoTo M001
      Aktion 1
      Aktion 2
      Aktion 3
    #M001
      ...
    Jetzt würde bei Wert1 = Wert2 nicht gesprungen werden und die Aktionen 1 bis 3 ausgeführt werden. Ansonsten bei Wert1 <> Wert2 springt das Programm einfach darüber hinweg.

    Grüsse Woflgang

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test