DS1620 Digital Thermometer and Thermostat

DS1620 Dijital Termometre ve Termostat, cihazın sıcaklığını gösteren 9 bit sıcaklık okumaları sağlar.
DS1620 üç termal alarm çıkışı ile bir termostat görevi görebilir.


DS1620’nin sıcaklığı kullanıcı tanımlı bir sıcaklığa eşitse veya eşitse, THIGH yüksek olarak sürülür.
DS1620’nin sıcaklığı kullanıcı tanımlı sıcaklık TL’ye eşit veya bu değerden düşükse, TLOW yüksek sürülür.
Sıcaklık TH değerini aştığında TCOM yükselir ve sıcaklık TL’nin altına düşene kadar yüksek kalır.

Kullanıcı tanımlı sıcaklık ayarları, kalıcı olmayan belleğe kaydedilir,
böylece parçalar CPU’ya dahil edilmeden önce programlanabilir ve ayrıca
bir CPU içermeyen bağımsız uygulamalarda kullanılabilir.
Sıcaklık ayarları ve sıcaklık okumaları,
basit bir 3-telli arayüz üzerinden DS1620’ye iletilir / gönderilir.

DS1620 driver


#ifndef DS1620_DQ 
 
#define DS1620_DQ PIN_B5 
#define DS1620_CLK PIN_B6 
#define DS1620_RST PIN_B7 
 
#endif 
 
void write_ds1620_byte(BYTE cmd) { 
BYTE i; 
 
 for(i=0;i<=7;++i) { 
 output_bit(DS1620_DQ, shift_right(&cmd,1,0) ); 
 output_high(DS1620_CLK); 
 output_low(DS1620_CLK); 
 } 
} 
 
void write_ds1620(BYTE cmd, BYTE data) { 
 
output_high(DS1620_RST); 
write_ds1620_byte(cmd); 
write_ds1620_byte(data); 
output_low(DS1620_RST); 
} 
 
BYTE read_ds1620(BYTE cmd) { 
BYTE i,data; 
 
output_high(DS1620_RST); 
write_ds1620_byte(cmd); 
 
for(i=0;i<=7;++i) { 
shift_right(&data,1,input(DS1620_DQ)); 
output_high(DS1620_CLK); 
delay_us(2); 
output_low(DS1620_CLK); 
delay_us(2); 
} 
output_low(DS1620_RST); 
 
return(data/2); 
} 
 
void ds1620_init() { 
BYTE x; 
output_low(DS1620_RST); 
delay_us(2); 
output_low(DS1620_CLK); 
write_ds1620(0x8e,0); 
write_ds1620(0x90,0xa6); 
x=read_ds1620(0x81); 
if((x & 0x80)!=0) 
write_ds1620(0x80,0); 
} 

Örnek uygulama

#include <16F876a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#include <ds1620.c>
#include <lcd.c>
#include <string.h>
#include <stdlib.h>
#define DS1620_DQ PIN_C5 
#define DS1620_CLK PIN_C6 
#define DS1620_RST PIN_C7</pre>
int i;
int32 z=123;
char string[5];
void main() {
lcd_init();

init: delay_ms(500);

z=read_ds1620(0xAA);
delay_ms(100);
lcd_putc("\fReady...\n");
lcd_gotoxy(1,2);
itoa(z,10, string);
for( i=0;i<=5;i++)
lcd_putc(string[i]);
goto init;
}
Bu yazı CCS C Sürücü kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.