Alarm Saat Devre Şeması

'Elektronik Genel Bilgi' forumunda SeLeN tarafından 10 Ağustos 2010 tarihinde açılan konu

  1. SeLeN

    SeLeN Site Yetkilisi Editör

    Sponsorlu Bağlantılar
    Alarm Saat Devre Şeması konusu Alarm Saat Devresi - Alarm Saat Devre Şeması - picbasic pro - pic16f877 - pcf8583



    [​IMG]

    Saatin kurulması için: SET tuşuna basın. Köşeli parantez içini 00 da bırakıp MOD tuşu ile saat ayarına atlayın.Saati ayarladıktan sonra MOD tuşu ile dakika ve sırası ile Ay-Gün ve Yıl ayarlarını yapın. Sonunda SET tuşuna basıp ayar modundan çıkın.

    Dikkat: [00] modu saat ayarı içindir. [01] ile [10] arası modlar alarmların SET edilmesi içindir.

    Açma Alarmlarının Kululması: SET Tuşuna basın. Parantez içini 1. alarm için 1, 10. alarm için 10`a ayarlayın. MOD tuşu ile Saat, Dakika, Gün, Ay, Yıl ayarlarını yapıp SET tuşu ile Kayıt edin.

    Kapatma Alamlarının Ayarlanması: SET Tuşuna basın. Parantez içini 1. alarmın kapatılması için 11`e 10. alarmın kapatılması için 20`ye getirin. MOD tuşu ile Saat, Dakika, Gün, Ay, Yıl ayarlarını yapıp SET tuşu ile kayıt edin

    Alarmların Tek Tuşla İptal Edilmesi: Açılmış alarm var ise normal saat ekranında, Arttır ya da azalt tuşlarından birine basılması açık olan alarmları kapatır.

    Alarm Saat Uygulamasına ait picbasic pro ve proteus isis dosyaları:
    Burada

    Alarm Saat isis devre şeması

    [​IMG]

    ALRM-SAAT.bas yazılım içeriği


    Kod:
    '****************************************************************
    '*  Name    : ALARM-SAAT.BAS                                    *
    '*  Author  : [ETE]                                             *
    '*  Notice  : Copyright (c) 2005 [ETE]                          *
    '*          : All Rights Reserved                               *
    '*  Date    : 11.05.2005                                        *
    '*  Version : 1.0                                               *
    '*  Notes   :                                                   *
    '*          :                                                   *
    '****************************************************************
    'INCLUDE "modedefs.bas"
    @ DEVICE pic16F877 'işlemci 16F877
    @ DEVICE pic16F877, WDT_on 'Watch Dog timer AÇIK
    @ DEVICE pic16F877, PWRT_ON 'Power on timer açık
    @ DEVICE pic16F877, PROTECT_OFF 'Kod KORUMA kapalı
    @ DEVICE pic16F877, HS_OSC 'HS osilatör kullanılacak
    '------------------------------------------------------------------------------
    DEFINE LCD_DREG PORTB  'LCD data bacakları hangi porta bağlı?
    DEFINE LCD_DBIT 4  'LCD data bacakları hangi bitten başlıyor?
    DEFINE LCD_EREG PORTB 'LCD Enable Bacağı Hangi Porta bağlı?
    DEFINE LCD_EBIT 3 'LCD Enable Bacağı Hangi bite bağlı ?
    DEFINE LCD_RSREG PORTB 'LCD RS Bacağı Hangi Porta bağlı ?
    DEFINE LCD_RSBIT 2 'LCD RS bacağı Hangi Bite bağlı ?
    DEFINE LCD_BITS 4 'LCD 4 bit mi yoksa 8 bit olarak bağlı?
    DEFINE LCD_LINES 2 'LCD Kaç sıra yazabiliyor
    '------------------------------------------------------------------------------
    Define osc 10
    ADCON1=7 'ADC GİRİŞLERİ DİGİTAL
    OPTION_REG.7=1 'Dahili pull-up lar iptal edildi
    PortA=0
    TrisA=%00101111
    PortB=0
    TrisB=%00000010
    PORTD=0
    TRISD=0
    PORTC=0
    TRISC=0
    '------------------------------------------------------------------------------
    SYMBOL SET=PORTA.0
    SYMBOL MODE=PORTA.1
    SYMBOL DOWN=PORTA.2
    SYMBOL UP=PORTA.3
    Symbol SCL=PORTB.0
    SYMBOL SDA=PORTB.1
    SYMBOL ISIK=PORTC.0
    symbol BUZER=PORTC.1
    SIMDI  VAR  WORD
    ZAMAN  VAR  WORD
    SN     var  byte
    Y_SN   VAR  BYTE
    DAK    var  byte
    Y_DAK  VAR  BYTE
    ESKIDAK VAR BYTE
    SAAT   var  byte
    Y_SAAT VAR  BYTE
    GUN    VAR  BYTE
    Y_GUN  VAR  BYTE
    HGUN   VAR  BYTE 'HAFTANIN GÜNÜ
    Y_HGUN var  byte
    AY     var  byte
    Y_AY   VAR  BYTE
    YIL    var  BYTE
    Y_YIL  VAR  BYTE
    ESKYIL VAR  BYTE
    TAMYIL var  BYTE
    TEMP   VAR  BYTE
    ARA    VAR  BYTE
    ONLAR  VAR  BYTE
    BIRLER VAR  BYTE
    SURE   VAR  BYTE
    SIRA   VAR  BYTE
    YER    VAR  BYTE
    AKTIFA VAR  BYTE
    AKTIFB VAR  BYTE
    LED    var  byte
    '------------------------------------------------------------------------------
    LCDOUT $FE,$68,$0E,$11,$10,$10,$10,$15,$0E,$4 'Ç dataları Numarası 5
    LCDOUT $FE,$70,$00,$0E,$10,$0E,$02,$1C,$0C,$00  'ş dataları NUMARSI 6 DİR
    LCDOUT $FE,$78,$0,$0,$0C,$4,$4,$4,$e,$0 'ı dataları NUMARSI 7 DİR
    clear
    lcdout $FE,1
    PAUSE 200
    SURE=180
    'WRITE 0,255
    READ 0,TAMYIL
    IF TAMYIL=255 THEN
    TAMYIL=8
    WRITE 0,TAMYIL
    ENDIF
    READ 2,SIRA
    IF SIRA=255 THEN
    SIRA=1:WRITE 2,SIRA
    ENDIF
    Y_SN=0
    rEAD 5,AKTIFA
    READ 6,AKTIFB
    IF AKTIFA=255 THEN
    AKTIFA=0:WRITE 5,AKTIFA:PAUSE 10
    ENDIF
    
    IF AKTIFB=255 THEN
    AKTIFB=0:WRITE 6,AKTIFB:PAUSE 10
    ENDIF
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    BASLA: 'PAUSE 100
    GOSUB SAAT_OKU
    GOSUB EKRAN
    PAUSE 200
    IF PORTD>0 or (PORTC & %11000000)>63 then
    IF UP=0 or DOWN=0 then
    PORTC=0:PORTD=0
    ENDIF
    endif
    IF SET=0 THEN AYAR
    IF (ESKIDAK=DAK) THEN TEKRAR
    ESKIDAK=DAK
    GOSUB ALARM_KONTROL
    PORTD=AKTIFA:PORTC=AKTIFB
    TEKRAR:
    GOTO BASLA
    
    '-------------------------ALT PROGRAMLAR---------------------------------------
    AYAR:  YER=0:ISIK=0
    lcdout $FE,$0E
    GOSUB SAAT_OKU
    Y_DAK=DAK
    Y_SAAT=SAAT
    Y_GUN =GUN
    Y_HGUN=HGUN
    Y_AY  =AY
    Y_YIL =YIL
    GOSUB EKRAN1
    WHILE SET=0
    WEND
    PAUSE SURE
    
    SIRA_BELIRLE:
    IF MODE=0 THEN HOURA
    IF SET=0 THEN SONA
    IF UP=0 THEN
    YER=YER+1
    IF YER=21 THEN YER=20
    ENDIF
    IF DOWN=0 THEN
    YER=YER-1
    IF YER=255 THEN YER=0 'SIRA=0 İSE GERÇEK ZAMAN SAATİ 8583'E KAYIT EDİLECEK
    ENDIF
    IF YER>0 THEN GOSUB ALARM_OKU
    GOSUB EKRAN1:LCDOUT $FE,$82 'SIRA>0 İSE ALARM EEPROME KAYIT EDİLECEK.
    PAUSE SURE
    GOTO SIRA_BELIRLE
    
    HOURA: WHILE MODE=0
    WEND
    HOUR:
    IF MODE=0 THEN MINA
    IF SET=0 THEN SONA
    IF UP=0 THEN
    
    Y_SAAT=Y_SAAT+1
    IF Y_SAAT=24 THEN Y_SAAT=0
    ENDIF
    
    IF DOWN=0 THEN
    Y_SAAT=Y_SAAT-1
    IF Y_SAAT=255 THEN Y_SAAT=23
    ENDIF
    GOSUB EKRAN1:LCDOUT $FE,$86
    PAUSE SURE
    GOTO HOUR
    
    MINA:  WHILE MODE=0
    WEND
    
    MINUTE:IF MODE=0 THEN TAKA
    IF SET=0 THEN SONA
    IF UP=0 THEN
    Y_DAK=Y_DAK+1
    IF Y_DAK=60 THEN  Y_DAK=0
    ENDIF
    IF DOWN=0 THEN
    Y_DAK=Y_DAK-1
    IF Y_DAK=255 THEN Y_DAK=59
    ENDIF
    GOSUB EKRAN1:LCDOUT $FE,$89
    PAUSE SURE
    GOTO MINUTE
    
    TAKA:  WHILE MODE=0
    WEND
    TAKVIM:
    IF MODE=0 THEN AYA
    IF SET=0 THEN SONA
    IF UP=0 THEN
    Y_GUN=Y_GUN+1
    IF Y_GUN=32 THEN  Y_GUN=1
    ENDIF
    IF DOWN=0 THEN
    Y_GUN=Y_GUN-1
    IF Y_GUN=0 THEN  Y_GUN=31
    ENDIF
    GOSUB EKRAN1:LCDOUT $FE,$C1
    PAUSE SURE
    GOTO TAKVIM
    
    AYA:   WHILE MODE=0
    WEND
    MONTH:
    IF MODE=0 THEN YILA
    IF SET=0 THEN SONA
    IF UP=0 THEN
    Y_AY=Y_AY+1
    IF Y_AY=13 THEN  Y_AY=1
    ENDIF
    IF DOWN=0 THEN
    Y_AY=Y_AY-1
    IF Y_AY=0 THEN  Y_AY=12
    ENDIF
    GOSUB EKRAN1:LCDOUT $FE,$C4
    PAUSE SURE
    GOTO MONTH
    
    YILA:  WHILE MODE=0
    WEND
    YEAR:  IF MODE=0 THEN GUNA
    IF SET=0 THEN SONA
    IF UP=0 THEN
    Y_YIL=Y_YIL+1
    IF Y_YIL=100 THEN  Y_YIL=0
    ENDIF
    IF DOWN=0 THEN
    Y_YIL=Y_YIL-1
    IF Y_YIL=0 THEN  Y_YIL=99
    ENDIF
    GOSUB EKRAN1:LCDOUT $FE,$C7
    PAUSE SURE
    GOTO YEAR
    
    GUNA: WHILE MODE=0
    WEND
    HAFGUN:IF MODE=0 THEN SONA
    IF SET=0 THEN SONA
    IF UP=0 THEN
    Y_HGUN=Y_HGUN+1
    IF Y_HGUN=8 THEN  Y_HGUN=1
    ENDIF
    IF DOWN=0 THEN
    Y_HGUN=Y_HGUN-1
    IF Y_HGUN=255 THEN  Y_HGUN=7
    ENDIF
    GOSUB EKRAN1:LCDOUT $FE,$CA
    PAUSE SURE
    GOTO HAFGUN
    
    SONA:IF YER=0 THEN KAYIT
    GOSUB ALARM_KAYIT
    GOTO BASLA
    '-------------------------------------------------------------------------------
    EKRAN:
    LCDOUT $FE,2,"    "
    LCDOUT DEC2(SAAT),":",DEC2(DAK),":", dec2(SN),"   "
    '       LCDOUT DEC2 (SAAT),":",DEC2 (DAK)," S=",DEC2 SIMDI,"Z=",DEC2 ZAMAN
    LCDOUT $FE,192,dec2(GUN),"-",dec2(AY),"-",dec2(YIL+TAMYIL)
    ARA=HGUN
    DORT: select case ARA
    case 1
    lcdout $fe,$c9,"Pazar  "
    case 2
    lcdout $fe,$c9,"Pazrtsi"
    case 3
    lcdout $fe,$c9,"Sal",7,"   "
    case 4
    lcdout $fe,$c9,5,"ar",6,"amb"
    case 5
    lcdout $fe,$c9,"Per",6,"emb"
    case 6
    lcdout $fe,$c9,"Cuma   "
    case 7
    lcdout $fe,$c9,"Cumarts"
    end select
    RETURN
    
    EKRAN1: 'BU EKRAN SAAT AYARINDA KULLANILAN İLK EKRAN
    LCDOUT $FE,2,"[",dec2 YER,"]"
    LCDOUT $FE,$0C," "
    LCDOUT DEC2(Y_SAAT),":",DEC2(Y_DAK),":", DEC2(SN)
    LCDOUT $FE,192,dec2(Y_GUN),"-",dec2(Y_AY),"-",dec2(Y_YIL+TAMYIL) ,$FE,$0E
    ARA=Y_HGUN
    GOTO DORT
    
    '-------------------------------------------------------------------------------
    KAYIT:WHILE set=0
    wend
    LCDOUT $FE,$0C     'REG_2  'SANIYE <0:5>
    TEMP=Y_YIL+TAMYIL  'REG_3  'DAKİKA <0:5>
    TAMYIL=4*(TEMP/4 ) 'REG_4  'SAAT   <0:5>
    Y_YIL=TEMP-TAMYIL  'REG_5  'GUN    <0:5> ; YIL  <6:7>
    WRITE 0,TAMYIL     'REG_6  'AY     <0:4> ; HAFTANIN GUNU <5:7>
    
    DAKHESAP:
    TEMP=Y_DAK:GOSUB HESAP
    Y_DAK=ONLAR+BIRLER
    
    SAATHESAP:
    TEMP=Y_SAAT:GOSUB HESAP
    Y_SAAT=ONLAR+BIRLER
    IF TEMP>12 THEN Y_SAAT.6=1
    
    GUNHESAP:
    TEMP=Y_GUN:GOSUB HESAP
    Y_YIL=Y_YIL<<6
    Y_GUN=Y_YIL+ONLAR+BIRLER
    
    AYHESAP:
    TEMP=Y_AY:GOSUB HESAP
    Y_HGUN=Y_HGUN<<5
    Y_AY=Y_HGUN + ONLAR + BIRLER
    
    I2CWRITE SDA,SCL,160,2,[Y_SN,Y_DAK,Y_SAAT,Y_GUN,Y_AY]
    GOSUB SAAT_OKU
    lcdout $fe,1
    GOTO BASLA
    HESAP:
    ARA=(TEMP/10)
    ONLAR=ARA<<4       BIRLER=TEMP-(ara*10)       RETURN '-------------------------------------------------------------------------------
    
    SAAT_OKU:ESKYIL=YIL       I2CREAD SDA,SCL,161,2,[SN,DAK,SAAT,GUN,AY]       YIL.1=GUN.7       YIL.0=GUN.6       IF ESKYIL=3 AND YIL=0 THEN          TAMYIL=TAMYIL+4          WRITE 0,TAMYIL       ENDIF          TEMP=AY       HGUN=TEMP>>5
    SN=SN&%00111111
    TEMP=DAK:gosub BUL:DAK=TEMP
    TEMP=SAAT&%00111111:GOSUB BUL:SAAT=TEMP
    TEMP=GUN&%00111111:GOSUB CEVIR:GUN=TEMP
    TEMP=AY&%00011111:GOSUB IKI:AY=TEMP
    RETURN
    
    CEVIR:
    ONLAR=TEMP & 48
    UC:   ONLAR=(onlar>>4)*10
    BIR:  BIRLER=TEMP & %1111
    TEMP=ONLAR+BIRLER
    RETURN
    BUL:ONLAR=(TEMP>>4)*10
    GOTO BIR
    IKI:  ONLAR=ay & 16
    GOTO UC
    
    '-------------------------------------------------------------------------------
    ALARM_KONTROL: '------------------Alarm açma kontrolu--------------------------
    SIMDI=YIL+AY+GUN+SAAT+DAK
    YER=1
    GOSUB ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD | %00000001
    YER=2
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD | %00000010
    YER=3
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD | %00000100
    YER=4
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD | %00001000
    YER=5
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD | %00010000
    YER=6
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD | %00100000
    YER=7
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD | %01000000
    YER=8
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD | %10000000
    YER=9
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTC | %01000000
    YER=10
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTC | %10000000
    
    '--------------------ALARM KAPATMA  KONTROLU ----------------------------------
    YER=11
    GOSUB ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD & %11111110
    YER=12
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD & %11111101
    YER=13
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD & %11111011
    YER=14
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD & %11110111
    YER=15
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD & %11101111
    YER=16
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD & %11011111
    YER=17
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD & %10111111
    YER=18
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTD & %01111111
    YER=19
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTC & %10111111
    YER=20
    gosub ALARM_OKU
    IF SIMDI=ZAMAN THEN PORTD=PORTC & %01111111
    IF (PORTD=AKTIFA) AND (PORTC=AKTIFB) THEN CIK
    AKTIFA=PORTD:AKTIFB=PORTC
    WRITE 5,AKTIFA:PAUSE 10:WRITE 6,AKTIFB:PAUSE 10
    CIK:     RETURN
    
    ALARM_KAYIT:
    IF YER>SIRA THEN
    WRITE 2,YER:PAUSE 10
    ENDIF
    temp=yer*8
    WRITE TEMP,Y_SAAT:PAUSE 10
    WRITE TEMP+1,Y_DAK:PAUSE 10
    WRITE TEMP+2,Y_GUN:PAUSE 10
    WRITE TEMP+3,Y_AY :P AUSE 10
    WRITE TEMP+4,Y_YIL:PAUSE 10
    RETURN
    
    ALARM_OKU:
    temp=yer*8
    READ TEMP,Y_SAAT:IF Y_SAAT>23 THEN Y_sAAT=0
    READ TEMP+1,Y_DAK:IF Y_DAK>59 THEN Y_DAK=0
    READ TEMP+2,Y_GUN:IF Y_GUN>31 THEN y_GUN=1
    READ TEMP+3,Y_AY :IF Y_AY>12 THEN Y_AY=1
    READ TEMP+4,Y_YIL:IF Y_YIL>99 THEN Y_YIL=0
    ZAMAN=Y_YIL+Y_AY+Y_GUN+Y_SAAT+Y_DAK
    RETURN
    
    end
    
    
     
  2. akreq

    akreq Yeni Üye

    bu kodları pc ye nasıl alabiliriz
     

Bu Sayfayı Paylaş