Son İletiler

#41
avatar_ete
Basic Programlama Komut Kullanımı / Ynt: 7 Segment Display Kullanı...
Son İleti Gönderen ete - 04 Mart 2025, 12:10:35
Programda bir kusur aramak gerekirse bu yazdıklarının dışında olması gerekenler eksik gözüküyor.
Mesela;
#CONFIG
  __config _BODEN_OFF  & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _XT_OSC
#ENDCONFIG
DEFINE OSC 4
CMCON=7
ADCON1 = 7
ayrıca basla satırından evvel de 200 ms lik bir gecikme eklenmesi gerekir. Bu gecikme olmadan da çalışır ancak gerçek devrede bazı segmentler yanlış değer alabilir. Gecikme işlemci içindeki registerlerin ayarlanması için gereklidir. Yoksa açılışta rastgele değer alırlar.

Bunların dışında belkide şemayada bir göz atmakta yarar olabilir. Mesela, MCLR ucuna bir pullup bağlanması gerekir. Segment beslemeleri 180-220 ohm direnç üzerinden yapılmalıdır.
Ortak anot ucu direk 5V ta bağlanmalıdır.
Anlayacağın program doğru ve bu program segmentlere sayıları yazdırır.

Ete
#42
7 segment displayler çok kullandığım bir şey değil ama bir yazılımda ortak anot 7 segment display kullanıyorum. Duruma göre 0 dan 9 a rakam yazdırmak istiyorum.
Fakat displayde doğru şeklilleri oluşturamıyorum. Yardımcı olur musunuz?

Port tanımlarını aşağıdaki şekilde yaptım;
'Pic16f877A
TRISA=%00101111
TRISB=%00011111
TRISC=%10000001
TRISD=%11100000
TRISE=%00000111
PORTA=0
PORTB=0
PORTC=%00110000
PORTD=%00011111
PORTE=0
INDEX     VAR BYTE
SAYI      VAR BYTE
SYMBOL DIGITA    =PORTD.0
SYMBOL DIGITB    =PORTD.1
symbol DIGITC    =PORTD.2
SYMBOL DIGITD    =PORTD.3
SYMBOL DIGITE    =PORTC.4
SYMBOL DIGITF    =PORTC.5
SYMBOL DIGITG    =PORTD.4

Deneme aşamasında ekran yazdırma komutlarını ise aşağıdaki şekilde yaptım;
BASLA:
INDEX=0:GOSUB AL:GOSUB EKRAN
pause 1000
INDEX=1:GOSUB AL:GOSUB EKRAN
pause 1000
INDEX=2:GOSUB AL:GOSUB EKRAN
pause 1000
INDEX=3:GOSUB AL:GOSUB EKRAN
pause 1000
INDEX=4:GOSUB AL:GOSUB EKRAN
pause 1000
INDEX=5:GOSUB AL:GOSUB EKRAN
pause 1000
INDEX=6:GOSUB AL:GOSUB EKRAN
pause 1000
INDEX=7:GOSUB AL:GOSUB EKRAN
pause 1000
INDEX=8:GOSUB AL:GOSUB EKRAN
pause 1000
INDEX=9:GOSUB AL:GOSUB EKRAN
pause 1000
goto basla
AL:    LOOKUP INDEX,[64,121,36,48,25,18,2,120,0,16,127],SAYI :RETURN
       
EKRAN:
      DIGITA=SAYI.0:DIGITB=SAYI.1
      DIGITC=SAYI.2:DIGITD=SAYI.3
      DIGITE=SAYI.4:DIGITF=SAYI.5
      DIGITG=SAYI.6
      RETURN
#43
O
Üye Projeleri / Ynt: Tuş'a basma aparatı sorun...
Son İleti Gönderen onurinci - 03 Mart 2025, 21:51:18
hocam çok teşekkür ederim oldu .....
#44
avatar_ete
Üye Projeleri / Ynt: Tuş'a basma aparatı sorun...
Son İleti Gönderen ete - 03 Mart 2025, 21:30:03
While - wend döngüsünün içini boşaltman yeterli.
Mantıklı düşünürsen GPIO.2 deki tuşa basmasan sistem çalışıp süre sonunda iş bitiyor.
Oradaki while- wend döngüsü tamamen 500ms lik süre dilimlerini saydırmak için koyulmuş.
İçinde de birde buton kontrolü koyulmuşki butona basınca iş süresinden önce bitirilsin diye.
Sen buton kontrolünü istemiyorsun o halde while'den wend'e kadar olan her şeyi sileceksin. Böylece program yine süre saymaya devam eder ama buton kontrolü yapmaz.

