PICAXE - sensor de temperatura DS18B20 de LCD (4 / 7 paso)

Paso 4: El programa

A continuación se pega el programa en. Básicamente puede seguir cómo funciona leyendo los comentarios del programa. Programadores más experimentados probablemente sabrá cómo escribir código más simple y más eficiente. Qué puedo decir, este es mi primer intento, y parece que funciona.

' *** TemperatureSensor.bas ***

' Este programa se ejecuta en un PICAXE - 20 X 2 a 4MHz que lee la temperatura de un
' Sensor de temperatura DS18B20 y envía a una pantalla de LCD de 16 x 2 compatible con HD44780.
'
' Desarrollado por Simon Carter 10 de marzo de 2013.

' *** Constantes ***
símbolo EnablePin = C.7 ' pin Enable del LCD conectado a C.7
símbolo RegSelPin = C.4 ' LCD Register Selelect pin conectado a C.4
símbolo TempPin = C.1 ' datos del sensor de temperatura conectado a C.1
' *** Variables ***
char el símbolo = b0 ' carácter a LCD
Índice de símbolo = b1 ' utiliza como contador en bucles para el siguiente
símbolo grados centígrados = b2 ' el valor recibido del sensor DS18B20
símbolo intgval = b3 ' utiliza para mantener temporalmente cada valor entero extraído el número recibido del sensor
símbolo degflag = b4 ' una bandera que se utiliza cuando se trabaja con rangos de temperatura negativa. 0 = intervalo positivo, 1 = negativo gama
símbolo degf = b5 ' utilizado para la celebración de grados farenheight valores
' *** Directivas ***
#com 3' especificar el puerto de descarga
#picaxe 20 x 2' especificar procesador
#no_data ' ahorrar tiempo descargando
#terminal de ' desactivar la ventana de terminal

' *** Tabla ***
Mesa 0, ("la temperatura")

' *** Programa principal ***
dirsB = % 11111111' fijado todos los pines de portB como salidas
dirsC = % 10111001' set C.6 y C.2, C.1 como entradas
pullup % 00000010' C.6 activar resistencia pullup interna

' *** Inicializar el LCD ***
pausa pausa 200' 200 mS para la inicialización del LCD según especificaciones del HD44780
char = 56' configuración de 8 bits, 2 líneas y pantalla de 5 X 8
GoSub CmdLCD ' enviar instrucciones al LCD
char = 12' pantalla on, cursor off
GoSub CmdLCD ' enviar instrucciones al LCD
char = 1' visualización clara, casa ir a la línea 1 de pantalla LCD
GoSub CmdLCD ' enviar instrucciones al LCD
esperar 1

' *** Enviar texto - "Temperatura" a la línea 1 de la pantalla LCD ***
índice = 0 a 15
ReadTable index, char ' leer los caracteres de texto en la tabla
GoSub TxtLCD ' enviar el texto en la tabla a LCD
índice siguiente

' *** Bucle principal - leer sensor DS18B20 ***
hacer

char = 194' mover el cursor al comienzo de la línea dos
GoSub CmdLCD ' envía la instrucción al LCD
readtemp TempPin, degc ' leer el valor de temperatura recibido del sensor DS18B20 en pin C1.0
800' pausa pausa > 750 mS para sensor según especificaciones del DS18B20
' grados centígrados = 24 insert prueba valores de temperatura aquí para ver el código de la función
degflag = 0' reiniciar el indicador a 0 es decir, asumir con temperatura positiva
GoSub BelowZeroC ' busque debajo de temperaturas bajo cero
GoSub IntgOnly ' Extracto de 10 y de 1 enteros de datos DS18B20
GoSub DegCsign ' generar señal de deg C
GoSub CheckFlag ' comprobar si las temperaturas en el rango negativo y ajustar el valor de grados centígrados
GoSub BelowZeroF ' busque debajo de temperaturas bajo cero
GoSub DegFsign ' busque debajo de temperaturas bajo cero
' generar señal de grados F
lazo

' *** Subrutinas ***

CmdLCD:
baja RegSelPin ' configurar el LCD para un byte de comando
Goto LoadLCD

