sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;
//lcd Bağlantıların konfigürasyonunu bitiriyorum
int artisB=0,kanat=1,deger=0; //Düğmelerim için 3 tamsayı değişkenini bildiririm
float adim=0,rpm; //Darbeler ve devir sayılarını ondalıklarla ölçmek için değişken tip değişkenlerimi beyan ederim
char ceviri[8],kanat1[7]; //Tamsayıya çevirmek ve metin dizgilerine geçmek
void main() {
PORTB.RB6=0;
TRISB.RB6=1;
PORTB.RB7=0;
TRISB.RB7=1;
LCD_INIT();
LCD_CMD(_LCD_CLEAR);
LCD_CMD(_LCD_CURSOR_OFF);
while(1){
if(deger == 0){
IntToStr(kanat,kanat1);
LCD_out(1,1,"secim yapiniz");
LCD_out(2,1,"kanat =");
LCD_OUT(2,9,kanat1);
if(PORTB.RB7 == 1){ //Bu düğmeye basılırsa, değer 1 olarak değişir ve başka bir işleve geçer
deger = 1;
LCD_CMD(_LCD_CLEAR);
}
if(PORTB.RB6 == 1){
artisB=1;
}
if(artisB == 1 && PORTB.RB6 == 0){ // b portunda artış sağlanırsa pervanedeki kanat sayısında artış sağlanır.
artisB=0;
kanat++;
if(kanat>5){ //kanat sayısının sınırının girildiği if döngüsü
kanat=1;
}
}
}else{
TMR0=0;
delay_ms(500);
adim=TMR0;
rpm=(adim*60)*2/kanat; //Motorun dönüşünü Helis sayısına bölünerek TMR0 değerini RPM'ye dönüştürülüyor.
FloatToStr(rpm,ceviri);
LCD_CMD(_LCD_CLEAR);
LCD_OUT(1,1,"Sercan Sozer");
LCD_OUT(2,1,"RPM =");
LCD_OUT(2,9,ceviri);
}
}
}