avatar_efeworld

ds1820 ile 7 segment diplay derece okuma sorunu

Başlatan efeworld, 21 Şubat 2016, 22:24:06

efeworld

sevgili hocam ve arkadaşlar ds1820 ile LCD displaydan sıcaklığı okuyabiliyorum fakat 7 segment displaydan 00 değerini olkuyorum hep aynı kalıyor nerde yanlış yapıyorum acaba yardımcı olurmusunuz

'işlemci 16F877A
@ __config _BODEN_OFF  & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _XT_OSC
DEFINE OSC 4
CMCON=7
ADCON1 = 7
TRISA=%00000001
TRISB=0
TRISC=%11111111
TRISD=%00000000
TRISE=%00011111
PORTA=0
PORTB=0
PORTC=255
PORTD=0
PORTE=0

display1 var byte
display2 var byte
busy var bit
ham var word
isi var word
float var word
temp var word
symbol compin =porta.0

pause 300

BASLA:
gosub sensoroku
goto basla
sensoroku:
owout compin,1,[$CC,$44]

bekle:
owin compin,4,[busy]
if busy = 0 then bekle
owout compin,1,[$CC,$BE]
OWin compin,0,[ham.lowbyte,ham.highbyte]
isi=ham/16

   display1 =isi dig 0
   display2= isi dig 1
   portb=display1 | 48
   pause 1
   low portb.5
   pause 1
   high portb.5
   pause 1
   portb=display2 | 48
   low portb.4
   pause 1
   high portb.4
   pause 1

return
end

ete

Yanlışını söyleyeyim. Şemayı koymamışsın.
Ete

efeworld

Hocam şema sını nasıl yüklerim bilmiyorum fakat devrede 2 adet 4511 var 2adet 7 segment display var4511 in Abcd girişler port b ye bağlı ds1820 ise porta.0 a bağlı ben dereceyi displaylerden okumak istiyorum saygılarımla hocam

ete

#3
MAntık olarak programın yanlış değil. Ancak şema görülmediği için diğer bağlantılar burada önem kazanıyor.
Genel anlamda eksik yada kusurları saymak gerekir ise;
1. Programında hiç bir sigorta ayarı yok. Bu hali ile programın çalışması zor zaten.
2. Projenin hangi işlemci ile yapıldığı belli değil.
3. İşlemcinin hangi frekansta çalıştığı belli değil.
4. İşlemci belli olmadığı için programın çalışmasını etkileyecek bazı özel registerlerin durumuda belli değil. Mesela işlemcide komparatör var ise direk A portunu etkiler ve Sıcaklık sensörünün çalışmasını etkiler. Sıcaklık sürekli sıfır olarak hesap ediliyor olabilir.
5. 4511 lerin LT/BI uçları birleştirilip oraya HIGH verilmesi gerekir. Latch Enable uçları ise PORTA bağlanması gerekir ki bunu yapmışsın programdan anlaşılıyor.
6. Her program ana çalışma bölümüne geçmeden önce yaklaşık 300 ms lik bir açılış gecikmesi ister. Bu gecikme esnasında registerler yerlerine yerleştirilir ve sonrasında programın doğru çalışması sağlanır. Sende buda eksik. başla satırından evvel Pause 300 şeklinde gecikme koymalısın.
7. Sıcaklık hesap şeklinde yanlış bence. Eksi sıcaklık hesap ediyorsun sanki.

Her neyse programın çalışır halini senin verdiğin kodla rile değiştirdim. Program içinde PortC ifadesinide görünce 18F877A ya göre düzenledim. Farklı işlemci ise sen düzeltirsin artık.

Gördüklerim bunlar. Şemayı jpg formatına çevirip mesaj yazarken aşağıda görülen dosya ekle butonu ile ekleyebilirsin.

Ete

efeworld


Powered by EzPortal