PICAXE - DS18B20 temperaturgivare till LCD (4 / 7 steg)

Steg 4: Programmet

Nedan är programmet klistras in i. I princip kan du följa hur det fungerar genom att läsa programmet kommentarer. Mer erfarna programmerare kommer förmodligen vet hur att skriva enklare och effektivare kod. Vad kan jag säga, detta är mitt första försök och det verkar fungera.

"*** TemperatureSensor.bas ***

"Detta program körs på en PICAXE - 20 X 2 4 MHz som lyder temperaturen från en
"DS18B20 temperaturgivare & skickar det till en HD44780 kompatibel 16 x 2 LCD-display.
'
"Utvecklats av Simon Carter den 10 mars, 2013.

"*** Konstanter ***
symbol EnablePin = C.7 ' LCD aktivera pin ansluten till C.7
symbol RegSelPin = C.4 ' LCD registrera Selelect pin ansluten till C.4
symbol TempPin = C.1 ' temperatur sensordata kopplade till C.1
"*** Variabler ***
symbol char = b0 "karaktär skickas till LCD
symbol index = b1 "används som räknaren i för-Next loopar
symbol degc = b2 "temperatur värdet från DS18B20 sensorn
symbol intgval = b3 ' används för att tillfälligt hålla varje heltalsvärde från numret från sensorn
symbol degflag = b4 ' en flagga som används när man arbetar med negativa temperaturområden. 0 = postive sortiment, 1 = negativt urval
symbol degf = b5 "används för att hålla grader farenheight värden
"*** Direktiven ***
#com 3' ange hämta port
#picaxe 20 x 2' ange processor
#no_data "spara tid nedladdning
#terminal off "inaktivera terminal-fönster

"*** Tabell ***
Tabell 0, ("temperatur")

"*** Huvudprogrammet ***
dirsB = % 11111111' set alla portB stift som resultat
dirsC = % 10111001' ange C.6 och C.2, C.1 som insatsvaror
pullup % 00000010' Aktivera C.6 inre pullup motstånd

"*** Initiera LCD ***
Pausa 200' paus 200 mS LCD initiering enligt HD44780 specifikationer
char = 56' setup för 8 bitar, 2 rader & 5 X 8 display
GOSUB CmdLCD ' skicka instruktioner till LCD
char = 12' display på markören av
GOSUB CmdLCD ' skicka instruktioner till LCD
char = 1' tydlig display, åka hem till linje 1 av LCD-skärm
GOSUB CmdLCD ' skicka instruktioner till LCD
vänta 1

"*** Skicka text -"Temperatur"till linje 1 av LCD ***
för index = 0 till 15
readtable index, char "läsa tecken i tabellen
GOSUB TxtLCD ' Skicka text i tabellen till LCD
Nästa index

"*** Huvudloop - Läs DS18B20 sensor ***
göra

char = 194' flytta markören till början av raden två
GOSUB CmdLCD ' Skicka anvisningen till LCD
readtemp TempPin, degc "Läs temperatur värdet fått från DS18B20 sensorn på pin C1.0
Pausa 800' paus > 750 mS för sensor enligt DS18B20 specifikationer
"degc = 24 infoga temperatur testvärden här om du vill kontrollera koden funktion
degflag = 0' reset flaggan till 0 dvs antar positiva temperaturområde till att börja med
GOSUB BelowZeroC ' check för under noll temperaturer
GOSUB IntgOnly "extrahera 10's och 1 heltal från DS18B20 data
GOSUB DegCsign ' generera deg C tecken
GOSUB CheckFlag ' Kontrollera om affärer med temperaturer i intervallet minus och justera degc värde
GOSUB BelowZeroF ' check för under noll temperaturer
GOSUB DegFsign ' check för under noll temperaturer
"generera deg F tecken
loop

"*** Subrutiner ***

CmdLCD:
låg RegSelPin "ställa in LCD för ett kommandobyte
gå till LoadLCD

TxtLCD: "Ställ in LCD för text byte
hög RegSelPin

LoadLCD:; utföra lastning byte i LCD
outpinsB = röding "Ladda byte till outpinsB
pulsout EnablePin, 1' Ladda byte på LCD
returnera

