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

| Mayıs 31, 2023 Tarihinde güncellendi
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

devre şeması;

pic18f452-seri-rs232-led-ledler

Hazırlayan: Hasan Yetik

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();
            }




        }
  }

}

pic18f452-seri-rs232-port-baglantili-kontrol-karti

Şifre-Pass: 320volt.com

Yayım tarihi: 2010/05/11 Etiketler: , , , , , ,



Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir