“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ı;
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(); } } } }
Şifre-Pass: 320volt.com
Yayım tarihi: 2010/05/11 Etiketler: adc, microchip pic projeleri, PIC18F452 örnekleri, pwm devreleri, rs232, seri haberleşme, soft uart