LoadIntgLCD: "utföra lastning temperatur text byte som har konverterats till ett heltal
hög RegSelPin "ställa in LCD för text byte
outpinsB = intgval ' Ladda byte till outpinsB
pulsout EnablePin, 1' utföra lastning byte i LCD
returnera

IntgOnly: "100's, 10 och 1: s heltal från DS18B20 data
för index = 2 till 0 steg -1 "Ställ in index till extraktet 100-tals heltal första sedan 10: s heltal sedan 1
Låt intgval = degc gräva index "användning gräva funktionen för att extrahera heltal

om intgval = 0 och index = 2 sedan låta intgval = % 00100000 ' tom någon ledande "0" på displayen
annars om intgval = 0 så låt intgval = % 00110000' konvertera heltal till LCD teckenkoder
annars om intgval = 1 så låt intgval = % 00110001
annars om intgval = 2 sedan låta intgval = % 00110010
annars om intgval = 3 så låt intgval = % 00110011
annars om intgval = 4 sedan låta intgval = % 00110100
annars om intgval = 5 sedan låta intgval = % 00110101
annars om intgval = 6 sedan låta intgval = % 00110110
annars om intgval = 7 sedan låta intgval = % 00110111
annars om intgval = 8 sedan låta intgval = % 00111000
annars om intgval = 9 sedan låta intgval = % 00111001

endif

GOSUB LoadIntgLCD ' utföra lastning temperatur text byte som har konverterats till ett heltal
Nästa index
returnera

DegCsign: ' skapa grader C text på displayen
intgval = % 11011111' ange tecken skickas till LCD till "Graden" teckenkoden
GOSUB LoadIntgLCD ' Skicka tecken till LCD

intgval = % 01000011' ange tecken skickas till LCD till "C" teckenkoden för Celsius
GOSUB LoadIntgLCD ' Skicka tecken till LCD

intgval = % 00100000' ange tecken skickas till LCD till "" teckenkoden för ett mellanslag före farenheight värdet
GOSUB LoadIntgLCD ' Skicka tecken till LCD
returnera

DegFsign: ' skapa grader F text på displayen
intgval = % 11011111' ange tecken skickas till LCD till "Graden" teckenkoden
GOSUB LoadIntgLCD ' Skicka tecken till LCD

intgval = % 01000110' ange tecken skickas till LCD till "F" teckenkoden för Farenheight
GOSUB LoadIntgLCD ' Skicka tecken till LCD
returnera

intgval = % 00100000' ange tecken skickas till LCD till "" teckenkoden för ett mellanslag efter farenheight värde att rensa när minus-tecken används
GOSUB LoadIntgLCD ' Skicka tecken till LCD

intgval = % 00100000' ange tecken skickas till LCD till "" teckenkoden för ett mellanslag efter farenheight värde att rensa när intgval > 100 används
GOSUB LoadIntgLCD ' Skicka tecken till LCD

DegFcalc: "få ut Farenheight för positiva Farenheight avläsningar
degC = degc * 9 / 5 + 32' beräkna Farenheight värde från Celsius värde
GOSUB IntgOnly ' börja process för att utvinna 100's, 10 och 1: s heltal för Farenheight värde
debug
returnera

DegFcalcPos: "härleda Farenheight värde för positiva Farenheight avläsningar när celcius är negativt
degC = degc * 9/5' beräkna Farenheight värde från Celsius värde
degC = 32-degc "beräkna Farenheight värde från Celsius värde
GOSUB IntgOnly ' börja process för att utvinna 100's, 10 och 1: s heltal för Farenheight värde
returnera

DegFcalcNeg: "få ut Farenheight för negativa Farenheight avläsningar
degC = degc * 9/5-32' beräkna Farenheight värde från Celsius värde
GOSUB IntgOnly ' börja process för att utvinna 100's, 10 och 1: s heltal för Farenheight värde
returnera

MinusSign:
intgval = "-" ' ange tecknet skickas till LCD till "minustecknet" teckenkoden
GOSUB LoadIntgLCD
returnera

BelowZeroC: "kolla för under noll grader C
Välj ärende degc
fallet 0 till 125' ignorera detta fall - temperaturen i positiva normalområdet

