اطلاعیه

Collapse
No announcement yet.

هدر برای XPT2046 , ads7843

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

    هدر برای XPT2046 , ads7843

    سلام به همه دوستان
    چند وقت قبل سر یه پروژه نیاز بود از این ای سی ها استفاده کنم
    بنابراین یه هدر تروتمیز + ارتباط نرم افزاری واسش نوشتم که اینجا میذارم تا همه ازش استفاده کنن
    فقط شما باید اول هدر این پایه هارو طبق نیاز خودتون اول هدر تغییر بدید
    این هدر رو با lpc1768 تست شده و کامل توسط خودم جواب گرفته شده.
    کد:
    //******************      XPT2046 Library By:Alireza Hammamizadeh *****************
    //******************************** Alireza.hammamizadeh@yahoo.com *********************
    //***************************************************************************************
    //***************************************************************************************
    //***************************************************************************************
    //***************************************************************************************
    #define  XPT2046_DCLK(x)     {if(x) LPC_GPIO1->FIOSET|=(1<<10); else LPC_GPIO1->FIOCLR|=(1<<10); }
    #define  XPT2046_DCLK_OUTPUT()  LPC_GPIO1->FIODIR|=(1<<10) 
    //***************************************************************************************
    #define  XPT2046_CS(x)       {if(x) LPC_GPIO1->FIOSET|=(1<<14); else LPC_GPIO1->FIOCLR|=(1<<14); }
    #define  XPT2046_CS_OUTPUT()    LPC_GPIO1->FIODIR|=(1<<14) 
    //***************************************************************************************
    #define  XPT2046_DIN(x)       {if(x) LPC_GPIO1->FIOSET|=1<<18; else LPC_GPIO1->FIOCLR|=1<<18; }
    #define  XPT2046_DIN_OUTPUT()    LPC_GPIO1->FIODIR|=(1<<18) 
    //***************************************************************************************
    #define  XPT2046_DIO()       (LPC_GPIO1->FIOPIN&(1<<16))
    #define  XPT2046_DIO_INPUT()    LPC_GPIO1->FIODIR&=~(1<<16) 
    //***************************************************************************************
    #define  XPT2046_PENIRQ()      (LPC_GPIO1->FIOPIN&(1<<17))
    #define  XPT2046_PENIRQ_INPUT()   LPC_GPIO1->FIODIR&=~(1<<17) 
    //***************************************************************************************  
    //***************************************************************************************
    خب اینارو که طبق نیازتون تغیر دادید تو هدر بعدش تو مینتون فقط اینکلود میکنید هدر رو و
    ابتدا باید تابع
    کد:
    XPT2046_SPI_INT( );
    فراخوانی بشه و سپس تا بع
    کد:
    XPT2046_SEND(CMD_ENABLE_PENIRQ);
    که باعث میشه ای سی در صورت گرفتن لمس جدید یه اینتر اپ بده
    کد:
     while(XPT2046_PENIRQ());
    	  datax= XPT2046_SEND(CMD_X_POSITION);
    	  datay= XPT2046_SEND(CMD_Y_POSITION);
    		 XPT2046_SEND(CMD_ENABLE_PENIRQ);
    و تیکه کد بالا وایمیسه تا نقطه جدید لمس بشه و بعد لمس شدن مقدار x و y رو تو دوتا متغییر ذخیره میکنه و بعدشم دوبار ای سیو برای مختصات جدید اماده میکنه
    فقط استفاده کردید , یه فاتحه واسه شهدا بخونید دمتون گرم.
    اینم کل فایل هدر
    کد:
    //******************      XPT2046 Library By:Alireza Hammamizadeh *****************
    //******************************** Alireza.hammamizadeh@yahoo.com *********************
    //***************************************************************************************
    //***************************************************************************************
    //***************************************************************************************
    //***************************************************************************************
    #define  XPT2046_DCLK(x)     {if(x) LPC_GPIO1->FIOSET|=(1<<10); else LPC_GPIO1->FIOCLR|=(1<<10); }
    #define  XPT2046_DCLK_OUTPUT()  LPC_GPIO1->FIODIR|=(1<<10) 
    //***************************************************************************************
    #define  XPT2046_CS(x)       {if(x) LPC_GPIO1->FIOSET|=(1<<14); else LPC_GPIO1->FIOCLR|=(1<<14); }
    #define  XPT2046_CS_OUTPUT()    LPC_GPIO1->FIODIR|=(1<<14) 
    //***************************************************************************************
    #define  XPT2046_DIN(x)       {if(x) LPC_GPIO1->FIOSET|=1<<18; else LPC_GPIO1->FIOCLR|=1<<18; }
    #define  XPT2046_DIN_OUTPUT()    LPC_GPIO1->FIODIR|=(1<<18) 
    //***************************************************************************************
    #define  XPT2046_DIO()       (LPC_GPIO1->FIOPIN&(1<<16))
    #define  XPT2046_DIO_INPUT()    LPC_GPIO1->FIODIR&=~(1<<16) 
    //***************************************************************************************
    #define  XPT2046_PENIRQ()      (LPC_GPIO1->FIOPIN&(1<<17))
    #define  XPT2046_PENIRQ_INPUT()   LPC_GPIO1->FIODIR&=~(1<<17) 
    //***************************************************************************************  
    //***************************************************************************************
    //***************************************************************************************
    //***************************************************************************************
    // xpt registers
    #define ADS_CTRL_PD0       (1 << 0)    // PD0
    #define ADS_CTRL_PD1       (1 << 1)    // PD1
    #define ADS_CTRL_DFR       (1 << 2)    // SER/DFR
    #define ADS_CTRL_EIGHT_BITS_MOD  (1 << 3)    // Mode
    #define ADS_CTRL_START      (1 << 7)    // Start Bit
    #define ADS_CTRL_SWITCH_SHIFT   4        // Address setting
    
    // Get X position command
    #define CMD_X_POSITION ((1 << ADS_CTRL_SWITCH_SHIFT) | ADS_CTRL_START | ADS_CTRL_PD0 | ADS_CTRL_PD1)
    // Get Y position command
    #define CMD_Y_POSITION ((5 << ADS_CTRL_SWITCH_SHIFT) | ADS_CTRL_START | ADS_CTRL_PD0 | ADS_CTRL_PD1)
    // Enable penIRQ
    #define CMD_ENABLE_PENIRQ ((1 << ADS_CTRL_SWITCH_SHIFT) | ADS_CTRL_START)
    // delay 
    #define XPT2046_Delay()  	1
    //***************************************************************************************
    //***************************************************************************************
    //***************************************************************************************
    void XPT2046_SPI_INT( void )
    {
    	 XPT2046_DCLK_OUTPUT();
    	 XPT2046_DCLK(0);
    	 XPT2046_CS_OUTPUT();
      XPT2046_CS(1);
      XPT2046_DIN_OUTPUT();	
    	 XPT2046_DIN(0);	
    	 XPT2046_DIO_INPUT();
    	 XPT2046_PENIRQ_INPUT();
     	return;
    }//void XPT2046_SPI_INT( void )
    unsigned int XPT2046_SEND(unsigned char cmd )
     {
     unsigned int data=0;
     unsigned char j=0,gbyt=11;;
    //***************************//strat connect
    	XPT2046_DCLK(0);
    	XPT2046_CS(0);
    	XPT2046_DIN(0);
    	while(XPT2046_DIO());// wait unti xpt get answer
    	 XPT2046_Delay();
    	for(j=8;j>=1;j--)
    	{
    	 if(cmd & ( 1<< ( j - 1 ) )){ XPT2046_DIN(1);}	
    	 else 	          XPT2046_DIN(0); 
    	 XPT2046_DCLK(1);
    	 XPT2046_Delay();
    	 XPT2046_DCLK(0);
    	 XPT2046_Delay();
    	}
    	XPT2046_DIN(0);
    	XPT2046_Delay();
    //************************** send byte to xpt finished
     gbyt=12;
    	for(j=9;j>=1;j--)
    	{
    	 XPT2046_DCLK(1);
    	 XPT2046_Delay();
    	 XPT2046_DCLK(0);
    	 XPT2046_Delay();
    		if(XPT2046_DIO()) {data|=1<<(gbyt-1);}
    		gbyt--;
    	}
    	gbyt=5;
    	for(j=9;j>=1;j--)
    	{
    	 XPT2046_DCLK(1);
    	 XPT2046_Delay();
    	 XPT2046_DCLK(0);
    	 XPT2046_Delay();
    		if(XPT2046_DIO()&&gbyt!=0) {data|=1<<(gbyt-1);}
    		gbyt--;
    	}
    //************************** end connect
    	XPT2046_DCLK(0);
    	XPT2046_DIN(0);
    	XPT2046_CS(1);
    	return data;
     }
    //***************************************************************************************
    //******************      XPT2046 Library By:Alireza Hammamizadeh *****************
    //******************************** Alireza.hammamizadeh@yahoo.com *********************
    //***************************************************************************************
    //***************************************************************************************
    //***************************************************************************************
    //***************************************************************************************
    بازم اگه مشکلی یا سوالی بود در خدمتم... :rolleyes:
    جواب بعضي حرفا فقط يه نفس عميقه ، بذار تو دلت بمونه...

    #2
    پاسخ : هدر برای XPT2046 , ads7843

    آقا دم شما گرم.. سر بلند باشید.

    دیدگاه


      #3
      پاسخ : هدر برای XPT2046 , ads7843

      سلام من هر کاری میکنم نه با این کد نه با کدای دیگه از این آی سی جواب درست نمی گیرم.
      مقادیری که بر میگردونه یک سری عدد تکراری نزدیک به هم بین 2900 تا 3200 هست ک با تاچ کردن هم تغییر نمی کنن و همون روند تصادفی تو اعداد تکرار می شه. من برد ال سی دی 3.5 اینچ جدید فروشگاه رو خریدم.ال سی دیش درست کار میکنه ولی تاچش نه. حتی یک ای سی تاچ دیکه هم جای قبلیش گذاشتم ولی بازم داستان تکرار شد.به نظر شما مشکل میتونه از خوده تا چش باشه؟در ضمن تمام اتصالات رو چک کردم مشکلی نبوده. : :angry: :angry: :angry:

      دیدگاه


        #4
        پاسخ : هدر برای XPT2046 , ads7843

        سلام اره ممکنه
        قبلا یکی تز دوستام همین مشکل رو داشت ، تاچ رو عوض کرد برطرف شد
        جواب بعضي حرفا فقط يه نفس عميقه ، بذار تو دلت بمونه...

        دیدگاه


          #5
          پاسخ : هدر برای XPT2046 , ads7843

          سلام
          من به این هدر نیاز دارم این فایل هدر بعضی کدها مشکل دارن لطفا اصلاح کنید بصورت فایل بفرستید متشکرم
          جدیدترین ویرایش توسط moha2015; ۱۹:۱۲ ۱۳۹۶/۰۳/۲۵.

          دیدگاه


            #6
            پاسخ : هدر برای XPT2046 , ads7843

            سلام خسته نباشید
            کسی از دوستان اطلاعی در مورد xpt2046 تاچ درایور داره که با lpc1768 راه اندازیش کنیم فایل هدری برای این هست؟ این فایل هدر این پست خیلی روش کار کردم ولی نتونستم موقعیت رو از ای سی بگیرم کداش مشکل دارن
            ممنون اگر کمک کنید

            دیدگاه

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