DS18B20 Sıcaklık Sensörü Uygulaması
Merhaba arkadaşlar, bu yazımızda Trudyo Geliştirme Kartı ile 2×16 Karakter LCD ekran ve DS18B20 Sıcaklık Sensörü kullanarak şifreli giriş uygulaması yapacağız.
DS18B20, LCD ve Trudyo Geliştirme Kartı Bağlantısı
Yukarıda görüldüğü üzere DS18B20 Sıcaklık Sensörü E0 pinine bağlanmıştır. 2×16 Karakter LCD Ekran ise Trudyo Geliştirme Kartı‘nın D portuna bağlanmıştır. Ayrıca haricen eklenmiş bir 10K Ohm değerinde potansiyometre ile LCD ekranın kontrast ayarı yapılabilmektedir.
Bu Uygulamada Kullanılan Malzemeler
Trudyo Geliştirme Kartı
DS18B20 Sıcaklık Sensörü
Başlamadan Önce
2×16 LCD Ekran Kullanımı
2×16 karakter LCD ekran kullanımı hakkında ayrıntılı bilgi ve örnek uygulamayı incelemek için daha önce yayınlanan “2×16 LCD Ekran Kullanımı” yazımızı okuyabilirsiniz.
Trudyo Konfigürasyon Ayarları
Trudyo Geliştirme Kartı ile programlama yapabilmek için kartınızın konfigürasyon ayarlarını yapmanız gerekmektedir. Gerekli konfigürasyon ayarlarını yapmak için “Trudyo Konfigürasyon Ayarları” yazımızı okuyabilirsiniz.
DS18B20 Sıcaklık Sensörü Uygulama Kodları
// Connections
sbit LED at LATA4_bit;
unsigned int temp;
char txt[15];
// Lcd pinout settings
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
// Pin direction
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD2_bit;
// Datasheet:https://www.analog.com/media/en/technical-documentation/data-sheets/DS18B20.pdf
// -55 11111100 10010000
// -25.0625 11111110 01101111
unsigned int ReadDS18B20(){
unsigned short tempDataMSB, tempDataLSB;
unsigned long tempData;
unsigned long temperature=0;
Ow_Reset(&PORTE,0); // Reset
Ow_Write(&PORTE,0,0xCC); // Skip ROM
Ow_Write(&PORTE,0,0x44); // Convert Temperature
delay_ms(1000); // 1sn bekleme
Ow_Reset(&PORTE,0); // Reset
Ow_Write(&PORTE,0,0xCC); // Skip ROM
Ow_Write(&PORTE,0,0xBE); // Read Scratchpad
tempDataLSB=Ow_Read(&PORTE,0); // Read LSB
tempDataMSB=Ow_Read(&PORTE,0); // Read MSB
tempData=tempDataMSB;
tempData<<=8;
tempData+=tempDataLSB;
// Negative Temperature
if(tempData>0xF800){
return 0;
}
temperature = (tempData>>4);
return temperature;
}
void main() {
// Giris-Cikis Secimleri
TRISA=0b00000000;// [][][][][][][][]
TRISB=0b00000000;// [][][][][][][][]
TRISC=0b00000000;// [][][][][][][][]
TRISD=0b00000000;// [LCD_RS][LCD_EN][LCD_D4][LCD_D5][LCD_D6][LCD_D7][][]
TRISE=0b00000000;// [][][][][][][][DS18B20]
// Analog-Dijital Giris Secimleri
ANSELA=0b00001010;// [][][][][TRIMPOT2][][TRIMPOT1][]
ANSELB=0b00000000;// [][][][][][][][]
ANSELC=0b00000000;// [][][][][][][][]
ANSELD=0b00000000;// [][][][][][][][]
ANSELE=0b00000000;// [][][][][][][][]
// Port Temizleme
LATA=0x00;
LATB=0x00;
LATC=0x00;
LATD=0x00;
LATE=0x00;
// LCD Ekran Hazirlama
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"DS18B20 Uyg. "); // Ekranda 1.satir 1.s tundan itibaren yaz
Lcd_Out(2,1,"Sicaklik: C"); // Ekranda 2.satir 1.s tundan itibaren yaz
Lcd_Chr(2,15,223); // Derece sembol yazdirma
while(1){
temp=ReadDS18B20(); // DS18B20.c kutuphane dosyasi icerisindeki ReadDS18B20 fonksiyonu ile sicaklik degerini getir
if(temp>0)
InttoStr(temp, txt); // Float degeri metin olarak degistir
Lcd_Out(2,9,txt); // Ekranda 2.satir 10.stundan itibaren sicaklik degerini yaz
}
}
Uygulamaya ait dosyaları buraya tıklayarak indirebilirsiniz. Merak ettiğiniz ve aklınıza takılan soruları aşağıda 👇 yorum olarak bize iletebilirsiniz. İyi çalışmalar. 🙂 #geliştirmeyebaşla
Yorum yapmak için giriş yapmalısınız.