fall 129 till 183' de fall celsius är i intervallet minus skicka ett minustecken tecken till LCD
degC = degc-128 "korrekt för DSDS18B20 att MSB till"1"eller 128 för minus temperaturförhållandet
degflag = 1' ange flaggan anger negativa temperaturförhållandet
GOSUB MinusSign ' de fall celsius är i intervallet minus skicka ett minustecken tecken till LCD
endselect
returnera

BelowZeroF:
Välj ärende degc
fallet 0 till 124' ignorera detta fall - temperaturen i positiva normalområdet
GOSUB DegFcalc

fall 129 till 146' de fall där endast celsius är i intervallet minus
degC = degc-128 "korrekt för DSDS18B20 att MSB till"1"eller 128 för minus temperatur conditio
GOSUB DegFcalcPos

fallet 147 till 183' de fall där farenheight är i intervallet minus skicka ett minustecken tecken till LCD
degC = degc-128 "korrekt för DSDS18B20 att MSB till"1"eller 128 för minus temperaturförhållandet
GOSUB MinusSign ' de fall där farenheight är i intervallet minus skicka ett minustecken tecken till LCD
GOSUB DegFcalcNeg
endselect
returnera

CheckFlag:
om degflag = 1 så låt degc = degc + 128' Reset korrigeringen för DSDS18B20 att MSB till "1" eller 128 för minus temperaturförhållandet
endif
returnera

Se Steg
Relaterade Ämnen

ESP8266 DS18B20 temperaturgivare, Arduino IDE, EasyIoT Cloud

I den här guiden visar vi hur man bygger WiFi ESP8266 DS18B20 Temperaturlogger ansluten till EasyIoT moln. Allt material kostar mindre än 5$ på ebay.EasyIoT Cloud fungerar också på mobiltelefon eller surfplatta. Infödda Android app finns också.Se äve...

ESP8266 WiFi DS18B20 temperaturgivare (ESP8266 Arduino IDE utan Arduino)

I den här guiden visar vi hur man bygger ESP8266 WiFi temperatursensor med DB18B20. Vi kommer att använda Arduino IDE, men utan Arduino. Data kommer att skickas till EasyIoT server (Windows eller Raspberry Pi) för fin uppvisning och loggning.Se fler...

DS18b20 temperaturgivare som en termostat

Detta Instructable visar hur jag byggt termostaten för min hem-assistent med en ESP8266 och MQTT med en DS18b20 temperaturgivare.Del 1 av denna bygga är att bygga en temperatur senor med en DS18b20 - videon visar hur jag byggt styrelsen snarare än at...

Början Microcontrollers del 13: Intro till LCD gränssnitt

Mikrokontroller är en underbar bit av ingenjörskonst och det kan göra många saker (med hjälp av några bra programmering), men det är fortfarande en ogenomskinlig svart låda. Om du vill att dela information, eller visa dig vad det försöker göra det, m...

Digital termometer på OLED-display med ESP8266 ESP-12naE NodeMCU och DS18B20 temperaturgivare

I min tidigare instructable jag gav en introduktion till ESP8266 och programmering, med våra bekanta Arduino IDE.I detta instructable jag kommer att gå ett steg längre och gränssnitt en digital temperaturgivare DS18B20 och visar temperatur i grader o...

Linkit en OneWire DS18B20

Här en snabb hur du ansluter en DS18B20 temperaturgivare till din Linkit en styrelse!Steg 1: Kontrollera dina grejerVad vi behöver?Inköpslista:Linkit en styrelseDS18B20 Sensor4.7 k motståndSkärbrädaArduino IDE20 minuterSteg 2: Skaffa biblioteketDS18B...

Raspberry Pi övervakning av hemmet med Dropbox

Denna tutorial ska show dig hur man skapar en enkel och utbyggbart hem övervakningssystem med en Raspberry Pi, en webbkamera, några elektriska komponenter och din Dropbox konto. Det färdiga systemet gör att du kan fjärrstyra begära och Visa bilder fr...

PICAXE - gränssnittet ett PS2-tangentbord med en LCD-skärm

detta projekt använder ett PICAXE 20 X 2 microcontroller gränssnittet en gammal stil PS2 tangentbord med en 2 X 16 LCD. Programmet är ganska lång och troligen inte är perfekt men de flesta funktioner verkar fungera. Eftersom vissa speciella tangenter...

