P10 panel sürmek

Başlatan gogoce, 20 Şubat 2021, 16:07:38

enes

Merhaba..
uzun zaman once p10 panel ile bi deneme calısmam olmustu. Ve gayet guzel calısan bi test calısması
olmustu.Sonra devam ettirmeden kaldı.

ama ısın mantıgını cozmustum.
bu projede tek p10 panelı ıkı satır olarak surmustum.
ilk 8 satırda 8 harften olusan birinci kelime
sonraki alt 8 satırda yıne 8 harfli baska bi kelime belli bir sure gosterimde kalıp sonra
eproma kaydedilen diger ıkı kelime
gosterime giriyordu.
isin mantıgını sımdı pek hatırlıyamıyorum ama cok da zor degildi acıkcası.
ama yazıyı kaydırma olayı yok.sadece sabit duragan bi gosterim mantıgı var.
ben test amaclı 628a kullanmıstım.hızı ve kapasitesı bu iş icin pek uygun degil.
daha hızlı ve kapasiteli islemci kullanmak gerek.








'****************************************************************
'*  Name    : p10                                    *
'*  Author  :bvn                                          *
'*  Notice  : Copyright (c) 2016 ]                              *
'*          : All Rights Reserved                              *
'*  Date    : 02.06.2016                                        *
'*  Version : 1.0                                              *
'*  Notes  :                                                  *
'****************************************************************
'--------------------------MİCRO İSLEMCİ---------------------------------------
@ DEVICE pic16F628A
@ DEVICE pic16F628A, BOD_OFF                                                    
@ DEVICE pic16F628A, WDT_OFF 
@ DEVICE pic16F628A, LVP_OFF                      
@ DEVICE pic16F628A, PWRT_OFF            
@ DEVICE pic16F628A, PROTECT_OFF        
@ DEVICE pic16F628A, MCLR_OFF          
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  
'-----------------------------------------------------------------
DEFINE OSC 4  'OSİLATOR 4 MHZ
CMCON=7      'KOMPARATORLER İPTAL TUM PORTLAR DİGİTAL
'----------------------giriş çıkış-------------------------------------------
PORTA=0:PORTB=0  'PORTA VE PORTB Yİ SIFIRLA
TRISA=%00000000  'PORTA GİRİS CIKIS TANIMLAMASI
TRISB=%00000000  'PORTB GİRİS CIKIS TANIMLAMASI  


'----------------------A b portu-------------------------------------------
symbol CLK  =PORTB.0
SYMBOL DTA  =PORTB.1
SYMBOL LATCH =PORTB.2
SYMBOL AP    =PORTB.3
SYMBOL BP    =PORTB.4 
SYMBOL OE    =PORTB.5
SYMBOL LED1  =PORTB.6
 
'-----------------------TİMER DEGİSKENLERİ-------------------------------
MSN    VAR BYTE
SN    VAR BYTE
DAK    VAR BYTE
CIK    VAR BYTE


'-------------------------DEGİSKENLER-------------------------------------------
A VAR BYTE
B VAR BYTE
C var byte
D VAR BYTE

X VAR BYTE
Y VAR BYTE
Z VAR BYTE
T VAR BYTE

TEMP VAR BYTE

OKUNAN VAR BYTE
Q      VAR BYTE
HARF  VAR BYTE

YERI  VAR WORD
SAYAC  VAR WORD

DZ  VAR byte[64] 
HC  VAR BYTE[16]
'-------------------------------------------------------------------------------

'-------------------------------------------------------------------------------
 CLEAR
'------------------------DEGİSKENLER SIFIRLANIYOR-------------------------------
PAUSE 150    '150 MSN BEKLE

WRITE 00," ETEPIC ":PAUSE 10
WRITE 10,"PICBASIC":PAUSE 10
WRITE 20," ETEPIC ":PAUSE 10
WRITE 30," ENES  ":PAUSE 10

'------------------------ACILIS IKAZI VER---------------------------------------
LED1=1:PAUSE 150 
LED1=0:PAUSE 150
LED1=1:PAUSE 150 

'-------------------------------------------------------------------------------  

'----------------------PROGRAM BASLANGICI---------------------------------------

 BASLA:    
        IF D=4 THEN D=0
    
      
      FOR Y=0 TO 7
        READ ((D*10)+Y),HARF
        GOSUB BAK
      
      FOR T=0 TO 7  
        GOSUB TABLO
        DZ[((7-T))+(Y*8)]=~OKUNAN REV 8
        YERI=YERI+1
      NEXT
        
      NEXT
      

      
 
    GOTO TARA



 GOTO BASLA 
'-------------------------------------------------------------------------------  


'-------------------------------------------------------------------------------  

 TARA:
    GOSUB SATIR_0
    GOSUB SATIR_1
    GOSUB SATIR_2
    GOSUB SATIR_3
    
    SAYAC=SAYAC+1
    IF SAYAC=600 THEN SAYAC=0:D=D+1:GOTO BASLA
    
    

GOTO TARA


'-------------------------------------------------------------------------------  
 SATIR_0:
 
  HC[00]=DZ[36] : HC[04]=DZ[44] : HC[08]=DZ[52] : HC[12]=DZ[60]      '1 cumle
  HC[01]=DZ[32] : HC[05]=DZ[40] : HC[09]=DZ[48] : HC[13]=DZ[56]
  
  HC[02]=DZ[04] : HC[06]=DZ[12] : HC[10]=DZ[20] : HC[14]=DZ[28]      '2 cumle
  HC[03]=DZ[00] : HC[07]=DZ[08] : HC[11]=DZ[16] : HC[15]=DZ[24]

  GOSUB YUKLE
  AP=0:BP=0 
  GOSUB DELAY
  
  RETURN
  
  
'------------------------------------------------------------------------------- 

  
  

 SATIR_1:
  
  HC[00]=DZ[37] : HC[04]=DZ[45] : HC[08]=DZ[53] : HC[12]=DZ[61]      '1 cumle
  HC[01]=DZ[33] : HC[05]=DZ[41] : HC[09]=DZ[49] : HC[13]=DZ[57]

  
  HC[02]=DZ[05] : HC[06]=DZ[13] : HC[10]=DZ[21] : HC[14]=DZ[29]      '2 cumle
  HC[03]=DZ[01] : HC[07]=DZ[09] : HC[11]=DZ[17] : HC[15]=DZ[25]
 

  GOSUB YUKLE
  
  AP=1:BP=0 
  GOSUB DELAY
  RETURN
 
 '-------------------------------------------------------------------------------  
 
 SATIR_2:
 
  HC[00]=DZ[38] : HC[04]=DZ[46] : HC[08]=DZ[54] : HC[12]=DZ[62]      '1 cumle
  HC[01]=DZ[34] : HC[05]=DZ[42] : HC[09]=DZ[50] : HC[13]=DZ[58]  
  
  HC[02]=DZ[06] : HC[06]=DZ[14] : HC[10]=DZ[22] : HC[14]=DZ[30]      '2 cumle
  HC[03]=DZ[02] : HC[07]=DZ[10] : HC[11]=DZ[18] : HC[15]=DZ[26]

 
  GOSUB YUKLE
  AP=0:BP=1 
  GOSUB DELAY
  RETURN

 '-------------------------------------------------------------------------------  
 
  SATIR_3:
 
  HC[00]=DZ[39] : HC[04]=DZ[47] : HC[08]=DZ[55] : HC[12]=DZ[63]      '1 cumle
  HC[01]=DZ[35] : HC[05]=DZ[43] : HC[09]=DZ[51] : HC[13]=DZ[59]  
  
  HC[02]=DZ[07] : HC[06]=DZ[15] : HC[10]=DZ[23] : HC[14]=DZ[31]      '2 cumle
  HC[03]=DZ[03] : HC[07]=DZ[11] : HC[11]=DZ[19] : HC[15]=DZ[27]


 
  GOSUB YUKLE
  
  AP=1:BP=1 
  GOSUB DELAY
  RETURN
 
 '-------------------------------------------------------------------------------  

