PIC16F84, DS18B20 ve 2×16 LCD kullanılarak yapılmış bir dijital termometre devresi

Sıcaklık ölçümü için ısı sensörü olarak DS18B20 kullanılmış. Bu sensör ucuz ve piyasada bulunabilen bir sensördür.

Devrede kullanılan C kodları:

[code]
<pre>#BYTE TRISA=0x85
#BYTE PORTA=0x5
#BYTE STATUS=0x3
#define RP0 5
#define C 0

// The following are standard 1-Wire routines.
void make_ds1820_high_pin(int sensor)
{
TRISA = 0xff;
}

void make_ds1820_low_pin(int sensor)
{
PORTA = 0x00;
TRISA = 0xff & (~(0x01 << sensor));
}

// delay routines
void delay_10us(int t)
{
#asm
BCF STATUS, RP0
DELAY_10US_X:
CLRWDT
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ t, F
GOTO DELAY_10US_X
#endasm
}

void delay_ms(long t) // delays t millisecs
{
do
{
delay_10us(100);
} while(–t);
}

void init_ds1820(int sensor)
{
make_ds1820_high_pin(sensor);
make_ds1820_low_pin(sensor);
delay_10us(50);

make_ds1820_high_pin(sensor);
delay_10us(50);
}

int read_ds1820_one_byte(int sensor)
{
int n, i_byte, temp, mask;
mask = 0xff & (~(0x01<<sensor));
for (n=0; n<8; n++)
{
PORTA=0x00;
TRISA=mask;
TRISA=0xff;
#asm
CLRWDT
NOP
NOP
#endasm
temp=PORTA;
if (temp & ~mask)
{
i_byte=(i_byte>>1) | 0x80; // least sig bit first
}
else
{
i_byte=i_byte >> 1;
}
delay_10us(6);
}
return(i_byte);
}

void write_ds1820_one_byte(int d, int sensor)
{
int n, mask;
mask = 0xff & (~(0x01<<sensor));
for(n=0; n<8; n++)
{
if (d&0x01)
{
PORTA=0;
TRISA=mask; // momentary low
TRISA=0xff;
delay_10us(6);
}

else
{
PORTA=0;
TRISA=mask;
delay_10us(6);
TRISA=0xff;
}
d=d>>1;
}
}

</pre>
[/code]

Devrenin HEX dosyası ektedir.

Yazıyla İlgili Dosyaları İndirmek İçin Aşağıdaki Dosyaları İndir Butonuna Tıklayın


Benzer Yazılar

PIC16F84 İle LCD’li Termometre Devresi

Pic16f84 kullanılarak yapılmış termometre devresi. Sıcaklık 2x16 LCD'de gösteriliyor. Program dili olarak C kullanılmış.

PIC16F628 İle LCD’li Şifreli Kilit Devresi

Pic16f628 kullanılarak yapılmış şifreli kilit devresi. Devrede 3x4 keypad kullanılmış.

PIC16F84 İle 0-9999 Sayıcı Devre – PBP

Devrede mikrodenetleyici olarak Pic16F84 kullanıldı. Programlama dili olarak da PicBasic Pro. Devre 0 ile 9999 arasında ileri geri sayım yapıyor

PIC16F84 ile 4’lü Tek Display İle 0-9999 Sayıcı

Devre 16F84 ile 0-9999 ileri geri sayıcı devresi. Devrede sayıları göstermek amacıyla 4 tane 7 segment display yerine 4lü tek display kullanılıyor. Bu da devrede kullanılan devre elemanı ve bağlantı sayısını azaltıyor


Facebookta Paylas