1 | $regfile = "m16def.dat" 'atmega definition
|
2 | $crystal = 16000000 $prog &HFF , &HF1 , &H89 , &H00 ' generated. Take care that the chip supports all fuse bytes. 'Quarztakt 16Mhz
|
3 |
|
4 |
|
5 | 'LCD Configuration********************************
|
6 | Config Lcd = 16 * 2
|
7 | Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5
|
8 | Config Lcdbus = 4
|
9 | '#################################################
|
10 |
|
11 | 'ADC Auswertung initialisierung*******************
|
12 | Config Adc = Single , Prescaler = Auto , Reference = Internal_2.56
|
13 | Start Adc
|
14 | ' Const Adc_multi = 0.4882812500 ' = 5.0 / 1024.0
|
15 |
|
16 | '#################################################
|
17 |
|
18 |
|
19 | 'Eingangskonfiguration*****************************
|
20 | Config Pina.1 = Input
|
21 | Config Pina.2 = Input
|
22 | Config Pina.3 = Input
|
23 | Porta.1 = 1 'Pullup an
|
24 | Porta.2 = 1 'Pullup an
|
25 | Porta.3 = 1 'Pullup an
|
26 | '#################################################
|
27 |
|
28 |
|
29 | 'Ausgangsconfig***********************************
|
30 | Config Pinc.0 = Output
|
31 | '#################################################
|
32 |
|
33 |
|
34 | 'Aliasvergabe*************************************
|
35 | Plus Alias Pina.3
|
36 | Ok Alias Pina.2
|
37 | Minus Alias Pina.1
|
38 |
|
39 | Pumpe Alias Pinc.0
|
40 | '#################################################
|
41 |
|
42 |
|
43 |
|
44 | 'Variabelvergabe**********************************
|
45 | Dim Temperatur As String * 10
|
46 | Dim Einstelltemperatur As Byte
|
47 | Dim Templang As Single
|
48 | Dim Messwert As Byte
|
49 | Dim Settemp As String * 10
|
50 | Dim Multi As Single
|
51 | Dim Zaehler As Byte
|
52 | '#################################################
|
53 | Multi = 0.4882812500
|
54 | Einstelltemperatur = 40.0
|
55 |
|
56 |
|
57 |
|
58 | Start:
|
59 | Do 'loop starten
|
60 | Messwert = Getadc(0) 'messwert holen
|
61 | Templang = Messwert * Multi 'messwert mal multiplikator dass temperatur angezeigt wird
|
62 | Temperatur = Fusing(templang , "##.#") 'format 88.88 vorgeben
|
63 |
|
64 | Pumpe = 0
|
65 | Cls 'display löschen
|
66 | Locate 1 , 4 'cursor setzen
|
67 |
|
68 | Lcd "T=:" ; Temperatur ; "°C" 'T=:88.88°C
|
69 | Locate 2 , 7 'Cursor neu setzen
|
70 | Lcd "Set" 'auf LCD Set in der mitte anzeigen
|
71 | Locate 2 , 12
|
72 | Lcd "Start"
|
73 | Waitms 50
|
74 | If Ok = 0 Then 'wenn OK gedrückt wird
|
75 | Waitms 50 '50ms warten
|
76 | Goto Temperatureinstellen 'dann zur flag Temperatureinstellen springen
|
77 | End If
|
78 | Waitms 50
|
79 | If Plus = 0 Then
|
80 | Goto Kühlen
|
81 | End If
|
82 | Loop 'Loop
|
83 |
|
84 |
|
85 | Temperatureinstellen: 'Flag Temperatureinstellen
|
86 |
|
87 |
|
88 | Do 'Loop Starten
|
89 |
|
90 | Cls 'LCD Löschen
|
91 | Locate 1 , 1 'Cursor 1. reihe, 1.position
|
92 | Lcd "SetT=:" ; Einstelltemperatur ; "°C " 'auf LCD SetT=:88 °C
|
93 | Locate 2 , 8 'Cursor in 2. reihe mitte positionieren
|
94 | Lcd "Ok" 'ok auf Pos. anzeigen
|
95 | Waitms 50
|
96 | If Plus = 0 Then 'wenn taste + dann
|
97 | Incr Einstelltemperatur 'Einstelltemperatur +1
|
98 | End If
|
99 | If Minus = 0 Then 'wenn taste - dann
|
100 | Decr Einstelltemperatur 'einstelltemperatur -1
|
101 | End If
|
102 | Settemp = Str(einstelltemperatur)
|
103 | If Ok = 0 Then 'wenn taste ok dann
|
104 | Waitms 50 'warte 50ms
|
105 | Goto Start 'springe zu flag Start
|
106 | End If
|
107 | Waitms 50 'warte 50ms
|
108 | Loop 'loop
|
109 |
|
110 |
|
111 | Kühlen:
|
112 | Zaehler = 0
|
113 | Do 'loop starten
|
114 | Messwert = Getadc(0) 'messwert holen
|
115 | Templang = Messwert * Multi 'messwert mal multiplikator dass temperatur angezeigt wird
|
116 | Temperatur = Fusing(templang , "##.#")
|
117 | Zaehler = Zaehler + 1
|
118 | Cls 'display löschen
|
119 | Locate 1 , 4 'cursor setzen
|
120 |
|
121 | Lcd "T=:" ; Temperatur ; "°C" 'T=:88.88°C
|
122 | Locate 2 , 1 'cursor an stelle 2.1
|
123 | Lcd "Stop" ; Zaehler 'auf LCD stop ausgeben
|
124 | Pumpe = 1 'pumpe einschalten
|
125 | If Minus = 0 Then 'wenn minustaste gedrückt dann
|
126 | Goto Start 'springe zu START
|
127 | End If
|
128 | If Settemp > Temperatur And Zaehler = 30 Then 'wenn Einstelltemperatur (settemp) größer Ist Temperatur dann
|
129 | Goto Gekuehlt 'springe zu Gehühlt
|
130 | End If
|
131 | Waitms 100 '100ms warten
|
132 | Loop 'loop ende
|
133 |
|
134 |
|
135 | Gekuehlt: 'flag GEKUEHLT
|
136 | Pumpe = 0 'loop
|
137 | Cls 'cursor an stelle 1.1
|
138 | Locate 1 , 1 'Kühlen beendet anzeigen
|
139 | Lcd "Kuehlen beendet" '4 sekunden warten
|
140 | Wait 4
|
141 | Cls
|
142 | Locate 1 , 1
|
143 | Lcd "Schlauch entf."
|
144 | Locate 2 , 8
|
145 | Lcd "Ok"
|
146 | Bitwait Ok , Reset 'Warten bis ok gesetzt ist
|
147 |
|
148 | Do 'lcd löschen
|
149 | Cls 'cursor 1.1
|
150 | Locate 1 , 1 'Pumpe reinigen anzeigen
|
151 | Lcd "Pumpe reinigen?" 'cursor 1. zeile 1. pos
|
152 | Locate 2 , 1 'cursor 2.1
|
153 | Lcd "Ja" 'ja ausgeben
|
154 | Locate 2 , 12 'cursor 2.12
|
155 | Lcd "Nein" 'nein anzeigen
|
156 | If Minus = 0 Then
|
157 | Waitms 50 'wenn minustaste gedrückt dann
|
158 | Goto Reinigen 'springe zu reinigen
|
159 | End If
|
160 | If Plus = 0 Then
|
161 | Waitms 50 'wenn Plus taste dann
|
162 | Goto Start
|
163 | 'springe zu Start
|
164 | End If
|
165 | Waitms 100
|
166 | Loop
|
167 |
|
168 |
|
169 | Reinigen: 'flag REINIGEN
|
170 | Cls 'loop
|
171 | Locate 1 , 1
|
172 | Lcd "Reinigen mit"
|
173 | Locate 2 , 1
|
174 | Lcd "Wasser"
|
175 | Wait 4
|
176 | Cls
|
177 | Locate 1 , 1
|
178 | Lcd "Spuelen Start?"
|
179 | Locate 2 , 8
|
180 | Lcd "OK"
|
181 | Bitwait Ok , Reset
|
182 | Cls
|
183 | Locate 1 , 1
|
184 | Lcd "Spuehlen laeuft"
|
185 | Pumpe = 1
|
186 | Wait 6
|
187 | Pumpe = 0
|
188 | Cls
|
189 | Locate 1 , 1
|
190 | Lcd "Schlauch entf."
|
191 | Locate 2 , 8
|
192 | Lcd "Ok"
|
193 | Bitwait Ok , Reset
|
194 | Pumpe = 1
|
195 | Cls
|
196 | Locate 1 , 1
|
197 | Lcd "Schlauch leeren"
|
198 | Wait 5
|
199 | Pumpe = 0
|
200 |
|
201 | Cls
|
202 | Goto Start
|
203 | 'lcd Löschen
|
204 | End
|