Hallo zusammen,
für den Einstieg in die µC-Welt habe ich angefangen, mich mit Picaxe zu
beschäftigen und ich habe es tatsächlich auch schon geschafft, LEDs
blinken zu lassen :-D
Dann habe ich diesen Temp-Reader erfolgreich nachgebaut:
http://picaxe.zierath-software.de/beispiele/DS18B20.html
Der Code ist ursprünglich für einen 20M, daher mußte ich ihn
erst für meinen 08M2+ anpassen, was aber nicht sehr schwer war.
Also Zeit für die nächste Schwierigkeitsstufe:
http://picaxe.zierath-software.de/beispiele/Freqmessung.html
Damit hab ich nun so meine Probleme.
Auch hier ist es nötig den Code anzupassen, da dieser für einen
14M geschrieben ist, ich jedoch einen 14M2 verwenden will, der
einen etwas geänderten Befehlssatz enthält.
Die Ausgabe soll auf auf ein LCD-Display QC1602A (blau/weiß) erfolgen,
also 16 Zeichen x 2 Zeilen, klar. Der Controller ist laut Datenblatt ein
KS0066, meiner Recherche nach 100% kompatibel mit dem HD44780.
Letztendlich wird im Versuchsaufbau nichts Brauchbares angezeigt,
lediglich die obere Reihe zeigt 16 weiße Klötzchen, was aber wohl kaum
daran liegen wird, daß ich noch kein Meßsignal angelegt habe. Ich vemute
den Fehler zunächst mal im Code, denn ich bin nicht sicher,
ob meine Anpassungen korrekt sind. Gerade die Initialisierung ist für
mich ein bömisches Dorf, da tappe ich völlig im Dunkeln.
Ich habe zwar versucht, das Thema Initialisierung über die Seite
http://www.sprut.de/electronic/lcd/ zu lösen, dabei hat mein Hirn
allerdings einen Strömungsabriss erlitten ;-)
Wäre schön, wenn mir jemand auf die Sprünge helfen könnte...
Herzlichen Dank :-)
Hier der von mir angepaßte Code:
1 | setfreq m8
|
2 |
|
3 | symbol Wert=b0
|
4 | symbol LesePin=b1
|
5 | symbol HighWert=b2
|
6 | symbol LowWert=b3
|
7 | symbol Zehntausend=b4
|
8 | symbol Tausend=b5
|
9 | symbol Hundert=b6
|
10 | symbol Zehner=b7
|
11 | symbol Einer=b8
|
12 | symbol Schalter=b9
|
13 | pause 250
|
14 |
|
15 | '** LCD Display initialisieren ************
|
16 |
|
17 | let dirsB = %00111111
|
18 |
|
19 | FOR b0=1 to 2
|
20 | LET PINSB=%00100011:low 5
|
21 | LET PINSB=%00100011:low 5
|
22 | pause 50
|
23 | NEXT b0
|
24 |
|
25 | LET PINSB=%00100000:low 5
|
26 | LET PINSB=%00100010:low 5
|
27 | pause 10
|
28 |
|
29 | LET PINSB=%00100000:low 5
|
30 | LET PINSB=%00100001:low 5
|
31 | pause 1
|
32 |
|
33 | LET PINSB=%00100000:low 5
|
34 | LET PINSB=%00100100:low 5
|
35 | pause 1
|
36 |
|
37 | LET PINSB=%00100000:low 5
|
38 | LET PINSB=%00101100:low 5
|
39 | '*************************************
|
40 |
|
41 |
|
42 | main:
|
43 |
|
44 | count LesePin,500,w5
|
45 | w6=w5*4
|
46 | pause 15
|
47 | count LesePin,500,w5
|
48 | w5=w5*4
|
49 | if w6>w5 then
|
50 | w5=w6
|
51 | endif
|
52 |
|
53 | '__________________________________________________________
|
54 | BINTOASCII w5, Zehntausend, Tausend, Hundert, Zehner, Einer
|
55 |
|
56 |
|
57 | '_______________________________
|
58 | LET PINSB=%00101000:low 5
|
59 | LET PINSB=%00100000:low 5
|
60 | Wert=Zehntausend:gosub sendtext
|
61 | Wert=Tausend:gosub sendtext
|
62 | Wert=46:gosub sendtext
|
63 | Wert=Hundert:gosub sendtext
|
64 | Wert=Zehner:gosub sendtext
|
65 | Wert=Einer:gosub sendtext
|
66 | Wert=32:gosub sendtext
|
67 | Wert=75
|
68 | LesePin=0
|
69 | Schalter=pinc.1
|
70 | if Schalter=1 then
|
71 | Wert=77
|
72 | LesePin=2
|
73 | endif
|
74 | gosub sendtext
|
75 | Wert=104:gosub sendtext
|
76 | Wert=122:gosub sendtext
|
77 | '_______________________________
|
78 |
|
79 |
|
80 | goto main
|
81 |
|
82 |
|
83 |
|
84 | sendtext:
|
85 |
|
86 | HighWert=Wert/16
|
87 | LowWert=HighWert*16:LowWert=Wert-LowWert
|
88 |
|
89 | HighWert=HighWert+48
|
90 | let pinsB=HighWert:low 5
|
91 |
|
92 | LowWert=LowWert+48
|
93 | let pinsB=LowWert:low 5
|
94 | pause 1
|
95 | return
|