TxtLCD: ' configurar LCD bytes de texto
RegSelPin alta

LoadLCD:; ejecutar los bytes de carga en pantalla LCD
outpinsB = char ' carga el byte en outpinsB
pulsout EnablePin, 1' carga bytes en LCD
volver

LoadIntgLCD: ' ejecutar carga temperatura bytes de texto que se ha convertido a un entero
alta RegSelPin ' configurar LCD bytes de texto
outpinsB = intgval ' bytes en outpinsB de carga
pulsout EnablePin, 1' ejecutar bytes de carga en pantalla LCD
volver

IntgOnly: ' extraer de 100, de 10 y de 1 enteros de datos DS18B20
Índice = paso 2 a 0 -1 ' índice para extraer entero cientos primero luego entero 10 entonces 1
que intgval = grados centígrados índice de Cave ' función uso cavar para extraer números enteros

Si intgval = 0 e índice = 2 entonces que intgval = % 00100000 ' en blanco de cualquier líder "0" en pantalla
else if intgval = 0 then que intgval = % 00110000' convertir enteros a códigos de caracteres LCD
else if intgval = 1 entonces que intgval = % 00110001
else if intgval = 2 entonces que intgval = % 00110010
else if intgval = 3 entonces que intgval = % 00110011
else if intgval = 4 entonces que intgval = % 00110100
else if intgval = 5 entonces que intgval = % 00110101
else if intgval = 6 entonces que intgval = % 00110110
else if intgval = 7 entonces que intgval = % 00110111
else if intgval = 8 entonces que intgval = % 00111000
else if intgval = 9 entonces que intgval = % 00111001

endif

GoSub LoadIntgLCD ' ejecutar la carga temperatura bytes de texto que se ha convertido a un entero
índice siguiente
volver

DegCsign: ' crear grados C texto en pantalla
intgval = % 11011111' set carácter a LCD al código de carácter de "Grado"
GoSub LoadIntgLCD ' enviar caracteres a la LCD

intgval = % 01000011' set carácter a enviar al LCD a "C" código de carácter para centígrados
GoSub LoadIntgLCD ' enviar caracteres a la LCD

intgval = % 00100000' set carácter a LCD a "" código de carácter para un espacio antes del valor farenheight
GoSub LoadIntgLCD ' enviar caracteres a la LCD
volver

DegFsign: ' crear grados F texto en pantalla
intgval = % 11011111' set carácter a LCD al código de carácter de "Grado"
GoSub LoadIntgLCD ' enviar caracteres a la LCD

intgval = % 01000110' set carácter a enviar al LCD a "F" código de carácter para Farenheight
GoSub LoadIntgLCD ' enviar caracteres a la LCD
volver

intgval = % 00100000' set carácter a LCD a "" código de carácter para un espacio después de farenheight valor para borrar cuando menos signo utilizado
GoSub LoadIntgLCD ' enviar caracteres a la LCD

intgval = % 00100000' set carácter a LCD a "" código de carácter para un espacio después de farenheight valor para borrar cuando intgval > 100 usada
GoSub LoadIntgLCD ' enviar caracteres a la LCD

DegFcalc: ' derivar Farenheight valor positivo Farenheight lecturas
grado c = grados centígrados * 9 / 5 + 32' calcular valor Farenheight del centígrado
GoSub IntgOnly ' Iniciar proceso para la extracción de 100, de 10 y de 1 enteros para Farenheight valor
de depuración
volver

DegFcalcPos: ' derivar Farenheight valor positivo Farenheight lecturas cuando Celsius es negativo
grado c = grados centígrados * 9/5' calcular valor Farenheight del centígrado
grados centígrados = 32-degc ' calcular valor Farenheight del centígrado
GoSub IntgOnly ' Iniciar proceso para la extracción de 100, de 10 y de 1 enteros para Farenheight valor
volver

DegFcalcNeg: ' derivar Farenheight valor negativo Farenheight lecturas
grado c = grados centígrados * 9/5-32' calcular valor Farenheight del centígrado
GoSub IntgOnly ' Iniciar proceso para la extracción de 100, de 10 y de 1 enteros para Farenheight valor
volver

