اطلاعیه

Collapse
No announcement yet.

ارتباط EM-18 با میکرو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ارتباط EM-18 با میکرو

    سلام دوستان من ماژول EM-18 را خریدم و راش انداختم ولی با برنامم اصلا جواب نمیده و وقتی تگ و میزنم جواب نمی ده این برناممه اگه میشه کمک کنید



    کد:
    #include <mega32.h>
    #include <delay.h>
    #include <stdio.h>
    #include <alcd.h>
    
    
    #define up PINB.4
    #define down PINB.5
    #define okey PINB.6
    
    
    
    eeprom unsigned char card1[14],card2[14],card3[14],card4[14],card5[14],card6[14],card7[14],card8[14],card9[14],card10[14];
    bit whileflag,key;
    char cn;
    char cno[16];
    unsigned char buff[14],buffread[14],usartcounter,counter,cardnumber=1,equal,c,i,l;
    
    
    
    
    void led_green(void);
    void led_red(void);
    void read_card(void);
    void save_card(void);
    
    
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    interrupt [14] void get_data()
    {
    buff[usartcounter]=UDR;
      if(usartcounter==13)
      {
        whileflag=1;
        usartcounter=0;
      }
      else if(usartcounter==!13)usartcounter++;
      
    
    }
    
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    interrupt[2] void saveing()
    {
    
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("pass new card");
    delay_ms(1000);
    read_card();
    save_card();
    
    //led_green();
    }
      
      
      
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
    
    void read_card(void)
    {
    for(c=0;c<14;c++)buffread[c]=getchar();
    
    }
    
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
    void save_card(void)
    {
    
      switch (cardnumber)
      {
    
      case 1:
    
        for(c=0;c<14;c++)
        {
          card1[c]=buffread[c];
        
        }
        cardnumber=2;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(1) saved");
        led_green();
        delay_ms(2000);
        break;
        
      
      case 2:
    
        for(c=0;c<14;c++)
        {
          card2[c]=buffread[c];
        
        }
        cardnumber=3;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(2) saved");
        led_green();
        delay_ms(2000);
        break;
        
        
      case 3:
    
        for(c=0;c<14;c++)
        {
          card3[c]=buffread[c];
        
        }
        cardnumber=4;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(3) saved");
        led_green();
        delay_ms(2000);
        break;
        
             
      case 4:
    
        for(c=0;c<14;c++)
        {
          card4[c]=buffread[c];
        
        }
        cardnumber=5;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(4) saved");
        led_green();
        delay_ms(2000);
        break;
      
      case 5:
    
        for(c=0;c<14;c++)
        {
          card5[c]=buffread[c];
        
        }
        cardnumber=6;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(5) saved");
        led_green();
        delay_ms(2000);
        break;
      
      case 6:
    
        for(c=0;c<14;c++)
        {
          card6[c]=buffread[c];
        
        }
        cardnumber=7;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(6) saved");
        led_green();
        delay_ms(2000);
        break;
    
    
      case 7:
    
        for(c=0;c<14;c++)
        {
          card7[c]=buffread[c];
        
        }
        cardnumber=8;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(7) saved");
        led_green();
        delay_ms(2000);
        break;                       
      
      
      case 8:
    
        for(c=0;c<14;c++)
        {
          card8[c]=buffread[c];
        
        }
        cardnumber=9;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(8) saved");
        led_green();
        delay_ms(2000);
        break;
      
      case 9:
    
        for(c=0;c<14;c++)
        {
          card9[c]=buffread[c];
        
        }
        cardnumber=10;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(9) saved");
        led_green();
        delay_ms(2000);
        break;
      
      case 10:
    
        for(c=0;c<14;c++)
        {
          card10[c]=buffread[c];
        
        }
        cardnumber=11;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card(10) saved");
        led_green();
        delay_ms(2000);
        break;
      
      
      case 11:
    
    
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("card full !!!");
        delay_ms(2000);       
        break;            
      }        
            
    }      
           
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
    
    interrupt [3] void cleaning()
    {
    key=1;
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("select card NO:");
    
    
    
      while(key)
      {
        if(up==0)
        {
          while(up==0);
          delay_us(30); 
          cn++;
          if(cn>10)cn=0;
          delay_us(30);
          lcd_clear();
          lcd_gotoxy(0,1);
          sprintf(cno,"card = %u",cn);
          lcd_puts(cno);
          
          
          
        }
        
        if(down==0)
        {
          while(down==0);
          delay_us(30);
          if(cn<=0)cn=1;
          cn--;
          delay_us(30);
          lcd_clear();
          lcd_gotoxy(0,1);
          sprintf(cno,"card = %u",cn);
          lcd_puts(cno);  
        }
        
        if(okey==0)
        {
          while(okey==0);
          delay_us(30);
          key=0;
          
        }
        
      }
      
      switch(cn)
      {
    
    
        case 1:
        
          for(c=0;c<14;c++)
          {
            card1[c]=0;
            
          }
          cardnumber=1;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(1) earased");
          delay_ms(2000);
          cn=0;
          break;
          
        case 2:
        
          for(c=0;c<14;c++)
          {
            card2[c]=0;
          }
          cardnumber=2;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(2) earased");
          delay_ms(2000);
          cn=0; 
          break;
          
        case 3:
        
          for(c=0;c<14;c++)
          {
            card3[c]=0;
          }
          cardnumber=3;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(3) earased");
          delay_ms(2000);
          cn=0;  
          break;        
          
        case 4:
        
          for(c=0;c<14;c++)
          {
            card4[c]=0;
          }
          cardnumber=4;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(4) earased");
          delay_ms(2000);
          cn=0;
          break;
          
         case 5:
        
          for(c=0;c<14;c++)
          {
            card5[c]=0;
          }
          cardnumber=5;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(5) earased");
          delay_ms(2000);
          cn=0;
          break;
          
         case 6:
        
          for(c=0;c<14;c++)
          {
            card6[c]=0;
          }
          cardnumber=6;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(6) earased");
          delay_ms(2000);
          cn=0;
          break;
          
         case 7:
        
          for(c=0;c<14;c++)
          {
            card7[c]=0;
          }
          cardnumber=7;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(7) earased");
          delay_ms(2000);
          cn=0; 
          break;
          
         case 8:
        
          for(c=0;c<14;c++)
          {
            card8[c]=0;
          }
          cardnumber=8;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(8) earased");
          delay_ms(2000);
          cn=0;
          break;
          
         case 9:
        
          for(c=0;c<14;c++)
          {
            card9[c]=0;
          }
          cardnumber=9;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(9) earased");
          delay_ms(2000);
          cn=0;
          break;
          
         case 10:
        
          for(c=0;c<14;c++)
          {
            card10[c]=0;
          }
          cardnumber=10;
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card(10) earased");
          delay_ms(2000);
          cn=0;  
          break;  
            
           
            
            
            
          
            
          
      }  
    
    
    }
    
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
    
    void main (void)
    {
    
    DDRB=0X8F;
    PORTB=0XF0;
    
    DDRD=0X00;
    PORTD=0XFF;
    
    UCSRA=0x00;
    UCSRB=0x90;
    UCSRC=0x06;
    UBRRH=0x00;
    UBRRL=6;
    
    MCUCR=0X00;
    GICR=0XC0;
    GIFR=0XC0;
    
    lcd_init(16);
    
    #asm("sei")
    
    
    
    
    
    
        resume:
        
        while(whileflag==0)
        {
            
            
            lcd_putsf("Pass Your Card\n>");       //wait for card
            delay_ms(50);
            lcd_clear();
            lcd_putsf("Pass Your Card\n>>");
            delay_ms(50);
            lcd_clear();
            lcd_putsf("Pass Your Card\n>>>");
            delay_ms(50);
            lcd_clear();
            for(i=0;i<16;i++)
            {
                lcd_putsf("Pass Your Card");
                lcd_gotoxy(i,1);
                lcd_putsf(">>>>");
                delay_ms(50);
                lcd_clear();
                
            }
            lcd_putsf("Pass Your Card\n        <"); 
            delay_ms(50);
            
            for(i=16;i>0;i--)
            {
                lcd_putsf("Pass Your Card");
                lcd_gotoxy(i,1);
                lcd_putsf("<<<<");
                delay_ms(50);
                lcd_clear();
                
            }
            lcd_putsf("Pass Your Card\n<<<"); 
            delay_ms(50);
            lcd_clear();    
            lcd_putsf("Pass Your Card\n<<"); 
            delay_ms(50);
            lcd_clear();
            lcd_putsf("Pass Your Card\n<"); 
            delay_ms(50);
            lcd_clear();
            
        }
        
        whileflag=0;
        
        for(counter=0;counter<14;counter++)
        {
          if(card1[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (1)");
          led_green();
          goto resume;
          
          
          
          
         }
         equal=0; 
         
         
        for(counter=0;counter<14;counter++)
        {
          if(card2[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (2)");
          led_green();
          goto resume;
          
          
          
          
          
         }
         
         equal=0; 
         
         
        for(counter=0;counter<14;counter++)
        {
          if(card3[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (3)");
          led_green();
          goto resume;
          
          
          
          
         }
         
         equal=0; 
         
         
        for(counter=0;counter<14;counter++)
        {
          if(card4[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (4)"); 
          led_green();
          goto resume;
          
          
          
         }
         
         equal=0; 
         
         
        for(counter=0;counter<14;counter++)
        {
          if(card5[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (5)");
          led_green();
          goto resume;
         
          
          
          
         }
         
         equal=0; 
         
         
        for(counter=0;counter<14;counter++)
        {
          if(card6[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (6)");
          led_green();
          goto resume;
          
          
          
          
          
         }
         
         equal=0; 
         
         
        for(counter=0;counter<14;counter++)
        {
          if(card7[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (7)");
          led_green();
          goto resume;
         
          
          
          
         }
         
         equal=0; 
         
         
        for(counter=0;counter<14;counter++)
        {
          if(card8[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (8)");
          led_green();
          goto resume;
          
          
          
          
         }
         
         equal=0; 
         
         
        for(counter=0;counter<14;counter++)
        {
          if(card9[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (9)");
          led_green();
          goto resume;
          
          
          
          
         } 
         
         equal=0; 
         
         
        for(counter=0;counter<14;counter++)
        {
          if(card10[counter]==buff[counter])equal++;
        }
        if(equal==14)
        { 
          
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card (10)");
          led_green();
          goto resume;
          
          
          
          
         }
         
         equal=0; 
         
         if(equal<14)
         {
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("card not matched");
          led_red();
          
         }  
         
          
          
         
         
         
          
          
         
        
         
        
      
    }  
    
    
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
    void led_green(void)
    {
      for(l=0;l<4;l++)
      {
       PORTB.0=~PORTB.0; //led
       delay_ms(500);
      }
      PORTB.2=1;
      delay_ms(1000); //buzer
      PORTB.2=0;
      
      PORTB.3=1;
      delay_ms(1500);  //relay
      PORTB.3=0;
      
      equal=0;
      
      
    
    
    }
    
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
    void led_red(void)
    {
      for(l=0;l<4;l++)
      {
       PORTB.1=~PORTB.1; //led
       delay_ms(5000);
      }
    }
    IN GOD WE TRUST

    #2
    پاسخ : ارتباط EM-18 با میکرو

    چه خبره؟!
    چرا این همه برنامه؟!!!!
    بابا 4 خط بنویس UART رو بخونه جواب میده
    ماژول از این گلاب تر دیگه نیس بخدا
    کاربت بکشی شروع میکنه روی TX دیتا دادن بنده خدا
    بوق هم میزنه :biggrin:.
    بگو چیکارش کردی جواب نمیده؟!!!!
    درایور شبکه و nRF24L01
    کاتالوگ محصولات
    کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
    شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
    فروش اسيلوسکوپ GWinstek GOS-630FC

    دیدگاه


      #3
      پاسخ : ارتباط EM-18 با میکرو

      سلام
      ماژول سالمه اخه با هیپر ترمینال باهش جواب گرفتم ولی با میکرو جواب نمیده میشه یه نگاه کلی به interrupt 14 بکنی و ببینی درسته یا نه؟
      ممنون
      IN GOD WE TRUST

      دیدگاه


        #4
        پاسخ : ارتباط EM-18 با میکرو

        نوشته اصلی توسط hfhossein
        سلام
        ماژول سالمه اخه با هیپر ترمینال باهش جواب گرفتم ولی با میکرو جواب نمیده میشه یه نگاه کلی به interrupt 14 بکنی و ببینی درسته یا نه؟
        ممنون
        میدونم سالمه ، اصلا به این راحتیا خرابش نمیتونی بکنی
        ببین من نگا کردم ولی اصلا معلوم نیست چیکار کردی
        شما UART رو راه اندازی کن ، اینتراپت ریسیو رو هم فعال کن
        مقدار بافر هم اندازه دیتا کارت بذار
        بعد که کارتو بذاری دیتا میاد میریزه تو بافر
        بعد میری بافرو میخونی ( خوندن آرایه ساده هست دیگه )
        حالا نمایش میدی یا LED سبز روشن میکنی یا هر کار دیگه
        به نظر من برنامه رو تیکه تیکه بنویسی و تست منی بهتره
        سعی کن فانکشنال بنویسی
        درایور شبکه و nRF24L01
        کاتالوگ محصولات
        کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
        شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
        فروش اسيلوسکوپ GWinstek GOS-630FC

        دیدگاه


          #5
          پاسخ : ارتباط EM-18 با میکرو

          سلام آقا بسطام ممنون که جواب دادین این و رو هم نوشتم باز جواب نمی گیرم!!!
          مگه وقتی کارت و خوند نباید portb.0 یک بشه؟

          کد:
          #include <mega32.h>
          #include <delay.h>
          
          
          
          bit w=0;
          unsigned char buff[14],usartcounter;
          
          
          //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
          interrupt [USART_RXC] void get_data(void)
          {
          buff[usartcounter]=UDR;
            if(usartcounter==13)
            {
           
              w=1;
            }
            else if(usartcounter==!13)usartcounter++;
                           
          
          }
          void main (void)
          {
          DDRB.0=1;
          PORTB.0=0;
          
          DDRD.0=0;
          PORTD.0=1;
          
          UCSRA=0x00;
          UCSRB=0x90;
          UCSRC=0x06;
          UBRRH=0x00;
          UBRRL=6;
          
          #asm ("sei")
          
          
            while(w)
            {
            PORTB.0=1;
          
            }
          
          
          }
          IN GOD WE TRUST

          دیدگاه


            #6
            پاسخ : ارتباط EM-18 با میکرو

            نوشته اصلی توسط حسین فتح بگ
            سلام آقا بسطام ممنون که جواب دادین این و رو هم نوشتم باز جواب نمی گیرم!!!
            مگه وقتی کارت و خوند نباید portb.0 یک بشه؟
            خب چیکار کردی توی این؟!
            مگه نمیخوای دیتا رو بخونی؟! چرا گذاشتی = 13؟!!!
            ببین اگه میخوای خونده شدن کارت رو مشخص کنی که خود ماژول پایه Buzz داره و میتونی خونده شدن رو متوجه شی ( اگه نخونه پایه 0 نمیشه )
            ولی وقتی بخونه و پایه 0 بشه یعنی درست خونده کارتو و دیتا روی TX ارسال میشه
            حالا شما باید دیتا رو بخونی

            کد:
            #include <mega8.h>
            #include <delay.h>
            
            #ifndef RXB8
            #define RXB8 1
            #endif
            
            #ifndef TXB8
            #define TXB8 0
            #endif
            
            #ifndef UPE
            #define UPE 2
            #endif
            
            #ifndef DOR
            #define DOR 3
            #endif
            
            #ifndef FE
            #define FE 4
            #endif
            
            #ifndef UDRE
            #define UDRE 5
            #endif
            
            #ifndef RXC
            #define RXC 7
            #endif
            
            #define FRAMING_ERROR (1<<FE)
            #define PARITY_ERROR (1<<UPE)
            #define DATA_OVERRUN (1<<DOR)
            #define DATA_REGISTER_EMPTY (1<<UDRE)
            #define RX_COMPLETE (1<<RXC)
            
            // USART Receiver buffer
            #define RX_BUFFER_SIZE 128
            char rx_buffer[RX_BUFFER_SIZE];
            
            #if RX_BUFFER_SIZE <= 256
            unsigned char rx_wr_index,rx_rd_index,rx_counter;
            #else
            unsigned int rx_wr_index,rx_rd_index,rx_counter;
            #endif
            
            // This flag is set on USART Receiver buffer overflow
            bit rx_buffer_overflow;
            
            // USART Receiver interrupt service routine
            interrupt [USART_RXC] void usart_rx_isr(void)
            {
            char status,data;
            status=UCSRA;
            data=UDR;
            if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
              {
              rx_buffer[rx_wr_index++]=data;
            #if RX_BUFFER_SIZE == 256
              // special case for receiver buffer size=256
              if (++rx_counter == 0) rx_buffer_overflow=1;
            #else
              if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
              if (++rx_counter == RX_BUFFER_SIZE)
               {
               rx_counter=0;
               rx_buffer_overflow=1;
               }
            #endif
              }
            }
            
            #ifndef _DEBUG_TERMINAL_IO_
            // Get a character from the USART Receiver buffer
            #define _ALTERNATE_GETCHAR_
            #pragma used+
            char getchar(void)
            {
            char data;
            while (rx_counter==0);
            data=rx_buffer[rx_rd_index++];
            #if RX_BUFFER_SIZE != 256
            if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
            #endif
            #asm("cli")
            --rx_counter;
            #asm("sei")
            return data;
            }
            #pragma used-
            #endif
            
            // Standard Input/Output functions
            #include <stdio.h>
            
            // Declare your global variables here
            void main(void)
            {
            // Declare your local variables here
            
            PORTB=0x00;
            DDRB=0x00;
            
            PORTC=0x00;
            DDRC=0x00;
            
            PORTD=0x10;
            DDRD=0x12;
            
            TCCR0=0x00;
            TCNT0=0x00;
            
            TCCR1A=0x00;
            TCCR1B=0x00;
            TCNT1H=0x00;
            TCNT1L=0x00;
            ICR1H=0x00;
            ICR1L=0x00;
            OCR1AH=0x00;
            OCR1AL=0x00;
            OCR1BH=0x00;
            OCR1BL=0x00;
            
            ASSR=0x00;
            TCCR2=0x00;
            TCNT2=0x00;
            OCR2=0x00;
            
            MCUCR=0x00;
            
            TIMSK=0x00;
            
            // USART initialization
            // Communication Parameters: 8 Data, 1 Stop, No Parity
            // USART Receiver: On
            // USART Transmitter: On
            // USART Mode: Asynchronous
            // USART Baud Rate: 9600
            UCSRA=0x00;
            UCSRB=0x98;
            UCSRC=0x86;
            UBRRH=0x00;
            UBRRL=0x33;
            
            ACSR=0x80;
            SFIOR=0x00;
            
            ADCSRA=0x00;
            
            SPCR=0x00;
            
            TWCR=0x00;
            
            // Global enable interrupts
            #asm("sei")
            
            while (1)
               {
            
               }
            }
            الان اینجا کارت رو بکشی و دیتا بیاد توی بافر rx_buffer[i] نگاه کنی دیتای کارت آمده
            اینو میتونی توی هر آرایه ای خواستی بریزی و استفاده کنی
            درایور شبکه و nRF24L01
            کاتالوگ محصولات
            کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
            شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
            فروش اسيلوسکوپ GWinstek GOS-630FC

            دیدگاه


              #7
              پاسخ : ارتباط EM-18 با میکرو

              اگه میشه خط های برنامتون و برام توضیح بدین کامل متوجه نشدم (خیلی شرمندم)
              IN GOD WE TRUST

              دیدگاه


                #8
                پاسخ : ارتباط EM-18 با میکرو

                نوشته اصلی توسط حسین فتح بگ
                اگه میشه خط های برنامتون و برام توضیح بدین کامل متوجه نشدم (خیلی شرمندم)
                حسین جان اصلا خط توضیحی نداره
                توی ویزارد کدویژن وقتی بیای و UART رو فعال کنی ( بادریت و ... )
                اینتراپت ریسیو رو فعال کنی
                میزان بافر رو مثلا 128 بذاری
                خودش این کد رو تولید میکنه

                همین که شما پایه های TX ماژول رو به RX میکرو وصل کنی و کارت رو بکشی
                میکرو اتوماتیک دیتا رو میگیره و میریزه توی بافرش ( Rx_Buffer )
                بعد توی While میتونی هر کار دلت خواست با این دیتا بکنی
                درایور شبکه و nRF24L01
                کاتالوگ محصولات
                کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                فروش اسيلوسکوپ GWinstek GOS-630FC

                دیدگاه


                  #9
                  پاسخ : ارتباط EM-18 با میکرو

                  آقا بسطام لطفا اگه میشه یه برنامه برام بنویسید که با رد کردن کارت یه ال ای دی روشن بشه دیگه نمی دونم چی کار کنم هر کاری کردم جواب نداد اگه میشه واسه mega32 بنویسید
                  خیلی ممنون
                  IN GOD WE TRUST

                  دیدگاه


                    #10
                    پاسخ : ارتباط EM-18 با میکرو

                    نوشته اصلی توسط حسین فتح بگ
                    آقا بسطام لطفا اگه میشه یه برنامه برام بنویسید که با رد کردن کارت یه ال ای دی روشن بشه دیگه نمی دونم چی کار کنم هر کاری کردم جواب نداد اگه میشه واسه mega32 بنویسید
                    خیلی ممنون
                    بابا پایه Buzz رو بخون
                    اگه 0 شه یعنی کارت خونده شده
                    ولی اگه از روی دیتا میخوای باید وقت بذارم و جون الان EM-18 دم دست ندارم نمیتونم تست کنم و برنامشو بنویسم
                    درایور شبکه و nRF24L01
                    کاتالوگ محصولات
                    کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                    شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                    فروش اسيلوسکوپ GWinstek GOS-630FC

                    دیدگاه


                      #11
                      پاسخ : ارتباط EM-18 با میکرو

                      نوشته اصلی توسط حسین فتح بگ
                      سلام دوستان من ماژول EM-18 را خریدم و راش انداختم ولی با برنامم اصلا جواب نمیده و وقتی تگ و میزنم جواب نمی ده این برناممه اگه میشه کمک کنید



                      کد:
                      #include <mega32.h>
                      #include <delay.h>
                      #include <stdio.h>
                      #include <alcd.h>
                      
                      
                      #define up PINB.4
                      #define down PINB.5
                      #define okey PINB.6
                      
                      
                      
                      eeprom unsigned char card1[14],card2[14],card3[14],card4[14],card5[14],card6[14],card7[14],card8[14],card9[14],card10[14];
                      bit whileflag,key;
                      char cn;
                      char cno[16];
                      unsigned char buff[14],buffread[14],usartcounter,counter,cardnumber=1,equal,c,i,l;
                      
                      
                      
                      
                      void led_green(void);
                      void led_red(void);
                      void read_card(void);
                      void save_card(void);
                      
                      
                      //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                      interrupt [14] void get_data()
                      {
                      buff[usartcounter]=UDR;
                        if(usartcounter==13)
                        {
                          whileflag=1;
                          usartcounter=0;
                        }
                        else if(usartcounter==!13)usartcounter++;
                        
                      
                      }
                      
                      //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                      interrupt[2] void saveing()
                      {
                      
                      lcd_clear();
                      lcd_gotoxy(0,0);
                      lcd_putsf("pass new card");
                      delay_ms(1000);
                      read_card();
                      save_card();
                      
                      //led_green();
                      }
                        
                        
                        
                      //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                      
                      
                      void read_card(void)
                      {
                      for(c=0;c<14;c++)buffread[c]=getchar();
                      
                      }
                      
                      //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                      
                      void save_card(void)
                      {
                      
                        switch (cardnumber)
                        {
                      
                        case 1:
                      
                          for(c=0;c<14;c++)
                          {
                            card1[c]=buffread[c];
                          
                          }
                          cardnumber=2;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(1) saved");
                          led_green();
                          delay_ms(2000);
                          break;
                          
                        
                        case 2:
                      
                          for(c=0;c<14;c++)
                          {
                            card2[c]=buffread[c];
                          
                          }
                          cardnumber=3;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(2) saved");
                          led_green();
                          delay_ms(2000);
                          break;
                          
                          
                        case 3:
                      
                          for(c=0;c<14;c++)
                          {
                            card3[c]=buffread[c];
                          
                          }
                          cardnumber=4;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(3) saved");
                          led_green();
                          delay_ms(2000);
                          break;
                          
                               
                        case 4:
                      
                          for(c=0;c<14;c++)
                          {
                            card4[c]=buffread[c];
                          
                          }
                          cardnumber=5;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(4) saved");
                          led_green();
                          delay_ms(2000);
                          break;
                        
                        case 5:
                      
                          for(c=0;c<14;c++)
                          {
                            card5[c]=buffread[c];
                          
                          }
                          cardnumber=6;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(5) saved");
                          led_green();
                          delay_ms(2000);
                          break;
                        
                        case 6:
                      
                          for(c=0;c<14;c++)
                          {
                            card6[c]=buffread[c];
                          
                          }
                          cardnumber=7;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(6) saved");
                          led_green();
                          delay_ms(2000);
                          break;
                      
                      
                        case 7:
                      
                          for(c=0;c<14;c++)
                          {
                            card7[c]=buffread[c];
                          
                          }
                          cardnumber=8;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(7) saved");
                          led_green();
                          delay_ms(2000);
                          break;                       
                        
                        
                        case 8:
                      
                          for(c=0;c<14;c++)
                          {
                            card8[c]=buffread[c];
                          
                          }
                          cardnumber=9;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(8) saved");
                          led_green();
                          delay_ms(2000);
                          break;
                        
                        case 9:
                      
                          for(c=0;c<14;c++)
                          {
                            card9[c]=buffread[c];
                          
                          }
                          cardnumber=10;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(9) saved");
                          led_green();
                          delay_ms(2000);
                          break;
                        
                        case 10:
                      
                          for(c=0;c<14;c++)
                          {
                            card10[c]=buffread[c];
                          
                          }
                          cardnumber=11;
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card(10) saved");
                          led_green();
                          delay_ms(2000);
                          break;
                        
                        
                        case 11:
                      
                      
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putsf("card full !!!");
                          delay_ms(2000);       
                          break;            
                        }        
                              
                      }      
                             
                      //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                      
                      
                      interrupt [3] void cleaning()
                      {
                      key=1;
                      lcd_clear();
                      lcd_gotoxy(0,0);
                      lcd_putsf("select card NO:");
                      
                      
                      
                        while(key)
                        {
                          if(up==0)
                          {
                            while(up==0);
                            delay_us(30); 
                            cn++;
                            if(cn>10)cn=0;
                            delay_us(30);
                            lcd_clear();
                            lcd_gotoxy(0,1);
                            sprintf(cno,"card = %u",cn);
                            lcd_puts(cno);
                            
                            
                            
                          }
                          
                          if(down==0)
                          {
                            while(down==0);
                            delay_us(30);
                            if(cn<=0)cn=1;
                            cn--;
                            delay_us(30);
                            lcd_clear();
                            lcd_gotoxy(0,1);
                            sprintf(cno,"card = %u",cn);
                            lcd_puts(cno);  
                          }
                          
                          if(okey==0)
                          {
                            while(okey==0);
                            delay_us(30);
                            key=0;
                            
                          }
                          
                        }
                        
                        switch(cn)
                        {
                      
                      
                          case 1:
                          
                            for(c=0;c<14;c++)
                            {
                              card1[c]=0;
                              
                            }
                            cardnumber=1;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(1) earased");
                            delay_ms(2000);
                            cn=0;
                            break;
                            
                          case 2:
                          
                            for(c=0;c<14;c++)
                            {
                              card2[c]=0;
                            }
                            cardnumber=2;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(2) earased");
                            delay_ms(2000);
                            cn=0; 
                            break;
                            
                          case 3:
                          
                            for(c=0;c<14;c++)
                            {
                              card3[c]=0;
                            }
                            cardnumber=3;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(3) earased");
                            delay_ms(2000);
                            cn=0;  
                            break;        
                            
                          case 4:
                          
                            for(c=0;c<14;c++)
                            {
                              card4[c]=0;
                            }
                            cardnumber=4;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(4) earased");
                            delay_ms(2000);
                            cn=0;
                            break;
                            
                           case 5:
                          
                            for(c=0;c<14;c++)
                            {
                              card5[c]=0;
                            }
                            cardnumber=5;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(5) earased");
                            delay_ms(2000);
                            cn=0;
                            break;
                            
                           case 6:
                          
                            for(c=0;c<14;c++)
                            {
                              card6[c]=0;
                            }
                            cardnumber=6;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(6) earased");
                            delay_ms(2000);
                            cn=0;
                            break;
                            
                           case 7:
                          
                            for(c=0;c<14;c++)
                            {
                              card7[c]=0;
                            }
                            cardnumber=7;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(7) earased");
                            delay_ms(2000);
                            cn=0; 
                            break;
                            
                           case 8:
                          
                            for(c=0;c<14;c++)
                            {
                              card8[c]=0;
                            }
                            cardnumber=8;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(8) earased");
                            delay_ms(2000);
                            cn=0;
                            break;
                            
                           case 9:
                          
                            for(c=0;c<14;c++)
                            {
                              card9[c]=0;
                            }
                            cardnumber=9;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(9) earased");
                            delay_ms(2000);
                            cn=0;
                            break;
                            
                           case 10:
                          
                            for(c=0;c<14;c++)
                            {
                              card10[c]=0;
                            }
                            cardnumber=10;
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card(10) earased");
                            delay_ms(2000);
                            cn=0;  
                            break;  
                              
                             
                              
                              
                              
                            
                              
                            
                        }  
                      
                      
                      }
                      
                      //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                      
                      
                      void main (void)
                      {
                      
                      DDRB=0X8F;
                      PORTB=0XF0;
                      
                      DDRD=0X00;
                      PORTD=0XFF;
                      
                      UCSRA=0x00;
                      UCSRB=0x90;
                      UCSRC=0x06;
                      UBRRH=0x00;
                      UBRRL=6;
                      
                      MCUCR=0X00;
                      GICR=0XC0;
                      GIFR=0XC0;
                      
                      lcd_init(16);
                      
                      #asm("sei")
                      
                      
                      
                      
                      
                      
                          resume:
                          
                          while(whileflag==0)
                          {
                              
                              
                              lcd_putsf("Pass Your Card\n>");       //wait for card
                              delay_ms(50);
                              lcd_clear();
                              lcd_putsf("Pass Your Card\n>>");
                              delay_ms(50);
                              lcd_clear();
                              lcd_putsf("Pass Your Card\n>>>");
                              delay_ms(50);
                              lcd_clear();
                              for(i=0;i<16;i++)
                              {
                                  lcd_putsf("Pass Your Card");
                                  lcd_gotoxy(i,1);
                                  lcd_putsf(">>>>");
                                  delay_ms(50);
                                  lcd_clear();
                                  
                              }
                              lcd_putsf("Pass Your Card\n        <"); 
                              delay_ms(50);
                              
                              for(i=16;i>0;i--)
                              {
                                  lcd_putsf("Pass Your Card");
                                  lcd_gotoxy(i,1);
                                  lcd_putsf("<<<<");
                                  delay_ms(50);
                                  lcd_clear();
                                  
                              }
                              lcd_putsf("Pass Your Card\n<<<"); 
                              delay_ms(50);
                              lcd_clear();    
                              lcd_putsf("Pass Your Card\n<<"); 
                              delay_ms(50);
                              lcd_clear();
                              lcd_putsf("Pass Your Card\n<"); 
                              delay_ms(50);
                              lcd_clear();
                              
                          }
                          
                          whileflag=0;
                          
                          for(counter=0;counter<14;counter++)
                          {
                            if(card1[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (1)");
                            led_green();
                            goto resume;
                            
                            
                            
                            
                           }
                           equal=0; 
                           
                           
                          for(counter=0;counter<14;counter++)
                          {
                            if(card2[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (2)");
                            led_green();
                            goto resume;
                            
                            
                            
                            
                            
                           }
                           
                           equal=0; 
                           
                           
                          for(counter=0;counter<14;counter++)
                          {
                            if(card3[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (3)");
                            led_green();
                            goto resume;
                            
                            
                            
                            
                           }
                           
                           equal=0; 
                           
                           
                          for(counter=0;counter<14;counter++)
                          {
                            if(card4[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (4)"); 
                            led_green();
                            goto resume;
                            
                            
                            
                           }
                           
                           equal=0; 
                           
                           
                          for(counter=0;counter<14;counter++)
                          {
                            if(card5[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (5)");
                            led_green();
                            goto resume;
                           
                            
                            
                            
                           }
                           
                           equal=0; 
                           
                           
                          for(counter=0;counter<14;counter++)
                          {
                            if(card6[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (6)");
                            led_green();
                            goto resume;
                            
                            
                            
                            
                            
                           }
                           
                           equal=0; 
                           
                           
                          for(counter=0;counter<14;counter++)
                          {
                            if(card7[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (7)");
                            led_green();
                            goto resume;
                           
                            
                            
                            
                           }
                           
                           equal=0; 
                           
                           
                          for(counter=0;counter<14;counter++)
                          {
                            if(card8[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (8)");
                            led_green();
                            goto resume;
                            
                            
                            
                            
                           }
                           
                           equal=0; 
                           
                           
                          for(counter=0;counter<14;counter++)
                          {
                            if(card9[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (9)");
                            led_green();
                            goto resume;
                            
                            
                            
                            
                           } 
                           
                           equal=0; 
                           
                           
                          for(counter=0;counter<14;counter++)
                          {
                            if(card10[counter]==buff[counter])equal++;
                          }
                          if(equal==14)
                          { 
                            
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card (10)");
                            led_green();
                            goto resume;
                            
                            
                            
                            
                           }
                           
                           equal=0; 
                           
                           if(equal<14)
                           {
                            lcd_clear();
                            lcd_gotoxy(0,0);
                            lcd_putsf("card not matched");
                            led_red();
                            
                           }  
                           
                            
                            
                           
                           
                           
                            
                            
                           
                          
                           
                          
                        
                      }  
                      
                      
                      //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                      
                      void led_green(void)
                      {
                        for(l=0;l<4;l++)
                        {
                         PORTB.0=~PORTB.0; //led
                         delay_ms(500);
                        }
                        PORTB.2=1;
                        delay_ms(1000); //buzer
                        PORTB.2=0;
                        
                        PORTB.3=1;
                        delay_ms(1500);  //relay
                        PORTB.3=0;
                        
                        equal=0;
                        
                        
                      
                      
                      }
                      
                      //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                      
                      void led_red(void)
                      {
                        for(l=0;l<4;l++)
                        {
                         PORTB.1=~PORTB.1; //led
                         delay_ms(5000);
                        }
                      }
                      دوست عزیز آیا فیوزبیت ها را تنظیم کردین یا کریستال خارجی گذاشتین؟اگر هیچ یک از این کار ها را نکنید برد کار نمی کنه. من خودم این مشکلو داشتم.
                      در ضمن اگر برنامه را کمتر و خلاصه تر بگذارید هم فهمش راحت تره و هم سر در گم نمیشید. :agree:
                      [glow=red,2,300]بياييد با كمك هم الكترونيك را گسترش دهيم[/glow]
                      [glow=yellow,2,300]AVR & ARM[/glow]
                      [glow=green,2,300]عشق است و برنامه نويسي [/glow]

                      دیدگاه


                        #12
                        پاسخ : ارتباط EM-18 با میکرو

                        اگر شما جواب گرفتید لطفا یه برنامه ساده برا راه اندازیش که بشه کد کارت و خوند و گذاشت توی ارایه برام بذارید خیلی ممنون می شم
                        IN GOD WE TRUST

                        دیدگاه


                          #13
                          پاسخ : ارتباط EM-18 با میکرو

                          احتمالا مشکل در گرفتن پورت سریال هستش.

                          چون میگید تو هایپر جواب میده ، پس دستورات شرطی را بازنگری کنید.

                          دیدگاه


                            #14
                            پاسخ : ارتباط EM-18 با میکرو

                            نوشته اصلی توسط حسین فتح بگ
                            اگر شما جواب گرفتید لطفا یه برنامه ساده برا راه اندازیش که بشه کد کارت و خوند و گذاشت توی ارایه برام بذارید خیلی ممنون می شم
                            چشم.اگر وقت کنم سر فرصت برنامه اش را پلود میکنم تا دیگران هم استفاده کنند.
                            [glow=red,2,300]بياييد با كمك هم الكترونيك را گسترش دهيم[/glow]
                            [glow=yellow,2,300]AVR & ARM[/glow]
                            [glow=green,2,300]عشق است و برنامه نويسي [/glow]

                            دیدگاه


                              #15
                              پاسخ : ارتباط EM-18 با میکرو

                              حسین جان امید قرار شد بذاره ولی اگه عجله داری تو پروژه های آماده برنامه ای که دیتا از uart میگیره و روی lcd نشون میده رو ببین ( آموزش های استاد کی نژاد یا استاد سپاسیار )
                              جای میکروی دوم ( فرستنده ) ماژول EM-18 وصل کن
                              نیتونه بت ایده بده که چطوریه
                              درایور شبکه و nRF24L01
                              کاتالوگ محصولات
                              کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                              شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                              فروش اسيلوسکوپ GWinstek GOS-630FC

                              دیدگاه

                              لطفا صبر کنید...
                              X