YUKLE:

  
  SHIFTOUT DTA,CLK,1,[HC[00],HC[01],HC[02],HC[03],_
                      HC[04],HC[05],HC[06],HC[07],_
                      HC[08],HC[09],HC[10],HC[11],_
                      HC[12],HC[13],HC[14],HC[15]]
  
  LATCH=1:PAUSEus 2:LATCH=0  
  
  
  RETURN
 
 '-------------------------------------------------------------------------------  
  BAK:
    SELECT CASE HARF
      CASE "A": YERI=0
      CASE "B": YERI=1
      CASE "C": YERI=2
      CASE "D": YERI=3
      CASE "E": YERI=4
      CASE "F": YERI=5
      CASE "G": YERI=6
      CASE "H": YERI=7
      CASE "I": YERI=8
      CASE "J": YERI=9
      CASE "K": YERI=10
      CASE "L": YERI=11
      CASE "M": YERI=12
      CASE "N": YERI=13
      CASE "O": YERI=14
      CASE "P": YERI=15
      CASE "Q": YERI=16
      CASE "R": YERI=17
      CASE "S": YERI=18
      CASE "T": YERI=19
      CASE "U": YERI=20
      CASE "V": YERI=21
      CASE "W": YERI=22
      CASE "X": YERI=23
      CASE "Y": YERI=24
      CASE "Z": YERI=25
      CASE " ": YERI=26
    END SELECT
  
  RETURN

'-------------------------------------------------------------------------------  
 TABLO:
        YERI=YERI*8
  
LOOKUP YERI,[$66,$66,$66,$7e,$66,$66,$3c,$00,_ 'A
          $3e,$66,$66,$3e,$66,$66,$3e,$00,_ 'B
          $3c,$66,$06,$06,$06,$66,$3c,$00,_ 'C
          $3e,$66,$66,$66,$66,$66,$3e,$00,_ 'D
          $7e,$06,$06,$3e,$06,$06,$7e,$00,_ 'E
          $06,$06,$06,$3e,$06,$06,$7e,$00,_ 'F
          $3c,$66,$76,$06,$06,$66,$3c,$00,_ 'G
          $66,$66,$66,$7e,$66,$66,$66,$00,_ 'H
          $3c,$18,$18,$18,$18,$18,$3c,$00,_ 'I
          $1c,$36,$36,$30,$30,$30,$78,$00,_ 'J
          $66,$36,$1e,$0e,$1e,$36,$66,$00,_ 'K
          $7e,$06,$06,$06,$06,$06,$06,$00,_ 'L
          $c6,$c6,$c6,$d6,$fe,$ee,$c6,$00,_ 'M
          $c6,$c6,$e6,$f6,$de,$ce,$c6,$00,_ 'N
          $3c,$66,$66,$66,$66,$66,$3c,$00,_ 'O
          $06,$06,$3e,$66,$66,$66,$3e,$00,_ 'P
          $60,$3c,$76,$66,$66,$66,$3c,$00,_ 'Q
          $66,$36,$1e,$3e,$66,$66,$3e,$00,_ 'R
          $3c,$66,$60,$3c,$06,$66,$3c,$00,_ 'S
          $18,$18,$18,$18,$18,$5a,$7e,$00,_ 'T
          $7c,$66,$66,$66,$66,$66,$66,$00,_ 'U
          $18,$3c,$66,$66,$66,$66,$66,$00,_ 'V
          $c6,$ee,$fe,$d6,$c6,$c6,$c6,$00,_ 'W
          $c6,$c6,$6c,$38,$6c,$c6,$c6,$00,_ 'X
          $18,$18,$18,$3c,$66,$66,$66,$00,_ 'Y
          $7e,$06,$0c,$18,$30,$60,$7e,$00,_ 'Z
          $00,$00,$00,$00,$00,$00,$00,$00],OKUNAN  ' bosluk
  
  
  
RETURN  
'------------------------------------------------------------------------------- 

  
 DELAY:
 OE=1
 PAUSEUS 1000
 OE=0
 RETURN
 
'------------------------------------------------------------------------------- 

end    'PROGRAM SONU    
'-------------------------------------------------------------------------------






gogoce

Şu anda evimde ciddi tadilat işlerim var pek fazla vaktim olmuyor fakat en kısa zamanda programları videolarıyla ekleyeceğim.
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

aRci

2 hafta sonra denemeye başladım. kodu toparlama yapmadım henüz iki satırda 5 erden 10 karekter gösterebiliyor. ilk olarak rakamlar ve büyük harfleri ekledim.

zamanımın çoğunu byte lar arası bit kaydırma yedi ama şimdilik çalışıyor. resimi sabah yüklerim

iyi çalışmalar

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 17.08.2017                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
include "modedefs.bas"
@ __config _CP_ALL & _DEBUG_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF & _CPD_ON 
      define OSC 20
      TRISA=0
      TRISB=%11100001  'B portu giriş yapıldı
      TRISC=%10000000  'C portu 3 giriş/4'ü çıkış yapıldı
      TRISD=%00000000  'D portu çıkış yapıldı
      TRISE=%111

      porta = 0
      portb = %11110001
      portc = %10000000
      portd = 0 
                 
      OPTION_REG.7=0 'vererek pullap dirençlerini aktif edeceksin. İŞlemcin belli değil genelde bu komut ile açılır ama yeni nesillerde WPU registeride kullanılabiliryor ona dikkat et.
      OPTION_REG.6=0   ;RBO dusen KENAR İLE KESME OLUŞTURACAK
      INTCON=%10010000 'vererek kesmeleri aktif edip PORTB.0 kesmesinide aktif hale getirmiş olacaksın.
      OPTION_REG   = %00000010      
      DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
      DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
      DEFINE HSER_SPBRG 10  ' 115200 Baud @ -1,36%
      DEFINE HSER_CLROERR 1 ' Clear overflow automatically 
      
      SYMBOL GIE          = INTCON.7   'genel interruptları açıyor
      SYMBOL PEIE         = INTCON.6   'peripheralinterruptları açıyor
      SYMBOL RCIE         = PIE1.5     'USART Recive interrupt enable bit
      SYMBOL RCIF         = PIR1.5     'USART Receive interrupt flag bit
      SYmbol RB0          = INTCON.1   'Portb.0 Kesme Biti
      Symbol TMRF         = INTCON.2   'timer kesme bayraği
      RCIE=1
      PEIE=1
      GIE=1
      INTCON.5=1 ;TMR0 KESMESİ AKTİF = 1
      ON INTERRUPT GoTo KESME
'//////////////////////////----------------------------/////////////////////////
'//////////////////////////----------------------------/////////////////////////
      SDA VAR PORTC.0
      SCL VAR PORTC.1
      
      symbol Led       = Portb.1              'Pcb Durum Ledi
      'symbol M0        = portb.2
      'symbol M1        = portb.3
      'E32Tx            var portb.4            'E32-TTL nin RX Ucu Bağlı
      'E32Rx            var portb.5            'E32-TTL nin TX Ucu Bağlı
      'NexRx            var portb.6            'Nextion Ekran Tx Ucu Bağlı
      'NexTx            var portb.7            'Nextion Ekran Rx Ucu Bağlı
'//////////////////////-------MCP20317--DEĞİŞKEN-------/////////////////////////
'//////////////////////--------------------------------/////////////////////////   
      Przt             var byte
      gonder           var byte
      Giris            var byte
      Cikis            var byte
      chip1            var byte
      
      chip1            = $40
      
      IOGCA            con $00  ' port A output
      IOGCB            con $01  ' port B output
      
      IOPOLA           con $02 'PortA polarite çevirme
      IOPOLB           con $03 'PortB Polarite çevirme
      
      IntEnA           con $04 'Porta Kesme İzin
      IntEnB           con $05 'Porta Kesme İzin
      
      DEFVALA          Con $06 '?
      DEFVALB          Con $07 '?
      
      INTCONA          con $08
      INTCONB          con $09
      
      IOCONA           con $0A
      IOCONB           con $0B
      
      GPPUA            CON $0C
      GPPUB            CON $0D
      
      INTFA            CON $0E
      INTFB            CON $0F
      
      INTCAPA          CON $10
      INTCAPB          CON $11
      
      GPIOA            CON $12
      GPIOB            CON $13
      
      OLATA            CON $14
      OLATB            CON $15
      
      Aport            con 0     'PortA çıkış ayarlandı
      Bport            con 255   'PortB giriş ayarlandı
      
'////////////////////////-------P10Panel Tanımlamalar------/////////////////////
'//////////////////////////----------------------------/////////////////////////
      symbol Oe         = Portd.0
      symbol SA         = portd.1
      Symbol SB         = portd.2
      symbol Clk        = portd.3
      Symbol En         = portd.4
      Symbol Dat        = portd.5
      
      Veri1             var byte [68]'panelin verileri
      Panel             var byte [68]
      SutunX            var byte     'kaçıncı sutunda
      SecAB             var byte     'A ve B değeri
      P10X              var byte
      Sira              var word
      Ekran             var word 'ekranda gösterilecek olan değer
      Krektr            var byte[8]
      tara              var byte
      Tr1               var byte
      Tr2               var byte
      Tr3               var byte
      Tr4               var byte
      Hsb1              var byte

