- 
	
	
	
	
		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
 
 
- 
	
	
	
	
		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
 
 
- 
	
	
	
	
		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.
 
 
- 
	
	
	
	
		
	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?
 
 
- 
	
	
	
	
		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.
 
 
- 
	
	
	
	
		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.
 
 
- 
	
	
	
	
		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
 
 
- 
	
	
	
	
		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]
 
 
- 
	
	
	
	
		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)
 
 
- 
	
	
	
	
		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