Gast
#427441
Guten Morgen zusammen! Hab mir mit nem 2x16 Zeichen Display und einem DS18S20 ein Thermometer gebastelt. Jetzt habe ich das Problem, dass die Gradanzeige im Sekundentakt blinkt. Wie bekomme ich das so hin, dass es normal angezeigt wird? Falls einer von euch eine Idee hat, dann nur zu. Ich bin jedenfalls ratlos. Grüße Code: $lib "lcd4busy.lbx" $regfile = "m8def.dat" $crystal = 4000000 Config Lcd = 16 * 2 Const _lcdport = Portd Const _lcdddr = Ddrd Const _lcdin = Pind Const _lcd_e = 1 Const _lcd_rw = 2 Const _lcd_rs = 3 Cls Cursor Off Noblink 'Config Pinb.0 = Output '***** DS1820 Befehle Const Read_rom = &H33 Const Skip_rom = &HCC Const Convertt = &H44 Const Read_ram = &HBE Const Write_ram = &H4E Const Copy_ram = &H48 Const Recall_ee = &HB8 Const Read_power = &HB4 Const Match_rom = &H55 Declare Sub 18s20_auslesen Declare Sub Temperatur Dim Bd(9) As Byte Dim I As Byte , Tmp As Byte Dim Crc As Byte Dim T As Integer , T1 As Single , Grad As Single Dim V As Byte Dim Temp_anzeige As String * 7 , Zeichen As Byte Dim Temp As Word Dim Messen As Bit , Empfang As Byte Config 1wire = Portb.2 ' DS18s20 an Pin b.2 Locate 1 , 1 Lcd "Temp:" Do Temperatur Waitms 5000 Loop End '/////////////////////////////////////////////////////////////////////// /////// Sub Temperatur 1wwrite Skip_rom 1wwrite Convertt ' Messung starten '**** warten bis abgeschlossen Do Temp = 1wread() Loop Until Temp.7 = 1 '***** Bit 8 muss 1 sein! 18s20_auslesen ' 9 bytes einlesen Temp_anzeige = Fusing(grad , "##.#" ) '**** um aufzurunden! Locate 1 , 7 Lcd Temp_anzeige End Sub '/////////////////////////////////////////////////////////////////////// /////// Sub 18s20_auslesen 1wreset ' Reset 1wwrite Skip_rom ' Chip ansprechen 1wwrite Read_ram ' Befehl zum Auslesen des Rams Bd(1) = 1wread(9) ' 9 Bytes lesen 1wreset 'Reset Temp = Bd(2) Shift Temp , Left , 8 Temp = Temp + Bd(1) T = Temp T = T / 2 Grad = Bd(8) - Bd(7) Grad = Grad / Bd(8) Grad = Grad + T Grad = Grad - 0.25 End Sub