1 | '**********************************************************
|
2 | 'Compiler : BASCOM-AVR
|
3 | 'Hardware : DS1820 an PD.6
|
4 | ' LC-Display
|
5 | 'Chip type : AT90S2313
|
6 | '**********************************************************
|
7 |
|
8 | $regfile = "2313def.dat" 'AT90S2313
|
9 | $crystal = 3579545 'Quarz 3.579MHz
|
10 |
|
11 | Config 1wire = Portd.6 'DS1820 DQ an PD6
|
12 |
|
13 | Config Lcd = 20 * 2
|
14 | Config Lcdbus = 4
|
15 | Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.0 , E = Portb.1
|
16 |
|
17 | Dim Ds1820 As Integer 'Variablennname und Typ festlegen
|
18 | Dim Halb As Byte
|
19 |
|
20 | Cursor Off
|
21 | Cls
|
22 | Lcd "DS1820 an PD.6" 'Ausgabe des Textes auf LCD
|
23 | Wait 3 'warte 3 Sekunden
|
24 | Cls 'lösche LCD
|
25 | Lcd "Temp:" 'Ausgabe des Textes auf LCD
|
26 | Do 'Beginn Schleife
|
27 | 1wreset 'Reset DS1821
|
28 | 1wwrite &HCC 'überspringe ROM
|
29 | 1wwrite &H44 'starte Temperaturkonvertierung
|
30 | Waitms 300 'warte 100 Millisekunden
|
31 | 1wreset 'Reset DS1821
|
32 | 1wwrite &HCC 'Überspringe ROM
|
33 | 1wwrite &HBE 'sende T-Register 60h und 61h an Atmel
|
34 | Ds1820 = 1wread(9) 'lese die empfangenen Daten
|
35 | 1wreset 'Reset DS1821
|
36 | Halb = Ds1820 And 1 'prüfen auf letztes Bit (x.5 Grad)
|
37 | Locate 2 , 1 'LCD-Cursor auf Zeile2, Spalte1
|
38 | Shift Ds1820 , Right 'entferne letztes Bit (Rechtsschieben)
|
39 | If Ds1820 > 127 Then 'wenn Temperatur negativ ist
|
40 | Lcd "-" 'dann "Minus" auf LCD ausgeben
|
41 | Ds1820 = 256 - Ds1820 'und negative Temperatur berechnen
|
42 | If Halb = 1 Then Ds1820 = Ds1820 - 1 'wenn Wert x.5 dann um 1 korrigieren
|
43 | Else 'wenn Temperatur Positiv
|
44 | Lcd " " 'dann Leerzeichen auf Display ausgeben
|
45 | End If
|
46 | Lcd Ds1820 ; "."; 'Ausgabe Temperatur und Komma
|
47 | If Halb = 1 Then 'wenn x.5
|
48 | Lcd "5" 'dann "5" nach Komma ausgeben
|
49 | Else 'wenn x.0
|
50 | Lcd "0" 'sonst "0" nach Komma ausgeben
|
51 | End If
|
52 | Lcd "C " 'Ausgabe des Textes auf LCD
|
53 | Wait 1 'warte 1 Sekunde
|
54 | Loop 'zum Beginn der Schleife
|
55 |
|
56 | End
|