Ete
#45
O
Üye Projeleri / Ynt: Tuş'a basma aparatı sorun...
Son İleti Gönderen onurinci - 03 Mart 2025, 17:02:25
hocam sanıyorum izah edemedim, program görevini yerine getiriyor.eskiden timer başlasın diye basmalı buton vardı , onu iptal ettim. MCU'ya enerji verdiğimde timer başlıyor ve görevi bittiğinde duruyor, ta ki tekrar enerji verilene kadar GPIO.2 portuna eklentiler yapacağım. niye orada dursunki? ,yani kısaca GPIO.2'ye ihtiyaç olmadan program koşsun yapması gerekeni yapsın. galiba bu sefer daha net izah ettim.
#46
avatar_ete
Üye Projeleri / Ynt: Tuş'a basma aparatı sorun...
Son İleti Gönderen ete - 03 Mart 2025, 12:19:58
Sorunu tam olarak anlamadım ama şunu biliyorum.
 IF GPIO.2= 0 THEN komut satırını bu şekilde kullanabilmen için GPIO.2 pinin giriş olarak atanmış olması gerekir. Sende bu pin çıkış olarak gözüküyor. Dolayısıyla o pini kullanamamış oluyorsun bir yerde. Bu nedenle Ilyas'ın önerisi doğru ve programınbaşındaki TRISIO komutunu düzeltmen gerekir.

GPIO.2 pini heba olmuş ne anlama geliyor pek bilemedim. Bana çağrıştırdığı şey o pinin fiziksel olarak bozulmuş olması. Genelde giriş pinlerine yüksek voltaj gelirse giriş özelliği bozuluyor ama çoğu zaman aynı pini çıkış yapınca çıkış olarak çalışıyor.
Bu durumda GPIO.2 pini bozuk ise ne yapmayı düşünürsün?. Bence o pin çıkış olarak çalışıyor ise Led pinlerinden birini giriş yapıp GPIO.2 nin fonksiyonunu ona aktarıp GPIO.2 yi led pini olarak kullanman.

Ete
#47
O
Üye Projeleri / Ynt: Tuş'a basma aparatı sorun...
Son İleti Gönderen onurinci - 03 Mart 2025, 11:45:45
@İlyas hocam o portu kullanabilmem için aşağıdaki
           IF GPIO.2= 0 THEN
           ATT= 1 : LED= 0 : T1CON= 0
 
     ENDIF
IF ENDIF şartlarından kurtulmam lazım , onları ellediğim zaman program görevini yerine getirmiyor sıkıntı orada..
#48
İ
Üye Projeleri / Ynt: Tuş'a basma aparatı sorun...
Son İleti Gönderen İlyas KAYA - 03 Mart 2025, 04:28:01
TRISIO= %00000101


Deneyin
#49
O
Üye Projeleri / Tuş'a basma aparatı sorunu
Son İleti Gönderen onurinci - 03 Mart 2025, 00:34:25
Hocam selam

bir müzik player cihazının tuş takımına iki adet Optokuplör ile komut veriyorum , program tamda istediğim gibi çalışıyor sorun yok, Pot'tan ayarladığım süre kadar bir tuşa basıyor arkasından o tuşu bırakıp , diğer bir tuşa kısacık basıyor. gayet güzel çalışıyor. fakat Programda GPIO.2 heba olmuş , bana lazım o port , orada tuş vardı tuş'u kaldırdım , bir türlü GPIO.2 yi geri kazanamadım o satırlara dokunursam program çalışmıyor.bir yardım.......

DEFINE OSC 4
DEFINE OSCCAL_1K 1
#CONFIG
#LIST_12F675
 __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BODEN_OFF
#ENDCONFIG
 
TRISIO= %00000001 : GPIO= 0 : CMCON= 7 : VRCON.7= 0 : ANSEL= %00110011 : ADCON0= %10000011
OPTION_REG.7= 0 :  WPU= %00000000     
 
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
 
RAW  VAR WORD
LAP  VAR WORD
Time VAR WORD 70
SN   VAR BYTE
 
GPIO.2= 1
SYMBOL   LED= GPIO.1
SYMBOL ATT= GPIO.5 : ATT= 0
      PAUSE 300
 
Start: ; *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*
     
      ADCIN 0,RAW
      LAP =((RAW)*/50)/5 + 5 ; Calcul
           
CNT: ;--------------------------------------------------------------------------
       pause 100
        Time= LAP
       T1CON= %00000001      'Timer Divide by  1/1 active         
          SN= 0             
         ATT= 0 ;--------
         LED= 1
CNT1: ;-------------------------------------------------------------------------       
        TMR1H= $0B : TMR1L= $DC  ' Timer Preset Value
                                 ' Interrupt 500mS Time       
          PIR1.0= 0              ' Flag Zeroing
    WHILE PIR1.0= 0
           IF GPIO.2= 0 THEN
           ATT= 1 : LED= 0 : T1CON= 0
 
     ENDIF
    WEND
          SN= 1-SN : IF SN= 1 THEN CNT1   
        Time= Time -1
        IF Time >0 THEN CNT1
        ATT= 1 : LED= 0 : Pause 300
        ATT= 0
   
        end
#50
A
Genel Devre Tasarımı / Ynt: py2262-pt2272 ile rf alcı...
Son İleti Gönderen ahmet_zxc - 02 Mart 2025, 14:12:24
bu entegreleri kullanarak bir güvenlik sisteminde bir iddia üzerine ben yaparsam devreyi, şifreyi kıramazsınız demiştim ve kıramamışlardı.
2 kanalın çıkışına transistör bağladım, transistörleri birbirine bağladım, iki kanalı aynı anda aktif etmeden frekansı ve şifreyi tuttursan bile sistem aktif olmuyordu.
sistem çalışması için: frekans tutacak, şifre tutacak ve aynı anda doğru 2 butona birden basılacak...
 o zaman sistem çalışıyordu..
Powered by EzPortal