Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

CCS Seri İletişim yardım

Başlatan aboo67, 19 Şubat 2013, 23:59:55

aboo67

bir degişkeni vericiden  alıcıya nasıl yollayabilirim örneğin kumandadan sayısal bir degişken alıcıya aynı şekilde yollayıp bu bilgiyi nasıl kullanabilirim

aboo67

yardım edicek yokmu kumandadan yolladığım sayısal degeri 7seg displayde göstermem lazım

toprak0258

merhabalar...
ben sorunu tam olarak anlamadim...onun icin yazacaklarimin kafani karistirmasini istemiyorum...sen ogrenmek icinmi bazi seyleri soruyorsun yoksa bir projeni sonlandirmak icinmi soruyorsun bunu netlestirsen iyi olur...rs 232, iic ,ve  spi sistemleri mevcuttur...bunlarin basit olani rs232 dir...bununda gets.fets ve getc,fgetc gibi alici komutlari ve puts.fputs ve putc.fputc gibi komutlarda verici icin kullanilir....yazdigin bir program var ise paylas yardimci olalim.....
selamlar.....
Bilgi paylaşıldıkca değer kazanır.

toyo

Kardeş örenek olması açısından bi program veriyim.ben yaparken çok yardım edildi bu sitede.0'dan hiç bişey bilmeden bu siteden öğrenerek yazdım.Hepsinden Allah razı olsun.
Bu programlarda iletisim_1 isiminde bir rs232 adres yolu tanımlı.onları sil.
fputc(0x55,iletisim_1); değilde putc(0x55); ile gönder.
if(fgetc(iletisim_1)==0xA1) değilde if(getc()==0xA1) ) ile al.
alıcı programı derlersen çalışmaz lcd.c dosyasında değişiklik yapman gerekiyo. sadece örnek olsun diye paylaşıyorum.hepsi bana aittir.takılırsan sorabilirsin.

---BEBEK VERİCİ----
#include <12F675.h>           //Kullanılacak denetleyicinin başlık dosyayı tanıtılıyor.
#device ADC=8                 //8 bitlik ADC kullanılacağı tanımlanıyor.

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                    //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)//Gecikme fonksiyonu içn osilatör frekansı ayarlanıyor.

#use rs232(baud=2400, xmit=PIN_A1,parity=N,stop=1,stream=iletisim_1) //İşaretsiz tam sayı tipinde değişken tanımlanıyor.

unsigned long int ses=0;
int i;             //Tamsayı tipinde değişken tanımlanıyor. 
void main()
{
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
 setup_timer_1(T1_DISABLED);
 setup_comparator(NC_NC_NC_NC);
 setup_vref(FALSE);
 setup_adc(adc_clock_div_8);
 setup_adc_ports( AN0_analog); 
 set_adc_channel(0);
 set_tris_a(0x01);   //A portunun 1.biti giriş olarak ayarlanıyor.
 delay_us(20);       //20 mikrosaniye gecikme veriliyor.

   while(TRUE)
         {
          ses=Read_adc();        //ADC'den okunulan bilgi ses değişkenine aktarılıyor.
          delay_ms(10) ;         //10 milisaniye gecikme veriliyor.
               if(ses>180)        //Eğer ADC işleminin sonucu 180'den büyük ise.
                {
                  output_high(pin_a2);   //PortA'nın 2.biti 1 yapılıyor.
                  delay_ms(250);         //250 milisaniye gecikme veriliyor.
                  output_low(pin_a2);    //PortA'nın 2.biti 0 yapılıyor.      
                for(i=0;i<10;i++)
                {
                  delay_ms(10);        //10 milisaniye gecikme veriliyor.
                  // ALICI UYANDIRMA KODLARI//
                  fputc(0x55,iletisim_1);//iletisim_1 0x55 üzerinden gönderiliyor.
                  fputc(0x55,iletisim_1);
                  fputc(0x55,iletisim_1);
                  fputc(0x55,iletisim_1);
                  fputc(0x55,iletisim_1);
                  //ŞİFRE
                  fputc(0x6C,iletisim_1); //iletisim_1 0x6C üzerinden gönderiliyor.
                  //ASIL VERİ
                  fputc(0x9A,iletisim_1); //iletisim_1 0x9A üzerinden gönderiliyor.
                 }
                 
                
                } 
         }
}



----GAZ VERİCİ-----
#include <12F675.h>
#device ADC=8
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT              //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                    //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)

#use rs232(baud=2400, xmit=PIN_A1,parity=N,stop=1,stream=iletisim_1)

unsigned long int gas=0,ver=0;
int i=0;

