PICAXE - Temperatur-Sensor DS18B20 auf LCD (4 / 7 schritt)


Schritt 4: Das Programm

Im folgenden wird das Programm eingefügt. Im Grunde können Sie mitverfolgen, wie es funktioniert, lesen Sie die Programm-Kommentare. Erfahrene Programmierer werden wahrscheinlich wissen, wie Sie einfacher und effizienter Code schreiben. Was kann ich sagen, dies ist mein erster Versuch, und es scheint zu funktionieren.

' *** TemperatureSensor.bas ***

"Dieses Programm läuft auf einem PICAXE - 20 X 2 mit 4MHz die liest die Temperatur von einem
"Temperatur-Sensor DS18B20 & sendet sie an ein HD44780 kompatible 16 x 2 LCD-Display.
'
"Von Simon Carter 10. März 2013 entwickelt.

' *** Konstanten ***
Symbol EnablePin = c. 7 "LCD-Enable-Pin verbunden, c. 7
Symbol RegSelPin = c. 4 "LCD registrieren Selelect-polig, angeschlossen an c. 4
Symbol TempPin = c. 1 "Temperatur-Sensor-Daten verbunden, c. 1
' *** Variablen ***
Char-Symbol = b0 ' Charakter zu LCD gesendet werden
Symbol-Index = b1 "verwendet als Zähler in For-Next-Schleifen
Symbol Degc = b2 "der Temperaturwert erhielt vom Sensor DS18B20
Symbol Intgval = b3 "verwendet, um vorübergehend halten jeden ganzzahligen Wert extrahiert von der Nummer erhalten vom Sensor
Symbol Degflag = b4 "eine Flagge verwendet, beim Umgang mit negativen Temperaturbereichen. 0 = Postive Range, 1 = negativen Bereich
Symbol Degf = b5 "halten Grad Farenheight Werte
' *** Richtlinien ***
#com 3' geben Sie Download Port
#picaxe 20 x 2' angeben, Prozessor
#no_data "speichern herunterladen
#terminal aus "terminal-Fenster deaktivieren

' *** Tabelle ***
Tabelle 0, ("Temperatur")

' *** Hauptprogramm ***
DirsB = % 11111111' Set alle PortB Pins als Ausgänge
DirsC = % 10111001' c. 6 und c. 2, c. 1 als Eingänge festlegen
Pullup % 00000010' Enable c. 6 internen Pullup Widerstand

' *** Das LCD initialisieren ***
Pause Pause 200' 200 mS für LCD Initialisierung nach HD44780-Spezifikationen
Char = 56' Setup für 8-Bit, 2 Linien & 5 X 8 Display
GOSUB CmdLCD ' LCD Anleitung schicken
Char = 12' Anzeige auf Cursor aus
GOSUB CmdLCD ' LCD Anleitung schicken
Char = 1' übersichtliches Display, nach Hause gehen in die Linie 1 der LCD-Anzeige
GOSUB CmdLCD ' LCD Anleitung schicken
warten Sie 1

' *** SMS - "Temperatur" in die Linie 1 der LCD ***
für Index = 0 bis 15
ReadTable Index, Char ' Textzeichen in der Tabelle lesen
GOSUB TxtLCD ' senden Sie Text in der Tabelle an LCD
nächsten index

' *** Hauptschleife - Sensor DS18B20 lesen ***
tun

Char = 194' Cursor bewegen an den Anfang der Zeile zwei
GOSUB CmdLCD ' senden die Anweisung auf LCD
TempPin, Degc Readtemp "lesen Sie der Temperaturwert vom Sensor DS18B20 auf Pin C1.0 erhielt
anhalten 800' anhalten > 750 mS für Sensor gemäß DS18B20 Spezifikationen
"Degc = 24 einfügen Test Temperaturwerte hier überprüfen Sie Code-Funktion
Degflag = 0' Reset-Flag auf 0 also positiven Temperaturbereich zu übernehmen
GOSUB BelowZeroC ' Minustemperaturen suchen
GOSUB IntgOnly ' Extrakt 10 und1 Ganzzahlen von DS18B20 Daten
GOSUB DegCsign ' deg C Zeichen zu generieren
GOSUB CheckFlag ' überprüfen, ob Umgang mit Temperaturen im Bereich von minus und Degc Wert anpassen
GOSUB BelowZeroF ' Minustemperaturen suchen
GOSUB DegFsign ' Minustemperaturen suchen
"deg F Zeichen zu generieren
Schleife

