I

lcd hatası

Başlatan ikbal, 31 Aralık 2012, 00:17:58

ikbal

kolay gelsin öncelikle....
SHT11 ile ısı kontrol devresi yapıyorum devre proteusta sorunsuz çalışıyor fakat uygulamaya geçtiğimizde sorun oldu.
pic ve lcd pinlerini teker teker ölçüm yaptım fakat çıkış yok sebebini bulamadım.Devreyi 4 kere kurdum eminim bağlantılardan yardımcı olabilirseniz çok sevinirim:)

pwm.c

PIC16F877A entegresini 5v beslemeye bağladın mı?
eğer bunu doğru yaptıysan 2. ihtimal CONFIG ayarlarını yanlış uygulamış olabilirsin.
3. ihtimal ise MCLR bacağını boş bırakmış olabilirsin. burayı 10k direnç ile +5v a bağla.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

ete

#2
Şemada gördüğüm tek kusur SHT11 CLK bacağına da pullup direnci bağlamışsın. Bunu kaldır.
Değeride 2K2-4K7 arasında bir değer olmalıdır.
Onun dığında hatayı PCB üzerinde aramalısın. Programıda görmüyoruz tabiiki.
Tanımlamalar doğrumu bilemeyiz sen bileceksin.

Ete

ikbal

ben kod kısmını da gördereyim hocam yanıtlarınız için çok teşekkürler.Dediklerinizi uygulayacağım.

ikbal

bu arada 5v beslemeye bağladım fakat mclr ucuna reset devresi yapmadım birde öyle deneyim.

ete

Programa bakılırsa işlemci 4 Mhz lik kristal yada rezonatör ile çalıştırılıyor.
Bu devrenin Kristal bağlantısını nasıl yaptın acaba?

Diğer bir konuda MCLR bacağını boş bırakmışsınız. Bu işlemcide MCLR bacağına 4K7 pullup direnci bağlanması gerekiyor. İsis bunları var sayar.

İsis devresine bakılırsa işlemci olarak 18F877A seçilmiş. A serisinde Komparatör vardır ve her ne kadar A portunu kullanmasanızda komparatörleri iptal eden komutu kullanmayı alışkanlık edinmeniz gerekir. CMCON=7 şeklindeki komutu programın baş taraflarına ekleyin.

Sigorta ayarlarını aşağıdaki şekilde yine programınbaşına ekleyin.

@ DEVICE PIC16F877A                                               
@ DEVICE PIC16F877A, WDT_OFF       
@ DEVICE PIC16F877A, PWRT_ON
@ DEVICE PIC16F877A, PROTECT_OFF   
@ DEVICE PIC16F877A, XT_OSC

Ete


ikbal

benim derleyicim bu kodları algılayamıyor illegal opcode hatası veriyor ne yapmam lazım

ete

MPASM ilemi derliyorsun?
YAda makinan 64 bitlik makinamıdır?

Ete

ikbal

mpasm ile derliyorum 32 bitlik makine

ete

Madem 32 bitlik makine neden MPASM ile derliyorsun. MCS de View menüsünde Compile & Program Option seçeneğinde Assembler butonuna tıklarsan sağda MPASM kutusu işaretlinmiş gelecektir. Üzerine tıklarsan seçilme işareti kalkacak ve derleme PBP tarafından yapılacaktır. O zaman verdiğim kodlar çalışır.
Yok illaki bu şekilde yapayım diyorsan eski sigorta ayarlarını sil yerine aşağıdaki satırı ilave et.

@ __config _XT_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF & _CP_OFF & _PWRTE_ON

Ete

ikbal

çok teşekkür ederim bunun çalışmasıda çok mutlu etti beni :)bunları uygulayıp pic e yüklemesini yapayım hocam birde osilatör seçimim doğrumu bir yerde 16f877a için en az 8mhz osilatör kullanılmalı diyor.Ne yapmalıyım

ete

Bu devre 4 Mhz ilede çalışır sorun olmaz.
Ete

ikbal

çok teşekkür ederim:)

ikbal

hocam iki gündür uğraştım dediklerinizi yaptım fakat ekranda hala bir şey göremiyorum.Bağlantılar doğru hocamıza sorduk.Oda lcd enable bacağının lojik 1 sonra 0 a ve tekrar okuma yapma için 1 olması gerekliliğini söyledi.Ama ben assembly yazmıyorum ki pic basic arka planda gerçekleştirmez mi bu durumu ?jhd162a lcd kullanıyorum sorun bundan kaynaklanabilir mi?Kodu tekrar ekliyorum

ete

Tabiiki Basic Enable işini halleder. Kodlara baktım en ufak bir kusur yok. Her şey tamam.
Bu durumda ya devrenizde hata var yada kullandığınız LCD diğerleri ile bacak uyumlu değil.
Birde PCB nizi görebilsem iyi olurdu. Ancak tavsiye olarak söylüyorum, mutlaka bir başka kaynaktan LCD alıp onunla deneyin.
LCD nin üzerinde pinlerde numara var ise onlara gaöre bağlantı yapmak gerek. Numara yok ise birde tam tersini yaparak bağlayın isterseniz. Şu andaki bağlantının tam tersini verin. Genelde yapılan hata budur.
LCD bacakları şöyle olmalıdır.
1. Nolu pin GND
2. Nolu pin +5V
3 Nolu pin Kontrast pinidir. 10K lık trimpotun bir ucu +5V ta bir ucu GND ye ve orta ucu bu 3 nolu pine verilecek ve ayar yapılarak ekranda bir şeyler görmeye çalışacaksınız.
4. nolu pin RS bacağıdır
5.nolu pin GND ye bağlanacaktır.
6 nolu pin E pinidir.
7-8-9-10 nolu pinler data bacakları olup boş bırakılacaktır.
11 nolu pin PortB.4 pinine bağlanacaktır. Yani 877 nin 37 nolu pinine bağlanacak.
12 nolu LCD pini PortB.5 pinine yani 38 nolu pine
13 nolu pin ise PortB.6 ya yani 39 nolu pine
14 nolu pin ise PortB.7 ye yani 40 numaralı pine bağlanacaktır.

Bu dediklerimi iyice kontrol edin.
877 nin 1 nolu pini ile +5V arasında 4K7 pullup direnci olması gerekir. Bunuda unutmayın.
877 nin  13 ve 14 nolu bacaklarına 4 Mhz kristal yada rezonatör bağlı olması gerekir. Kristal bağlı ise her bir krital bacağı ayrıca 22pf kondansatör ile GND ye bağlanacaktır. Rezonatör 3 bacaklıdır. Dıştaki bacaklar 13 ve 14 nolu bacaklara bağlanacak orta bacak ise GND ye bağlanacaktır. Ayrıca kondansatör kullanılması gerekmiyor bu rezonatörde.

Besleme bacaklarınında doğru olduğuna ve oraya +5V yada +4,90 ile +5.2V arasından bir voltaj geliyor olmasına dikkat edin. Azı yada çoğu devre için zararlıdır.

Bütün bunlar doğru ve devre hala çalışmıyor ise bana yollayın çalıştırayım.
Bu arada hangi şehirdesiniz. Ankarada iseniz direk getirebilirsiniz.

Ete

Powered by EzPortal