'//////////////////////////----------Ds-3231-----------/////////////////////////
'//////////////////////////----------------------------/////////////////////////

      AY                var byte
      YIL               var byte
      SN                VAR BYTE
      DAK               VAR BYTE
      SAAT              VAR BYTE
      GUN               VAR BYTE
      HGUN              VAR BYTE
      HAFTA             VAR BYTE
      Temp              var byte
      MEM               var byte

      DS_OKU VAR BYTE : DS_OKU = %11010000
      DS_YAZ VAR BYTE : DS_YAZ = %11010001
      
      ZAMAN_REG         VAR BYTE : ZAMAN_REG= $00
      
      i                 var byte
      i1                var byte
      i2                var byte
      ZAMAN             var byte[7]
      KAYDIR            var byte
      UST_BIT           var byte
      ALT_BIT           var byte

      'TempRegister CON $11                   'temperature integer  REGISTER
      TempRegisterFRA   CON $12               'temperature fraction REGISTER
      TempRegister      var byte              'variable to hold DS3231 register address to read/write      
      
      TempInt           var byte              'Variable for temperature integer from register 11h
      TempFrac          var byte              'Variable for temperature fraction for register 12h
      TempSign          var bit               'Variable to hold sign bit   

'/////////////////////---------Genel değişkenler-------/////////////////////////
'/////////////////////---------------------------------///////////////////////// 
      
      Gelen             var byte[25]
      Uart_Kesme        var byte
      Hesap             var word
      Sph               var word 
      TSayac            var word
      KSayac            var word
      SKasa             var word
      GeriDelik         var word
      OfSet             var word
      Isaret            var Byte
      Mode              var byte
      Gecikme           var word      '
      SaatBasi          var Bit       'SaatBasi bir kez gerideli girmek için değişken
      BekLe             var word      'pauseus için                                                                                         
      
'/////////////////////-------------Başlangıç-----------///////////////////////// 
'/////////////////////---------------------------------/////////////////////////       
      'write 5, 0
      I2CWRITE  SDA, SCL, chip1,[GPIOA,0]
      gosub McpKur
      read 1, Sph.HIGHbyte
      read 2, Sph.lowbyte 
      read 3, SKasa.highbyte
      Read 4, SKasa.lowbyte
      Read 5, Mode
      
      OfSet             = 0
      GeriDelik         = 0
      TSayac            = 0
      Ksayac            = 0
      'SKasa             = 200
      Isaret            = "+"
      SaatBasi          = 0 
'/////////////////////---------------------------------///////////////////////// 
'/////////////////////---------------------------------/////////////////////////         
      for i = 0 to 67
      veri1[i]=255
      next i
      sira = 0
      cikis = 0
basla:
bekle = bekle + 1
if bekle >= 1000 then
gosub Zaman_oku
bekle = 0 
'///////////////////////////////////////////////////////////////////////////////
'//////////////////--------1.Satır---------/////////////////////////////////////
    P10X=12
    ekran = Saat dig 1
    gosub P10_Gnc
    P10X=8
    ekran = Saat dig 0
    gosub P10_Gnc
    P10X=4
    ekran = Dak dig 1
    gosub P10_Gnc                                     
    P10X=0                                           
    ekran = Dak dig 0
    gosub P10_Gnc   

    for tr4 = 0 to 7
    Tr1 = 0
    Tr2 =2
    lookup Tr4,[13,29,45,61,14,30,46,62], Tr3 
    for Tr1 = Tr3 to (Tr3 - 12) step - 4           
    Hsb1 = 255 - (( Dcd Tr2 ) - 1 )
    veri1[Tr1] =  ((veri1[Tr1] << (Tr2-2) ) & Hsb1) | (veri1[Tr1 - 4] >> (8-Tr2))
    Tr2 = Tr2 + 2
    next tr1
    veri1[Tr3-12]  =  255
    Next Tr4
                                         
    P10X=0                                            
    ekran = Sn dig 0
    gosub P10_Gnc  

'///////////////////////////////////////////////////////////////////////////////
'//////////////////--------2.Satır---------/////////////////////////////////////

    P10X=14
    ekran = "A"
    gosub P10_Gnc
    P10X=10
    ekran = "R"
    gosub P10_Gnc
    P10X=6
    ekran = "C"
    gosub P10_Gnc                                     
    P10X=2                                           
    ekran = "I"
    gosub P10_Gnc   

    for tr4 = 0 to 7
    Tr1 = 0
    Tr2 =2
    lookup Tr4,[15,31,47,63,16,32,48,64], Tr3 
    for Tr1 = Tr3 to (Tr3 - 12) step - 4           
    Hsb1 = 255 - (( Dcd Tr2 ) - 1 )
    veri1[Tr1] =  ((veri1[Tr1] << (Tr2-2) ) & Hsb1) | (veri1[Tr1 - 4] >> (8-Tr2))
    Tr2 = Tr2 + 2
    next tr1
    veri1[Tr3-12]  =  255
    Next Tr4
                                         
    P10X=2                                            
    ekran = cikis dig 0
    gosub P10_Gnc  
    
     
   
    for Tr1 = 0 to 68
        Panel[Tr1] = veri1[Tr1]
    next Tr1 
endif                                                   
                                                        
                                                        
pauseus 100            
      goto basla

'//////////////////////-----------Mcp-Kurulum----------/////////////////////////
'/////////////////////---------------------------------/////////////////////////
McpKur:
      I2CWRITE SDA, SCL, chip1,[IOGCA,Aport]    'A7 giriş olarak ayarlandı
      I2CWRITE SDA, SCL, chip1,[IOPOLA,0]       'Polarite Ayarlandı Ters çevrilmemiş
      I2CWRITE SDA, SCL, chip1,[IntEnA,0]     'Kesme İzin Verilmedi
      I2CWRITE SDA, SCL, chip1,[DEFVALA,0]      'Kesme İzin Verildi.terslenmedi
      I2CWRITE SDA, SCL, chip1,[INTCONA,0]      'Kesme İzin Verildi.önceki durumuna göre
      I2CWRITE SDA, SCL, chip1,[IOCONA,%01011100]'01011000]      'Kesme İzin Verildi.önceki durumuna göre
      I2CWRITE SDA, SCL, chip1,[GPPUA,0]      'pRTa.7 PULLU U P AKTİF
      I2CWRITE SDA, SCL, chip1,[INTFA,0]      'kESME bAYRAK
      I2CWRITE SDA, SCL, chip1,[INTCAPA,0]      '?
      'I2CWRITE SDA, SCL, chip1,[GPIOA,0]      'PORT OKUMA
      
      I2CWRITE SDA, SCL, chip1,[IOGCB,Bport]    'A7 giriş olarak ayarlandı
      I2CWRITE SDA, SCL, chip1,[IOPOLB,255]       'Polarite Ayarlandı Ters çevrilmemiş
      I2CWRITE SDA, SCL, chip1,[IntEnB,255]     'Kesme İzin Verildi
      I2CWRITE SDA, SCL, chip1,[DEFVALB,0]      'Kesme İzin Verildi.terslenmedi
      I2CWRITE SDA, SCL, chip1,[INTCONB,0]      'Kesme İzin Verildi.önceki durumuna göre
      I2CWRITE SDA, SCL, chip1,[IOCONB,%01011100]      'Kesme İzin Verildi.önceki durumuna göre
      I2CWRITE SDA, SCL, chip1,[GPPUB,255]      'PULLU UP Aktif
      I2CWRITE SDA, SCL, chip1,[INTFB,0]      'kESME bAYRAK
      I2CWRITE SDA, SCL, chip1,[INTCAPB,0]      '?
      'I2CWRITE SDA, SCL, chip1,[GPIOA,0]      'PORT OKUMA
      return

'////////////////////////------------------------///////////////////////////////
'////////////////////////------------------------///////////////////////////////
;---------------------------------ZAMAN OKU-------------------------------------
ZAMAN_OKU:

    i2cread SDA,SCL,DS_OKU,ZAMAN_REG,[ZAMAN[0],ZAMAN[1],ZAMAN[2],ZAMAN[3],ZAMAN[4],ZAMAN[5],ZAMAN[6]]
    
    GOSUB BCD_To_Decimal
    
    sn   =ZAMAN[0]
    DAK  =ZAMAN[1]
    SAAT =ZAMAN[2]
    HAFTA=ZAMAN[3]
    GUN  =ZAMAN[4]
    AY   =ZAMAN[5]
    YIL  =ZAMAN[6]
    Hesap = 36000/Sph
    Ofset = (((saat*360 + dak*6) *10)+ sn ) * 10
    Ofset = div32 Hesap 
     