' *** Unterroutinen ***

CmdLCD:
niedrige RegSelPin ' LCD für ein Befehlsbyte eingerichtet
GOTO LoadLCD

TxtLCD: "richten Sie LCD für Text-Byte
hohe RegSelPin

LoadLCD:; führen Sie laden Byte in LCD
OutpinsB = Char ' Byte auf OutpinsB zu laden
Pulsout EnablePin, 1' laden Bytes auf LCD
Rückkehr

LoadIntgLCD: "Ausführen Laden Temperatur Text Byte, das in eine Ganzzahl konvertiert wurde
hohe RegSelPin ' LCD für Text Byte eingerichtet
OutpinsB = Intgval ' Byte auf OutpinsB zu laden
Pulsout EnablePin, Ausführung 1' laden Byte in LCD
Rückkehr

IntgOnly: "extrahieren, 100, 10 und 1 ganze Zahlen von DS18B20 Daten
für Index = 2: 0 Schritt-1 "Index 100 Ganzzahl zuerst zu extrahieren dann 10er Ganzzahl dann 1
lassen Sie Intgval = Degc Dig Index "Verwendung Graben Funktion Ganzzahlen zu extrahieren

Wenn Intgval = 0 und Index = 2, dann lassen Sie Intgval = % 00100000 "Blank eine führende"0"auf dem Display
ElseIf Intgval = 0, dann lassen Sie Intgval = % 00110000' Convert Ganzzahlen, LCD-Zeichen-Codes
ElseIf Intgval = 1, dann lassen Sie Intgval = % 00110001
ElseIf Intgval = 2, dann lassen Sie Intgval = % 00110010
ElseIf Intgval = 3, dann lassen Sie Intgval = % 00110011
ElseIf Intgval = 4, dann lassen Sie Intgval = % 00110100
ElseIf Intgval = 5, dann lassen Sie Intgval = % 00110101
ElseIf Intgval = 6, dann lassen Sie Intgval = % 00110110
ElseIf Intgval = 7, dann lassen Sie Intgval = % 00110111
ElseIf Intgval = 8, dann lassen Sie Intgval = % 00111000
ElseIf Intgval = 9, dann lassen Sie Intgval = % 00111001

ENDIF

GOSUB LoadIntgLCD ' Ausführen Laden Temperatur Text Byte, das in eine Ganzzahl konvertiert wurde
nächsten index
Rückkehr

DegCsign: "erstellen Sie Grad C Text auf dem Display
Intgval = % 11011111' Set Zeichen LCD in "Grad" Zeichencode gesendet werden
GOSUB LoadIntgLCD ' senden Zeichen LCD

Intgval = % 01000011' Set Zeichen LCD in "C" Zeichencode für Celsius gesendet werden
GOSUB LoadIntgLCD ' senden Zeichen LCD

Intgval = % 00100000' Set Zeichen zu LCD zu richten "" Zeichencode für ein Leerzeichen vor den Farenheight-Wert
GOSUB LoadIntgLCD ' senden Zeichen LCD
Rückkehr

DegFsign: "erstellen Sie Grad F Text auf dem Display
Intgval = % 11011111' Set Zeichen LCD in "Grad" Zeichencode gesendet werden
GOSUB LoadIntgLCD ' senden Zeichen LCD

Intgval = % 01000110' eingestellten Zeichen, LCD, "F"-Zeichen-Code für Farenheight gesendet werden
GOSUB LoadIntgLCD ' senden Zeichen LCD
Rückkehr

Intgval = % 00100000' Set Zeichen zu LCD zu richten "" Zeichencode für einen Raum nach Farenheight Wert als Minuszeichen verwendet löschen
GOSUB LoadIntgLCD ' senden Zeichen LCD

Intgval = % 00100000' Set Zeichen zu LCD zu richten "" Zeichen-Code für einen Raum nach dem Farenheight Wert, wenn klar Intgval > 100 verwendet
GOSUB LoadIntgLCD ' senden Zeichen LCD

DegFcalc: "Farenheight Wert für positive Farenheight Lesungen
DegC = Degc * 9 / 5 + 32' Farenheight Wert von Celsius Wert berechnen
GOSUB IntgOnly ' beginnen um 100, 10 und 1 extrahieren Ganzzahlen für Farenheight Wert
Debug
Rückkehr