MinusSign:
intgval = "-" ' carácter enviará "signo menos" código de caracteres a la LCD
GoSub LoadIntgLCD
volver

BelowZeroC: ' busque por debajo de cero grados C
Seleccione caso degc
0 caso a 125' ignorar este caso - temperatura en el rango positivo normal

caso 129 de 183' el caso celsius en el rango negativo envía un carácter de signo de menos a LCD
grados centígrados = grados centígrados-128 ' correcto para el DSDS18B20 establecer MSB en "1" o 128 para menos condición de temperatura
degflag = 1' set flag que indica la condición de temperatura negativa
GoSub MinusSign ' el caso celsius en el rango negativo envía un carácter de signo de menos a LCD
endselect
volver

BelowZeroF:
Seleccione caso degc
0 caso a 124' ignorar este caso - temperatura en el rango positivo normal
GoSub DegFcalc

caso 129 a 146' el caso c solamente en la gama menos
grados centígrados = grados centígrados-128 ' correcto para el DSDS18B20 establecer MSB en "1" o 128 para menos temperatura conditio
GoSub DegFcalcPos

caso 147 de 183' el caso farenheight en la gama menos enviar un carácter de signo de menos a LCD
grados centígrados = grados centígrados-128 ' correcto para el DSDS18B20 establecer MSB en "1" o 128 para menos condición de temperatura
GoSub MinusSign ' el caso farenheight en la gama menos enviar un carácter de signo de menos a LCD
GoSub DegFcalcNeg
endselect
volver

CheckFlag:
Si degflag = 1 entonces que degc = grados centígrados + 128' Reset la corrección de la DSDS18B20 configuración de MSB a «1» o 128 para menos condición de temperatura
endif
volver

Artículos Relacionados

Sensor de temperatura DS18B20 con LCD

Sensor de temperatura DS18B20 con LCD

El DS18B20 viene en una forma de la sonda de temperatura, que es resistente al agua. Tuve un tiempo real duro tratando de conseguir este uno trabajo y he pensado que compartir cómo al final lo conseguí trabajando. ¡ Disfrute!Paso 1: partesLas piezas
Sensor de temperatura DS18B20 ESP8266 IDE de Arduino, nube EasyIoT

Sensor de temperatura DS18B20 ESP8266 IDE de Arduino, nube EasyIoT

En este tutorial mostramos cómo crear el logger de temperatura DS18B20 de ESP8266 WiFi conectado a la nube de EasyIoT. Todo el material cuesta menos de 5$ en ebay.Nube de EasyIoT trabaja también en el teléfono móvil o tablet. También está disponible
Cómo utilizar el Sensor de temperatura DS18B20 - Arduino Tutorial

Cómo utilizar el Sensor de temperatura DS18B20 - Arduino Tutorial

En este tutorial usted aprenderá cómo usar el sensor de temperatura DS18B20 con Arduino.La temperatura se imprimirá en el serial monitor de Codebender o el IDE de Arduino.Video de presentación:Antes de empezar vamos a ver más información de este sens
Sensor de temperatura DS18b20 como termostato

Sensor de temperatura DS18b20 como termostato

Este Instructable muestra cómo construí el termostato de mi casa-asistente usando un ESP8266 y MQTT con un sensor de temperatura DS18b20.Parte 1 de este build es construir a un sensor de temperatura usando un DS18b20 - el video muestra cómo construí
Arduino Powered Sensor de temperatura con pantalla LCD salida primera vez autor entrada

Arduino Powered Sensor de temperatura con pantalla LCD salida primera vez autor entrada

Nunca había sido un chico un poco de concurso pero siguió adelante y entró en el primer concurso de autor de tiempo, si te gusta mi intructable o simplemente aprender algo nuevo y creo que he ganado tu voto por favor! =]Hola a todos! Por favor pelado
Termómetro digital en pantalla OLED con sensor de temperatura NodeMCU ESP8266 ESP-12E y DS18B20