return

;---------------------------------SENSOR OKU------------------------------------
SENSOR_OKU:

       TempRegister = $11      ' DS3231 Temperature REgister High Byte (Integer portion)     
       I2Cread SDA,SCL, DS_OKU, TempRegister, [TempInt, TempFrac]
       
       TempFrac = (TempFrac >> 6)   ' Shift <b7:b6> to <b1:b0>
       TempFrac = (TempFrac * 25)   ' Fractional portion is in .25 increments. Increment values are 0-3 (.00, .25, .50, .75)
       
       TempSign = TempInt.7   ' save the sign bit for later

       '''If TempSign = 1 then  TempInt = (TempInt XOR $FF) + 1     'Do not use this, the DS3231 uses simple <b7> sign with <b6:b0> as absolute temperature value
    
RETURN 

;---------------------------------ZAMAN YAZ-------------------------------------
ZAMAN_YAZ:

    ZAMAN[0]=0      ' saniye
    ZAMAN[1]=DAK     ' dakika
    ZAMAN[2]=SAAT    ' saat
    ZAMAN[3]=hafta   ' haftanin gunu
    ZAMAN[4]=gun     ' Gün
    ZAMAN[5]=ay      ' ay
    ZAMAN[6]=yil     ' Yil
    
    GOSUB Decimal_To_BCD

    i2cwrite SDA,SCL,DS_YAZ,ZAMAN_REG,[ZAMAN[0],ZAMAN[1],ZAMAN[2],ZAMAN[3],ZAMAN[4],ZAMAN[5],ZAMAN[6],$10]

return  

'******************************DECIMAL TO Binary Coded Decimal******************
DECIMAL_TO_BCD:
;Decimal Taban :  9    1
;Binary  Taban : 1001 0001

    for i=0 to 6
        ZAMAN[i] = ((ZAMAN[i] dig 1) << 4 ) + ZAMAN[i] dig 0
    next i

RETURN
'**************************BCD TO DECIMAL SYSTEM********************************
BCD_TO_DECIMAL:

    for i=0 to 6
        ZAMAN[i]   = ((ZAMAN[i] >> 4) *10) + (ZAMAN[i] & %00001111)
    next i

RETURN 
    

      
'/////////////////////--------P10 Guncelle--------------//////////////////////// 
'/////////////////////---------------------------------/////////////////////////        
P10_Gnc:

      gosub Kkrt
      
return

'/////////////////////////---------Kaydir---------//////////////////////////////
'////////////////////////------------------------///////////////////////////////
DegerKaydir:

Return
'/////////////////////////------Büyük Rakam------///////////////////////////////
'////////////////////////------------------------///////////////////////////////
BKrk:           '$66,$66,$66,$7e,$66,$66,$3c,$00
    tara = (Ekran dig 0 ) * 8
    P10X = P10X + 5
    for Tr1 = 0 to 7
    LOOKUP tara, [135,51,3,51,51,3,51,135,_
                 207,207,15,207,15,3,207,3,_
                 135,159,3,63,51,3,231,3,_
                 135,231,3,51,51,3,231,135,_
                 231,3,199,3,167,231,103,231,_
                 3,3,3,243,63,3,3,7,_
                 135,3,3,51,63,3,7,135,_
                 3,207,3,207,243,207,231,207,_
                 135,51,3,51,51,3,135,135,_
                 135,243,3,231,51,207,131,159],Tr2
                 
    Select Case  Tr1
        case 0
        veri1[P10X] = Tr2
        case 1
        veri1[P10X+1]    =Tr2    
        case 2
        veri1[P10X+16]   =Tr2     
        case 3
        veri1[P10X+17]   =Tr2    
        case 4
        veri1[P10X+32]   =Tr2    
        case 5
        veri1[P10X+33]   =Tr2      
        case 6
        veri1[P10X+48]   =Tr2    
        case 7
        veri1[P10X+49]   =Tr2
    End Select
    
    next Tr1 
return

'///////////////////////////////////////////////////////////////
'//////////////////---------Küçük Karekterler------//////////////////////////
Kkrt:
    P10X =P10X + 1
    if Ekran < 10 then tara = Ekran * 8
    if Ekran > 10 then  tara = (Ekran-65) * 8
    
    
    for Tr1 = 0 to 7
    if Ekran < 10 then
    LOOKUP tara, [227, 221, 217, 213, 205, 221, 227, 255,_
                   247, 231, 247, 247, 247, 247, 227, 255,_
                   227, 221, 253, 251, 247, 239, 193, 255,_
                   193, 251, 247, 251, 253, 221, 227, 255,_
                   251, 243, 235, 219, 193, 251, 251, 255,_
                   193, 223, 195, 253, 253, 221, 227, 255,_
                   243, 239, 223, 195, 221, 221, 227, 255,_
                   193, 253, 251, 247, 239, 239, 239, 255,_
                   227, 221, 221, 227, 221, 221, 227, 255,_
                   227, 221, 221, 225, 253, 251, 231, 255],Tr2
    else
    LOOKUP tara, [227, 221, 221, 193, 221, 221, 221, 255,_    'A
                   195, 221, 221, 195, 221, 221, 195, 255,_
                   227, 221, 223, 223, 223, 221, 227, 255,_
                   199, 219, 221, 221, 221, 219, 199, 255,_
                   193, 223, 223, 195, 223, 223, 193, 255,_     'E
                   193, 223, 223, 195, 223, 223, 223, 255,_
                   227, 221, 223, 209, 221, 221, 225, 255,_
                   221, 221, 221, 193, 221, 221, 221, 255,_
                   227, 247, 247, 247, 247, 247, 227, 255,_
                   241, 251, 251, 251, 251, 219, 231, 255,_
                   221, 219, 215, 207, 215, 219, 221, 255,_     'K
                   223, 223, 223, 223, 223, 223, 193, 255,_
                   221, 201, 213, 213, 221, 221, 221, 255,_
                   221, 221, 205, 213, 217, 221, 221, 255,_
                   227, 221, 221, 221, 221, 221, 227, 255,_
                   227, 221, 221, 195, 223, 223, 223, 255,_     'P
                   227, 221, 221, 221, 213, 219, 229, 255,_
                   227, 221, 221, 195, 215, 219, 221, 255,_
                   225, 223, 223, 227, 253, 253, 195, 255,_
                   193, 247, 247, 247, 247, 247, 247, 255,_
                   221, 221, 221, 221, 221, 221, 227, 255,_
                   221, 221, 221, 221, 221, 235, 247, 255,_
                   221, 221, 221, 213, 213, 213, 235, 255,_
                   221, 221, 235, 247, 235, 221, 221, 255,_
                   221, 221, 235, 247, 247, 247, 247, 255,_
                   193, 253, 251, 247, 239, 223, 193, 255,_
                   255],Tr2
    endif                   
                 Tr2 = ( Tr2 << 2 )| %00000011

    Select Case  Tr1
        case 0
        veri1[P10X]      = Tr2
        case 1
        veri1[P10X+16]   = Tr2    
        case 2
        veri1[P10X+32]   = Tr2     
        case 3
        veri1[P10X+48]   = Tr2    
        case 4
        veri1[P10X+1]   = Tr2    
        case 5
        veri1[P10X+17]   = Tr2      
        case 6
        veri1[P10X+33]   = Tr2    
        case 7
        veri1[P10X+49]   = Tr2
    End Select
    
    tara = tara + 1
    next Tr1 
return          
                          
Eksi:
    veri1[P10X]      =255    
    veri1[P10X+1]    =15    
    veri1[P10X+16]   =255     
    veri1[P10X+17]   =255    
    veri1[P10X+32]   =255    
    veri1[P10X+33]   =255      
    veri1[P10X+48]   =15    
    veri1[P10X+49]   =255
    return
    
Sil:
    veri1[P10X]      =255    
    veri1[P10X+1]    =255    
    veri1[P10X+16]   =255     
    veri1[P10X+17]   =255    
    veri1[P10X+32]   =255    
    veri1[P10X+33]   =255      
    veri1[P10X+48]   =255    
    veri1[P10X+49]   =255
    return
    
'/////////////////////-----------Kesme Program---------/////////////////////////
'/////////////////////---------------------------------/////////////////////////   
DISABLE
Kesme:
      GIE=0
      if RCIF    = 1 then 
                 hserin 1,Katla,[wait ("Rci")]
                 hserin 1,Uar,[str gelen\20]
Uar:
                 Uart_Kesme = 1
                 goto Katla
      endif
      if TMRF = 1 then
      if secab = 0 then
          for Sutunx = 32 to 1 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: low sa: low sb: High en: low en: high oe
          endif
      if secab = 1 then
          for Sutunx = 32 to 17 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: high sa: low sb: High en: low en: high oe
          endif
      if secab = 2 then
          for Sutunx = 48 to 33 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: low sa: high sb: High en: low en: high oe
          endif
      if secab = 3 then
          for Sutunx = 64 to 49 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: high sa: high sb: High en: low en: high oe
          endif
      
      secab = secab + 1: if secab >=4 then secab = 0
      tmrf = 0
      goto Katla
      endif
                 
      if RB0     = 1 then i2cread  SDA,SCL, chip1,GPIOB,[giris]': hserout ["Giris: %",bin8 giris,13]

Katla:
      Temp       = Portb.0
      GIE        = 0
      RB0        = 0
      'hserout    ["Kesme... > ",str gelen\20,"Bitti...",13]
      RCIF       = 0
      GIE        = 1
      Resume
enable
'///////////////////////////////////////////////////////////////////////////////

gogoce

Alıntı yapılan: aRci - 02 Mart 2021, 01:06:062 hafta sonra denemeye başladım. kodu toparlama yapmadım henüz iki satırda 5 erden 10 karekter gösterebiliyor. ilk olarak rakamlar ve büyük harfleri ekledim.

zamanımın çoğunu byte lar arası bit kaydırma yedi ama şimdilik çalışıyor. resimi sabah yüklerim

iyi çalışmalar

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 17.08.2017                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
include "modedefs.bas"
@ __config _CP_ALL & _DEBUG_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF & _CPD_ON 
      define OSC 20
      TRISA=0
      TRISB=%11100001  'B portu giriş yapıldı
      TRISC=%10000000  'C portu 3 giriş/4'ü çıkış yapıldı
      TRISD=%00000000  'D portu çıkış yapıldı
      TRISE=%111

      porta = 0
      portb = %11110001
      portc = %10000000
      portd = 0 
                 
      OPTION_REG.7=0 'vererek pullap dirençlerini aktif edeceksin. İŞlemcin belli değil genelde bu komut ile açılır ama yeni nesillerde WPU registeride kullanılabiliryor ona dikkat et.
      OPTION_REG.6=0   ;RBO dusen KENAR İLE KESME OLUŞTURACAK
      INTCON=%10010000 'vererek kesmeleri aktif edip PORTB.0 kesmesinide aktif hale getirmiş olacaksın.
      OPTION_REG   = %00000010      
      DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
      DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
      DEFINE HSER_SPBRG 10  ' 115200 Baud @ -1,36%
      DEFINE HSER_CLROERR 1 ' Clear overflow automatically 
      
      SYMBOL GIE          = INTCON.7   'genel interruptları açıyor
      SYMBOL PEIE         = INTCON.6   'peripheralinterruptları açıyor
      SYMBOL RCIE         = PIE1.5     'USART Recive interrupt enable bit
      SYMBOL RCIF         = PIR1.5     'USART Receive interrupt flag bit
      SYmbol RB0          = INTCON.1   'Portb.0 Kesme Biti
      Symbol TMRF         = INTCON.2   'timer kesme bayraği
      RCIE=1
      PEIE=1
      GIE=1
      INTCON.5=1 ;TMR0 KESMESİ AKTİF = 1
      ON INTERRUPT GoTo KESME
'//////////////////////////----------------------------/////////////////////////
'//////////////////////////----------------------------/////////////////////////
      SDA VAR PORTC.0
      SCL VAR PORTC.1
      
      symbol Led       = Portb.1              'Pcb Durum Ledi
      'symbol M0        = portb.2
      'symbol M1        = portb.3
      'E32Tx            var portb.4            'E32-TTL nin RX Ucu Bağlı
      'E32Rx            var portb.5            'E32-TTL nin TX Ucu Bağlı
      'NexRx            var portb.6            'Nextion Ekran Tx Ucu Bağlı
      'NexTx            var portb.7            'Nextion Ekran Rx Ucu Bağlı
'//////////////////////-------MCP20317--DEĞİŞKEN-------/////////////////////////
'//////////////////////--------------------------------/////////////////////////   
      Przt             var byte
      gonder           var byte
      Giris            var byte
      Cikis            var byte
      chip1            var byte
      
      chip1            = $40
      
      IOGCA            con $00  ' port A output
      IOGCB            con $01  ' port B output
      
      IOPOLA           con $02 'PortA polarite çevirme
      IOPOLB           con $03 'PortB Polarite çevirme
      
      IntEnA           con $04 'Porta Kesme İzin
      IntEnB           con $05 'Porta Kesme İzin
      
      DEFVALA          Con $06 '?
      DEFVALB          Con $07 '?
      
      INTCONA          con $08
      INTCONB          con $09
      
      IOCONA           con $0A
      IOCONB           con $0B
      
      GPPUA            CON $0C
      GPPUB            CON $0D
      
      INTFA            CON $0E
      INTFB            CON $0F
      
      INTCAPA          CON $10
      INTCAPB          CON $11
      
      GPIOA            CON $12
      GPIOB            CON $13
      
      OLATA            CON $14
      OLATB            CON $15
      
      Aport            con 0     'PortA çıkış ayarlandı
      Bport            con 255   'PortB giriş ayarlandı
      
'////////////////////////-------P10Panel Tanımlamalar------/////////////////////
'//////////////////////////----------------------------/////////////////////////
      symbol Oe         = Portd.0
      symbol SA         = portd.1
      Symbol SB         = portd.2
      symbol Clk        = portd.3
      Symbol En         = portd.4
      Symbol Dat        = portd.5
      
      Veri1             var byte [68]'panelin verileri
      Panel             var byte [68]
      SutunX            var byte     'kaçıncı sutunda
      SecAB             var byte     'A ve B değeri
      P10X              var byte
      Sira              var word
      Ekran             var word 'ekranda gösterilecek olan değer
      Krektr            var byte[8]
      tara              var byte
      Tr1               var byte
      Tr2               var byte
      Tr3               var byte
      Tr4               var byte
      Hsb1              var byte

'//////////////////////////----------Ds-3231-----------/////////////////////////
'//////////////////////////----------------------------/////////////////////////

      AY                var byte
      YIL               var byte
      SN                VAR BYTE
      DAK               VAR BYTE
      SAAT              VAR BYTE
      GUN               VAR BYTE
      HGUN              VAR BYTE
      HAFTA             VAR BYTE
      Temp              var byte
      MEM               var byte

      DS_OKU VAR BYTE : DS_OKU = %11010000
      DS_YAZ VAR BYTE : DS_YAZ = %11010001
      
      ZAMAN_REG         VAR BYTE : ZAMAN_REG= $00
      
      i                 var byte
      i1                var byte
      i2                var byte
      ZAMAN             var byte[7]
      KAYDIR            var byte
      UST_BIT           var byte
      ALT_BIT           var byte

      'TempRegister CON $11                   'temperature integer  REGISTER
      TempRegisterFRA   CON $12               'temperature fraction REGISTER
      TempRegister      var byte              'variable to hold DS3231 register address to read/write      
      
      TempInt           var byte              'Variable for temperature integer from register 11h
      TempFrac          var byte              'Variable for temperature fraction for register 12h
      TempSign          var bit               'Variable to hold sign bit   

'/////////////////////---------Genel değişkenler-------/////////////////////////
'/////////////////////---------------------------------///////////////////////// 
      
      Gelen             var byte[25]
      Uart_Kesme        var byte
      Hesap             var word
      Sph               var word 
      TSayac            var word
      KSayac            var word
      SKasa             var word
      GeriDelik         var word
      OfSet             var word
      Isaret            var Byte
      Mode              var byte
      Gecikme           var word      '
      SaatBasi          var Bit       'SaatBasi bir kez gerideli girmek için değişken
      BekLe             var word      'pauseus için                                                                                         
      
'/////////////////////-------------Başlangıç-----------///////////////////////// 
'/////////////////////---------------------------------/////////////////////////       
      'write 5, 0
      I2CWRITE  SDA, SCL, chip1,[GPIOA,0]
      gosub McpKur
      read 1, Sph.HIGHbyte
      read 2, Sph.lowbyte 
      read 3, SKasa.highbyte
      Read 4, SKasa.lowbyte
      Read 5, Mode
      
      OfSet             = 0
      GeriDelik         = 0
      TSayac            = 0
      Ksayac            = 0
      'SKasa             = 200
      Isaret            = "+"
      SaatBasi          = 0 
'/////////////////////---------------------------------///////////////////////// 
'/////////////////////---------------------------------/////////////////////////         
      for i = 0 to 67
      veri1[i]=255
      next i
      sira = 0
      cikis = 0
basla:
bekle = bekle + 1
if bekle >= 1000 then
gosub Zaman_oku
bekle = 0 
'///////////////////////////////////////////////////////////////////////////////
'//////////////////--------1.Satır---------/////////////////////////////////////
    P10X=12
    ekran = Saat dig 1
    gosub P10_Gnc
    P10X=8
    ekran = Saat dig 0
    gosub P10_Gnc
    P10X=4
    ekran = Dak dig 1
    gosub P10_Gnc                                     
    P10X=0                                           
    ekran = Dak dig 0
    gosub P10_Gnc   

    for tr4 = 0 to 7
    Tr1 = 0
    Tr2 =2
    lookup Tr4,[13,29,45,61,14,30,46,62], Tr3 
    for Tr1 = Tr3 to (Tr3 - 12) step - 4           
    Hsb1 = 255 - (( Dcd Tr2 ) - 1 )
    veri1[Tr1] =  ((veri1[Tr1] << (Tr2-2) ) & Hsb1) | (veri1[Tr1 - 4] >> (8-Tr2))
    Tr2 = Tr2 + 2
    next tr1
    veri1[Tr3-12]  =  255
    Next Tr4
                                         
    P10X=0                                            
    ekran = Sn dig 0
    gosub P10_Gnc  

'///////////////////////////////////////////////////////////////////////////////
'//////////////////--------2.Satır---------/////////////////////////////////////

    P10X=14
    ekran = "A"
    gosub P10_Gnc
    P10X=10
    ekran = "R"
    gosub P10_Gnc
    P10X=6
    ekran = "C"
    gosub P10_Gnc                                     
    P10X=2                                           
    ekran = "I"
    gosub P10_Gnc   

    for tr4 = 0 to 7
    Tr1 = 0
    Tr2 =2
    lookup Tr4,[15,31,47,63,16,32,48,64], Tr3 
    for Tr1 = Tr3 to (Tr3 - 12) step - 4           
    Hsb1 = 255 - (( Dcd Tr2 ) - 1 )
    veri1[Tr1] =  ((veri1[Tr1] << (Tr2-2) ) & Hsb1) | (veri1[Tr1 - 4] >> (8-Tr2))
    Tr2 = Tr2 + 2
    next tr1
    veri1[Tr3-12]  =  255
    Next Tr4
                                         
    P10X=2                                            
    ekran = cikis dig 0
    gosub P10_Gnc  
    
     
   
    for Tr1 = 0 to 68
        Panel[Tr1] = veri1[Tr1]
    next Tr1 
endif                                                   
                                                        
                                                        
pauseus 100            
      goto basla

'//////////////////////-----------Mcp-Kurulum----------/////////////////////////
'/////////////////////---------------------------------/////////////////////////
McpKur:
      I2CWRITE SDA, SCL, chip1,[IOGCA,Aport]    'A7 giriş olarak ayarlandı
      I2CWRITE SDA, SCL, chip1,[IOPOLA,0]       'Polarite Ayarlandı Ters çevrilmemiş
      I2CWRITE SDA, SCL, chip1,[IntEnA,0]     'Kesme İzin Verilmedi
      I2CWRITE SDA, SCL, chip1,[DEFVALA,0]      'Kesme İzin Verildi.terslenmedi
      I2CWRITE SDA, SCL, chip1,[INTCONA,0]      'Kesme İzin Verildi.önceki durumuna göre
      I2CWRITE SDA, SCL, chip1,[IOCONA,%01011100]'01011000]      'Kesme İzin Verildi.önceki durumuna göre
      I2CWRITE SDA, SCL, chip1,[GPPUA,0]      'pRTa.7 PULLU U P AKTİF
      I2CWRITE SDA, SCL, chip1,[INTFA,0]      'kESME bAYRAK
      I2CWRITE SDA, SCL, chip1,[INTCAPA,0]      '?
      'I2CWRITE SDA, SCL, chip1,[GPIOA,0]      'PORT OKUMA
      
      I2CWRITE SDA, SCL, chip1,[IOGCB,Bport]    'A7 giriş olarak ayarlandı
      I2CWRITE SDA, SCL, chip1,[IOPOLB,255]       'Polarite Ayarlandı Ters çevrilmemiş
      I2CWRITE SDA, SCL, chip1,[IntEnB,255]     'Kesme İzin Verildi
      I2CWRITE SDA, SCL, chip1,[DEFVALB,0]      'Kesme İzin Verildi.terslenmedi
      I2CWRITE SDA, SCL, chip1,[INTCONB,0]      'Kesme İzin Verildi.önceki durumuna göre
      I2CWRITE SDA, SCL, chip1,[IOCONB,%01011100]      'Kesme İzin Verildi.önceki durumuna göre
      I2CWRITE SDA, SCL, chip1,[GPPUB,255]      'PULLU UP Aktif
      I2CWRITE SDA, SCL, chip1,[INTFB,0]      'kESME bAYRAK
      I2CWRITE SDA, SCL, chip1,[INTCAPB,0]      '?
      'I2CWRITE SDA, SCL, chip1,[GPIOA,0]      'PORT OKUMA
      return

'////////////////////////------------------------///////////////////////////////
'////////////////////////------------------------///////////////////////////////
;---------------------------------ZAMAN OKU-------------------------------------
ZAMAN_OKU:

    i2cread SDA,SCL,DS_OKU,ZAMAN_REG,[ZAMAN[0],ZAMAN[1],ZAMAN[2],ZAMAN[3],ZAMAN[4],ZAMAN[5],ZAMAN[6]]
    
    GOSUB BCD_To_Decimal
    
    sn   =ZAMAN[0]
    DAK  =ZAMAN[1]
    SAAT =ZAMAN[2]
    HAFTA=ZAMAN[3]
    GUN  =ZAMAN[4]
    AY   =ZAMAN[5]
    YIL  =ZAMAN[6]
    Hesap = 36000/Sph
    Ofset = (((saat*360 + dak*6) *10)+ sn ) * 10
    Ofset = div32 Hesap 
     
return

;---------------------------------SENSOR OKU------------------------------------
SENSOR_OKU:

       TempRegister = $11      ' DS3231 Temperature REgister High Byte (Integer portion)     
       I2Cread SDA,SCL, DS_OKU, TempRegister, [TempInt, TempFrac]
       
       TempFrac = (TempFrac >> 6)   ' Shift <b7:b6> to <b1:b0>
       TempFrac = (TempFrac * 25)   ' Fractional portion is in .25 increments. Increment values are 0-3 (.00, .25, .50, .75)
       
       TempSign = TempInt.7   ' save the sign bit for later

       '''If TempSign = 1 then  TempInt = (TempInt XOR $FF) + 1     'Do not use this, the DS3231 uses simple <b7> sign with <b6:b0> as absolute temperature value
    
