D

Bi kaç örnek lazım

Başlatan desperado17, 21 Şubat 2012, 08:20:39

desperado17

Arkadaşlar elinizde pic saat ayarı ile ilgili bi kaç örnek lazım saat programımda sıkıntısız çalışıyor tarih saat menüsüne girişte sıkıntı yok ama ayarlama nasıl yapacagım

21:11
21/02/2012 Sali

ekranda görünüm şekli bu tarih saat menüsüne girince.

Mucit23

Googlede biraz araştır menü uygulamalarına bak. Etrafta envai çeşit saat devresi var. Yazılımlarını incele. Yazılım konusunda takıldığın yer olursa söyle anlatalım. Bu şekilde tarif etmek zor..
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

desperado17

Hocam öncelikle teşekkürler cevabınız için.

Şimdi ben fazla anlamıyorum evde amatör olarak bir şeyler yapmaya çalışıyorum.
PBP' yi ETE hocamızın derslerinden öğrenmeye çalışıyorum.

Niyetim saat ve sıcaklık projesine menü oluşturup sıcaklık ayarı ve saat ayarı yapıp istediğim sıcaklığa gelince
belli bir çıkışı aktif etmek.
Proje çok karışık gelebilir ama ilk menülü projem mazur görün
Bazı kısımları aktif değil daha saat menüsünü halledemediğim için
diğer kısımlarıyla ilgilenemedim.





ete

#3
Sitede bir çalışma yapmıştık. "Haftalık Zamanlama Sistemi" Bu sistem bir haftalık saat sistemidir ve menüsünde saat ayarıda bulunmaktadır. Sana düşen projeyi incelemek olacaktır. Bak bakalım içinden çıkabilecekmisin.

http://etepic.com/index.php?topic=56.0

Saat ayarında yapılacak işlemleri şöyle açıklayabiliriz.
- Ekrana ayarlanacak bilgiyi yazdır. (13:45)
a) Kursörü ilk değiştirilecek yada ayarlanacak bilgi üzerine getir. Burada 13 rakamının 3 hanesine kursörü getirmek gerekir.
b) İLk satırda ise $80 ilk karekteri işaret eder. $81 ise ikinci karekteri işaret eder.  O halde LCDOUT $FE,$81
c) Sonra kursörü aç (LCDOUT $FE,$E0) yaklaşık 120 ms bekle  (Pause 120)
d) SOnra kursörü kapat  (LCDOUT $fe,$0c) ve yaklaşık 100 ms bekle (Pause 100)
e)Sonra artır yada azalt tuşlarına basılmasını bekle. Hangisine basılmış ise orada yazan değeri azalt yada çoğalt
f) Sonra yeni değeri ekrana yazdır ve tekrar (a) satırına git.
Temel prensip budur.

Ete

desperado17

hocam çok tesekkürler verdiğiniz bilgiler için.

Bir sorum daha olacak size;
16f628a ile yaptığım projem elektrik gidince sıfırlanıyor bu da kötü bi durum ne yapmak lazım sizce?

ete

#5
Elektriksiz çalışan bir işlemci icat etmen lazım.

Şaka bir tarafa sorun eksik ve anlamsız. Elektrk gidince elektrikle çalışan her şey durur biliyorsun. Program da buna dahil. O halde neyi soruyorsun. ? Bir defa neyin sıfırlandığını belirtmen gerek. Yada Sıfırlanmamasını istediğin birimleri söylemen gerek.
İşlemcilerde flash eeprom var bunu herkes biliyor. Sende biliyor olmalısın. Elektrik gelince gittiği andaki değerleri yeniden geri almak için bu bilgilerin elektrik var iken eeproma kayıt edilmesi ve program yeniden çalıştığında önce hafızadaki bilgilerin okunup geri getirilmesi gerekir. Böyle bir şeymi bekliyor yada arıyorsun acaba.

Eeproma ancak byte cnsinden bilgiler kayıt edilir. 8 bitlikdir hafızalar. 16 bitlikbilgi 2 hafıza birimi kullanılarak kayıt edilir.
Format şöyledir.
WRITE adres,bilgi:pause 10 (10ms lik gecikme mutlaka koyulmalıdır. Bu yazma süresidir.
READ adres,bilgi  (Burada pause ye gerek yoktur.)
Adres sıfırdan başlar ve işlemci tipine göre son adres farklıdır. Genelde 128 ve 256 byte civardındadır toplam kapasiteler.

Saat devrelerinde RTC denilen saat entegrelerinin birde Pil besleme uçları vardır. Ayrıca normal şebeke besleme ucuda mevcuttur. Hangisinde voltaj yüksekise RTC oradan beslenir. Dolayısıyla şebeke kesilirse RTC enerjisini pilden alır. Bu tür piller genelde 3V luk lityum pil olarak kullanılır. Bu piller yaklaşık 10 yıl ömürlüdürler. Pili yinede RTC bitiremez ama pil ömrü biter. Bu nedenle saat devren var ise RTC yi ayrıca pil ile beslemende yarar vardır. Şebeke olduğu müddetçe RTC pilden enerji çekmez.

Ete

desperado17

#6
Hocam mahvettin beni :) Amatörüm zaten, kapmaya çalışıyoruz işte sizden.
Size çok basit ve kolay gelen veya hafızanızda yer eden şeyler bende olmayabilir.
Hatta çoğu yoktur :)

sorumu söyle anlatayım
sıcaklık set değerimi tutsun yeterli

        IF YUKARI=0 then SET=SET+1
        PAUSE 100
         IF SET=001 then SET=400
            IF ASAGI=0 then SET=SET-1
            PAUSE 100
               IF SET=401 then SET=001
                     
                 IF ENTER=0 THEN
                    WHILE ENTER=0
                    WEND
                    WRITE 1,SET1:PAUSE 10
                    WRITE 2,SET2:PAUSE 10
                    LCDOUT $FE,1
                    LCDOUT $FE,128,"AYARLANDI..."
                    PAUSE 400
                    GOTO AYAR
                 ENDIF
                        IF ESC=0 THEN
                            WHILE ESC=0
                            WEND
                            GOTO BASLA
                        ENDIF                   
               PAUSE 100
S_HESAP:       
        SET1=SET/10
        SET2=SET//10


Bu şekilde mi hocam?

READ 1,SET1
READ 2,SET2

SET=SET1*10+SET2

ete

Benide mazur görmen gerekiyor. Artık eksik yada yanlış sorulan sorulardan gına geldi.
Dikkat edersen birisi soru sormuş mutlaka ona karşı soru sorarak ne istediğini öğrenmeye çalışıyorum. Bu sence normalmi.
Senin konunda soru şöyle sorulsa hiç bir mesele kalmayacak idi.
Sıcaklık set değerini elektrik kesilse bile kayıp etmek istemiyorum. Elektrik geri geldiğinde yada program yeniden çalıştığında aynı set değeri nasıl geri alınabilir. ?

Çözüm basit.;
Set değerini ayarladığın kısımda ;
IF ENTER=0 THEN
     WHILE ENTER=0:WEND
     WRITE 0,SET.Byte1, SET.Byte01:PAUSE 10
     LCDOUT $FE,1,"AYARLANDI..."
     PAUSE 400
     GOTO AYAR
ENDIF

Bu şekilde set değerini (ondalık kısım dahil) kayıt edersin. Dikkat 35,6 şeklindeki bir set değeri SET değişkeninde 356 şeklinde yer almakta ve word tipinde bir değişkende tutulmaktadır. Bu 16 bitlik değişkeni kayıt ederken iki adet 8 bitlik parçaya ayırıp o şekilde kayıt etmiş olduk. (Set.Byte1 ve Set.Byte0)

Şimdi program çalıştığında aynı bilgileri geriye almak için;
Programın başlarında bir yere;
READ 0,SET.Byte1,SET.Byte0
IF SET>400 then
   SET=400
   WRITE 0,SET.Byte1,SET.Byte0:PAUSE 10
ENDIF
şeklinde komutları yazamn yeterli olacaktır.
Yine ikaz edeyim. Bu set değeri ondalık dahil bir değerdir. Ayırmak için
SET1=SET/10
SET2=SET//10 komutlarını kullanman gerekiyor.

Ete

Powered by EzPortal