void main()
{
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
 setup_timer_1(T1_DISABLED);
 setup_comparator(NC_NC_NC_NC);
 setup_vref(FALSE);
 setup_adc(adc_clock_div_8);
 setup_adc_ports( AN0_analog); 
 set_adc_channel(0);
 set_tris_a(0x01);
 delay_us(20);

   while(TRUE)
         {
          gas=Read_adc();    //ADC'den okunulan bilgi gas değişkenine aktarılıyor.
          delay_ms(10);
               if(gas>225) //Eğer ADC işleminin sonucu 254'dan büyük ise
              
                {
                
                output_high(pin_a2);
                  delay_ms(250);
                  output_low(pin_a2);              
                  
                  for(i=0;i<10;i++)
                  {
                  // ALICI UYANDIRMA KODLARI//
          
                  fputc(0x55,iletisim_1);//iletisim_3 üzerinden gönderiliyor.
                  fputc(0x55,iletisim_1);
                  fputc(0x55,iletisim_1);
                  fputc(0x55,iletisim_1);
                  fputc(0x55,iletisim_1);
              
                  //ŞİFRE
                  fputc(0xC3,iletisim_1);
                  //ASIL VERİ
                  fputc(0x7F,iletisim_1);
                  
                  
                  }
                  i=0;
               }
                
          }
}                 




--------KAPI VERİCİ----
#include <16f628a.H> //Kullanılacak denetleyicinin başlık dosyayı tanıtılıyor.
                
#FUSES NOWDT             //No Watch Dog Timer
#FUSES XT                //Internal RC Osc, no CLKOUT
#FUSES NOPUT             //No Power Up Timer
#FUSES NOPROTECT         //Code not protected from reading
#FUSES NOBROWNOUT        //No brownout reset
#FUSES NOLVP             //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD             //No EE protection


#use delay(clock=4000000)  //Gecikme fonksiyonu içn osilatör frekansı ayarlanıyor.

#use rs232(baud=2400,xmit=pin_b2,parity=N,stop=1,force_sw,stream=iletisim_1)// Seri iletişimin ayarları yapılıyor.
int i=0; //Tamsayı tipinde değişken tanımlanıyor. 
void main()
{     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);

while(TRUE)
      {
         if(!input(pin_b0)) //Eğer portbnin 0.biti 0 ise .       
         {
          delay_ms(15);    //15 mikro saniye gecikme
          for(i=0;i<10;i++);//
          {
          // ALICI UYANDIRMA KODLARI//
          fputc(0x55,iletisim_1);//iletisim_1 0x55üzerinden gönderiliyor.
          fputc(0x55,iletisim_1);
          fputc(0x55,iletisim_1);
          fputc(0x55,iletisim_1);
          fputc(0x55,iletisim_1);
          //ŞİFRE
          fputc(0xA1,iletisim_1);//iletisim_1 0xA1 üzerinden gönderiliyor.
          //ASIL VERİ
          fputc(0x3D,iletisim_1);//iletisim_1 0x3D üzerinden gönderiliyor
          }
          
         }
         
}
}







-----------------ALICI-------------------
#include <16f628A.h>       //Kullanılacak denetleyicinin başlık dosyayı tanıtılıyor.

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                      //HACİRİCİ KRİSTAL OSİLATÖR KULLANILACAK
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#fuses MCLR

#use delay(clock=4000000)

#use rs232(baud=2400,rcv=PIN_B3,parity=N,stop=1,stream=iletisim_1,force_sw)

#define LCD_ENABLE_PIN     PIN_A0      //lcd enable pini A0
#define LCD_RS_PIN         PIN_A1      //lcd rs pini pin A1
#define LCD_RW_PIN         PIN_A2     //lcd rw pini pin A2
#define LCD_DATA4          PIN_B7         //lcdnin data4 pini pinB7 
#define LCD_DATA5          PIN_B6         //lcdnin data5 pini pinB6 
#define LCD_DATA6          PIN_B5         //lcdnin data6 pini pinB5 
#define LCD_DATA7          PIN_B4         //lcdnin data7 pini pinB4

#define dur pin_b0         //pin_b0 dur adına tanımlanıyor.
#define tit pin_b2         //pin_b2 tit adına tanımlanıyor.
#define led pin_b2         //pin_b0 led adına tanımlanıyor.

#include <Clcd.c>          //Clcd Dosyası tanıtılıyorç

