avatar_ete

7 Haneli LCD sayıcı

Başlatan ete, 04 Eylül 2011, 19:33:16

gsmshow

#15
Ben de pic nasıl anlayıp kayıt edeceğini hayal edemediğimden ve bilmediğimden bir şey çıkartamadım ortaya, yanlız pic içinde timer veya başka şekilde palsleri saymaya başladıgında ekranla bir gidecektir palslerin düzenli olması açısından pic kullanmak geldi aklıma sölediğiniz risk  her halükarda programlı enteğrelerde var zaten dışardan gelebilecek her hangi bir parazite veya programda olabilegecek bir bug da tıkanma veya kilitlenme riski oluşabilir deneyip takip edip gözlemlemek lazım.
Çok fazla programlama konusuna hakim olmadıgım için yapabileceklerim sınırlı kalıyor burda siz nasıl  bir şey önerirsiniz nasıl bir düzen içinde yapalım daha basit olarak? 4511 entegresi ilemi veya nasıl.?

Yinede bu şekilde bir çalışma yapıp denemek istiyorum, bunu herhalde timer ekleyerek yapacagız ve pic te biz timeri 50 ms ile saydıracagız ve bunu eproma kayıt edecegiz kapayıp açtığınızda ilk epromdan okuyup ekrana yazacagız ve bundan sonra butonlardan gelecek palsler ile sayma  devam edecek bu şekilde en son sayı nerde kaldıysa ekranda o gözükecegi için saymada herhangi bir hata olacagını ben düşünmüyorum pic te sayma nerde kalırsa ordan devam eder 4011 ler palsleri bekleyecekler çünki. Pals gelmedikce sayma yapmazlar.

ete

Timer falan gerekemez. CLK girişlerinden birisine PULSOUT komutu ile 10us lik bir puls verdiğin zaman bu sistem sayar.
İster yukarı ister aşağı saydırabilirsin. Hatta bana kalırsa pic e bile gerek yok ama sen ne amaçla kullanacaksın bilemeiğimden net bir şey söyleyemiyorum.

Ete

gsmshow

Hocam bu genel amaçlı bir sayıcı , hafızaya almayı eklersek devreyi tam oluşturmaya çalışayım. Ben pic le olmasını istiyorum çünki yazılımda öğrenmek istediğimden kendi çapımda sizlerin dersleriyle denemeler yapıp anlamaya çalışıyorum elleriniz dert görmesin. Yoksa analog 555  entegre ilede çok kolay yapabilirim, önemli olan pic ile olması benim açımdan.

gsmshow

Cevap yazmamışınız hocam.!!

ete

Cevap gerektiren bir şey görmedim. Artık senin çalışmamı bekleyeceğiz.
Ete

gsmshow

#20
Hayırlı pazarlar hocam, ortada sanırım bir anlaşılmayan durum oluştu, siz hafızaya alma işini yaparım demiştiriniz ben bunun için yazmıştım. Yazdığım programa eklemeniz için.

ete

Daha öncede söylemiştim bu devrenin sayması için clk girişine puls verilmesi gerekiyor. Program verilen pulsları sayıp rakam olarak kayıt etmesi gerekir. Lcd sisteminde olduğu gibi yine sayı sistemi birler , onlar , yüzler, binler, onbinler , yüzbinler .. Diye gitmelidir .
Bu durumda kayıt işlemi
Write 1, birler
Write 2, onlar
Write 3, yuzler
Write 4, binler
Write 5,onbinler
Write 6,yuzbinler
...
Şeklinde yapılır
En sona bir pause 10 yerleştirilmelidir.
Okuma yapmak için read 1,birler
Şeklinde pkuyabilirsin.
Program mantığında ,
Pulsout clk,1
Birler=birler+1
İf birler=10 then
Birler=0:onlar=onlar+1
Şeklinde mantık yürütmek gerekiyor.
Ete

gsmshow

Merhaba, araştırmalarım sonucu çoklu display yapmak istedigimde bazı sınırlamalar ile karşı karşıya kalıyoruz, 40101 ile puls vererek zaten saydırıyoruz fakat kontrol bizde olmadıgından ekran görüntüsü yani hafızaya bir şekilde alsak bile bunu ekrana basamayacagız istedigimz sayıya  kadar sayıcıyı saydırmayı bekleyecegiz sayı uzadıkca da zaman uzayacaktır vs..
O zaman pic portlarınıda fazla harcamadan ama  istediğimiz kadar hane ekleyebileceğimiz 74hc595 ile yapmak ve kontrolün bizde olması da  açısından en mantıklı yok gözüküyor.önce bir şema çizimi ile  başlıyayım herhalde inşallah yardım eder veya edersiniz  diyorum.
Teşekkürler.

