Elektronik / Mikrodenetleyici Projeleri/

DS18B20 PIC16F628 araç içi dışı termometre picbasic

DS18B20 PIC16F628 termometre devresi Arabanızda kullanabileceğiniz iç ve dış sıcaklığı lcd üzerinde gösteren bir devre termometre devresinin proteus isis simülasyon ares pcb ve kaynak picbasic pbp ve hex yazılımları bulunmakta

arac-ic-dis-termometre-picbasic-pro

araba-isis-termometre

car-tehermometer-circuit-lcd

isis-olcumu-termometre

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2007 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 19.03.2007                                        *
'*  Version : 1.0                                               *
'*  Notes   : RB1=Enable                                        *
'*            RB2=R/W                                           *
'*            RB3=RS                                            *
'*            RB4=D4                                            *
'*            RB5=D5                                            *
'*            RB6=D6                                            *
'*            RB7=D7                                            *
'*            RA0=Sensör1                                       *
'*            RA1=Sensör2                                       *                 *
'*                                                              *
'****************************************************************

'***********Seri İletişim Dosyası***********

Include "MODEDEFS.BAS"

CMCON=7

'***********LCD Tanımlamaları***********

DEFINE LCD_DREG		PORTB	
DEFINE LCD_DBIT			4		
DEFINE LCD_EREG		PORTB	
DEFINE LCD_EBIT  		1			
DEFINE LCD_RWREG    PORTB	
DEFINE LCD_RWBIT     	2		
DEFINE LCD_RSREG	PORTB	
DEFINE LCD_RSBIT		3				
DEFINE LCD_BITS			4		
DEFINE LCD_LINES		2		

'***********Özel Karakter Tanımlamaları
LCDOUT $FE,$40, 6, 9, 9, 6, 0, 0, 0, 0 'Derece İşareti
LCDOUT $FE,$48, 4, 14, 4, 4, 4, 4,14,0 'İ Harfi
LCDOUT $FE,$50, 14, 17, 16, 16,16,17,14,4 'Ç Harfi
LCDOUT $FE,$58, 14, 17, 16, 14,1, 17,14,4 'Ş Harfi

'***********Port Ayarları***********

TrisA=0
TrisB=0

PortA=0
PortB=0  

'***********Sensör Tanımlamaları***********

Comm_Pin1   VAR	PortA.0
Comm_Pin2   var PortA.1 
Busy        VAR BIT
HAM         VAR	WORD
ISI         VAR WORD
SIGN        VAR BYTE
SIGN_BITI   VAR HAM.Bit11
NEGAT_ISI   CON 1
TEMP        VAR BYTE
Float       VAR WORD

'***********LCD yi Kullanıma Hazır Hale Getir***********

LOW PORTB.2 'RW bacağı ekrana yazmaya imkan vermek için LOW yapıldı.

lcdout $FE,1 
PAUSE 200   ' LCD nin kullanıma hazır hale gelebilmesi için gerekli süre
lcdout $FE,1 

LCDOUT $FE,$80,"**HOS GELDINIZ**"             	
LCDOUT $FE,$C0, "*MUSTAFA  BILKE*"
pause 2000
lcdout $FE,1  

'***********Program Başlangıcı***********

Basla:


    gosub sensoroku1
    gosub SENSOROKU2
    
Goto Basla

'***********1. Sensörü Oku***********

SENSOROKU1: 
           
           OWOUT   Comm_Pin1, 1, [$CC, $44]' ISI değerini oku
Bekle1:
           OWIN    Comm_Pin1, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle1  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin1, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin1, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla1
           RETURN
    
Hesapla1:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-"  
       temp=($ffff-ham+1)*625
       ISI  = DIV32 10 
       GOTO GEC1   
    endif
    TEMP = 625 * (HAM+1)        ' 
    ISI = DIV32 10          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
GEC1:
    FLOAT = (ISI //1000)/100
    ISI=(ISI/1000)-1
    
    
    lcdout $FE,$80,1,2,"ER",1,": ",Sign,DEC ISI,".",DEC1 (Float),0,"C " '2. satırda ısı
    if ISI=65535 then 
        
        lcdout $FE,$80,"                "
        lcdout $FE,$80,"1. SENSORU TAKIN"
    
    endif
    
    RETURN

'***********2. Sensörü Oku***********

SENSOROKU2: 
           
           OWOUT   Comm_Pin2, 1, [$CC, $44]' ISI değerini oku
Bekle2:
           OWIN    Comm_Pin2, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle2  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin2, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin2, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla2
           RETURN
    
Hesapla2:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-"  
       temp=($ffff-ham+1)*625
       ISI  = DIV32 10 
       GOTO GEC2   
    endif
    TEMP = 625 * (HAM+1)        ' 
    ISI = DIV32 10          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
GEC2:
    FLOAT = (ISI //1000)/100
    ISI=(ISI/1000)-1
    
     
    lcdout $FE,$C0,"DI",3,"ARI: ",Sign,DEC ISI,".",DEC1 (Float),0,"C " '2. satırda ısı
    
    if ISI=65535 then 
        
      
        lcdout $FE,$C0,"                "
        lcdout $FE,$C0,"2. SENSORU TAKIN"
    
    endif
    
    RETURN





End

Projeye ait isis ve picbasic pro kpod dosyaları: DS18B20 PIC16F628 araç içi dışı termometre picbasic

Dosya indirme LINK listesi (TXT formatında) link-5558.zip şifre-pass: 320volt.com

  1. AYKUT 2009/02/12
  2. Eren 2010/02/03
  3. mert 2011/12/15
  4. Fatih 2012/01/23
  5. Fatih 2012/01/24
  6. ibrahim 2012/12/07
  7. doktor_kadir20 2012/12/08
  8. ibrahim 2012/12/08
  9. mustafa 2013/02/08
  10. TFN 2013/12/27

Yorum

Soru: