'-------------------------------------------------------------- ' Mikrocontroller "Definitionsdatei" $regfile = "m32def.dat" 'Quarz: 3.6864 MHz $crystal = 3686400 'Ausgangsport festlegen.. Bits Segmente A bis D Ddrb.0 = 1 Ddrb.1 = 1 Ddrb.2 = 1 Ddrb.3 = 1 'Ausgangsport festlegen.. Segmente schalten... Ddrd.5 = 1 Ddrd.6 = 1 'Festlegung der Variablen Dim Segment As Byte Dim U_mess_single As Single Dim Delta_t_max As Integer Dim Delta_u As Single Dim Delta_u_2 As Single Dim T_mess As Single Dim Temperatur As Integer Dim U_mess As Word Dim Temperatur_einer As Single Dim Temperatur_zehner_int As Integer Dim Temperatur_einer_int As Integer '---Configuration des LCD Displays--- Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.7 , Rs = Portc.6 '-------------------------------------------------- '-------------------------------------------------------------- 'Konfiguration und Start des ADCs... Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc '-------------------------------------------------------------- '------------------------------------------------------------- ' Konfiguration Timer0 mit Timer Funktion/Multiplexing-Anzeige Config Timer0 = Timer , Prescale = 1024 Enable Timer0 Timer0 = 215 On Timer0 Sprungmarke1 '------------------------------------------------------------- 'Interrupt routinen einschalten... Enable Interrupts 'Hauptprogramm Do Wait 1 'Messwert holen und berechnen... '---------------------------------------------------- U_mess = Getadc(0) U_mess_single = U_mess / 1024 U_mess_single = U_mess_single * 5.08 Delta_u = 2.236 - U_mess_single Delta_u_2 = Delta_u / 1.355 Delta_u_2 = Delta_u_2 * 180 T_mess = 140 - Delta_u_2 'T_mess = Round(t_mess) 'Temperatur = Int(t_mess) Temperatur = Abs(t_mess) 'Ausgabe LCD-Display '----------------------- Cls Locate 1 , 1 Lcd Temperatur '----------------------- 'Vorbereitung Einer u. Zehner für 7-Segmentanzeige(n)... '----------------------------------------------------- Temperatur_einer = Temperatur / 10 Locate 2 , 1 Lcd Temperatur_einer Temperatur_zehner_int = Int(temperatur_einer) Temperatur_einer = Frac(temperatur_einer) Temperatur_einer = Temperatur_einer * 10 Temperatur_einer = Round(temperatur_einer) Locate 3 , 1 Lcd Temperatur_einer Temperatur_einer_int = Int(temperatur_einer) '----------------------------------------------------- Loop ' Programmende... End ' Sprungmarke Timer0, Multipleximg Segmentanzeigen... '------------------------------------------------ Sprungmarke1: Timer0 = 215 Segment = Segment + 1 If Segment = 3 Then Segment = 1 Select Case Segment Case 1 Portd.5 = 0 Portd.6 = 1 Portb.0 = Temperatur_einer_int.0 Portb.1 = Temperatur_einer_int.1 Portb.2 = Temperatur_einer_int.2 Portb.3 = Temperatur_einer_int.3 Case 2 Portd.5 = 1 If Temperatur_zehner_int > 0 Then Portd.6 = 0 Else Portd.6 = 1 End If Portb.0 = Temperatur_zehner_int.0 Portb.1 = Temperatur_zehner_int.1 Portb.2 = Temperatur_zehner_int.2 Portb.3 = Temperatur_zehner_int.3 Case Else End Select Return