Pic Basic yardım

Pc_KuRTu

Üye
Katılım
20 Nis 2011
Mesajlar
9
Puanları
1
arkadaşlar ben dijital termometre yapacağım.termometrede 16F84A 74HC595 led sürücü bargraf ledler ve DS1820 sıcaklık sensörü bulunacak.devre -10 dan 40 C kadar gösterecek.benim sizden istediğim çoğu programlamayı yaptım ama sadece 74HC595 entegresinin pic basici kaldı.
'****************************************************************
'* 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"





TrisA=0
TrisB=0

PortA=0
PortB=0

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

Comm_Pin1 VAR PortB.0
dPin VAR PORTB.5
sPin VAR PORTB.6
cPin VAR PORTB.7
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,"**KULA EML**"
LCDOUT $FE,$C0, "*HOSGELDINIZ*"
pause 2000
lcdout $FE,1

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

Basla:

gosub sensoroku1


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
ISI=ISI+1
lcdout $FE,$80,"SICAKLIK",1,": ",Sign,DEC ISI,".",DEC1 (Float),0,"C " '2. satırda ısı



RETURN


End
(kodun içinde lcd ekranı kodları var ilk önce lcd takmıştım ondan kafanız karışmasın)
 
sn Pc_KuRTu,
yardım için devre şemasını koyman lazım.............
 
arkadaşlar lütfen yardım çok acele ödevin verilmesi lazım:confused::confused::confused:
 
arkadaşlar yardım edecek birisi yokmu peki bu koddaki hataları sölermisiniz????diğer koddan tek farkı port çoğullamayı yazdım ondaki hataları sölermisiniz?????

'****************************************************************
'* 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"





TrisA=0
TrisB=0

PortA=0
PortB=0

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

Comm_Pin1 VAR PortB.0
dPin VAR PORTB.5
sPin VAR PORTB.6
cPin VAR PORTB.7
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
x VAR BYTE

'***********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,"**KULA EML**"
LCDOUT $FE,$C0, "*HOSGELDINIZ*"
pause 2000
lcdout $FE,1

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

Basla:

gosub sensoroku1


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
ISI=ISI+1
lcdout $FE,$80,"SICAKLIK",1,": ",Sign,DEC ISI,".",DEC1 (Float),0,"C " '2. satırda ısı

'***********PORT ÇOĞALTMA***********
PORTCOGALTMA:
x = "ISI"
IF x > 0 THEN x = x+10
SHIFTOUT PORTB.5,PORTB.7 'Sayı değerini Shift Registere yaz
HIGH PORTB.6:pAUSEUS 2:LOW P'Sayı değerini Shift Registere yazORTB.6 'Yazılan değeri çıkışa aktar
IF X =< 0 THEN
SHIFTOUT PORTB.5,PORTB.7 'Sayı değerini Shift Registere yaz
HIGH PORTB.6:pAUSEUS 2:LOW PORTB.6 'Yazılan değeri çıkışa aktar 'Yazılan değeri çıkışa aktar

SHIFTOUT DTA,CLK,1,[%01010101] 'Veriyi dta,clk pinlerinden senkronize'olacak şekilde gönder
HIGH YAZ 'sPİN pini 5V
PAUSEUS 2 'Çok kısa bi süre bekle
LOW YAZ 'sPİN pini 0V

GOTO basla

RETURN


End
 

Yeni mesajlar

Forum istatistikleri

Konular
128,190
Mesajlar
915,724
Kullanıcılar
449,960
Son üye
katzeimar

Yeni konular

Çevrimiçi üyeler

Geri
Üst