Arkadaşlar 16f877 yardımıyla 18b20 üzerinden sıcaklık ölçmek istiyorum fakat LCD'den çıkış alamıyorum. Yardımcı olursanız sevinirm.
Kurulan devre:
(http://s18.postimg.cc/k38rjnl91/IMG_0229.jpg) (http://postimg.cc/image/k38rjnl91/)
(http://s27.postimg.cc/l53lih07j/picbasic_eeprom_ds18b20.jpg) (http://postimg.cc/image/l53lih07j/)
Yazıln kod:
@ __config _XT_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF
'*******************************************************************************
define LCD_DREG PORTB
Define LCD_DBIT 4
define LCD_EREG PORTB
define LCD_EBIT 3
DEFINE LCD_RWREG PORTB
define LCD_RWBIT 2
define LCD_RSREG PORTB
DEFine LCD_RSBIT 1
define LCD_BITS 4
define LCD_LINES 2
'******************************************************************************
CMCON=7
'****************************************************************************
Busy VAR BIT ' Busy Status-Bit
HAM VAR WORD ' Sensör HAM okuma değeri
ISI VAR WORD ' Hesaplanmış ISI değeri
Float VAR WORD ' Holds remainder for + temp C display
X VAR WORD
ISARET_BITI VAR HAM.Bit11 ' +/- sıcaklık İşaret biti, 1 = olursa eksi sıcaklık
EKSI_ISI CON 1 ' Sıfır altında isaret biti=1 oluyor kontrol için
DERECE CON 223 ' ° işareti
ISARET VAR BYTE ' ISI değeri için +/- işaret
TEMP VAR BYTE ' Div32 bit hesap için geçici değişken
SYMBOL COMM_PIN=PORTB.0 ' One-wire Data-Pin "DQ" PortB.0 da
'*********************************************************************************
PORTA=0 : PORTB=0
TRISB=%00000001
TRISA=0
'************************************ *******************************************
LOW PortB.2
CLEAR 'tüm değişkenler sıfırlandı
PAUSE 200
LCDOUT $FE,1
'******************************************************************************
BASLA:lcdout $FE,2," DS18B20 ile ISI"
gosub SENSOROKU 'SONSÖR OKU VE SICAKLIĞI EKRANA YAZ
GOTO BASLA
'*******************************************************************************
SENSOROKU:
OWOUT Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
OWIN Comm_Pin, 4, [Busy] ' Busy değerini oku
IF Busy = 0 THEN Bekle ' hala meşgulmü? , evet ise goto Bekle..!
OWOUT Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
OWIN Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
GOSUB Hesapla
RETURN
Hesapla: ' Ham değerden Santigrat derece hesabı
ISARET = "+"
IF ISARET_BITI = EKSI_ISI THEN
ISARET = "-"
temp=($ffff-ham+1)*625
ISI = DIV32 10
GOTO GEC
endif
TEMP = 625 * HAM '
ISI = DIV32 10 ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
GEC:
FLOAT = (ISI //1000)/100
ISI=ISI/1000
LCDOUT $FE,$C4,ISARET,DEC ISI,".",DEC1 (Float)," ",Derece,"C " '2. satırda ısı
RETURN
END
vee pini konstrat ayarıdır, şu an sizde maksimumda olduğu için öyle görünüyor büyük bir ihtimal.
https://www.google.com.tr/search?q=2x16+lcd+ba%C4%9Flant%C4%B1s%C4%B1&biw=1366&bih=657&noj=1&source=lnms&tbm=isch&sa=X&ved=0CAcQ_AUoAWoVChMI46icqIa2xwIVRT0aCh3pwQMU (https://www.google.com.tr/search?q=2x16+lcd+ba%C4%9Flant%C4%B1s%C4%B1&biw=1366&bih=657&noj=1&source=lnms&tbm=isch&sa=X&ved=0CAcQ_AUoAWoVChMI46icqIa2xwIVRT0aCh3pwQMU)
Pic in beslemesi yok. Google dan picin Vcc (+besleme) ve Vss(- besleme) uçlarını bulup besleyin.
Mcu;
1 no 1-10K ile +5V
11 no +5V
12 no gnd
31 no gnd
32 no +5V
Pot bağlantısı;
o +5V
|
| |
| |
| |<---0 Vee
| |
|
--- gnd
Bir de D6 ve D7 uçlarını kontrol ediniz.
Alıntı yapılan: Gökhan BEKEN - 20 Ağustos 2015, 00:07:25
vee pini konstrat ayarıdır, şu an sizde maksimumda olduğu için öyle görünüyor büyük bir ihtimal.
https://www.google.com.tr/search?q=2x16+lcd+ba%C4%9Flant%C4%B1s%C4%B1&biw=1366&bih=657&noj=1&source=lnms&tbm=isch&sa=X&ved=0CAcQ_AUoAWoVChMI46icqIa2xwIVRT0aCh3pwQMU (https://www.google.com.tr/search?q=2x16+lcd+ba%C4%9Flant%C4%B1s%C4%B1&biw=1366&bih=657&noj=1&source=lnms&tbm=isch&sa=X&ved=0CAcQ_AUoAWoVChMI46icqIa2xwIVRT0aCh3pwQMU)
Dostum konstrat ayarını yaptım birçok kez ama onunla ilgili bir durum değil. Saatlerdir uğraştığım için sinirlenip çıkarmışım.
Alıntı YapPic in beslemesi yok. Google dan picin Vcc (+besleme) ve Vss(- besleme) uçlarını bulup besleyin.
Pic'in iki adet besleme noktası var. İlk önce her ikisini besledim ardımdan bu hale getirdim. Bir değişiklik olmadı.
Alıntı YapMcu;
1 no 1-10K ile +5V
11 no +5V
12 no gnd
31 no gnd
32 no +5V
Pot bağlantısı;
o +5V
|
| |
| |
| |<---0 Vee
| |
|
--- gnd
Bir de D6 ve D7 uçlarını kontrol ediniz.
Hocam MCLR'yi kapattım sandım o nedenle direnç eklemedim hemen bakıyorum. Pot ile ilgili bir sıkıntı olmadığını düşünüyorum hocam 2dk öncesinde o balantıyı yapmıştım.
Bir de pic in iki adet besleme ve GND ucu var . Her ikisine de bağamak zorunda mıyız? Her iksine de bağladığımda da bir değişiklik olmamıştı.
mesaj birleştirme:: 20 Ağustos 2015, 15:06:40
arkadaşlar pic de mi bir problem var acaba?
Sensor kısımlarını iptal edip sadece LCD çıktısı
alabiliyor musunuz?
Alıntı yapılan: mehmet - 22 Ağustos 2015, 19:15:22
Sensor kısımlarını iptal edip sadece LCD çıktısı
alabiliyor musunuz?
Hocam Sensöroku etiketinin altına aşağıdaki ifadeyi koyduğum halde çıkış alamadım.
ham=$FE6F:Gosub hesapla:RETURN
bu pin 1 'i mutlaka vcc yapmalısınız direnç ile yada düz.
yaptığınızı doğrulayın.
birde çelişki var, @ MCLR'yi kapattım sandım o nedenle direnç eklemedim
demişsiniz kapattım ifadesini anlayamadım,eğer programlayıcıdan .... kastediyorsanız kullandığınız işlemci buna uygun değil.
Isis de 16F628A
gerçek devrede 16F877A kullanılmış,
kodlar hangisi için yazıldı?
Söylenmiş 16F877A da MCLR kapatılamaz, +5V a direnç ile çekilmek zorunda.
Devre çok kötü kurulmuş,
özellikle osilatör kısmı pic pinlerine en yakın yerden bağlanmalı.
Şunun gibi:
(https://lh3.googleusercontent.com/-grwrkfAzfw0/VGJCSMDPFdI/AAAAAAAABAo/f7bI-LMmnBA/w1044-h587-no/2x16%2Blcd%2Bbreadboard.png)
(https://lh6.googleusercontent.com/-gs8ZAj4PQOQ/UhTZ2AiNkSI/AAAAAAAAAHU/jmaHYUVrG28/w820-h615-no/SAM_1363.JPG)
Alıntı yapılan: RaMu - 23 Ağustos 2015, 21:34:03
Isis de 16F628A
gerçek devrede 16F877A kullanılmış,
kodlar hangisi için yazıldı?
Söylenmiş 16F877A da MCLR kapatılamaz, +5V a direnç ile çekilmek zorunda.
Devre çok kötü kurulmuş,
özellikle osilatör kısmı pic pinlerine en yakın yerden bağlanmalı.
Şunun gibi:
(https://lh3.googleusercontent.com/-grwrkfAzfw0/VGJCSMDPFdI/AAAAAAAABAo/f7bI-LMmnBA/w1044-h587-no/2x16%2Blcd%2Bbreadboard.png)
(https://lh6.googleusercontent.com/-gs8ZAj4PQOQ/UhTZ2AiNkSI/AAAAAAAAAHU/jmaHYUVrG28/w820-h615-no/SAM_1363.JPG)
Hocam teşekkürler tavsiyeleriniz için. Uzun süredir foruma girme fırsatı bulamadım o nedenle şimdi yazıyorum. Müsait zaman bulduğumda söylediklerinizi uygulayacağım ve sonuçları belirteceğim.
Alıntı yapılan: ipek - 23 Ağustos 2015, 17:05:26
bu pin 1 'i mutlaka vcc yapmalısınız direnç ile yada düz.
yaptığınızı doğrulayın.
birde çelişki var, @ MCLR'yi kapattım sandım o nedenle direnç eklemedim
demişsiniz kapattım ifadesini anlayamadım,eğer programlayıcıdan .... kastediyorsanız kullandığınız işlemci buna uygun değil.
Teşekkürler İpek Hocam.