اطلاعیه

Collapse
No announcement yet.

کمک در راه اندازی تاچ مقاومتی با کدویژن

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

    کمک در راه اندازی تاچ مقاومتی با کدویژن

    سلام دوستان

    من یک تاچ مقاومتی 4 سیمه گرفتم برنامشم تا حدودی نوشتم ولی نمیتونم کاملش کنم میشه خواهشا کمکم کنید . :cry2: :cry2:

    میخوام ولتاژ رو بخونه و بعد رو ال سی دی کارکتری مقدار x رو در یک سطر و مقدار y رو در سطر بعد نمایش بده .

    اگه با کدویژن باشه بهتره ولی اگه با بسکام هم بود اشکالی نداره .

    چون بار اولمه که با تاچ کار میکنم و توی سالم بودن تاچ هم شک دارم و به فروشنه گفتم اگه خراب باشه میام عوض میکنم خواهشا دوستان قهار کمکم کنن .
    -O< -O<
    که با این درد اگر دربند درمانند درمانند
    فامیل دور : اشاره داره به درهایی که واقعا در نیستن ، مثل نقاشی در روی دیوار. یعنی این دردها مارو شبیه اون درها میکنه .

    #2
    پاسخ : راه اندازی تاچ مقاومتی

    بی زحمت کدویژن ها ببینن کد زیر درسته
    البته خطا نداره می خوام بدونم با همین جور که نوشتن مقدار x و y رو میتونه نشون بده یا نه .

    اگه اشتباه یک راه نمایی بکنید . راستی در قسمت sprintf رو در حالت int,width قرار دادم . مقادیر رو نشون میده روی lcd کارکتری ؟؟؟؟؟؟؟؟


    #include <mega8.h>

    #include <delay.h>

    // Alphanumeric LCD functions
    #include <alcd.h>

    #include <stdio.h>
    #define ADC_VREF_TYPE 0x20
    char buffer[16];
    char buffer1[16];

    unsigned int read_adc(unsigned char adc_input){
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCH;
    }


    // Declare your global variables here
    void init1();
    void main(void){
    signed int x,y;

    lcd_init(16);

    init1();

    while (1)
    {
    PORTC.0=1;
    PORTC.1=0;
    PORTC.2=0;
    PORTC.3=0;
    DDRC.0=1;
    DDRC.1=0;
    DDRC.2=1;
    DDRC.3=0;
    delay_ms(20);
    x=read_adc(1);

    PORTC.0=0;
    PORTC.1=1;
    PORTC.2=0;
    PORTC.3=0;
    DDRC.0=0;
    DDRC.1=1;
    DDRC.2=0;
    DDRC.3=1;
    delay_ms(20);
    y=read_adc(0);

    sprintf(buffer,"x=",x);
    lcd_gotoxy(0,0);
    lcd_puts(buffer);
    sprintf(buffer1,"y=",y);
    lcd_gotoxy(0,1);
    lcd_puts(buffer1);
    delay_ms(50);

    }
    }

    void init1(){
    MCUCR=0x00;
    MCUCSR=0x00;
    TIMSK=0x00;
    ACSR=0x80;
    SFIOR=0x00;
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x83;
    }
    که با این درد اگر دربند درمانند درمانند
    فامیل دور : اشاره داره به درهایی که واقعا در نیستن ، مثل نقاشی در روی دیوار. یعنی این دردها مارو شبیه اون درها میکنه .

    دیدگاه


      #3
      پاسخ : کمک در راه اندازی تاچ مقاومتی با کدویژن

      یه مقدار اصلاحات لازم داره
      کد:
      #define TochALine(c)  (c ? Bitset(PORTF,BIT(2)) : Bitclear(PORTF,BIT(2)))    
      #define TochADir(c)   (c ? Bitset(DDRF,BIT(2)) : Bitclear(DDRF,BIT(2))) 
      #define TochBLine    PORTA.5
      #define TochBDir     DDRA.5
      #define TochCLine(c)  (c ? Bitset(PORTF,BIT(3)) : Bitclear(PORTF,BIT(3))) 
      #define TochCDir(c)   (c ? Bitset(DDRF,BIT(3)) : Bitclear(DDRF,BIT(3))) 
      #define TochDLine    PORTA.6
      #define TochDDir     DDRA.6
      
      
      
      
      unsigned int Toch_X=0,
             Toch_Y=0,
             Toch_XAct=0,
             Toch_YAct=0;
      
      
      
      void ReadXPos(int TAV)
      {
       unsigned long Avrage=0;
       int i=0;
       TochALine(0); 
       TochADir(0); 
       TochBLine=0; 
       TochBDir=0; 
       TochCLine(0); 
       TochCDir(1); 
       TochDLine=1; 
       TochDDir=1; 
      
      
      
       delay_ms(10);
       for(i=0 ;i<TAV ;i++)
       {
       Avrage+=read_adc(2);
       }
       if((Avrage/TAV) > 10)
       {
       Toch_X=Avrage/TAV ;
       }
       else
       {
       Toch_X=0;
       }
      }
      
      void ReadYPos(int TAV)
      {
       unsigned long Avrage=0;
       int i=0;
       TochALine(0); 
       TochADir(1); 
       TochBLine=1; 
       TochBDir=1; 
       TochCLine(0); 
       TochCDir(0); 
       TochDLine=0; 
       TochDDir=0; 
      
       delay_ms(10);
       for(i=0 ;i<TAV ;i++)
       {
       Avrage+=read_adc(3);
       }
       if((Avrage/TAV) > 10)
       {
       Toch_Y=Avrage/TAV ;
       }
       else
       {
       Toch_Y=0;
       }
      }
      
      int CheckTochAre(int x,int y,int x1,int y1)
      {
       ReadYPos(1);
       ReadXPos(1);
       if( Toch_X >= x)
       {
       if( Toch_X <= x1)
       {
        if(Toch_Y >= y)
        {
        if(Toch_Y <= y1)
        {
         CPU_AlarmBeep=1;
         delay_ms(25);
         CPU_AlarmBeep=0;
         Toch_Y=0;
         Toch_X=0;
         return (1);
        }
        }
       }
       }
       return(0);
      }
      در کل از درایور استفاده کنی بهتره
      از جمله ی رفتگان این راه دراز
      باز آمده ای کو که به ما گوید راز
      هان بر سر این دو راهه از روی نیاز
      چیزی نگذاری که نمی آیی باز

      دیدگاه


        #4
        پاسخ : کمک در راه اندازی تاچ مقاومتی با کدویژن

        من از کدی که نوشتین سردر نمیارم .

        میشه همین کدی رو که نوشتم رو بگین کجاهاش اشتاست .....

        که با این درد اگر دربند درمانند درمانند
        فامیل دور : اشاره داره به درهایی که واقعا در نیستن ، مثل نقاشی در روی دیوار. یعنی این دردها مارو شبیه اون درها میکنه .

        دیدگاه


          #5
          پاسخ : کمک در راه اندازی تاچ مقاومتی با کدویژن

          ممنون از اینکه جواب نمیدین .

          خودم تونستم برنامشو کامل کنم . :applause: :applause: :applause: :applause: :applause: :applause: :applause: :applause: :applause: :applause: :applause:

          تو پروتیوس هم جواب داد .

          :wow: :wow: :wow: :wow: :wow: :wow: :wow: :wow: :wow: :wow:
          که با این درد اگر دربند درمانند درمانند
          فامیل دور : اشاره داره به درهایی که واقعا در نیستن ، مثل نقاشی در روی دیوار. یعنی این دردها مارو شبیه اون درها میکنه .

          دیدگاه

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