China Sensor Hersteller

China Temperature Sensor & Thermistor manufacturer

Thermostat mit DS18B20 erstellen und programmieren

Der DS18B20 ist ein häufig verwendeter Temperatursensor-Chip, der nur einen E / A-Port des Mikrocontrollers belegt und besonders benutzerfreundlich ist. Es ist wichtig zu beachten, dass die Kommunikationszeit zum Lesen des Temperaturwerts relativ lang ist und die Timing-Anforderungen streng sind, da nur ein IO-Port für die Kommunikation mit der MCU verwendet wird. Während der Kommunikation dürfen keine anderen Interrupts des Mikrocontrollers stören. Aus diesem Grund sollten Sie im aktuellen Projekt niemals den Anzeigemodus für digitale Röhren mit dynamischer Abtastung verwenden, nachdem das System diesen Sensorchip ausgewählt hat. Andernfalls blinkt die Anzeige der digitalen Röhre leicht, wenn die Interrupt-Lesetemperatur ausgeschaltet wird.
Schaltungsdesign des Thermostats DS18B20
Der DS18B20 hat einen Temperaturbereich von -55 bis 125 Grad. Der Fehler beträgt + -0,5 Grad im Temperaturbereich von -10 Grad bis 85 Grad, was die häufigsten Temperaturmessanforderungen erfüllen kann.
(1) Hardwareplattform
Basierend auf Zhu Zhaoyu 51 Single-Chip-Lernboard.
(2) um die Funktion zu erreichen
Dieses Programm hat nur ein Fenster. Dieses Fenster hat 2 Teilanzeigen.
Der erste Teil besteht aus den Ziffern 7, 6 und 5 und zeigt die eingestellte Temperatur an.
Der zweite Teil ist die 4., 3., 2. und 1. Ziffer der Röhre, die die tatsächliche Umgebungstemperatur anzeigt. Die 4. Ziffernröhre zeigt die positiven und negativen Vorzeichen an.
Die S1-Taste ist eine Plus-Taste und die S5-Taste ist eine Minus-Taste. Mit ihnen können Sie die "eingestellte Temperatur" direkt einstellen.
Ein LED-Licht simuliert ein industriell gesteuertes Relais.

Wenn die tatsächliche Temperatur 2 Grad oder weniger unter der eingestellten Temperatur liegt, leuchtet die LED des Analogrelais auf.
Wenn die tatsächliche Temperatur gleich oder höher als die eingestellte Temperatur ist, ist die LED des Analogrelais aus.
Wenn die Isttemperatur innerhalb der eingestellten Temperatur und der eingestellten Temperatur minus 2 Grad liegt, behält die LED des Analogrelais den Status quo bei. Dieser 2-Grad-Bereich dient zum Puffern der Temperaturdifferenz, um zu verhindern, dass das Relais häufig um die kritische Temperatur schaltet.
(3) Der Quellcode wird wie folgt erklärt
#include "REG52.H"
#define const_voice_short 40 // Die Dauer des kurzen Summers
#define const_key_TIme1 20 // Wartezeit bis zum Entprellen
#define const_key_TIme2 20 // Wartezeit bis zum Entprellen
#define const_ds18b20_sampling_TIme 180 // Addiere die Zeit der Hauptschleife, die Zeit jedes Sampling-Clock-Chips
Void iniTIal_myself (void);



Void initial_peripheral (void);
Void delay_short (unsigned int uiDelayShort);
Void delay_long (unsigned int uiDelaylong);
/ / Fahren Sie die digitale Röhre 74HC595
Void dig_hc595_drive (vorzeichenloses Zeichen ucDigStatusTemp16_09, vorzeichenloses Zeichen ucDigStatusTemp08_01);
Void display_drive (void); // Anzeige der Treiberfunktion der digitalen Tube-Schrift
Void display_service (void); // angezeigtes Fenstermenü Serviceprogramm
// LED 74HC595 ansteuern
Void hc595_drive (vorzeichenloses Zeichen ucLedStatusTemp16_09, vorzeichenloses Zeichen ucLedStatusTemp08_01);
Void T0_time (void); // Zeitgesteuerte Interruptfunktion
Void key_service (void); // Button Dienstanwendung
Void key_scan (void); // Tastensuchfunktion im Timer-Interrupt
Void temper_control_service (nichtig); // Temperierprogramm


Void ds18b20_sampling (void); // ds18b20 Abtastprogramm
Void ds18b20_reset (); // Setzen Sie das Timing von ds18b20 zurück
Unsigned char ds_read_byte (void); // Ein Byte lesen
Void ds_write_byte (unsigned char dat); // schreibe ein Byte
Unsigned int get_temper (); // Temperaturwert ohne Umrechnung ablesen

Sbit dq_dr_sr = P2 ^ 6; // ds18b20 Datenlaufwerksleitung
Sbit key_sr1 = P0 ^ 0; // Entspricht der S1-Taste der Zhu Zhaoyu-Lerntafel
Sbit key_sr2 = P0 ^ 1; // Entspricht der S5-Taste der Zhu Zhaoyu-Lerntafel
Sbit led_dr = P3 ^ 5; // LED leuchtet, Relais in analoger Industriesteuerung
Sbit key_gnd_dr = P0 ^ 4; // Simulieren Sie die Masse GND des unabhängigen Tasters, sodass dieser immer einen niedrigen Pegel ausgeben muss
Sbit beep_dr = P2 ^ 7; // E / A-Port des Summerlaufwerks
Sbit dig_hc595_sh_dr = P2 ^ 0; // Digitales Röhrenprogramm 74HC595
Sbit dig_hc595_st_dr = P2 ^ 1;
Sbit dig_hc595_ds_dr = P2 ^ 2;
Sbit hc595_sh_dr = P2 ^ 3; // 74HC595-Programm für LED-Leuchten
Sbit hc595_st_dr = P2 ^ 4;
Sbit hc595_ds_dr = P2 ^ 5;
Unsigned int uiSampingCnt = 0; // Sammle den Timer von Ds1302 und aktualisiere ihn einmal pro Sekunde.
Unsigned char ucSignFlag = 0; // positive und negative Vorzeichen. 0 steht für eine positive Zahl und 1 für eine negative Zahl, die angibt, wie viele Grad unter Null liegen.
Vorzeichenloser langer ulCurrentTemper = 33; // Isttemperatur
Vorzeichenloser langer ulSetTemper = 26; // Temperatur einstellen
Unsigned int uiTemperTemp = 0; // Zwischenvariable
Vorzeichenloses Zeichen ucKeySec = 0; // Schlüsselnummer wird ausgelöst
Unsigned int uiKeyTimeCnt1 = 0; // Taste Debounce Delay Counter
Vorzeichenloses Zeichen ucKeyLock1 = 0; // Das Variablenflag, das nach dem Auslösen der Schaltfläche selbsthemmend ist
Unsigned int uiKeyTimeCnt2 = 0; // Taste Entprellverzögerungszähler
Vorzeichenloses Zeichen ucKeyLock2 = 0; // Selbstsperrendes Variablenflag nach dem Auslösen der Schaltfläche
Unsigned int uiVoiceCnt = 0; // dauerzähler für summer beep
Unsigned char ucVoiceLock = 0; // Atomsperre für Summer
Unsigned char ucDigShow8; // 8. digitale Röhre zur Anzeige von Inhalten
PREV:Wie funktioniert der DS18B20?
NEXT:Hausgemachter Temperatur Generator (Schaltplan und Schritte)

RELATED POSTS




Skype

WhatsApp

WangWang

QQ
Email me

Mail to us