ufukshn
Üye
- Katılım
- 4 Ara 2013
- Mesajlar
- 27
- Puanları
- 1
#include <16F877A.h>MERHABA ilk olarak 1.5 v pil değilde 3v pil kullanın birde ds1302 şarz ayarlarını sıfırlayın aşırı ısınmanın sebebi çalışmaya başlayıp pil i şarz etmesinden kaynaklı olabilir. ben şaz etmek istediğimde aşırı ısınmış ve çalışmamıştı ayrıca birde pic in ayarlarını kontrol edin isisde çalışıp uygulamada çalışmaya biliyor kodlarıda paylaşırsan daha kolay olur hata bulması
#device adc=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES WRT_50% //Lower half of Program Memory is Write Protected
#use delay(clock=4000000)
#define use_portb_lcd TRUE
#define LCD_TYPE 2
#include <lcd420.c>
#include <DS1302.c> // DS1302.c dosyası programa ekleniyor
byte saniye,dakika,saat,gun,ay,yil,haftanin_gunu; // byte türünde değişkenler tanımlanıyor
void main()
{
unsigned long int bilgi; // İşaretsiz 16 bitlik tam sayı tipinde değişken tanımlanıyor
float voltaj; // ondalıklı tipte voltaj isminde değişken tanıtılıyor
lcd_init();
rtc_init(); // DS1302 başlangıç ayarları yapılıyor
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
rtc_set_datetime(17,01,14,15,22,52); // Tarih ve Saat ayarları yapılıyor
lcd_gotoxy(1,2);
lcd_putc(" UFUK SAHIN ");
lcd_gotoxy(1,3);
lcd_putc("pH METRE UYGULAMASI");
delay_ms(2000);
lcd_putc("\f");
while(TRUE)
{
rtc_get_time(saat,dakika,saniye); // DS1302'den saat,dakika,saniye bilgileri alınıyor
rtc_get_date(gun,ay,yil,haftanin_gunu); // DS1302'den gün,ay,yil ve günün isim bilgisi alınıyor
lcd_gotoxy(1,1);
printf(lcd_putc,"T:%02d/%02d/20%02d ",gun,ay,yil); //Lcd'ye gün,ay,yıl bilgileri yazdırılıyor
switch(haftanin_gunu) // DS1302'den sayısal olarak alınan haftanın günü bilgisine
{ // metin olarak karşılık atanıyor
case 1: printf(lcd_putc,"PAZ"); break; // Eğer "1" ise LCD'ye PAZ yaz
case 2: printf(lcd_putc,"PZT"); break; // Eğer "2" ise LCD'ye PZT yaz
case 3: printf(lcd_putc,"SAL"); break; // Eğer "3" ise LCD'ye SAL yaz
case 4: printf(lcd_putc,"CRS"); break; // Eğer "4" ise LCD'ye CRS yaz
case 5: printf(lcd_putc,"PER"); break; // Eğer "5" ise LCD'ye PER yaz
case 6: printf(lcd_putc,"CUM"); break; // Eğer "6" ise LCD'ye CUM yaz
case 7: printf(lcd_putc,"CTS"); break; // Eğer "7" ise LCD'ye CTS yaz
}
lcd_gotoxy(1,2);
printf(lcd_putc,"Saat:%02d:%02d:%02d",saat,dakika,saniye); // LCD'ye saat,dakika ve saniye değerlerini yaz
//delay_ms(1000); // 1 sn gecikme veriliyor
set_adc_channel(0); // RA0/AN0 ucundaki sinyal A/D işlemine tabi tutulacak
delay_us(20); // Kanal seçiminde sonra bu bekleme süresi verilmelidir
bilgi=read_adc(); // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
voltaj=bilgi*0.013685; // Dijitale çevirme işlemine uğrayan sinyalin gerilimi hesaplanıyor
lcd_gotoxy(1,3);
printf(lcd_putc,"DIJITAL=%lu ",bilgi);
lcd_gotoxy(1,4);
printf(lcd_putc,"PH=%f ",voltaj);
}
}
oncelıkle tesekkurler ..kodlar bunlar sarj ayarlarını nasıl sıfırlayacagım hakkında da bılgı verırı mısınız cünkı o ayarı yenı duydum da