ete


Ekrana basmak zor değil sayıları. Bir döngü kurup hızlı bir şekilde sayac değerine kadar bir anda saydırmak mümkündür.
Sen bana kalırsa bu sisteme devam et.

Ete

gsmshow

 :) Kafam karıştı benim hocam;D yazılar bana ben yazılara bakıyorum. Program şu anda yazdığım çalışır şekli ile mi olmuyor.! demek istiyorsunuz.

ete

Hafızaya aldığın şeyi ekrana basmak zaman alır demişsin. Onun zaman almayacağını belirterek eski sistemine devam et demek istedim.

Ete

gsmshow

Bu şekilde puls gönderiyor saydırıyoruz ama hafızaya etiketlendirmediğimiz için olmuyor!

@ DEVICE pic16F628A              'islemci 16F628
@ DEVICE pic16F628A, WDT_ON      'Watch Dog timer kapalı
@ DEVICE pic16F628A, MCLR_ON     'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, PWRT_ON     'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF 'Kod Protek kapalı
@ DEVICE pic16F628A, XT_OSC      '4 MHz Kristal osilatör kullandık

PortA=0
TrisA=%00000011
PortB=0
TrisB=%00000000

Symbol TUSA=PORTA.0
SYMBOL TUSB=PORTA.1

SAYI   var BYTE

PORTB=0
SAYI=0


PAUSE 100

BASLA:
IF TUSA=0 THEN
SAYI=SAYI+1
LOW PORTB.0
PAUSE 50
HIGH PORTB.0
PAUSE 50
ENDIF

IF TUSB=0 THEN
SAYI=SAYI-1
LOW PORTB.1
PAUSE 50
HIGH PORTB.1
PAUSE 50
ENDIF


GOTO BASLA
END

------------------

Bu şekilde mi devam etmeliyim!

TRISA=0                 
TRISB=0                 

SAYI VAR WORD
BIRLER VAR  WORD         
ONLAR  VAR  WORD         
YUZLER VAR  WORD         
BINLER VAR  WORD         
ONBINLER VAR WORD         
YUZBINLER VAR WORD       
BIRMILYONLAR VAR WORD     

PORTA=0                 
PORTB=0                 
SAYI=0                 

ILERISAY
SAYI=SAYI+1
PAUSE 10
IF SAYI=1000000 THEN SAYI=0

BIRLER=SAYI       DIG 0
ONLAR=SAYI        DIG 1
YUZLER=SAYI       DIG 2
BINLER=SAYI       DIG 3
ONBINLER=SAYI     DIG 4
YUZBINLER=SAYI    DIG 5
BIRMILYONLAR=SAYI DIG 6

PORTB=0
PORTA=1 
LOW PORTB.7                 
PAUSE 1
HIGH PORTB.7
PAUSE 1
--

--

--

ete

10 tabanına göre sayı sisteminin mantığını kullanacaksın.
Sürekli artırıp azalttığın sayı BIRLER olacak.
BASLA:
IF TUSA=0 THEN
PULSOUT CLK_UP,1
GOSUB ARTIRMA
WHILE TUSA=0:WEND
PAUSE 50
ENDIF

IF TUSB=0 THEN
PULSOUT CLK_DOWN,1
GOSUB EKSILTME
WHILE TUSB=0:WEND
PAUSE 50
ENDIF

ARTIRMA VE EKSİLTME alt programlarında ne yapılması gerektiğinide sen bul.
İp ucu vereyim. BIRLER hanesi artırılacak. Birler=10 olmuş ise Onlar bir artırılacak ve birler=0 yapılacak.
Bu şekilde devamla kaç hane var ise hepsini orada kontrol etmelisin.

Eksiltme kısmında ise Birlerden bir çıkaracaksın birler=255 olmuş ise birler=0 olacak Onlardan bir çıkaracaksın.
Benzer şekilde son haneye kadar aynı işlemi uygulaman gerekiyor.
Sonunda sayıları bir yerlere kayıt edeceksin.

Ete

gsmshow

Hocam henüz yapabilmiş değilim bilginize.

ete

#29
Nerede takıldında yapamadın belirtmemişsin.
Üstelik bir başka devrede önerilmişti sana oda mı olmadı?

Ete

Powered by EzPortal