Protonda LCD'li Takvim

Başlatan Efecan, 24 Mart 2014, 23:46:00

Efecan

Merhabalar protonda takvim yazılımını nasıl yazabilirim acaba yardımcı olur musunuz ?

mustafa_cmbz

takvim yazılımı derken neyi kast ediyorsun hocam?

* ekrana takvim ile ilgili karakterleri nasıl basarım mı  yoksa takvime dair ay yıl gün bilgilerini nasıl oluşturur arttırır ve devamlılığını sağlarım diye mi düşünüyorsun ?

şayet takvim bilgilerini sağlayacak birşey yapmaksa planın hiç uğraşma ds1307 kullan


Efecan

hocam elimde 2x16 lcd var bu lcd de saat tarih ve sıcaklık göstergesi kullanıcam sıcaklık ve saati kurdum protonda yazdım calısıyor bı de buna tarih eklıcem 12.04.2014 gibi mesela saatle baglantılı olarak tabı aktıf olarak calısacak

mustafa_cmbz

saati nasıl kurdun?

bir önceki mesahımda ds1307 den bahsetmiştim.Bir incele istersen.

Efecan

#4
programı bastan sona biz yazdık hocam mesela saat ılerliyor gereklı kodu yazdık saat 23.59.59 olduktan sonra tarıhın gunu bı atıyor mesela saat 23.59.59 oldugunda tarih 31.12.2014 oldugunda saat bı sanıye sonra 0 lanıyor tarih 01.01.2015 oluyor ama ay ıcın bı buton yaptıgımda o butona bastıgımda ay sureklı ılerlıyor 12 den sonra 01 olmuyor sımdı o sorunla  karsılastım

mesaj birleştirme:: 27 Mart 2014, 07:15:57

Device 16F84A
XTAL 4

TRISA=%00001100
TRISB=%00000111
         

Declare LCD_LINES 2
Declare LCD_INTERFACE 4
Declare LCD_DTPIN PORTB.4
Declare LCD_RSPIN PORTA.0
Declare LCD_ENPIN PORTA.1

Dim saat As Byte
Dim dakika As Byte
Dim saniye As Byte
Dim yil As Word
Dim gun As Byte
Dim ay As Byte

saat=0
dakika=0
saniye=0
gun=26
yil=2014
ay=3
 
Symbol  DQ = PORTB.0     
Dim  Temp  As   Word        
Dim a As Word
Dim grad As Word
Dim  C  As   Word          
Dim  CPerD  As   Word           
Cls             
a=2000

dongu:
Print At 1,11, "|"
Print At 2,11, "|"
Print At 1,1, DEC2 saat,":",DEC2 dakika,":",DEC2 saniye
Print At 2,1, DEC2 gun,".",DEC2 ay,".",Dec yil


If saniye=60 Then
GoTo furkan3
ElseIf dakika=60 Then 
GoTo furkan4
ElseIf saat=24 Then
GoTo furkan9
ElseIf PORTB.2=0 Then
GoTo furkan
ElseIf PORTB.1=0 Then
GoTo furkan2
ElseIf PORTA.2=0 Then
GoTo furkan10
ElseIf PORTA.3=0 Then
GoTo furkan11
EndIf
saniye=saniye+1 
DelayMS 200 



  
OWrite  DQ, 1, [$CC, $44]    
Repeat 
DelayMS  25        
ORead  DQ, 4, [C]       
Until  C <> 0         
OWrite  DQ, 1, [$CC, $BE]   
ORead  DQ, 2,[Temp.LowByte,Temp.HighByte,C,C,C,C,C,CPerD]  
Temp = (((Temp >> 1) * 100) - 25) + (((CPerD - C) * 100) / CPerD) 
Temp = Temp/8

Print At 1,12, Dec Temp/100,".", DEC2 a," ", At 2,13,0,"C" 
Print $FE,$40,$07,$05,$07,$00,$00,$00,$00,$00  


GoTo dongu  

furkan4:
dakika=0
saat=saat+1
GoTo dongu

furkan3:
saniye=0
dakika=dakika+1

GoTo dongu

furkan:
saat=saat+1
PORTB.2=1

If saat=24 Then
saat=0
EndIf
DelayMS 300
GoTo dongu

furkan2:
dakika=dakika+1
PORTB.1=1

If dakika=60 Then
dakika=0
EndIf
DelayMS 100
GoTo dongu

furkan9:
 
saat=0 
gun=gun+1
DelayMS 100
If gun>=31 Then
ay=ay+1
EndIf
DelayMS 100
If ay>=12 And gun=32 Then
gun=1
ay=1
yil=yil+1
ElseIf gun=32 And ay=13 Then
gun=0
ay=0
EndIf
DelayMS 100
GoTo dongu

furkan10:
gun=gun+1
DelayMS 100
If gun>=32 Then
gun=0
EndIf
GoTo dongu

furkan11:
ay=ay+1
If ay>=13 And gun=31 Then
ay=0
yil=yil+1
EndIf
DelayMS 100
GoTo dongu

GoTo dongu



End



kod bu sekılde hocam incelersiniz belki

mesaj birleştirme:: 26 Mart 2014, 17:20:19




mustafa_cmbz

hani programdaki kesmelerin nerede ? bu yaptığın saat ne kadar hassas çalışacak ?

Sana ısrar ile ds1307 yi tavsiye ediyorum ama nedense ısrarla elindeki kodun bu işe yarıyacağını söylüyorsun takıldığın yerden bahsediyorsun..


Neden ds1307 yi araştırmıyorsun ?

Ds1307 nin ne iş yaptığını bahsettiğin sıkıntı için birebir çözüm olacağını hiç araştırdın mı ?


Efecan

#6
hocam ds1307 ye baktım bı tane devre tasarladım yaptım benım elımde olan yazılımı ds1307 ile tasarladıgım 16f84a entegresının ıcıne attım lcd de göstermiyor ama baska bı bolum cıkıyor orada bugunun tarıhı saatı ve dakıkasını gösteriyor ds1307yi lcd ye yada protonda tanıtmamız gerekiyor mu ?

Efecan




Device 16F84A
XTAL 4

TRISA=%00001100
TRISB=%00000111
         

Declare LCD_LINES 2
Declare LCD_INTERFACE 4
Declare LCD_DTPIN PORTB.4
Declare LCD_RSPIN PORTA.0
Declare LCD_ENPIN PORTA.1


Symbol  DQ = PORTB.0     
Dim  Temp  As   Word        
Dim a As Word
Dim grad As Word
Dim  C  As   Word          
Dim  CPerD  As   Word           
Cls             
a=2000

dongu:
Print At 1,11, "|"
Print At 2,11, "|"

OWrite  DQ, 1, [$CC, $44]    
Repeat 
DelayMS  25        
ORead  DQ, 4, [C]       
Until  C <> 0         
OWrite  DQ, 1, [$CC, $BE]   
ORead  DQ, 2,[Temp.LowByte,Temp.HighByte,C,C,C,C,C,CPerD]  
Temp = (((Temp >> 1) * 100) - 25) + (((CPerD - C) * 100) / CPerD) 
Temp = Temp/8
Print At 1,12, Dec Temp/100,".", DEC2 a," ", At 2,13,0,"C" 
Print $FE,$40,$07,$05,$07,$00,$00,$00,$00,$00  


GoTo dongu  
End




hocam su an elimdeki kod bu sekılde oldu sıcaklık degerını gosterıyo tasarımı bu sekılde yaptım yarıh ve saati nasıl yapabılırım ılk kez ds 1307 kullanıyorum protona nasıl okutabılırım bılmıyorum ?