9v pil şarj cihazı yardım

emre1910

Üye
Katılım
4 Ağu 2012
Mesajlar
8
Puanları
1
Yaş
32
Arkadaşlar proje ödevim 9v luk pil şarj cihaz devresi aldım.programı c18 dilinde yazmaya çalıştım ancak proteusu kuramadım yardımcı olursanız sevinirim...


Projede amaç 9 voltluk 1 adet pili şarj edebilen bir devre yapmaktır. LCD üzerinde pilin ne
kadarının şarj olduğu yazacaktır. Pil dolduğu zaman devre üzerindeki uyarı LED ‘i yanacak
ve LCD üzerinde şarj işleminin bittiği yazacaktır. Ayrıca devre şarj etmeyi durduracaktır.
Proje kapsamında PIC18F452 ve 2x16 LCD kullanılacaktır.


proteusda ne hata verdiğini anlayamadım


2qvcsd1.png
 
bu kodlara göre proteusu yapmaya çalıştım ama olmadı 9v luk pil şarj cihazı devresi için

#include <p18f452.h>// Void main e kadar kütüphane seçimleri lcd fonk. tanımlamaları ve pause fonk. tanımlaması var.
#include <xlcd.h>
#include <delays.h>
#include <adc.h>
#include <stdlib.h>
#pragma config OSC = XT, PWRT = ON, WDT = OFF, LVP = OFF, DEBUG = OFF
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
#pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF,WRTC = OFF, WRTD = OFF
#pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTR3 = OFF, EBTRB = OFF
void DelayFor18TCY( void )
{
Nop(); Nop(); Nop();
Nop(); Nop(); Nop();
Nop(); Nop(); Nop();
Nop(); Nop(); Nop();
}
void DelayPORXLCD (void)
{
Delay1KTCYx(60);
return;
}
void DelayXLCD (void)
{
Delay1KTCYx(20);
return;
}
void pause(void)
{
unsigned int k,j;
for(k=0;k<50;k++)
for(j=0;j<100;j++) {};
}


void main(void)// main fonksiyonumuzu oluşturduk
{
char dolu[]={'P','I','L',' ','D','O','L','D','U',};// lcd de kunlanacağımız struct lar ve kullanacağımız integer değişkenlerimizi tanımladık
int d;
int yzde;
signed int vo;
char kes[]={'A','K','I','M',' ','K','E','S','I','L','D','I',};
int b;
char add[]={'Y','U','Z','D','E',};
int x;
int t;
signed int a;
char s[3];
TRISA=0xff;//A portlarını giriş olarak tanımladık (ADC verilerilerinin girmesi için)
TRISD=0x00;//D portlarını çıkış olarak tanımladık(ileride röle ile şarj akımlarını kesmek için)
PORTD=0xff;//D portlarının başlangış değerini bir yaparak rölemizi aktid hale getirdik
OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_8ANA_0REF,ADC_CH0 & ADC_INT_OFF );//ADC tanımlamalarımızı yaptık
Delay10TCYx( 5 );
while(1)
{
ConvertADC();
while( BusyADC() );
vo = ReadADC();//RA0 pininden gelen verileri ADC yardımıyla okuttuk
pause();
vo=vo/2;// ADC 16 bit veri yolladığı için onları 8 bit e döndürdük
vo=vo*100;//yüzde hesaplaması için 100 ile çarptık
vo=vo/11; // pilimiz 9V değerinde dolu 0V değerinde boş oluyor,(9-0)işlemi ile pilimizin % hesabı için gerekli olan aralığı bluduk be böldürerek yüzdemizi hesaplatttık
yzde=vo;//vo değişkeninin yzde değişkenini atadık
CloseADC();//adc mizi kapadık
itoa(yzde,s);//yzde integer değerimizi itoa yardımı ile char a dönüştürdük(LCD ye yazdırmak için)
OpenXLCD( FOUR_BIT & LINES_5X7 );//LCD mizi açtık ve aşağıda gerekli programlar var...
while( BusyXLCD());
WriteCmdXLCD(0x01);
while(BusyXLCD());
pause();
putsXLCD(add);//add struct ımızı lcdnin üst satırına yazdırdık
pause();
WriteCmdXLCD(0xC0);//imleci alt satıra aldık
while(BusyXLCD());
pause();
putsXLCD(s);// s structımızı LCD nin alt satırana yazdık
pause();
while(yzde>=100)//Projemizde pil şarj olduktan sonra şarj akımının kesilmesi isteniyor bizde %>100 den diyerek bir koşul oluşturduk
{
PORTD=0x00;//rölemize giden pini 0 yaparak röleyi kapattık
OpenXLCD( FOUR_BIT & LINES_5X7 );//LCD için gerekli kodlar
while( BusyXLCD());
WriteCmdXLCD(0x01);
while(BusyXLCD());
pause();
putsXLCD(dolu); //dolu strucktını lcd ye yazdırık
pause();
WriteCmdXLCD(0xC0);//alt satıra geçtik
while(BusyXLCD());
pause();
putsXLCD(kes);//kes strucktını alt satıra yazdırdık
pause();
pause();
pause();
pause();
}
}
}
 
Mesajların sonu yok. Mesajları harf harf değil "mesaj" şeklinde yaz
 

Forum istatistikleri

Konular
128,126
Mesajlar
915,241
Kullanıcılar
449,838
Son üye
sarioglu_55

Yeni konular

Geri
Üst