Arduino LCD-termometer / temperaturkontroll med TMP36GZ Temp sensor lagt 2 chanel relay, lagt till RTC ds1307, lagt till en case.based på WWC Guide.

HY min första guid baserat på guiden från WWC.Oktober 3 2013 läggs fallet (steg 13)September 23 2013 lagt till RTC (realtimeclock) Ds1307 (steg 11)September 13 2013 lagt 2 chanel relä för att stänga uppvärmning glödlampan. (steg 8)1 Arduino Uno1 USB-...

Hur konvertera en Laptop LCD till en extern bildskärm.

Hallå där. Detta är min första InstructableFör ett tag sedan jag satt och undrar vad de ska göra med min döda laptop. Jag visste att moderkortet var stekt men allt annat var fortfarande i skick. Som ett resultat jag beslutat att göra en extern bildsk...

HD44780 LCD till I2C adapter styrelsen för buss pirat

billigt tecken LCD-skärmar baserat på HD44780 chipset kommer i olika storlekar: 2 x 16, 4 x 20, etc. Dessa skärmar har två standardgränssnitt lägen, 4 och 8 bitars parallellt. 8 bitar kräver sammanlagt 11 data linjer, 4 bitar kräver 7 (6 för lässkydd...

Hur du ansluter Liquid Crystal Display(LCD) till Arduino

ÖversiktI denna tutorial kommer du lära dig att ansluta en flytandekristallskärm (LCD) till en Arduino Uno och göra det Visa saker. LCD-skärmar komma till hands om du behöver Visa information på skärmen. De är billiga och vanliga. Ansluta en LCD till...

Hur man gränssnitt LCD (16 X 2) till arduino

Detta instructables förklarar du vad gäller gränssnitt LCD (vätska kristall Dispaly) 16 X 2 till arduino.Några grundläggande punkter när det gäller LCD:-LCD består av 16 rader och 2 kolumner av 5 × 7 eller 5 × 8 LCD dot matriser.LCD är tillgängliga i...

Twitter kontrollerad Arduino utgångar - ingen PC - LCD-Display + sensordata till Twitter

kontroll digital ut PIN-koder genom Twitter-meddelanden. Sensormätningar skickas tillbaka till Twitter.ÄNDRAD av JOHN GÄLLNÖBY från Twitter2LCD ursprungligen skriven av Fabrizio GranelliSe * Du kan skicka textmeddelanden till Arduino LCD-skärmen från...

Hur till flytta och åter fästa LCD-band från ett kretskort med en fin Pitch

detta instructable kom från en trasig LCD kontrollmodul ur en modern VW Camper Van. En ersättning för en ny enhet var £400 + LCD-modulen är en del av en kontrollenhet som var nästan oläsliga. Det var verkligen en ingen förlora alternativ, har antinge...

Hur till re-syfte döda laptop LCD

Jag har en Fujitsu e8410 som jag har gett upp för att reparera. Det var reballed två gånger. Så var det uppdelade för att skörda de användbara delarna. Steg för steg guide för att bryta ner en laptop finns. Kröna av skörden var magnesium legera innes...

Ansluta Nokia 3310 LCD till USB med hjälp av AVR

vad gör du med en gammal telefon, en mikrokontroller och massor av tid?Du ansluter den gamla telefonen LCD skärm till datorn USB naturligtvis!I detta projekt vi ska kommunicera med en Nokia 3310 LCD uppvisning via USB! Hur ska vi göra det? Vi kommer...

Snabb installationsguide till Arduino LCD 2004 med PCF8574

Detta är en snabb Installationsguide för din Arduino LCD.Saker du måste veta innan du sätter igång:1. LCD-skärmar är inte skapade lika, vissa har olika stift än den andra.2. huvuddragen i ställa in: LCD, biblioteket och koden.Steg 1: Läs din kontakte...

Ansluta en LCD till Arduino

i detta instructable vi kommer att titta på hur man ansluter en parallell LCD till en Arduino. LCD-skärmen som jag använder använder gemensamma HD44780 gränssnitt. Många LCD-skärmar har detta, kan du vanligtvis tala med 16-pin gränssnittet. Du behöve...