877A saat termometre tarih devresi yardım

Başlatan rubekon, 10 Mart 2017, 19:16:52

rubekon

saat termometre tarih devresinde lcd ekrandaki tarih ve saat ayarını butonlarla nasıl değiştirebilirim biri yardımcı olabilir mi?
kodlar ccs c'de yazılmış devre 16f877a kullanıldı

#include <deneme.h>


#fuses XT, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NODEBUG, NOCPD
#use delay(clock=20M)
#define use_portb_lcd TRUE
#define RTC_SCLK PIN_c2
#define RTC_IO PIN_c3
#define RTC_RST PIN_c1
#include "ds1302.c"
#include "lcd.c"
#include "ds18b20.c"

//Global değişkenler

int saniye,dakika,saat,gun,ay,yil,haftanin_gunu;

//Program

void main(void){
   float temp;
   lcd_init();
   rtc_init();
   rtc_set_datetime(6,3,7,7,11,30);
   
   
   while(1)
   {
   
   
      temp = ds1820_read();
      
      rtc_get_time(saat,dakika,saniye);
      
      rtc_get_date(gun,ay,yil,haftanin_gunu);
      
      
      printf(lcd_putc,"\f%3.1f%cC  %02d/%02d/%02d\n",temp,223,gun,ay,yil);
      
      
      switch(haftanin_gunu)
      {
      
         case 1: printf(lcd_putc,"PZR"); break;
         case 2: printf(lcd_putc,"PTS"); break;
         case 3: printf(lcd_putc,"SAL"); break;
         case 4: printf(lcd_putc,"CRS"); break;
         case 5: printf(lcd_putc,"PRS"); break;
         case 6: printf(lcd_putc,"CUM"); break;
         case 7: printf(lcd_putc,"CTS"); break;
         
      }
      
      printf(lcd_putc,"     %02d:%02d:%02d",saat,dakika,saniye);
      
      delay_ms(100);
      
      }
      
}      
   




mehmet

Öncelikle basit led, buton, vs. örnekler ile başlayınız.

Ek:
"Türkçe Yazım Kuralları" na dikkat ediniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

vitruvius

Zaten gerekli değişkenleri tanımlamışsın. Menü algoritmanı kurduktan sonra kullanıcı butona bastığında bu değişkenlerin değerini arttıracaksın yada azaltacaksın. Kullanıcının ayar işlemi bittiğinde de bu değişkenleri yollayacaksın zaten main()'de yaptığın gibi.

Faruk53

Öncelikle buton tanımlamalarını yapman gerekiyor. Daha sonra saat,tarih,dakika gibi değişkenlerin içerisinde dolaşabilmek için bir değişken tanımlaman gerekiyor. Arttır ve azalt butonlarınla da ilgili değişkenin değeriyle oynayabilirsin. Kolay gelsin.

rubekon

Bu lcd ekrana menü atama yada butonla ayarları değiştirmede çok araştırmama rağmen bir şey anlamadım ccs c dilinde yeni sayılırım verdiğim kodlara ekleyebilecek olan var mı,  yardım eder misiniz?

vitruvius

Dille çok alakası yok, algoritma işi. Ha bazı CCS C fonksiyonlarını v.s. bilmiyorum diyorsan CCS C'nin çok güzel bir kullanıcı kılavuzu var. Ona buradan ulaşabilirsin.

Sen hazıra konmak istiyorsun o da burada yok. Ya programlama öğrenmeye başla, yada başlığı "ilanlar" bölümünde aç.

sifirzero

lafım meclisten dışarı tembellik ruhumuza işlemiş :)

sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

Faruk53

Yapmak istediğin bu konularda tartışılmış.

https://www.picproje.org/index.php?topic=36704.0 
https://www.picproje.org/index.php?topic=64007.0

Ufak bi örnekde ben vereyim sen kendine göre düzenlersin.

#define menu PIN_D1
#define arttir PIN_D2
#define azalt PIN_D3

int hangi_degisken=0;
     ...
while (1)
{

if (input(menu))
{
while(input(menu))
hangi_degisken++;
}

if (hangi_degisken==1)
 {
    if ((input(arttir))
    {
      while(input(arttir)); 
      saat++;
    }
       if ((input(azalt))
        {
         while(input(azalt));
         saat--;
        }
 }       
 
   if (hangi_degisken==2)
    {
         if ((input(arttir))
        {
          while(input(arttir)); 
          dakika++;
        }

       if ((input(azalt))
        {
           while(input(azalt));
           dakika--;
        }
    }
    .... 
}     

ghistmanzero

arkadaşlar ben de bu uygulamayi yapmaya çalıştım ama ekranda bu görünüyor. Ds1302 nin lehimi düzgün olsun diye baya da uğraştım ana ekranda bu görünüyor. Arka tarafta ds1302 nin olduğu yere parmağımla dokununca filan değerler değişiyor. Bazen doğru gösteriyor bazen yanlış. Böyle bi sorunun sebebi nedir acaba? Kodlar aynı arkadaşla galiba. Değişik birşey yok hani.

vitruvius

Alıntı yapılan: ghistmanzero - 12 Mart 2017, 16:31:21
(Resim gizlendi görmek için tıklayın.) arkadaşlar ben de bu uygulamayi yapmaya çalıştım ama ekranda bu görünüyor. Ds1302 nin lehimi düzgün olsun diye baya da uğraştım ana ekranda bu görünüyor. Arka tarafta ds1302 nin olduğu yere parmağımla dokununca filan değerler değişiyor. Bazen doğru gösteriyor bazen yanlış. Böyle bi sorunun sebebi nedir acaba? Kodlar aynı arkadaşla galiba. Değişik birşey yok hani.

Kodunu ve devre semani gormek lazim.

ghistmanzero

@vitruvius https://www.picproje.org/index.php/topic,69014.0.html konu açtım. Baya da uğraştım ama hala sıkıntı var. Bi göz atabilirsiniz sevinirim.