avatar_ete

Alarm Saat (picbasic pro, pic16f877, pcf8583)

Başlatan ete, 28 Ağustos 2011, 14:02:42

ete

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 SETtuş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 isis devre şeması



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

'****************************************************************
'*  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


Cesar35

Hello I really liked this ETE watch I want to share the modifications I made for the PIC16F73 WITH 8 PORTS AND THE PCB IS TOGETHER I'M NOT A PROJECT SPECIALIST LIKE THE TEACHER IF I HAVE SOME MISTAKES FORGIVE ME .A HUG

Cesar35

Hello my teacher I made a modification in the program to works with 8 to turn on and 8 to turn off for this I changed the code to: IF MODE=0 THEN HOURA
       IF SET=0 THEN SONA
       
       IF UP=0 THEN
       YER=YER+1
       IF YER=17 THEN YER=16
       ENDIF
       
       IF DOWN=0 THEN
       YER=YER-1
       IF YER=255 THEN YER=0       'ORDEM=0 SE O TEMPO REAL FOR REGISTRADO PARA 8583
       ENDIF
 More is not working well . There's something else to modify the program. Thank

ete

#3
Pic16F873 having only 128 byte Eprom memory (0-127).
Each alarm use 5 memory but the program consider 8 memory.(temp=yer*8 ). For this reason it will be better if you use 7 + 7=14 for the alarms. (1-7) open alarms, (8-14) close alarms.


       IF UP=0 THEN
       YER=YER+1
       IF YER=17 THEN YER=16
       ENDIF
this section should be changed as follows,
       IF UP=0 THEN
       YER=YER+1
       IF YER=15 THEN YER=14
       ENDIF
I changed the program for you and put here.

Ete




DUHAN_

elinize  emeğinize  sağlık hocam çok güzel çalışma olmuş....

Cesar35

Thank you, my teacher. Does it have a way [02] for the same port of [01] to trigger the same door from the first alarm to the second alarms.  Thank you again. If you give

ete

The alarm trigger section is;
ALARM_KONTROL:  
     SIMDI=YIL+AY+GUN+SAAT+DAK
     YER=1
     GOSUB ALARM_OKU
     IF SIMDI=ZAMAN THEN PORTC=PORTC | %00000001
     YER=2
     gosub ALARM_OKU
     IF SIMDI=ZAMAN THEN PORTC=PORTC | %00000010   
YER is the alarm number meanwhile address in the eprom for the alarm.
SIMDI is the present time, ZAMAN is the alarm time if they are equal the PORTC.0 is triggered by the command PORTC=PORTC | %00000001 . It means PORTC OR %00000001 and this commands sets the portc.0
I could not understand very well what do you want to do. If you want to trigger same port pin for first two alarm you have to use same code as follows;
IF SIMDI=ZAMAN THEN PORTC=PORTC | %00000001

Ete

Cesar35

Thanks for the reply.
Our language is really complicated. I'll explain. How can I make the same portc. 0 on at 70:00 and off at 6:00 every day of the week. there is a way or this watch project can't be done.thanks.

ete

#8
Now, I understood very well what do you want.
This project works according to the date. You need working according to the time.
This project compare every moment
- the year
- the month ,
- the day of the month,
- the hour
- and the minute
if everthing is equal to the alarm time the alarm will work.

You need to compare only the hour and minute (and may be the day of the week) and if everthing is equal the alarm should start.

If you want to do the control as you like ,
- Change the following line ,

ALARM_KONTROL:  
     SIMDI=YIL+AY+GUN+SAAT+DAK
as
ALARM_KONTROL:  
     SIMDI=SAAT+DAK
and also change the line which is under ALARM_KONTROL label,
ZAMAN=Y_YIL+Y_AY+Y_GUN+Y_SAAT+Y_DAK
as
ZAMAN=Y_SAAT+Y_DAK
Compile again and the system will compare only the hour and the minute .
Ofcourse need to change some other places but it needs big changing. Like to cancel to input of the alarm date you do not need. But now by two changing even if you input any date for the alarm it will compare only the hour and minute.

I forgot to tell you also another thing,
Alarm number 1-7 are working to open the alarms (open time)
Alarm number 8-14 are working to close the alarm (close time)
If you want to open one alarm give number 1 and arrange the time.
If you arrange to close time of that alarm give number 8 and arrange the time.
By the way the alarm nr.1 will be open on regulated time and and same alarm willbe closed on regulated time by the alarm nr.8


Ete

note: I made a small error correction on the program and take out the old one put the new one.
Pls. re-load the rar file given on above.

Programı yükleyenler için ufak bir düzeltme yaptım eskisini silip yeniden yükledim. Yukarıdan tekrar yükleyebilirsiniz.

Cesar35

I just got thanks you. I'm finishing the board mounts after I put the results here. all right a hug

Cesar35

Hello today I set the clock. More When just the watch The year and 22 it jumps to 74 . I also noticed that when I press the set button the year also changes.

ete

I do not see any problem when I test it on simulation. It works as usual.

Ete

Cesar35

In the simulation works normal. More on the board works wrong the year Very strange this.  I'll take another look here thank you

ete

If it is not working properly means you cannot communicate with the RTC (PCF8583). Check the connections. Be sure there are pullup resistances on DTA and CLK lines. Crystal should be 32768 Hz.
A0 pin should be connected to the GND.

Ete

Cesar35

Hello I did the pullup resistances of 4k7 everything works fine only the year that does not work right. Very strange only if the PCF8583 and fake the manufacturer and NXP. No, and philips the crystal is right. The time is also right the day is right the month is right only the year not that is wrong

Powered by EzPortal