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
 

Forum istatistikleri

Konular
128,179
Mesajlar
915,659
Kullanıcılar
449,943
Son üye
Ali4129

Yeni konular

Geri
Üst