DegFcalcPos: "Farenheight Wert für positive Farenheight Lesungen ableiten, wenn c negativ ist
DegC = Degc * 9/5' Farenheight Wert von Celsius Wert berechnen
DegC = 32-Degc "Farenheight Wert von Celsius zu berechnen
GOSUB IntgOnly ' beginnen um 100, 10 und 1 extrahieren Ganzzahlen für Farenheight Wert
Rückkehr

DegFcalcNeg: "Farenheight Wert für negative Farenheight Lesungen
DegC = Degc * 9/5-32' Farenheight Wert von Celsius Wert berechnen
GOSUB IntgOnly ' beginnen um 100, 10 und 1 extrahieren Ganzzahlen für Farenheight Wert
Rückkehr

MinusSign:
Intgval = "-" "set Charakter in"Minuszeichen"Zeichencode auf LCD gesendet werden
GOSUB LoadIntgLCD
Rückkehr

BelowZeroC: "suchen Sie unter Null Grad Celsius
Wählen Sie Fall degc
Fall 0 bis 125' ignorieren diesen Fall - Temperatur im Normalbereich positiv

Fall 129, 183' Celsius im Bereich von minus ist schicken ein Minus-Zeichen-Zeichen LCD
DegC = Degc-128 "für die DSDS18B20 korrekt MSB auf"1"oder 128 für minus Temperatur einstellen
Degflag = 1' Set Flagge Minustemperatur Zustand
GOSUB MinusSign ' Falls Celsius ist im Bereich von minus senden ein Minus-Zeichen-Zeichen LCD
ENDSELECT
Rückkehr

BelowZeroF:
Wählen Sie Fall degc
Fall 0 bis 124' ignorieren diesen Fall - Temperatur im Normalbereich positiv
GOSUB DegFcalc

Fall 129, 146' der Fall, wo nur Celsius im Bereich von minus ist
DegC = Degc-128 "für die DSDS18B20 korrekt einstellen MSB auf"1"oder 128 für minus Temperatur Conditio
GOSUB DegFcalcPos

Fall 147, 183' der Fall, wo Farenheight im Bereich von minus ist, ein Minus-Zeichen-Zeichen an LCD senden
DegC = Degc-128 "für die DSDS18B20 korrekt MSB auf"1"oder 128 für minus Temperatur einstellen
GOSUB MinusSign ' der Fall, wo Farenheight ist im Bereich von minus, senden ein Minus-Zeichen-Zeichen LCD
GOSUB DegFcalcNeg
ENDSELECT
Rückkehr

CheckFlag:
Wenn Degflag = 1, dann lassen Sie Degc = Degc + 128' Reset die Korrektur für die DSDS18B20 MSB auf "1" oder 128 für minus Temperatur Bedingung festlegen
ENDIF
Rückkehr

In Verbindung stehende Artikel

Temperatur-Sensor DS18B20 - Arduino Tutorial verwenden

Temperatur-Sensor DS18B20 - Arduino Tutorial verwenden

In diesem Tutorial erfahren Sie, wie temp Sensor DS18B20 mit Arduino zu verwenden.Die Temperatur wird auf dem seriellen Monitor Codebender oder Arduino IDE ausgedruckt.Videopräsentation:Bevor wir beginnen finden Sie weitere Informationen zu dieser Se
Temp. Sensor-Anzeige auf LCD w / Arduino

Temp. Sensor-Anzeige auf LCD w / Arduino

Was bedeutet es im Grunde:Das Arduino-Projekt erkennt die Temperatur aus dem Temperatursensor. Offensichtlich ist erkennt die Temperatur es zeigt es auf dem seriellen Monitor, die ich persönlich denke, es sehr unangenehm. Jetzt lösen Sie, ich eine LC
Temperatur-Sensor DS18b20 Thermostat

Temperatur-Sensor DS18b20 Thermostat

Diese Instructable zeigt, wie ich den Thermostat für mein Zuhause-Assistent mit einem ESP8266 und MQTT mit einem Temperatursensor DS18b20 errichtet.Teil 1 dieses Builds ist ein Temperatur-Sensor mit einem DS18b20 zu bauen - das Video zeigt, wie ich d
Temperatur-sensor(LM35) mit LCD(JHD162A)

Temperatur-sensor(LM35) mit LCD(JHD162A)

Hey Guys!Moxigen hier. Seit des Sommers hier hat es ist glühend heiß und mich frage mich, was wäre die Temperatur. Daher habe ich beschlossen einige Sachen zum Erstellen eines Temperatursensors zusammengestellt.Schritt 1: Materialien, die benötigt Mü
Esp8266 + Sensor DS18B20 Fieberkurve, Emoncms

