veri gönderme

slckyzc89

Üye
Katılım
8 Ara 2011
Mesajlar
17
Puanları
1
Yaş
34
merhaba arkadaşlar

3 farklı veriyi ( mesela 3 adet ppotansiyometre ) pic ten okuyup , (analog degelerini , adc ile ) 2. bir pic e gönderip ve 2. pic in çkışındada bu 3 adet veriyi lcd de yazdrmak istirorum
bir tane veriyi yaptım lcd de gösterdm fakat veriler artınca kafam karıştı yapamaddm aynı mantık yazdım kodları ama olmadı.. ( acemi olmanın zararları ) :))

1 adetpot için program şu şekilde


verici kısmı


Kod:
#include "C:\Users\lg\Desktop\devre\verici\main.h"
#fuses HS, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)
#use RS232 (baud=9600, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7)
#use fast_io(a)
#use fast_io(b)
#use fast_io(d)
#define use_portb_lcd TRUE
#include <LCD.c>
#include <stdlib.h>
char s;
unsigned long int dijital;




void main()
{


   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);


   set_tris_a(0x01);
   set_tris_c(0xff);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(ALL_ANALOG);
   set_adc_channel(1); 
   lcd_init();
    while(1)
    {
     set_adc_channel(1);
     putc(read_adc());
      lcd_gotoxy(2,1);
      printf(lcd_putc,"adc=%u\r",read_adc());
      
      
    }


}





alıcı kısmı
Kod:
#include "C:\Users\lg\Desktop\devre\alici\main.h"



#fuses HS, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)
#use RS232 (baud=9600, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7)
#use fast_io(a)
#use fast_io(b)
#use fast_io(d)
#define use_portb_lcd TRUE
#include <LCD.c>
char r;
unsigned long int adc;
unsigned int a,b;




void main()
{


   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);


   lcd_init();
       while(1)
      { 
         getc();
         lcd_gotoxy(4,1);
          printf(lcd_putc,"adc=%u\r",getc()); 
      }

}



program bir pot için ısıste çalışıyor bu pto sayısı artttgında chardaki değişken ( dizi) sayısını arttrmam gerek yada sırasıyla gelecek bu veriler ama nasıl bir programlama olur çözemedm
 
bırinci çevrim bittikten sonra bunun sonucunu bir degiskene kaydet sonra 2. Ve 3. Cevrimleri ayrı degiskenlere kaydet ve bu üç degiskeni seri bılgi olarak gönder böyleece hem veriler karışmamıs olur hemde kolay işlenır
 
3 farklı kanal için veri göndermeden önce başlarına bi id belirleyin dinleyici taraftada ise bunu if komutuyla teyid ettirip okuma yaptırın
seri iletişim protokollerini inceleminizi tavsiye ederim modbus, i2c ,wire(tekhat)... ben protokollerle uğraşamam diyosanız bit bit okuma yaptırıp sağa-sola öteleme mantığıyla 8 bitlik paketler oluşturabilirsiniz.
 

Forum istatistikleri

Konular
128,195
Mesajlar
915,746
Kullanıcılar
449,970
Son üye
Liliane

Yeni konular

Geri
Üst