Bit Tersleme

Başlatan fahrettink, 24 Mart 2014, 13:07:11

fahrettink

Herkese merhaba,

Aşağıdaki termometre projesini ETE hocanın lcd termometre projesinden yola çıkarak yine ETE hocanın yardı larıyla ortak katodlu 7 segment displayleri 74HC595  ile sürerek yaptım.
Kafama takılan bir soru var. Ortak Katod yerine ortak anotlu display kullansaydım, yazılımda nasıl bir değişiklik gerekecekti? Çünkü şu an 74HC595 lerin çıkışından high alıyoruz. Ortak anot display içinse LOW çıkışa ihtiyacım var.
Bunu mantık olarak şöyle çözebilir miyiz?
3 displaye yazdırılacak olan rakamları tutan değişkenleri "~" işareti ile tersleme yapmak işi çözer mi? Ya da başka bir yolu var mıdır?

Devre şeması ekte ve kullandığım kodlar aşağıdaki gibidir. Cevaplarınız için şimdiden teşekkür ederim.

@ DEVICE pic16F628A                      'işlemci 16F628                                
@ DEVICE pic16F628A, WDT_OFF              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_OFF            'MCLR pini kullanılMIYOR.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
DEFINE OSC 4
TRISA=%11111 'A portu Çıkış olarak ayarlandı
TRISB=%00000000
PORTA=0
PORTB=0
CMCON=7
'-----------------------------------------------------------------
SENSOR VAR PORTA.0 'Sensör PORTA.0 da bağlı

BILGI  VAR WORD
ONDA   VAR byte 56
BIRLER VAR BYTE 57
ONLAR  VAR BYTE 58
ARA    VAR WORD 59
TAM    VAR BYTE 61
BIR    VAR BYTE 62
IKI    VAR BYTE 63
UC     VAR BYTE 64
ISARET VAR WORD
SAYI   VAR BYTE
MESGUL VAR BYTE 'Çeşitli değişken tanımlamaları

X VAR  BYTE

pause 200
OWOUT SENSOR,1,[$CC,$44]
pause 200
'-----------------------------------------------------------------
BASLA: 'Dongüye gir.

pause 600
DEVAM:
OWOUT SENSOR,1,[$CC,$BE] 'Sensöre okuduğu değeri göndermesini söyle.
OWIN SENSOR,2,[BILGI.LOWBYTE,BILGI.HIGHBYTE] 'Gelen 16 bitlik bilgiyi al.
ARA=BILGI*10/16 '12 bit hassasiyet kullandığımız için her değer 0.0625 santigrat dereceye denk geliyor.
BIR= ARA//10
TAM=ARA/10
IKI=TAM DIG 0
UC=TAM DIG 1
GOSUB YAZ
OWOUT SENSOR,1,[$CC,$44] 'Sensöre sıcaklığı okumasını söyle.
GOTO BASLA 'BASLA etiketine dön
YAZ:
X=BIR:GOSUB TABLO:ONDA=SAYI
X=IKI:GOSUB TABLO:BIRLER=SAYI
X=UC:GOSUB TABLO:ONLAR=SAYI
SHIFTOUT PORTB.0,PORTB.1,1,[ONDA,BIRLER,ONLAR]
PORTB.2=1
PAUSEUS 2
PORTB.2=0
RETURN

TABLO: LOOKUP x,[63,6,91,79,102,109,125,7,127,111],SAYI
                   
RETURN

END



"Dahilik %1 ilham, %99 çalışmanın eseridir." Thomas Alva EDISON

MS_59

#1
lookup tablosundaki dataları değiştirmen gerekiyor yada değilleme ile denemek lazım
mehmet

ete

TABLO: LOOKUP x,[63,6,91,79,102,109,125,7,127,111],SAYI
satırını
TABLO: LOOKUP x,[63,6,91,79,102,109,125,7,127,111],SAYI :SAYI=~SAYI
şeklinde değiştir olur.

Ete

fahrettink

Teşekkür ederim...
"Dahilik %1 ilham, %99 çalışmanın eseridir." Thomas Alva EDISON

Powered by EzPortal