en büyük değer seçimi

Başlatan sinasos, 03 Nisan 2016, 19:01:39

sinasos

Arkadaşlar merhaba,
aşağıda kodunu eklediğim sistem 2 adet voltmetre olarak çalışacak ancak bir tanesi anlık voltajı gösterirken diğeri o an'a kadar ölçülmüş en yüksek değeri gösterecek ve reset butonuna basana kadar yüksek değer ekranda kalacak. bu devreyi internet'te buldum ve revize etmek istiyorum. ancak nasıl bir yol izlemem gerektiğini, hangi komutu kullanacağımı bilemedim. bu konuda yardımlarınızı rica ediyorum.
@ DEVICE pic12F675                                                     
@ DEVICE pic12F675, WDT_OFF             
@ DEVICE pic12F675, PWRT_ON             
@ DEVICE pic12F675, PROTECT_OFF         
@ DEVICE pic12F675, MCLR_OFF           
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT 

DEFINE OSCCAL_1K 1 
DEFINE OSC 4

DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 2
DEFINE ADC_SAMPLEUS 50

symbol DTA=GPIO.4
SYMBOL CLK=GPIO.5
SYMBOL ENB=GPIO.2
SYMBOL RST=GPIO.2

ADC VAR WORD
D0  VAR BYTE
D1  VAR BYTE
D2  VAR BYTE
D3  VAR BYTE
AL  VAR BYTE
VER VAR BYTE

GPIO=0
TRISIO=1
CMCON = 7
ADCON0=128
ANSEL=1
PAUSE 250

BASLA:
     ADCIN 0,ADC
     ADC=ADC*3
         IF ADC<3010 THEN
             D0=ADC DIG 0
             D1=ADC DIG 1
             d0=ADC DIG 2 'd2
             d1=ADC DIG 3 'd3
          ELSE
            D0=12
            D1=12
            d0=12 'd2
            d1=12 'd3
          ENDIF     
    VER=D0
    GoSub YAZ
    VER=D1
    GoSub YAZ   
    VER=D0 'd2
    GoSub YAZ
    VER=D1 'd3
    GoSub YAZ
    ENB=1:PAUSEUS 10:ENB=0
    PAUSE 100
    GOTO BASLA
YAZ:
LookUp VER,[63,6,91,79,102,109,125,7,127,111,99,88,64],AL
'          [0 ,1,2 ,3 , 4 , 5 , 6 ,7, 8 , 9 ,o ,c ,- ]
SHIFTOUT DTA,CLK,1,[AL]
Return                                                   

    END

ete

BUYUK isimli bir WORD değişkeni tanımla. Programın başında bunu sıfıra eşitle.
ADC değerini hesapladıktan sonra BUYUK=BUYUK MAX ADC  şeklinde bir komut satırı kullan.
BUYUK isimli değişken bütün hesaplanan ADC le riçinde daima en büyük ADC değerini gösterecektir.

Programda aten gösterme ve ADC okuma kısımları mevcut. Gerisini halledersin her halde.

Ete

sinasos

#2
Hocam merhaba,
ilginize çok teşekkür ederim. söylediklerinizi yaptım en yukarı çıkarken sorun yok display'ler beraber hareket ediyor ancak aşağı düşmüyor sürekli en yukarıda kalıyor. zaten 7 segmentte bir türlü başarılı olamadım yine aynı !
sizce bu devrede çalışır mı ?

ete

Tam olarak ne istediğini anlamadım doğrusu. En yüsek arıyorsan basitçe ve iyi çalışan yolu o ama hep yukarıda kalıyor kelimesine bir anlam veremedim doğrusu.

Program tek display olarak çalışır. Orada da bana ters gelen yer var neden adc değeri 3 ile çarpılıyor buda garip.
Programın ana mantığını bilmeyince garip geliyor insana.

Reset butonuna basılınca BUYUK=0 şeklinde değeri sıfırlaman gerekiyor. Bunu unutmadın değilmi. Acaba sebebi bumudur hep yukarıda kalmasının. Detay olmayınca yorumda kısıtlı oluyor maalesef.

Ete


sinasos

#4
haklısınız sanırım !
sistem şu şekilde çalışması gerekiyor. iki adet voltmetre bir tanesi anlık voltajı ölçecek diğeri ise o voltmetrenin ölçtüğü en yüksek değeri gösterecek.
yaptığım proje şu:
piezo ile enerji üretiyoruz, yaptığımız voltmetrenin birisi ile onun voltajını ölçeceğiz, diğeri ile o an'a kadar ölçülmüş en yüksek voltajı göstereceğiz.
selam ve saygılarımla.
adc değeri de 30 ile çarpılmasının değeri sanırım 30 voltu göstermesi.

sinasos

seven segment konusunda bilgisi olan arkadaşlar yardımcı olabilirmi ?

Powered by EzPortal