Elektronik / Mikrodenetleyici Projeleri/

PIC18F452 Seri RS232 port bağlantılı kontrol kartı

PIC18F452 Seri RS232 port bağlantılı kontrol kartı” uygulaması Proje Makale Paylaşımı bölümünden Hasan Yetik tarafından gönderildi kendisine teşekkür ediyorum. Uygulamanın C dili ile yazılmış kaynak kodları ve isis simülasyon dosyaları bulunuyor.

PIC18F452 Seri RS232 port bağlantılı kontrol kartı

Bu kartın asıl amacı Gumstix’in dış dünya iletişim kurmasını sağlamaktır fakat seri port tüm cihazlarla da kullanılabilir.

Bu kart seri porttan aldığı bilgilere göre 8 x2 bit dijital çıkış 2 pwm çıkışı 2 adet adc girişi sağlamaktadır. Ayrıca 2 adet seri port tx çıkışı ile diğer cihazlara bilgi gönderebilir.

Geliştrililip farklı amaçlarla kullanılabilir. Kopyalamaka değiştirmek serbesttir. Gömülü linux sistemler için Türkçe kaynak olarak sitemi ziyaret edebilirsiniz hyetik.wordpress.com

İsis devre şeması;

pic18f452-seri-rs232-led-ledler

Hazırlayan: Hasan Yetik – kontrol kartı uygulamasına ait kaynak dosyalar; PIC18F452 Seri RS232 port bağlantılı kontrol kartı

Dosya indirme LINK listesi (TXT formatında) link-10264.zip şifre-pass: 320volt.com

kart.c yazılım içeriği;


char* komut="";
char* yazar="Hasan Yetik - 18F452 Serial Port Controlled Control Board hyetik.wordpress.com";
char lf=10;
int adc0_deger=0,adc1_deger=0;
char* adc0_str="";
char* adc1_str="";
//int deger=0;
char deger,error;
int aynib=1,aynid=1,ayni_adc0=1,ayni_adc1=1,ayni_pwm1=1,ayni_pwm2=1,ayni_about=1,ayni_x=1,ayni_y=1;


void aportu(){


}

int deger_oku(){
     deger=0;
     UART1_Data_Ready()=0;
     do{
     }while (!UART1_Data_Ready());
     deger=UART1_Read();
     UART1_Data_Ready()=0;
     return deger;
}

void adc0(){
RE0_bit=1;
adc0_deger=ADC_Read(0);
IntToStr(adc0_deger,adc0_str);
UART1_Write_Text(adc0_str);
}

void adc1(){
RE0_bit=1;
adc1_deger=ADC_Read(1);
IntToStr(adc1_deger,adc1_str);
UART1_Write_Text(adc1_str);
}

void pwm1(){
deger_oku();
if (deger==33){
PWM1_Stop();                  // pwm2$!
}
else{
PWM1_Set_Duty(deger);
PWM1_Start();                       // start PWM1
}
}

void pwm2(){
deger_oku();
if (deger==33){
PWM2_Stop();
}
else{
PWM2_Set_Duty(deger);
PWM2_Start();
}                       // start PWM1
}

void help(){
RE1_bit=1;
UART1_Write(lf);
UART1_Write_Text(yazar);


}
void hata(){
UART1_Write(0x07);
UART1_Write_Text("hata olustu");
}
void bportu(){

     deger_oku();
     PORTB=deger;    // BBB
}

void dportu(){
     deger_oku();
     PORTD=deger;
}
void xpos(){
     deger_oku();
     portb=deger;
     Soft_UART_Write(deger);

}
void ypos(){
     deger_oku();
     portb=deger;
     Soft_UART_Write(deger);
}

void main() {
  TRISA=0xFF;
  TRISB=0x00;
  TRISD=0x00;
  TRISE=0x00;
  PORTA=0;
  PORTE=0;
  PORTD=0;
  PORTB=0;
  PWM1_Init(476);                    // Initialize PWM1 module at 5KHz
  PWM2_Init(47600);                    // Initialize PWM2 module at 5KHz
  error = Soft_UART_Init(&PORTC, 5, 4, 19200, 0);
  portb=error;

  UART1_Init(19200);              // Initialize UART module at 9600 bps
  Delay_ms(200);                 // Wait for UART module to stabilize

  while(1) {                    // Endless loop
        PORTE=0;

        if (UART1_Data_Ready()==1){
        

        UART1_Read_Text(komut,"$",255);

            aynid=strcmp(komut,"d");
            if (aynid==0){
            RE1_bit=1;
            dportu();
            }
            aynib=strcmp(komut,"b");     //portb$5portd$0        0x39
            if (aynib==0){
            RE1_bit=1;
            bportu();
            }
            ayni_adc0=strcmp(komut,"a0");
            if (ayni_adc0==0){
            RE1_bit=1;
            adc0();
            }
            ayni_adc1=strcmp(komut,"a1");
            if (ayni_adc1==0){
            RE1_bit=1;
            adc1();
            }
            ayni_pwm1=strcmp(komut,"p1");
            if (ayni_pwm1==0){
            RE1_bit=1;
            pwm1();
            }
            ayni_pwm2=strcmp(komut,"p2");
            if (ayni_pwm2==0){
            RE1_bit=1;
            pwm2();
            }
            ayni_x=strcmp(komut,"x");
            if (ayni_x==0){
            RE1_bit=1;
            xpos();
            }
            ayni_y=strcmp(komut,"y");
            if (ayni_y==0){
            RE1_bit=1;
            ypos();
            }
            ayni_about=strcmp(komut,"?");
            if (ayni_about==0){
            RE1_bit=1;
            help();
            }




        }
  }

}

Yorum

Soru: