﻿/******************************************************
      PIC16F877 ile Paralel LCD Uygulaması
PIC PROG/DEKA     : Port B jumper'ı LCD konumunda olmalı
*******************************************************/

#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(b) //Port yönlendirme komutları B portu için geçerli

#define use_portb_lcd TRUE   // LCD B portuna bağlı

#include <lcd.c>   // lcd.c dosyası tanıtılıyor

int x;      // Tamsayı tipinde değişken tanımlanıyor
float y;    // Ondalıklı tipte değişken tanımlanıyor
char z;     //  Karakter tipinde değişken tanımlanıyor

//********** ANA PROGRAM FONKSİYONU*******

void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı


   set_tris_b(0x00);   // B portu komple çıkış

   lcd_init();   // LCD hazırlanıyor

   x=10;   // x değişkenine değer veriliyor
   y=32.6; // y değişkenine değer veriliyor

   while(1) // Sonsuz döngü
   {
      lcd_send_byte(0,0x0d);   // LCD'ye komut gönderiliyor. İmleç yanıp sönsün komutu.

      printf(lcd_putc,"\f     CCS C"); // LCD'ye veri gönderiliyor.
      delay_ms(1000); // 1 sn gecikme
      printf(lcd_putc,"\n  Derleyicisi");
      delay_ms(1000); // 1 sn gecikme
      lcd_gotoxy(1,2);   // Kursör 1.sütun, 2.satıra konumlandırılıyor.
      printf(lcd_putc,"\fX DEGERI=%d",x); // LCD'de tamsayı olarak x değişken değeri görüntüleniyor.
      delay_ms(1000); // 1 sn gecikme
      printf(lcd_putc,"\f\nY DEGERI=%f",y); // LCD'de ondalıklı olarak y değişken değeri görüntüleniyor.
      delay_ms(1000); // 1 sn gecikme
      printf(lcd_putc,"\fDIRENC"); // LCD siliniyor ve "Direnc" stringi yazdırılıyor.
      delay_ms(1000); // 1 sn gecikme
      z=lcd_getc(3,1);  // LCD'de o an 3.Sütun ve 1.Satırda olan karakter alınıyor. Alınan değer z değişkenine aktarılıyor.
      printf(lcd_putc,"\f%c",z);    // z değişkeni LCD'ye aktarılıyor
      delay_ms(2000); // 2 sn gecikme
   }
}