Termómetro digital en pantalla OLED con sensor de temperatura NodeMCU ESP8266 ESP-12E y DS18B20

En mi anterior instructable le di una introducción a la ESP8266 y la programación con nuestro IDE de Arduino familiar.En este instructable voy a ir un paso más allá, conexión de un sensor digital de temperatura DS18B20 y mostrar la temperatura en gra
Sensor de temperatura WiFi DS18B20 ESP8266 (ESP8266 Arduino IDE sin Arduino)

Sensor de temperatura WiFi DS18B20 ESP8266 (ESP8266 Arduino IDE sin Arduino)

En este tutorial mostramos cómo construir sensor de temperatura ESP8266 WiFi con DB18B20. Vamos a utilizar el IDE de Arduino, Arduino, sin. Datos se enviará al servidor EasyIoT (Windows o frambuesa Pi) para el registro y agradable.Ver más tutoriales
Sensor de temperatura inalámbrico

Sensor de temperatura inalámbrico

que consta de 2 circuitosUno lee la temperatura usando un DS18B20 y transmitts sobre las ondas de radio.El otro recibe los datos y la muestra.No he probado la gama todavía, pero he tenido trabajando más de 12 pies, atravesando 2 paredes.Lista de piez
OLED + Sensor de temperatura en Espruino (JavaScript MCU)

OLED + Sensor de temperatura en Espruino (JavaScript MCU)

Dos breves ejemplos de lectura de temperatura Sensor DS18B20 o DHT22 y mostrar en pantalla OLED (4-wire SPI) o (I2C de 2 hilos).Todo está conectado directamente con los cables de protoboard a la Junta de Espruino Pico .No requiere alimentación extern
Controlador de matriz de LED Arduino 8 x 8 RGB con Shift 4 registros y Sensor de temperatura

Controlador de matriz de LED Arduino 8 x 8 RGB con Shift 4 registros y Sensor de temperatura

La primera mitad de este video instructivo muestra que un proyecto terminado de un Arduino con 4 registros de desplazamiento (74HC595) utilizado para controlar y 8 x 8 matriz de LED RGB. También hay un sensor de temperatura DS18B20 utilizado para mos
Envío de datos del Sensor de temperatura a base de datos de azul

Envío de datos del Sensor de temperatura a base de datos de azul

Este proyecto utiliza un Raspberry Pi B + a 2 sensores de temperatura y envía los datos a un origen de datos azul que puede utilizarse para crear gráficos.Un montón de código para acceder a los sensores de temperatura vino de Adafruit tutorial de Ada
Regulador de agua caliente solar con arduino mega y ds18b20 sensor de temperatura

Regulador de agua caliente solar con arduino mega y ds18b20 sensor de temperatura

Este es proyecto para el sistema de control solar.Paso 1: Lo que necesita Partes:1xArdunio1xLCD 16 x 23x4.7 kOhm resistenciatransistor de 2xN-P-Nrelé de 2x5vsensor de temperatura 3xDS18b201xBreadboardresistencia de 2 x 220 OhmPaso 2: Conexión de sens
Edison de Intel con LCD de Grove, sensor de temperatura y sensor de infrarrojos

Edison de Intel con LCD de Grove, sensor de temperatura y sensor de infrarrojos

Grove LCD.Temperature sensor de sensor de infrarrojo 與分別是以I2C.ADC.GPIO作為傳輸介面使用上也相當的簡單MRAA biblioteca中有完整的使用方式Grove的官方資料與範例也相當齊全所以實作上並不會太困難Paso 1: Grove LCD 此部分需要 importación pupm_i2clcd建議以下寫法(使用Python)pyupm_i2clcd importación como lcdmyLcd = lcd. Jhd
Portátil Arduino Uno temperatura y Sensor de humedad con pantalla LCD

Portátil Arduino Uno temperatura y Sensor de humedad con pantalla LCD

Hey todo el mundo. He conseguido un montón de grandes ideas de instructables sobre los años. Como este es mi primer ' ible, figura de compartir algo que yo hago así. Estoy entrando a esto en el completo espectro láser concurso 2016. Si tuviera que ga