V

Tek tuş+16f628a+LCD ile yıldız üçgen çalıştırma.

Başlatan vardar07, 26 Mayıs 2012, 12:54:58

vardar07

hocam bundada yıldızda iken ani durdurulursa yıdız işareti normal çalışma beklenip üçgene geçince stop veya ani durdurmada üçgen işareti kalıyor. aslında aşağıdaki diyagramda göstermedim ama acil durdurma olursa arzıa yazmak istiyorum. diyagramı çalıştırabilirsek sizce basit bence diğer arkadaşlara güzel bir örnek olabilir.Saygılar.

ete

Birde buna bak istersen,
Ete
@ DEVICE pic16F88             'işlemci 16F88 
@ DEVICE pic16f88,INTRC_OSC_NOCLKOUT
@ DEVICE pic16f88,WDT_ON     'Watch Dog timer
@ DEVICE pic16f88,PWRT_ON    'Power on timer açık
@ DEVICE pic16f88,MCLR_OFF   'mclr off
@ DEVICE pic16f88,BOD_OFF
@ DEVICE pic16f88,LVP_OFF
@ DEVICE pic16f88,CPD_OFF
@ DEVICE pic16f88,WRT_OFF
@ DEVICE pic16f88,DEBUG_OFF
@ DEVICE pic16f88,CCPMX_ON  ;'........CCPMX_OFF = RB0, and CCPMX_ON = RB3.
@ DEVICE pic16f88,PROTECT_ON
@ DEVICE pic16f88,FCMEN_OFF
@ DEVICE pic16f88,IESO_OFF
Define OSC 8
DEFINE ADC_BITS 10       ' A/D for 8-bit operation
DEFINE ADC_CLOCK 3      ' A/D clock Fosc/8
DEFINE ADC_SAMPLEUS 50  ' A/D sampling time @ 50 uS
CMCON=7
OSCCON=%01110110
TRISA=%00010001
TRISB=%00000011
PORTA=0
PORTB=0
ADCON1 = %10000000 
ANSEL=%00000001
OPTION_REG.7=0

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_LINES 2

HAM VAR  WORD
SURE VAR WORD
I    VAR WORD

POZ VAR BIT

SYMBOL BUTON=PORTB.0
SYMBOL DUR=PORTB.1
SYMBOL LED=PORTA.1

LED=0
LCDOUT $FE, $40, $04, $00, $04, $04, $04, $04, $04, $00 'İ
LCDOUT $FE, $48, $0E, $11, $10, $10, $11, $0E, $04, $00 'Ç
LCDOUT $FE, $50, $00, $11, $0A, $04, $04, $04, $00, $00'YILDIZ
LCDOUT $FE, $58,$10, $18, $1C, $1E, $1C, $18, $10, $00'ÜÇGEN

LCDOUT $FE,1
LCDOUT $FE,$C0
PAUSE 200
LCDOUT $FE,1," VARDAR 07"
LCDOUT $FE,$C0,"MUSTAFA VARDAR"
pause 2500
LCDOUT $FE,1
LCDOUT $FE,1,"START'A BAS"

BASLA:

GOSUB ADCAL:LCDOUT $FE,$C7,"SURE:",DEC SURE," "
IF dur=0 then SIFIRLA
IF BUTON=0 THEN
  TOGGLE LED:
  WHILE BUTON=0:WEND
  IF DUR=0 THEN SIFIRLA
  IF LED=1 THEN
     HIGH PORTA.1:LCDOUT $FE,1,"MOTOR "
     HIGH PORTA.2:LCDOUT $FE,$C2,2 ,$FE,$c7,"SURE:",DEC SURE," "          'D2
     GOSUB BEKLE:IF POZ=1 THEN SIFIRLA
     HIGH PORTA.3:LCDOUT $FE,$C2,3          'D3
     LOW PORTA.2
     PAUSE 150
  ELSE
     HIGH PORTA.3
     LOW  PORTA.2:LCDOUT $FE,1,"MOTOR           ":LCDOUT $FE,$C2,3
  ENDIF
ENDIF
goto basla

ADCAL:
      ADCIN 0,HAM
      SURE=(HAM+1)*/1250
      RETURN
BEKLE:
      FOR I=0 TO SURE
        IF DUR=0 THEN
           POZ=1
           RETURN
        ENDIF         
        PAUSE 1
      NEXT
      RETURN
     
SIFIRLA:
        LOW LED
        LOW PORTA.2
        LOW PORTA.3
        POZ=0
        LCDOUT $FE,1,"MOTOR           "
        LCDOUT $FE,$C2,"X"
        GOTO BASLA
             
END

vardar07

hocam sayende geliştirmeye açık yıldız üçgen devre hazırlanmış oldu.Sadece ufak bir hata var önemli değil,o da stopa basılınca starta bas ekranına dönse fena olmazmış.Sizide uğraştırdık kusura bakma eline koluna sağlık.
Kullanmak isteyene ekte pbp,isis ve hex dosyaları var.

ete

Sıfırla:
isimli etiketin altında yer alan;
LCDOUT $FE,1,"MOTOR           "
ifadesini;
LCDOUT $FE,1,"START'A BAS"
ifadesi ile değiştir. Böylece durdurma butonun basılınca ekrana ,
START'A BAS
  DURDU

şeklinde bir yazı dizisi çıkacaktır. Sanırım istediğinde budur.

Ete

vardar07

hocam orada ani durdurulunca oluyor.
ELSE
     HIGH PORTA.3
     LOW  PORTA.2:LCDOUT $FE,1,"MOTOR           ":LCDOUT $FE,$C2,3
  ENDIF

Ben onu ELSE den sonraki portları 0 la altına yazdım doğrumu acaba.
ELSE
    low PORTA.1:low porta.2:low porta.3
     LCDOUT $FE,1,"starta bas           ":LCDOUT $FE,$c7,"SURE:",DEC SURE," "
  ENDIF
simulasyonda sorun yok.

Powered by EzPortal