Arama butonu
Bu konudaki kullanıcılar: 1 misafir
2
Cevap
1002
Tıklama
0
Öne Çıkarma
PIC 16F877 Sıcaklık Ölçme Ve Seçim Yapma
B
12 yıl (1076 mesaj)
Yüzbaşı
Konu Sahibi

Arkadaşlar aşağıda gördüğünüz şekilde bir ödevim var,yapması gerekenler belli sıcaklık değerlerin bir seçim yapacak ve sıcaklık değişene kadar o seçimde kalıp,seçmde kaldığı süre içindede roleyi açık tutacak,bunları lcd de gösterecek,fakat benim yaptığımda sıcaklık değeri değişse bile seçimi değiştirmiyor,çok karışık oldu,bir yerde hata var ama çözemiyorum,yardım ederseniz sevinirim.



DEFINE LCD_DREG PORTC 'LCD data bacakları PortC de bağlı 
DEFINE LCD_DBIT 4 'LCD data bacakları 4. bitten başlıyor
DEFINE LCD_EREG PORTC 'LCD Enable Bacağı PortC de bağlı
DEFINE LCD_EBIT 3 'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RWREG PORTC 'LCD RW Bacağı PortC de bağlı
DEFINE LCD_RWBIT 2 'LCD RW Bacağı 2. bite bağlı
DEFINE LCD_RSREG PORTC 'LCD RS Bacağı PortC de bağlı
DEFINE LCD_RSBIT 1 'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_BITS 4 'LCD 4 bit olarak bağlı
DEFINE LCD_LINES 4 'LCD 2 sıra olarak çalışıyor
DEFINE OSC 4

ADCON0=%10000000
ADCON1=%0111

TRISA=%001111
TRISC=0
TRISD=%00000111

SICAKLIK Var Word ' Sicaklik Degsikeni
Kalan Var Byte ' Kalan Degiskeni
Derece_say Var Byte ' Her Santigrad icin derece sayimi Degiskeni

DS Var PORTA.4

SYMBOL TUS1=PORTA.0
SYMBOL TUS2=PORTA.1
SYMBOL TUS3=PORTA.2

HIGH TUS1
HIGH TUS2
HIGH TUS3

lcdout $FE,1,"SSA"
LCDOUT $FE,$C0,"2211"
LCDOUT $FE,$94,"ODEV ÇALIŞMASI"
PAUSE 400

DONGU: OWOut DS,1,[$CC, $44]
DONGU1: OWIn DS,4,[Kalan]
If Kalan = 0 Then DONGU1

OWOut DS,1,[$CC, $BE] ' Siackligi oku
OWIn DS,0,[SICAKLIK.LOWBYTE, SICAKLIK.HIGHBYTE, Skip 4, Kalan, Derece_say]


SICAKLIK = (((SICAKLIK >> 1) * 100) - 25) + (((Derece_say - Kalan) * 100) / Derece_say)
Lcdout $FE,$D4,0,DEC (SICAKLIK / 100), ".", DEC2 SICAKLIK, " C DERECE"
Pause 1000 ' Her 250 milisaniyede bir goster




BASLA:
lcdout $FE,1,"1.TAVUK"
LCDOUT $FE,$C0,"2.KAZ"
LCDOUT $FE,$94,"3.BILDIRCIN"
LCDOUT $FE,$D4,"LUTFEN BIRINI SECIN"
PAUSE 10

IF 0<SICAKLIK<80 THEN TUS1=0
LCDOUT $FE,1
Lcdout $FE,$C0,0,DEC (SICAKLIK / 100), ".", DEC2 SICAKLIK, " C DERECE"
PAUSE 500
LCDOUT $FE,$94,"TAVUK Secildi "
HIGH PORTD.0
HIGH PORTA.3 'role çektirildi
PAUSE 500 '500 ms beklemeı
PAUSE 500
LOW PORTD.0
PAUSE 500
GOTO DONGU

IF 88<SICAKLIK<160 THEN TUS2=0
LCDOUT $FE,1
Lcdout $FE,$C0,0,DEC (SICAKLIK / 100), ".", DEC2 SICAKLIK, " C DERECE"
PAUSE 500
LCDOUT $FE,$94,"BILDIRCIN Secildi "
HIGH PORTD.0
HIGH PORTA.3 'role çektirildi
PAUSE 500 '500 ms beklemeı
PAUSE 500
LOW PORTD.0
PAUSE 500
GOTO DONGU

IF 168<SICAKLIK<240 THEN TUS3=0
LCDOUT $FE,1
Lcdout $FE,$C0,0,DEC (SICAKLIK / 100), ".", DEC2 SICAKLIK, " C DERECE"
PAUSE 500
LCDOUT $FE,$94,"KAZ Secildi "
HIGH PORTD.0
HIGH PORTA.3 'role çektirildi
PAUSE 500 '500 ms beklemeı
PAUSE 500
LOW PORTD.0
PAUSE 500
GOTO DONGU


END