'----------------------------------------------------------------------------------------- 'name : lcd1.bas 'copyright : Scorpion_XIII 'purpose : 'micro : Mega8515 '----------------------------------------------------------------------------------------- 'Standardeinstellungen aus dem Beispiel ;) $regfile = "m8515.dat" ' specify the used micro $crystal = 8000000 ' used crystal frequency $baud = 19200 ' use baud rate $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space $sim 'REMOVE the above command for the real program !! '$sim is used for faster simulation Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6 'LCD-Pins (Hardware angeschlossen an...) Config Kbd = Portb 'Chipeinstellungen ??? Config Lcd = 16 * 2 'configure lcd screen Enable Interrupts 'Interrupts global zulassen '----------------------- 'Variablen: Dim B As Byte Dim I As Integer 'Standard Zählvariable ;-) Dim J As Byte 'Zählvariable fürs Hauptmenü (Button) Dim K As Byte 'Zählvariable fürs Untermenü ' Dim Maxarray As Byte 'Maximale Länge des Arrays=Maximale Anzahl der Werte Dim Akttemp1 As Byte Dim Aktw As Byte Dim T1date(10) As Byte ' Datum für Temp Sensor1 Dim T1wert(10) As Byte ' Werte für Temp Sensor1 Dim Hauptmenue(4) As String * 1 Dim Untermenue1(7) As String * 1 Dim Untermenue2(6) As String * 1 Dim Zeichen As String * 1 '--------------------------- 'Eigene Funktionen deklarieren Declare Function Maxwert(byval Inputwert1 As Single , Byval Inputwert2 As Single) As Single 'da Temperatur ein Kommawert mit Vorzeichen, und weil ich bis jetzt nur weiß wie man single ordentlich auf dem lcd ausgibt 'vom speicherplatz ist das natürlich nicht gerade toll mit single:( Declare Function Minwert(byval Inputwert1 As Single , Byval Inputwert2 As Single) As Single 'Eigene Zeichen Deflcdchar 0 , 4 , 14 , 31 , 4 , 4 , 4 , 4 , 4 'Pfeil Hoch auf der 0 Deflcdchar 1 , 4 , 4 , 4 , 4 , 4 , 31 , 14 , 4 'Pfeil Runter auf der 1 Deflcdchar 2 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 'Gradzeichen auf der 2 Cls ' Muss hier nach der Zeichenerstellung stehen 'Variablen initialisieren B = 1 J = 1 I = 0 '__________________________________________________ '__________________________________________________ MAIN-PROGRAMM Main: B = Getkbd() If B = 1 Then 'Button runter (2) If J = 3 Then J = 1 Cls Else J = J + 1 Cls End If End If If B = 9 Then 'Button Hoch (8) If J = 1 Then J = 3 Cls Else J = J - 1 Cls End If End If Select Case J Case 1 Upperline Lcd "Hauptmenu" Lowerline Lcd "Messung Starten" Case 2 Upperline Lcd "Hauptmenu" Lowerline Lcd "Aktuelle Werte" If B = 17 Then K = 1 B = 1 Cls Goto Aktuellewerte End If Case 3 Upperline Lcd "Hauptmenu" Lowerline Lcd "Einstellungen" End Select Goto Main 'Untermenüs: '------------------------------------ Aktuellewerte: Dim Maxwertzw1 As Single 'Variable für den maximalen Temperaturwert1 (zwischenspeichern) Dim Maxwertzw2 As Single 'Variable für den maximalen Temperaturwert2 (zwischenspeichern) Dim Maxwertzw3 As Single 'Variable für den maximalen Temperaturwert3 (zwischenspeichern) Dim Minwertzw1 As Single 'Variable für den minimalen Temperaturwert1 (zwischenspeichern) Dim Minwertzw2 As Single 'Variable für den minimalen Temperaturwert2 (zwischenspeichern) Dim Minwertzw3 As Single 'Variable für den minimalen Temperaturwert3 (zwischenspeichern) Dim Aktwertzw As Single ''Variable für den aktuellen Temperaturwert (zwischenspeichern) B = Getkbd() 'Zurück ins Hauptmenü If B = 13 Then B = 2 Cls Goto Main End If If B = 1 Then 'Button runter (2) If K = 3 Then K = 1 Else K = K + 1 End If End If If B = 9 Then 'Button Hoch (8) If K = 1 Then K = 3 Else K = K - 1 End If End If Select Case K 'Durchgehen der Sensoren und Anzeigen Case 1 Aktwertzw = -20.0 'Da wo Zahl steht muss der eingelesen Wert hin *************************************** Maxwertzw1 = Maxwert(maxwertzw1 , Aktwertzw) 'Berechne Maximum von aktuellem und gespeichertem Wert Minwertzw1 = Minwert(minwertzw1 , Aktwertzw) Upperline Lcd "Sens1: " Lcd Fusing(aktwertzw , "##.#") Lcd Chr(2) Lowerline Lcd Chr(0) Lcd Fusing(maxwertzw1 , "##.#") Lcd Chr(2) Lcd " " Lcd Chr(1) Lcd Fusing(minwertzw1 , "##.#") Lcd Chr(2) Case 2 ' Upperline Lcd "Sens2: " Lcd "+25.3" Lcd Chr(2) Lowerline Lcd Chr(0) Lcd "-25.0" Lcd Chr(2) Lcd " " Lcd Chr(1) Lcd "-25.0" Lcd Chr(2) Case 3 ' Upperline Lcd "Sens3: " Lcd "+25.3" Lcd Chr(2) Lowerline Lcd Chr(0) Lcd "-25.0" Lcd Chr(2) Lcd " " Lcd Chr(1) Lcd "-25.0" Lcd Chr(2) End Select Goto Aktuellewerte '_______________________________ Messungstarten: Lcd "Endlos" Goto Messungstarten 'Funktionen '----------------------------------------------- Function Maxwert(inputwert1 As Single , Inputwert2 As Single) As Single 'byval will er haben Dim Maxw As Single Maxw = 0 If Inputwert1 > Inputwert2 Then Maxw = Inputwert1 Else Maxw = Inputwert2 End If Maxwert = Maxw End Function '-------------- Function Minwert(inputwert1 As Single , Inputwert2 As Single) As Single 'byval will er haben Dim Minw As Single Minw = 0 If Inputwert1 < Inputwert2 Then Minw = Inputwert1 Else Minw = Inputwert2 End If Minwert = Minw End Function