Negatif Sıcaklık Gösterebilen LCD Termometre

lcdtermometre

Bu uygulamamızda PIC16F628A mikrodenetleyicisi ile DS18B20 sıcaklık sensörü kullanarak negatif sıcaklık değerlerini de gösterebilen LCD’li bir termometre yapacağız.

Devre şemamızı ekleyelim;

LcdTermometre

Şimdi de mikroC kodlarımızı ekleyelim;

</pre>
// Lcd pinout settings
sbit LCD_RS at RA6_bit;
sbit LCD_EN at RA7_bit;
sbit LCD_D7 at RA3_bit;
sbit LCD_D6 at RA2_bit;
sbit LCD_D5 at RA1_bit;
sbit LCD_D4 at RA0_bit;
// Pin direction
sbit LCD_RS_Direction at TRISA6_bit;
sbit LCD_EN_Direction at TRISA7_bit;
sbit LCD_D7_Direction at TRISA3_bit;
sbit LCD_D6_Direction at TRISA2_bit;
sbit LCD_D5_Direction at TRISA1_bit;
sbit LCD_D4_Direction at TRISA0_bit;
//--------------------
bit isaret;
unsigned char isiTam=0,derece[11],txt[6];
unsigned int isi=0,isiOndalik;
//-----------------------
void isiOku()
{
 char lsb, msb;
 //---------------------
 Ow_Reset(&PORTB,7); // Onewire reset sinyali gönder
 Ow_Write(&PORTB,7,0xCC); // SKIP_ROM , ROM bilgisini atla
 Ow_Write(&PORTB,7,0x44); // CONVERT_T, Sıcaklık dönüşümü başlat
 Delay_us(120); //120usaniye bekle
 Ow_Reset(&PORTB,7); // Onewire reset sinyali gönder
 Ow_Write(&PORTB,7,0xCC); // SKIP_ROM , ROM bilgisini atla
 Ow_Write(&PORTB,7,0xBE); // READ_SCRATCHPAD, ısı hafızayı oku
 lsb = Ow_Read(&PORTB,7); // LSB yi al
 msb = Ow_Read(&PORTB,7); // MSB'yi al
 //---------------------------
 isi=(msb<<8)+lsb; // int tipi isi ham verisi
 if(isi&0x8000)
 {
 isaret=1; // sıcaklık negatif
 isi=~isi+1;// 2'ye tümleyenini al
 }
 else isaret=0;
 isiTam=(isi&0x0FFF)>>4; // isinin tam kısmı
 isiOndalik=(isi&0x000F)*625;// ısının ondalık kısmı
}
//-----------------------------------------------------------------
void isiYaz()
{
 if(isiTam>=100) derece[0]= isiTam/100 + 48;
 else if (isaret) derece[0]='-';
 else derece[0]=' ';
 if(isitam>=10) derece[1]= (isiTam/10)%10 + 48;
 else derece[1]=' ';
 derece[2]= isiTam%10 + 48;
 derece[3]='.';
 derece[4]= isiOndalik/1000 + 48;
 derece[5]= (isiOndalik/100)%10 + 48;
 derece[6]= (isiOndalik/10)%10 + 48;
 derece[7]= isiOndalik%10 + 48;
 derece[8]= 223;
 derece[9]= 'C';
 Lcd_Out(2,1,derece);
}
void main()
{
 CMCON=7;
 TRISA=0;
 TRISB=0;
 Lcd_Init();
 Lcd_Cmd(_LCD_CURSOR_OFF);
 Lcd_Out(1,3,"Termometre");
 Lcd_Out(2,1,"elektrokod");
 Delay_ms(2000);
 do
 {
 isiOku();
 isiYaz();
 Delay_ms(1000);
 }while(1);
}
<pre>

Proje dosyalarına buradan ulaşabilirsiniz.

Bu da projenin similasyon videosu;

Reklamlar

2 thoughts on “Negatif Sıcaklık Gösterebilen LCD Termometre

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s