RETURN 

;---------------------------------ZAMAN YAZ-------------------------------------
ZAMAN_YAZ:

    ZAMAN[0]=0      ' saniye
    ZAMAN[1]=DAK     ' dakika
    ZAMAN[2]=SAAT    ' saat
    ZAMAN[3]=hafta   ' haftanin gunu
    ZAMAN[4]=gun     ' Gün
    ZAMAN[5]=ay      ' ay
    ZAMAN[6]=yil     ' Yil
    
    GOSUB Decimal_To_BCD

    i2cwrite SDA,SCL,DS_YAZ,ZAMAN_REG,[ZAMAN[0],ZAMAN[1],ZAMAN[2],ZAMAN[3],ZAMAN[4],ZAMAN[5],ZAMAN[6],$10]

return  

'******************************DECIMAL TO Binary Coded Decimal******************
DECIMAL_TO_BCD:
;Decimal Taban :  9    1
;Binary  Taban : 1001 0001

    for i=0 to 6
        ZAMAN[i] = ((ZAMAN[i] dig 1) << 4 ) + ZAMAN[i] dig 0
    next i

RETURN
'**************************BCD TO DECIMAL SYSTEM********************************
BCD_TO_DECIMAL:

    for i=0 to 6
        ZAMAN[i]   = ((ZAMAN[i] >> 4) *10) + (ZAMAN[i] & %00001111)
    next i

RETURN 
    

      
'/////////////////////--------P10 Guncelle--------------//////////////////////// 
'/////////////////////---------------------------------/////////////////////////        
P10_Gnc:

      gosub Kkrt
      
return

'/////////////////////////---------Kaydir---------//////////////////////////////
'////////////////////////------------------------///////////////////////////////
DegerKaydir:

Return
'/////////////////////////------Büyük Rakam------///////////////////////////////
'////////////////////////------------------------///////////////////////////////
BKrk:           '$66,$66,$66,$7e,$66,$66,$3c,$00
    tara = (Ekran dig 0 ) * 8
    P10X = P10X + 5
    for Tr1 = 0 to 7
    LOOKUP tara, [135,51,3,51,51,3,51,135,_
                 207,207,15,207,15,3,207,3,_
                 135,159,3,63,51,3,231,3,_
                 135,231,3,51,51,3,231,135,_
                 231,3,199,3,167,231,103,231,_
                 3,3,3,243,63,3,3,7,_
                 135,3,3,51,63,3,7,135,_
                 3,207,3,207,243,207,231,207,_
                 135,51,3,51,51,3,135,135,_
                 135,243,3,231,51,207,131,159],Tr2
                 
    Select Case  Tr1
        case 0
        veri1[P10X] = Tr2
        case 1
        veri1[P10X+1]    =Tr2    
        case 2
        veri1[P10X+16]   =Tr2     
        case 3
        veri1[P10X+17]   =Tr2    
        case 4
        veri1[P10X+32]   =Tr2    
        case 5
        veri1[P10X+33]   =Tr2      
        case 6
        veri1[P10X+48]   =Tr2    
        case 7
        veri1[P10X+49]   =Tr2
    End Select
    
    next Tr1 
return

'///////////////////////////////////////////////////////////////
'//////////////////---------Küçük Karekterler------//////////////////////////
Kkrt:
    P10X =P10X + 1
    if Ekran < 10 then tara = Ekran * 8
    if Ekran > 10 then  tara = (Ekran-65) * 8
    
    
    for Tr1 = 0 to 7
    if Ekran < 10 then
    LOOKUP tara, [227, 221, 217, 213, 205, 221, 227, 255,_
                   247, 231, 247, 247, 247, 247, 227, 255,_
                   227, 221, 253, 251, 247, 239, 193, 255,_
                   193, 251, 247, 251, 253, 221, 227, 255,_
                   251, 243, 235, 219, 193, 251, 251, 255,_
                   193, 223, 195, 253, 253, 221, 227, 255,_
                   243, 239, 223, 195, 221, 221, 227, 255,_
                   193, 253, 251, 247, 239, 239, 239, 255,_
                   227, 221, 221, 227, 221, 221, 227, 255,_
                   227, 221, 221, 225, 253, 251, 231, 255],Tr2
    else
    LOOKUP tara, [227, 221, 221, 193, 221, 221, 221, 255,_    'A
                   195, 221, 221, 195, 221, 221, 195, 255,_
                   227, 221, 223, 223, 223, 221, 227, 255,_
                   199, 219, 221, 221, 221, 219, 199, 255,_
                   193, 223, 223, 195, 223, 223, 193, 255,_     'E
                   193, 223, 223, 195, 223, 223, 223, 255,_
                   227, 221, 223, 209, 221, 221, 225, 255,_
                   221, 221, 221, 193, 221, 221, 221, 255,_
                   227, 247, 247, 247, 247, 247, 227, 255,_
                   241, 251, 251, 251, 251, 219, 231, 255,_
                   221, 219, 215, 207, 215, 219, 221, 255,_     'K
                   223, 223, 223, 223, 223, 223, 193, 255,_
                   221, 201, 213, 213, 221, 221, 221, 255,_
                   221, 221, 205, 213, 217, 221, 221, 255,_
                   227, 221, 221, 221, 221, 221, 227, 255,_
                   227, 221, 221, 195, 223, 223, 223, 255,_     'P
                   227, 221, 221, 221, 213, 219, 229, 255,_
                   227, 221, 221, 195, 215, 219, 221, 255,_
                   225, 223, 223, 227, 253, 253, 195, 255,_
                   193, 247, 247, 247, 247, 247, 247, 255,_
                   221, 221, 221, 221, 221, 221, 227, 255,_
                   221, 221, 221, 221, 221, 235, 247, 255,_
                   221, 221, 221, 213, 213, 213, 235, 255,_
                   221, 221, 235, 247, 235, 221, 221, 255,_
                   221, 221, 235, 247, 247, 247, 247, 255,_
                   193, 253, 251, 247, 239, 223, 193, 255,_
                   255],Tr2
    endif                   
                 Tr2 = ( Tr2 << 2 )| %00000011

    Select Case  Tr1
        case 0
        veri1[P10X]      = Tr2
        case 1
        veri1[P10X+16]   = Tr2    
        case 2
        veri1[P10X+32]   = Tr2     
        case 3
        veri1[P10X+48]   = Tr2    
        case 4
        veri1[P10X+1]   = Tr2    
        case 5
        veri1[P10X+17]   = Tr2      
        case 6
        veri1[P10X+33]   = Tr2    
        case 7
        veri1[P10X+49]   = Tr2
    End Select
    
    tara = tara + 1
    next Tr1 
return          
                          
Eksi:
    veri1[P10X]      =255    
    veri1[P10X+1]    =15    
    veri1[P10X+16]   =255     
    veri1[P10X+17]   =255    
    veri1[P10X+32]   =255    
    veri1[P10X+33]   =255      
    veri1[P10X+48]   =15    
    veri1[P10X+49]   =255
    return
    
Sil:
    veri1[P10X]      =255    
    veri1[P10X+1]    =255    
    veri1[P10X+16]   =255     
    veri1[P10X+17]   =255    
    veri1[P10X+32]   =255    
    veri1[P10X+33]   =255      
    veri1[P10X+48]   =255    
    veri1[P10X+49]   =255
    return
    
'/////////////////////-----------Kesme Program---------/////////////////////////
'/////////////////////---------------------------------/////////////////////////   
DISABLE
Kesme:
      GIE=0
      if RCIF    = 1 then 
                 hserin 1,Katla,[wait ("Rci")]
                 hserin 1,Uar,[str gelen\20]
Uar:
                 Uart_Kesme = 1
                 goto Katla
      endif
      if TMRF = 1 then
      if secab = 0 then
          for Sutunx = 32 to 1 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: low sa: low sb: High en: low en: high oe
          endif
      if secab = 1 then
          for Sutunx = 32 to 17 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: high sa: low sb: High en: low en: high oe
          endif
      if secab = 2 then
          for Sutunx = 48 to 33 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: low sa: high sb: High en: low en: high oe
          endif
      if secab = 3 then
          for Sutunx = 64 to 49 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: high sa: high sb: High en: low en: high oe
          endif
      
      secab = secab + 1: if secab >=4 then secab = 0
      tmrf = 0
      goto Katla
      endif
                 
      if RB0     = 1 then i2cread  SDA,SCL, chip1,GPIOB,[giris]': hserout ["Giris: %",bin8 giris,13]

Katla:
      Temp       = Portb.0
      GIE        = 0
      RB0        = 0
      'hserout    ["Kesme... > ",str gelen\20,"Bitti...",13]
      RCIF       = 0
      GIE        = 1
      Resume
enable
'///////////////////////////////////////////////////////////////////////////////

Yardımın için teşekkür ederim arci. Benim takıldığım hala hangi byte hangi alanda bulunuyor bulamadım farklı şeyler oluyor panelde.
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

gogoce

#19
paneli

A[0] B[0] C[0] D[0]
A[1] B[1] C[1] D[1]
A[2] B[2] C[2] D[2]
A[3] B[3] C[3] D[3]

Şeklinde byte lara ayardım (yada ayırabildiğimi sanıyorum)

BASLA:
A[0]=%11111111
A[1]=%11111111
A[2]=%11111111
A[3]=%00000000
b[0]=%11111111
b[1]=%11111111
b[2]=%11111111
b[3]=%11111111
C[0]=%11111111
C[1]=%11111111
C[2]=%11111111
C[3]=%11111111
D[0]=%11111111
D[1]=%11111111
D[2]=%11111111
D[3]=%11111111
GOSUB TARA
GOTO BASLA

TARA:  x=0
        for x=3 to 0 step -1
        SHIFTOUT dta,clk,1,[A[x]]
        p10_a=0:p10_b=0 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        x=0
        for x=3 to 0 step -1
        SHIFTOUT dta,clk,1,[B[x]]
        p10_a=1:p10_b=0 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        x=0
        for x=3 to 0 step -1
        SHIFTOUT dta,clk,1,[C[x]]
        p10_a=0:p10_b=1 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        x=0
        for x=3 to 0 step -1
        SHIFTOUT dta,clk,1,[D[x]]
        p10_a=1:p10_b=1 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        OE=1
        PAUSEus 800
        OE=0
    return

şeklinde yüklediğimde
bu şekilde bir görüntü oluyor

Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

gogoce

BASLA:
A[0]=%00000000
A[1]=%00000000
A[2]=%00000000
A[3]=%00000000
b[0]=%11111111
b[1]=%11111111
b[2]=%11111111
b[3]=%11111111
C[0]=%11111111
C[1]=%11111111
C[2]=%11111111
C[3]=%11111111
D[0]=%11111111
D[1]=%11111111
D[2]=%11111111
D[3]=%11111111
GOSUB TARA
GOTO BASLA

TARA:  x=0
        for x=3 to 0 step -1
        SHIFTOUT dta,clk,1,[A[x]]
        p10_a=0:p10_b=0 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        x=0
        for x=3 to 0 step -1
        SHIFTOUT dta,clk,1,[B[x]]
        p10_a=1:p10_b=0 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        x=0
        for x=3 to 0 step -1
        SHIFTOUT dta,clk,1,[C[x]]
        p10_a=0:p10_b=1 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        x=0
        for x=3 to 0 step -1
        SHIFTOUT dta,clk,1,[D[x]]
        p10_a=1:p10_b=1 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        OE=1
        PAUSEus 800
        OE=0
    return

ara satırlara neden veri gönderemiyorum :(

Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

aRci

aslında P10 16 satırdan oluşuyor ve bunlar 4 erli gruplara ayrılıyor paylaştığın resimdeki görünü yukarıdan assağı 3. gruba tahminim a0 0 b= 0 na ait.
siz her seferinde sadece 4 bayt veri gönderiyorsunuz her grup için aslında 16 byte veri göndermelisiniz. ve bunu her satır grubu için ayrı yapmalısınız. ayrıca gruba veri gönderip çıkışları sürdükten sonra diğer gruba veri göndermeden önce kısa bir süre bekletmeniz lazım aksi halde ledler sürülse dahi hemen ardından kapatıldıkları ve diğer gruba geçilmelerinden dolayı ledler yanmıyor olabilir.
ben timer ile 5ms aralıklarla kesmeye gelip satırları yeniliyorum. bu nun sayesinde kırpmada olmuyor.

aRci

resim eklemeyi unutmuştum.





gogoce

Alıntı yapılan: aRci - 07 Mart 2021, 15:58:16aslında P10 16 satırdan oluşuyor ve bunlar 4 erli gruplara ayrılıyor paylaştığın resimdeki görünü yukarıdan assağı 3. gruba tahminim a0 0 b= 0 na ait.
siz her seferinde sadece 4 bayt veri gönderiyorsunuz her grup için aslında 16 byte veri göndermelisiniz. ve bunu her satır grubu için ayrı yapmalısınız. ayrıca gruba veri gönderip çıkışları sürdükten sonra diğer gruba veri göndermeden önce kısa bir süre bekletmeniz lazım aksi halde ledler sürülse dahi hemen ardından kapatıldıkları ve diğer gruba geçilmelerinden dolayı ledler yanmıyor olabilir.
ben timer ile 5ms aralıklarla kesmeye gelip satırları yeniliyorum. bu nun sayesinde kırpmada olmuyor.
tarama kısmında mı hata yapıyorum
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

aRci

evet 4 grup halinde 16 byte göndermelisin. yani for x = 15 to 1 step - 1 olarak değiştirmelisin

for x=15 to 0 step -1
        SHIFTOUT dta,clk,1,[A[x]]
        p10_a=0:p10_b=0 
        next x

gogoce

Alıntı yapılan: aRci - 07 Mart 2021, 17:25:23evet 4 grup halinde 16 byte göndermelisin. yani for x = 15 to 1 step - 1 olarak değiştirmelisin

for x=15 to 0 step -1
        SHIFTOUT dta,clk,1,[A[x]]
        p10_a=0:p10_b=0 
        next x
benim programda da A[16] , B[16] C[16] D[16]olması mı gerekiyor?
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

aRci

evet ben aslında ben 64 byte dizi oluşturdum ve sirası ile 16 şar byte gönderdim her biri ayrı satır grubu nu çalıştırıyor senin yaptığın gibi sırası ile değerleri aktarıyorum örnek paylaştığım kodu inceleyebilirsin.
      if secab = 0 then
          for Sutunx = 32 to 1 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: low sa: low sb: High en: low en: high oe
          endif
      if secab = 1 then
          for Sutunx = 32 to 17 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: high sa: low sb: High en: low en: high oe
          endif
      if secab = 2 then
          for Sutunx = 48 to 33 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: low sa: high sb: High en: low en: high oe
          endif
      if secab = 3 then
          for Sutunx = 64 to 49 step -1
          shiftout   dat, clk,1,[Panel[Sutunx]]'[255,255,207,207,255,255,255,255,255,255,255,255,255,255,255,255]
          next Sutunx
          Low Oe: high sa: high sb: High en: low en: high oe
          endif
      
      secab = secab + 1: if secab >=4 then secab = 0

aRci

düzeltme ilk for dögüsünde
for Sutunx = 32 to 1 step -1
olan kısım "for Sutunx = 16 to 1 step -1" olacak

gogoce

Alıntı yapılan: aRci - 07 Mart 2021, 17:55:12düzeltme ilk for dögüsünde
for Sutunx = 32 to 1 step -1
olan kısım "for Sutunx = 16 to 1 step -1" olacak

FOR X=16 TO 0 STEP -1
A[X]=255
B[X]=255
B[X]=255
B[X]=255
NEXT X
BASLA:
GOSUB TARA
GOTO BASLA

TARA:   x=0
        for x=16 to 0 step -1
        SHIFTOUT dta,clk,1,[A[x]]
        p10_a=0:p10_b=0 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        OE=1
        PAUSEus 800
        OE=0
;_______________________________________________________________________________ 
        x=0
        for x=16 to 0 step -1
        SHIFTOUT dta,clk,1,[B[x]]
        p10_a=1:p10_b=0 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        OE=1
        PAUSEus 800
        OE=0
;_______________________________________________________________________________
        x=0
        for x=16 to 0 step -1
        SHIFTOUT dta,clk,1,[C[x]]
        p10_a=0:p10_b=1 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        PAUSE 1
        OE=1
        PAUSEus 800
        OE=0
;_______________________________________________________________________________
        x=0
        for x=16 to 0 step -1
        SHIFTOUT dta,clk,1,[D[x]]
        p10_a=1:p10_b=1 
        next x
        LATCH=1
        PAUSE 1
        LATCH=0
        OE=1
        PAUSEus 800
        OE=0
;_______________________________________________________________________________
    return

Şeklinde yaptım tüm byte lara 255 yükledim gönderdim fakat şu anda
3-7-11-15. satırlar aktif - var
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

aRci

örnek olarak bunu deneye bilirsin

Say adındaki değişkeni yansıtıyor.

A var byte [16]
B var byte [16]
C var byte [16]
D var byte [16]
X var byte
Say var byte
Tra   var word

FOR X=15 TO 0 STEP -1
A[X]=255
B[X]=255
c[X]=255
d[X]=255
NEXT X
Say = 0
BASLA:
A[15] = 255- Say
B[15] = 255- Say
C[15] = 255- Say
D[15] = 255- Say

A[3] = 255- Say

FOR Tra = 0 to 60
GOSUB TARA
next Tra
Say = Say + 1
GOTO BASLA

TARA:   
        for x = 0 to 15
        SHIFTOUT  dta,clk,1,[A[x]]
        next x
        p10_a=0:p10_b=0
        LATCH=1:LATCH=0:OE=0
        OE=1
        Pause 2
        for x = 0 to 15
        SHIFTOUT  dta,clk,1,[B[x]]
        next x
        p10_a=0:p10_b=1
        LATCH=1:LATCH=0:OE=0
        OE=1
        Pause 2
        for x = 0 to 15
        SHIFTOUT  dta,clk,1,[C[x]]
        next x
        p10_a=1:p10_b=0
        LATCH=1:LATCH=0:OE=0
        OE=1
        Pause 2
        for x = 0 to 15
        SHIFTOUT  dta,clk,1,[D[x]]
        next x
        p10_a=1:p10_b=1
        LATCH=1:LATCH=0:OE=0
        OE=1
        Pause 2
        
        

    return

Powered by EzPortal