Elektrotekno.com Ana Sayfa || Programlanabilir Cihaz ve Elemanlar || Microchip Pic Serisi


Açıklama:
Elektrik, Elektronik, Haberleşme ve Otomasyon konularının ağırlıklı olarak konuşulduğu, tartışıldığı ve bilgi paylaşımı yapıldığı forumumuza hoşgeldiniz.

Şu an Kod Paylaşım ve Soru Cevap Alanı kategorisi içerisindeki Microchip Pic Serisi forumunda bulunuyorsunuz.
Bu sayfada üyelerimizin "PIC ve 74LS247 ile 4 DIGIT 7 Segment (Ortak Anot) Sürülmesi" konusundaki problem, görüş ve önerileri okuyabilir ayrıca konu hakkındaki doküman, resim, proje, devre ve programlara ücretsiz olarak ulaşabilirsiniz. Üye olduktan sonra sizler de konu hakkında sorular sorabilir ya da yorum ve paylaşım yaparak birikimlerinizi aktarabilirsiniz.

Forumdan tam olarak yararlanabilmek için üye olmayı unutmayınız!

PIC ve 74LS247 ile 4 DIGIT 7 Segment (Ortak Anot) Sürülmesi

Kayıt: 13 Nis 2006
Mesajlar: 47

Offline
treeangle
Tarih: 11 03 2008 12:20

Merhaba,

Bir devre ve programını yapmak istiyorum. Yalnız 1 adet 74ls247 ve 4 digit
7 segment (Ortak Anot) ve 4 adet transistor kullanarak Counter yapmak istiyorum.

Picbasic konusunda,

Özellikle ETE abi, yardımlarını bekliyorum.


Çok Teşekkürler...

PIC ve 74LS247 ile 4 DIGIT 7 Segment (Ortak Anot) Sürülmesi

fikir vermesi açısından yukarıdaki resmi ekliyorum.
Kayıt: 13 Nis 2006
Mesajlar: 47

Offline
treeangle
Tarih: 01 04 2008 12:17

merhabalar,

arkadaşlar bu konuda yardımcı olabilecek kimse yok mu?
özellikle E.T.E. Abi sizin yardımlarınızı bekliyorum.

Çok Teşekkürler...
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 318

Offline
ete
Tarih: 01 04 2008 13:12

Yardım mı istiyorsun programmı istiyorsun anlamadım. Yardım isteyen kişi bir şeyler yapmaya başlar ve sıkıştığı yerde yardım ister. Sende ortada bir şey yok yapacağım diyorsun ama bir şey yapmamışsın. Biraz çalış ve ortaya bir şeyler koy yardım edeyim.
Bu durumda hazır program istiyorsun ve adınada yardım diyorsun hiç de hoş olmuyor lafların ardına sığınmak.
Yanlış anlamış isem şimdiden özür dilerim ve doğrusunu açıklamanı beklerim.

İstersen birazda fikir vereyim.

ANlaşılan sayıyı PortE.2 ye bağladığın buton artıracak. O halde bu butona her basışta sayı değerini bir artıracak birkaç satır yaz. Sonra Gosub Ekran de ve Ekran kısmında ise şunları yap;
Birler=Sayı Dig 0 bu komut sana birler hanesindeki sayıyı verecek.
Onlar=Sayı Dig 1 bu komut onlar hanesinde bulunan sayıyı verecek yok ise otomatikman sıfır olacak.
Yüzler=Sayı Dig 2 bu komut yüzler hanesini verecek
Binler=Sayı Dig 3 bu komut binler hanesini (4. digit) verecek.
Şimdi bunları teker teker ekrana verelim. Sayı girişlerin PortB den yapılacak.
PORTB=Birler
PORTD.0=1:PAUSE 1: PORTD=0 1 ms süre ile birler hanesinin ortak katodunu sürdük rakam displayde belirdi
PORTB=ONlar
PortD.1=1 : Pause 1: PortD.1=0
..
..AYnı şekilde ötekileride yaparsan 4 digit ekranda belirecektir.
Bu şekilde yaparsan olacak yap bakalım ne olacak?

Kolay Gelsin
Ete
Başa dön
Kayıt: 13 Nis 2006
Mesajlar: 47

Offline
treeangle
Tarih: 01 04 2008 15:47

haklısın e.t.e. abi, biraz uğraşmıştım. fakat işin içerisinden çıkamadım.
şekli biraz değiştirmiştim.
önemli olan , rd.0'dan (herhangi bir port) gelecek bilgileri sayacak. set edilen değerde çıkış verecek.
fakat benim için önemli olan tek 74ls247 ile 4 digit ortak anot bir display sürebilmek.
sizi kızdırdı isem özür dilerim.
yukarıda bahsettiğiniz şeyleri yapıp deneyeceğim.
teşekkürler...

PIC ve 74LS247 ile 4 DIGIT 7 Segment (Ortak Anot) Sürülmesi



defıne osc 4

'porta=0
'trisa=%00000111
'portb=0
trisb=%00000000

tusa var portd.0
tusb var portd.1
tusc var portd.2

sayı var word
sure var byte
bırler var byte
onlar var byte
yuzler var byte
bınler var byte
a var bıt
b var bıt
a=0
b=0
sayı=0

hıgh portc.1
hıgh portc.2
hıgh portc.3
hıgh portc.4

basla:

ıf tusc=0 then sayı=0

if tusa=0 and a=0 then
a =1
sure=0
while tusa=0 and sure <1
sure=sure+1
wend
ıf sure=1 then
sayı=sayı+1
ıf sayı=10000 then sayı=0
endıf
endıf
if tusa=1 and a=1 then a=0
'-------------------------------------------------------------------------------
if tusb=0 and b=0 then
b =1
sure=0
while tusb=0 and sure <1
sure=sure+1
wend
ıf sure=1 then
sayı=sayı-1
ıf sayı=65535 then sayı=9999
endıf
endıf
if tusb=1 and b=1 then b=0

bırler=sayı dıg 0
onlar= sayı dıg 1
yuzler= sayı dıg 2
bınler= sayı dıg 3

portb=240 | bırler
' low portc.2
low portc.3
low portc.4
portb=240 | onlar
' portb=240 | onlar
' portb=240 | yuzler
' portb=240 | bınler

goto basla

end
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 318

Offline
ete
Tarih: 01 04 2008 16:34

Şu mesajı önceden verseydin ya esas şimdi kızdım. Bir şema veriyorsun sonra alakasız başka bir şema veriyorsun. Ya ben yada başka birisi önceki şemaya göre program yazsa idi ne olacak idi.?. Neden böyle yaparsınız anlamam.

Her neyse. Önceki verdiğim kodda bir ufak hata avr. Display ortak anot olduğuna göre ortak anotları süren transistörler PNP olmalı ve bunlardan pic den LOW ile aktif edilmeli. Bu durumda kod aşağıdaki şekilde olacak. Son şemana göre veriyorum.
PORTB=Birler
PORTC.1=0:PAUSE 1: PORTC.1=1 1 ms süre ile birler hanesinin ortak katodunu sürdük rakam displayde belirdi
PORTB=ONlar
PortC.2=0 : Pause 1: PortC.2=1
diğer iki digit de buna uygun şekilde ayarlanacak.
Porta bilgi verirken PORTB=240 | Birler şeklinde bir ifade kullanmak gerekmez çünki portun diğer pinlerine başka bir şey bağlamamışsın. Şayet bağlanacak ise o azaman;
PORTB=(PORTB & 240) + Birler........ PORTB=(PORTB & 240) + Onlar şeklinde yazman gerek.

Bu arada yazdığın program (sen yazmış isen tabiiki) Fena değil. Ekran kısmı yanlış ama diğerleri fena değil. Biraz çabalasan olacak istediğin. Hadi bakalım.

Ete
Başa dön
Kayıt: 13 Nis 2006
Mesajlar: 47

Offline
treeangle
Tarih: 01 04 2008 16:53

transistorleri pnp yapıp, programı da dediğiniz gibi
yaptım. yalnız displaydeki rakamlar simulasyonda anormal görünüyor.
yani butona basınca görünüp hemen kayboluyor.
programın son hali aşağıda. anlatmak istediğiniz herhalde aşağıdaki şekilde.


defıne osc 4

'porta=0
'trisa=%00000111
'portb=0
trisb=%00000000
trisc=%00000000
trisd=%11111111

tusa var portd.0
tusb var portd.1
tusc var portd.2

sayı var word
sure var byte
bırler var word
onlar var word
yuzler var word
bınler var word
a var bıt
b var bıt

sayı = 0

bas :
ıf tusa=0 then
sayı=sayı+1
goto ekran
else
goto bas
endıf

ekran :
bırler=sayı dig 0
onlar=sayı dig 1
yuzler=sayı dig 2
bınler=sayı dig 3

portb=bırler
portc.1=0:pause 1: portc.1=1
portb=onlar
portc.2=0 : pause 1: portc.2=1
portb=yuzler
portc.3=0:pause 1: portc.3=1
portb=bınler
portc.4=0 : pause 1: portc.4=1

goto bas

end
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 318

Offline
ete
Tarih: 01 04 2008 17:07

16F877A kullanıyorsun. Bu durumda A portunu digital olarak kullanbilmek için;
ADCON1=7 komutunu kullanman gerek .
16F877A da ayrıca A portunda komparatörler vardır. Bunlarıda iptal etmek için
CMCON=7 komutunu kullanman gerek.
D portunu ce C portunuda kullanıyorsun ama programın başında TRISC ve TRISD diye bir şey göremiyorum. Onlarıda unutmuşsun.
BU eksiklikleri tamamla. Ayrıca Pause 1 leri 5 e kadar artır. Ama birer birer artırarak dene.

Birde tusa basmayınca program Ekran kısmına gitmiyor. Nedenmi?
bas :
if tusa=0 then
sayı=sayı+1
goto ekran
else --------- tuşa basılmamış ise!!!!!!!
goto bas ---------işte bu komut yüzünden başa gidiyor program. Hiç ekrana uğramadığı içinde bir şey gösteremiyor.
endıf

O halde bu komut satırlarını şöyle değiştir;

bas :
if tusa=0 then sayı=sayı+1
burada ekran satırları başlayacak. Başka bir şey yazmaya gerek yok. Sonuç olarak tuşa basmış olsanda program ekrana gitmeli basmasanda gitmeli.

Ete
Başa dön
Kayıt: 13 Nis 2006
Mesajlar: 47

Offline
treeangle
Tarih: 01 04 2008 17:53

PIC ve 74LS247 ile 4 DIGIT 7 Segment (Ortak Anot) Sürülmesi

programın son hali boyle. proteus dosyasını istekler kısmına ekleyemiyorum.
deneme şansınız var mı? simule ederken duzgun çalışmıyor.
pause'ları da sırasıyla 1 den 5'e kadar denedim. sonuç değişmedi.
çok teşekkür ederim.

acaba 74ls247'nin bacakları mı yanlış. bana göre doğru ama.


defıne osc 4

trisb=%00000000
trisc=%00000000
trisd=%11111111
adcon1=7
cmcon=7


tusa var portd.0
tusb var portd.1
tusc var portd.2

sayı var word
sure var byte
bırler var word
onlar var word
yuzler var word
bınler var word

sayı = 0

bas :
ıf tusa=0 then sayı=sayı+1
bırler=sayı dig 0
onlar=sayı dig 1
yuzler=sayı dig 2
bınler=sayı dig 3

portb=bırler
portc.1=0:pause 1: portc.1=1
portb=onlar
portc.2=0 : pause 1: portc.2=1
portb=yuzler
portc.3=0:pause 1: portc.3=1
portb=bınler
portc.4=0 : pause 1: portc.4=1

goto bas

end
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 318

Offline
ete
Tarih: 01 04 2008 18:04

Birde şu değişikliği uygula bakalım,

portc.1=0:portb=bırler:pause 1: portc.1=1
portc.2=0 :portb=onlar:pause 1: portc.2=1
portc.3=0:portb=yuzler:pause 1: portc.3=1
portc.4=0 :portb=bınler:pause 1: portc.4=1
goto bas


Bu değişikliğide kapsayan isis dosyası ve programı aşağıdakie yükledim.
İsis de programın düzgün çalışmaması simulasyon sorunudur. Displayleri bitişik displayler ile değiştirirsen daha iyi netice alırsın. Ben öyle yaptım sorunsuz çalışıyor.

http://www.4shared.com/file/42691492/191f0916/sil.html

Ete
Başa dön
Kayıt: 13 Nis 2006
Mesajlar: 47

Offline
treeangle
Tarih: 02 04 2008 12:35

http://www.4shared.com/account/file/427...ls247.html

yukarıdaki en son hali. proteus'da normal çalışmıyor. gerçekten yapıp deneyeceğim.
yardımlarınız için çok teşekkür ederim.[/url]
Başa dön


Sayfaya git 1, 2  Sonraki

PIC ve 74LS247 ile 4 DIGIT 7 Segment (Ortak Anot) Sürülmesi


Benzer Konular

- ADSL yi ortak kullananlara kötü haber

- PIC ile 7 Segment Display kullanımı (ASM)
- KGK/Jeneratör Ortak Çalışma Problemlerinin üstesinden gelmek
- 7 segment display de pic ile jeneratör gücünü göstertmek nasıl yapılır?
- 7 segment VHDL kodları - yardım
- 2 Digit 7 Segment Decoder
- Otomobil için Ledli Analog Kadranlı ve 4 digit 7 parça göstergeli Devir Ölçer
- PIC16F628A ile Seven Segment Termometre, Saat, Tarih (Denendi-Süper Çalışıyor)
- Sayı Bulma PIC 16F877 7 segment display

- Açık Kodlu Delphi Komponenti: Seven Segment olarak EditBox




Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar için iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Türkiye | Ads by Google Adsense | Design by Crazy Bat based
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71