void main()
{
   lcd_gotoxy(1,1);                    //Lcd imlecinin pozizyonu ayarlanıyor.
   lcd_init();                         //Lcd hazırlanıyor.
   
 
   printf(lcd_putc,"\f EMRE SIMSEK");  //Lcd temizlenerek Emre Şimşek yazılıyor.
   lcd_gotoxy(1,2);                    //Lcd imlecinin pozizyonu ayarlanıyor.
   printf(lcd_putc,"\f 3510410077");  //Lcd temizlenerek 3510410077 yazılıyor.
   delay_ms(500);                    //500 saniye gecikme veriliyor. 
   printf(lcd_putc, "\f");           //Lcd temizleniyor.

   output_high(tit);       //Titresim motoru çalıştırılıyor
   output_high(led);       //Led yakılıyor.
   delay_ms(500);          //500 saniye gecikme veriliyor. 
   output_low(tit);        //Titresim motoru kapatılıyor.
   output_low(led);        //Led söndürülüyor.

while(TRUE)             //Sonsuz döngü.
{
//*****************BEBEK ALICI KISIM*****************//
 if(fgetc(iletisim_1)==0x6C)     //Eğer iletisim_1 ayarlarına göre 0x6C geldiyse
      {
      if(fgetc(iletisim_1)==0x9A) //Eğer iletisim_1 ayarlarına göre 0x9A geldiyse
         {
            lcd_gotoxy(1,1);     //Lcd imlecinin pozizyonu ayarlanıyor.
            printf(lcd_putc,"______ALARM______"); // Lcd ye ______ALARM______ yazılıyor.
            lcd_gotoxy(1,2);
            printf(lcd_putc,"BEBEK AGLIYOR");  // Lcd ye BEBEK AGLIYOR  yazılıyor.
            while(input(dur))    //Dur butonuna basılmadığı sürece 
              {
               delay_ms(15);     //15 milisaniye gecikme veriliyor.
               output_high(led); //Led yakılıyor.
               delay_ms(500);    //500 milisaniye gecikme veriliyor.
               output_low(led);  //Led söndürülüyor.
               delay_ms(500);    ////500 milisaniye gecikme veriliyor.
               }
               printf(lcd_putc, "\f"); //Lcd temizleniyor.
               output_low(led); //Led söndürülüyor.
              }
      }
//*****************GAZ ALICI KISIM*****************//
if(fgetc(iletisim_1)==0xC3)  //Eğer iletisim_1 ayarlarına göre 0xC3 geldiyse
      {
      if(fgetc(iletisim_1)==0x7F) //Eğer iletisim_1 ayarlarına göre 0x7F geldiyse
         {
            lcd_gotoxy(1,1);
            printf(lcd_putc,"______ALARM______");// Lcd ye ______ALARM______ yazılıyor.
            lcd_gotoxy(1,2);
            printf(lcd_putc,"GAZ KACAGI");  // Lcd ye GAZ KACAGI yazılıyor.
            while(input(dur))    //Dur butonuna basılmadığı sürece 
              {
               delay_ms(15);     //15 milisaniye gecikme veriliyor.
               output_high(led); //Led yakılıyor.
               delay_ms(500);    //500 milisaniye gecikme veriliyor.
               output_low(led);  //Led söndürülüyor.
               delay_ms(500);    ////500 milisaniye gecikme veriliyor.
               }
               printf(lcd_putc, "\f"); //Lcd temizleniyor.
               output_low(led); //Led söndürülüyor.
              }
               printf(lcd_putc, "\f"); //Lcd temizleniyor.
               output_low(led);     //Led söndürülüyor.
         }
       
//*****************KAPI ALICI KISIM*****************//
     if(fgetc(iletisim_1)==0xA1) //Eğer iletisim_1 ayarlarına göre 0xA1 geldiyse
     {
     if(fgetc(iletisim_1)==0x3D) //Eğer iletisim_1 ayarlarına göre 0x3D geldiyse
         {
            lcd_gotoxy(1,1);
            printf(lcd_putc,"______ALARM______");// Lcd ye ______ALARM______ yazılıyor.
            lcd_gotoxy(1,2);
            printf(lcd_putc,"KAPI CALIYOR");  // Lcd ye KAPI CALIYOR yazılıyor.
             while(input(dur))    //Dur butonuna basılmadığı sürece 
              {
               delay_ms(15);     //15 milisaniye gecikme veriliyor.
               output_high(led); //Led yakılıyor.
               delay_ms(500);    //500 milisaniye gecikme veriliyor.
               output_low(led);  //Led söndürülüyor.
               delay_ms(500);    ////500 milisaniye gecikme veriliyor.
               }
               printf(lcd_putc, "\f"); //Lcd temizleniyor.
               output_low(led); //Led söndürülüyor.
               }
               printf(lcd_putc, "\f"); //Lcd temizleniyor.
               output_low(led);     //Led söndürülüyor.
     }
}
}
Gelirken ne getirilir ki giderken ne götürülür.