Esp8266 + Sensor DS18B20 Fieberkurve, Emoncms

Temperaturüberwachung mit der ESP8266 + Temperatur Sensor DS18B20 (OneWire) + Arduino IDE und Emoncms Plattform-Modul.Emoncms können in diesem Fall auf einem Web-Host installiert und auf meinem lokalen Server vorinstalliert.Weitere Informationen besu
DIY Arduino-Temperatur-Sensor

DIY Arduino-Temperatur-Sensor

diese instructable zeigen Ihnen, wie einen Temperatursensor kompatibel mit Arduino Boards zu bauen, die für verschiedene private Projekte verwendet werden kann. Es zeigt auch eine einfache Anwendung, in der der DIY-Sensor verwendet wird, für die Hers
1-Wire Temperatur Sensor RJ45 Adapter

1-Wire Temperatur Sensor RJ45 Adapter

1-Wire ist eine elektronische Busprotokoll von Dallas Semiconductor (jetzt im Besitz von Maxim) erfunden. Eines der beliebtesten Anwendungen von 1-Wire ist für Temperatursensoren. Temperatur-Sensor DS18B20 gibt es am häufigsten in einem TO-92-Paket,
Temperatur auf LCD Anzeigen

Temperatur auf LCD Anzeigen

Ich bringe zwei Projekte zusammen in diesem instructable.Ich werde zeigen, wie Sie messen die Temperatur mit einem Temperatursensor LM35 und ein Arduino dann die Temperatur auf einem seriellen LCD 16 X 2 in Celsius und Fahrenheit angezeigt.Sie finden
Umfang-Uhr: analoge Uhr und Temperatur-Sensor auf einem Oszilloskop

Umfang-Uhr: analoge Uhr und Temperatur-Sensor auf einem Oszilloskop

Scopeclock ist eine bedienungsfreundliche Hardware für Ihre X-Y in der Lage, analoge Oszilloskop noch nützlicher zu machen. Verwenden diese einfache Hardware können Sie Ihre analogen Oszilloskop in einem Umfang Uhr konvertieren verwenden. Dieses Proj
Anzeige Temperatur auf LCD mit STS-21(I2C)

Anzeige Temperatur auf LCD mit STS-21(I2C)

HalloGute Grüße..!! Ich (Somanshu Choudhary) im Auftrag von Dcube Tech Ventures messen Temperatur mit Arduino Nano und Anzeige auf 16 X 2 LCD ist eine der Anwendungen der I2C Protokoll zum Lesen von analogen Daten der Temperatur Sensor STS-21.Schritt
ATTiny84 + LCD + LM35 Temperatur Sensor

ATTiny84 + LCD + LM35 Temperatur Sensor

Dies ist eine einfache Temperatursensor gebaut mit einem ATtiny84, LM35 und einem LCD-Display 16 x 1 Zeichen. Es erfolgt auf 3 AA-Batterien oder 4,5 Volt ausgeführt. Ich habe es als Projekt lernen, wie man Arduino Projekte in kleineren Geräten wie AT
Drahtlose Temperatur-Sensor

Drahtlose Temperatur-Sensor

bestehend aus 2 SchaltungenLiest man die Temperatur mit einem DS18B20 und dann entscheiden sie über die Radio-Wellen.Die andere empfängt die Daten und zeigt sie.Ich habe das Angebot nicht vollständig getestet, aber ich habe es arbeiten mehr als 12 Fu
Temperatur-Sensor-Daten an Azure Datenbank senden

Temperatur-Sensor-Daten an Azure Datenbank senden

Dieses Projekt verwendet ein Raspberry Pi B + 2 Temperatursensoren verbunden und sendet Daten an einer Azure-Datenquelle, die zum Erstellen von Diagrammen verwendet werden können.Eine Reihe von meinen Code für den Zugriff auf die Temperaturfühler kam
Aquaponics: EnvDAQ Upgrade mit Wasser-Temperatur-Sensor (wachsen Bett DAQ)

Aquaponics: EnvDAQ Upgrade mit Wasser-Temperatur-Sensor (wachsen Bett DAQ)

der Quellcode für die Cloud-Anwendung und Arduino Sketch für dieses Tutorial gibt es hier.In diesem Tutorial finden Sie auch auf unserem Blog in einem viel mehr lesbaren Format (Inline-Zahlen).Die Umwelt DAQ ist ein OpenSource-Arduino Schild, dass Sp