1000 kişiden bir kişi için ! devam.... 320volt blog

Elektronik Devreler Projeler » Microchip PIC devreleri bilgiler »

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

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

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

Hazırlayan: Hasan Yetik – kontrol kartı uygulamasına ait kaynak dosyalar; PIC18F452-seri-rs232-port-baglantili-kontrol-karti.zip

İsis devre şeması;

pic18f452-seri-rs232-led-ledler

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

        }
  }

}

sakla feedmail facebook twit  

Yazar: gevv

Yazarımızın 320volt.com Blog üzerinde şu an okuduğunuz yazı dahil 1893 yazısı bulunmaktadır. Yazarımız hakkında bilgileri ve diğer yazılarını görmek için bakınız;

online elektronik komponent satışı

Yorum yapın

Doğrulama: (kutuyu işaretleyiniz)


  • Lütfen Türkçe imla kurallarına dikkat etmeye özen gösteriniz.
  • Yorumunuz yönetici tarafından kontrol edilmeden yayımlanmaz.
  • Paylaşılan devrelerin malzeme listesini istemeyiniz. Olsa zaten paylaşılırdı şema üzerinden listeyi çıkartabilirsiniz
  • Gavatar sitesine avatarınızı yükleyebilirsiniz.
sponsor

sponsor

diptrace

diptrace

sponsor

sponsor

embeddedtrading

embeddedtrading

sponsor

sponsor

seo

Seo Danışmanlığı

feed save face twit  
Translate: TürkçeEnglish

Forum Son İletiler