LCD'de Dijital Saat (PIC C ile)

Başlatan elektro_yavuz, 07 Şubat 2004, 20:01:27

elektro_yavuz

ARKADASLAR BİTİRME PROJEMDE PIC C PROGRAMI İLE LCD'DE

CALISACAK DİJİTAL SAAT YAPMAM LAZIM. FAKAT PIC C'DE BİR TÜRLÜ PROGRAMINI YAZAMADIM. LÜTFEN YARDIM EDİİİİİNN  :?:

mmengi

dostum ccs pic c de bu istediğinin örnek kodları var incelemende yarar var.

ggrade

#include <16f84.h>
#fuses XT,NOPROTECT
#use

delay(clock=3276800)

#include <lcd.c>

long clock=0;
long second=0;
long minute=0;
long time=0;

#byte

portB=6

#int_rtcc

void RTCC()
 {

  clock++;
 if(clock>=400)
  {
   clock=0;  
   second++;
  }
 if(second>59)
 

{
   second=0;
   minute++;
  }

 if(minute>59)
  {
   minute=0;
   time++;

   if(++time>24) time=0;      
 

}


}

main()
{

setup_counters(RTCC_INTERNAL,rtcc_div_8);
enable_interrupts(global);


enable_interrupts(int_rtcc);

lcd_init();

lcd_gotoxy(1,1);
Lcd_putc("AHMET

MUMCU");

delay_ms(2000);
/*
lcd_gotoxy(1,1);
Lcd_putc("TIMER SHOW");

delay_ms(1000);
*/
while(true)
{          



lcd_gotoxy(1,1);
Lcd_putc("AHMET TIMER

SHOW");

lcd_gotoxy(1,2);
printf(lcd_putc,"S:%02lu",time);

lcd_gotoxy(6,2);
printf(lcd_putc,"D:%02lu",minute);

lcd_gotoxy(11,2);
printf(lc

d_putc,"Sn:%02lu",second);

delay_cycles(1);
}
}

DumrulBey

Merhaba,

Yukarıdaki kod çalışmıyor. Tamam şimdi diyeceksiniz kod bozulmuş ondan çalışmıyordur. Ama aşağıdaki gibi düzelttim yine çalıştıramadım. Derleme hatası yok. Üstelik ekranda görüntüde yok! Galiba bu kodlar Ahmetu'nun ve kendi LCD kütüphanesinden dolayı çalışmıyor. Çünkü koda ek olarak LCD'nin Port B'de olduğunu ekledim. Acaba kodun sahibi yardımcı olabilir mi?

#include <16f84.h>
#fuses XT,NOPROTECT
#use delay(clock=3276800)
#define use_portb_lcd TRUE
#include <lcd.c>

long clock=0;
long second=0;
long minute=0;
long time=0;

#byte portB=6

#int_rtcc

void RTCC() {
   clock++;
   if(clock>=400) {
      clock=0;
      second++;
   }
   if(second>59) {
      second=0;
      minute++;
   }
   if(minute>59) {
      minute=0;
      time++;
   if(++time>24) time=0;
   }
}

void main () {
   setup_counters(RTCC_INTERNAL,rtcc_div_8);
   enable_interrupts(global);
   enable_interrupts(int_rtcc);
   lcd_init();
   lcd_gotoxy(1,1);
   Lcd_putc("AHMET MUMCU");
   delay_ms(2000);
   /*
   lcd_gotoxy(1,1);
   Lcd_putc("TIMER SHOW");
   delay_ms(1000);
   */
   while(true) {
      lcd_gotoxy(1,1);
      Lcd_putc("AHMET TIMER SHOW");

      lcd_gotoxy(1,2);
      printf(lcd_putc,"S:%02lu",time);

      lcd_gotoxy(6,2);
      printf(lcd_putc,"D:%02lu",minute);

      lcd_gotoxy(11,2);
      printf(lcd_putc,"Sn:%02lu",second);

      delay_cycles(1);
   }
}


Teşekkürler...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

ahmetu

kodlar bana ait değil soyadımda mumcu değil herneyse kodu ve şemayı (isis 6.5 sp5) http://www.noktaelektrik.com/ahmet/timer.zip adresine upload ettim.


psiko

bu devre hakkında birşey soramak istiyorum. burda LCD'nin sadece 4 veri biti kullanılmış. nasıl oluyor da sadece 4 bit ile bütün karakterleri gösterebiliyor? 4 bit ile en fazla 16 farklı karakter gösterilebilmesi gerekmiyor mu?

SpeedyX

dostum bu gördüğün gibi lcd, display ve 7447 değil.
4bit interface ile 2defada 8bit gönderimi yapılıyor.
neyse biraz dahatsheet incele.  :lol:

ahmetu

8 bitlik veri 4+4 iki seferde gönderildiği için


     lcd_send_nibble(n >> 4);
      lcd_send_nibble(n & 0xf);



buradaki n lcd datası.

psiko