ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 23
  1. #1
    2007/12/01
    83
    0

    اتصال مستقیم تاچ اسکرین به میکرو

    سلام دوستان. راستش چندتا سوال دارم:
    آیا میشه 2تا تاچ اسکرین رو مستقیما به میکرو AT91SAM7X256 وصل کرد ؟ (4تا ADC میکرو آزاده و استفاده نشده ) . بنظر شما اگر از درایور تاچ استفاده کنم بهتره یا مستقیم به میکرو بزنم بهتره ؟ کتابخانه خوب برای TFT LCD 2.4 و تاچ اون سراغ دارین ؟ یه سوال دیگه هم این که چطور میتونم بفهمم کنترلر LCD من چیه ؟



    ممنون.
  2. #2
    2010/02/28
    شاهرود
    1,147
    19

    پاسخ : اتصال مستقیم تاچ اسکرین به میکرو

    نقل قول نوشته اصلی توسط rezaf
    سلام دوستان. راستش چندتا سوال دارم:
    آیا میشه 2تا تاچ اسکرین رو مستقیما به میکرو AT91SAM7X256 وصل کرد ؟ (4تا ADC میکرو آزاده و استفاده نشده ) . بنظر شما اگر از درایور تاچ استفاده کنم بهتره یا مستقیم به میکرو بزنم بهتره ؟ کتابخانه خوب برای TFT LCD 2.4 و تاچ اون سراغ دارین ؟ یه سوال دیگه هم این که چطور میتونم بفهمم کنترلر LCD من چیه ؟



    ممنون.
    مصلما اگه از درایور استفاده کنی بهتر و دقیق تره ولی برای هر تاچ نیاز به 2تاADC و 2تا IO معمولی داری. توی انجمن ی هدر خوب برای تاچ گذاشتم که با تغییر پارامترای ابعاد تاچ که همون اول هدر هست میتونی برای هر LCD ای استفاده کنی
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!
  3. #3
    2007/12/01
    83
    0

    پاسخ : اتصال مستقیم تاچ اسکرین به میکرو

    جناب ایمانی فر میشه لینک هدری که برای تاچ گذاشتی برام بذاری آخه جستجوی سایت کار نمی کنه و خطا میده. پس میشه 2 تا تاچ گذاشت. مشکل اینجاست که SPI و I2C میکرو رو استفاده کردم و درایورهای تاچ هم با این پروتکل ها خروجی میدن.
    بازم ممنونم جناب ایمانی فر.
  4. #4
    2010/02/28
    شاهرود
    1,147
    19

    پاسخ : اتصال مستقیم تاچ اسکرین به میکرو

    نقل قول نوشته اصلی توسط rezaf
    جناب ایمانی فر میشه لینک هدری که برای تاچ گذاشتی برام بذاری آخه جستجوی سایت کار نمی کنه و خطا میده. پس میشه 2 تا تاچ گذاشت. مشکل اینجاست که SPI و I2C میکرو رو استفاده کردم و درایورهای تاچ هم با این پروتکل ها خروجی میدن.
    بازم ممنونم جناب ایمانی فر.
    سلام
    بفرما
    http://www.eca.ir/forum2/index.php?topic=74895.msg518799#msg518799
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!
  5. #5
    2007/12/01
    83
    0

    پاسخ : اتصال مستقیم تاچ اسکرین به میکرو

    سلام
    جناب ایمانی فر بعد از باز کردن این LCD از روی بوردش و خواندن سریال پشت LCd متوجه شدم ظاهرا کنترلرش S6D1121 هست. سریالش دقیقا مثل این LCD هست:


    با این فزق که LCD من آخرش نوشته HLY-B-1121 .

    هر چی گشتم هدر مناسب براش پیدا نکردم این صفحه ویکی هست که برای آردینو مثال براش داره اونم در حالت 16بیت (این ماژول پیش فرض برای 8بیت تنظیم شده) :

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    حالا با این اوصاف،می خوام اگه میشه کمکم کنید هدر LCD 3.2 خود ECA رو که کنترلرهای مختلف رو ساپورت می کنه تغییر بدیم که این کنترلر رو هم ساپورت کنه. یا اگه راه بهتری به نظرتون میرسه ممنون میشم کمکم کنید.
  6. #6
    2007/12/01
    83
    0

    پاسخ : اتصال مستقیم تاچ اسکرین به میکرو

    با ترکیبی از هدرهایی که پیدا کردم (و البته با اجازتون از هدر شما هم استفاده کردم) این هدر رو آماده کردم ولی هنوز کار نمیکنه. نمیدونم هدر ایراد داره یا کنترلر LCD رو درست تشخیص ندادم.


    کد:
    #include <Headers\AT91SAM7X256.H> 
    #include <Headers\delay.h>
    
    /**********************************************
    Define zone
    **********************************************/
    #define S6DLCD_DATAPORT_B       
    #define S6DLCD_DATAPORT_OFFSET   2
    #define S6DLCD_CONTROLPORT_B     
    #define S6DLCD_RST         18
    #define S6DLCD_RS          19
    #define S6DLCD_CS          20
    #define S6DLCD_WR          21
    #define S6DLCD_RD          22 
    
    	#define _S6DLCD_DATAPORT_ID_	    AT91C_ID_PIOB
    	#define _S6DLCD_DATAPORT_PER_	    *AT91C_PIOB_PER
    	#define _S6DLCD_DATAPORT_PDR_	    *AT91C_PIOB_PDR
    	#define _S6DLCD_DATAPORT_OER_	    *AT91C_PIOB_OER
    	#define _S6DLCD_DATAPORT_ODR_	    *AT91C_PIOB_ODR
    	#define _S6DLCD_DATAPORT_PUER_	  	 *AT91C_PIOB_PPUER
    	#define _S6DLCD_DATAPORT_PUDR_	   *AT91C_PIOB_PPUDR
    	#define _S6DLCD_DATAPORT_PDSR_	   *AT91C_PIOB_PDSR
    	#define _S6DLCD_DATAPORT_SODR_	   *AT91C_PIOB_SODR
    	#define _S6DLCD_DATAPORT_CODR_	   *AT91C_PIOB_CODR
    	#define _S6DLCD_DATAPORT_PCER_    *AT91C_PMC_PCER
    	#define _S6DLCD_DATAPORT_PCDR_    *AT91C_PMC_PCDR
    
    	#define _S6DLCD_CONTROLPORT_ID_	    AT91C_ID_PIOB
    	#define _S6DLCD_CONTROLPORT_PER_	  *AT91C_PIOB_PER
    	#define _S6DLCD_CONTROLPORT_PDR_	  *AT91C_PIOB_PDR
    	#define _S6DLCD_CONTROLPORT_OER_	  *AT91C_PIOB_OER
    	#define _S6DLCD_CONTROLPORT_ODR_	  *AT91C_PIOB_ODR
    	#define _S6DLCD_CONTROLPORT_PUER_	  *AT91C_PIOB_PPUER
    	#define _S6DLCD_CONTROLPORT_PUDR_	  *AT91C_PIOB_PPUDR
    	#define _S6DLCD_CONTROLPORT_SODR_	  *AT91C_PIOB_SODR
    	#define _S6DLCD_CONTROLPORT_CODR_	  *AT91C_PIOB_CODR
    
    #define S6DLCD_RST_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_RST)
    #define S6DLCD_RST_HIGH        _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_RST)
    #define S6DLCD_RS_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_RS)
    #define S6DLCD_RS_HIGH         _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_RS)
    #define S6DLCD_CS_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_CS)
    #define S6DLCD_CS_HIGH         _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_CS)			
    #define S6DLCD_RD_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_RD)
    #define S6DLCD_RD_HIGH         _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_RD)
    #define S6DLCD_WR_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_WR)
    #define S6DLCD_WR_HIGH         _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_WR)  
    #define S6DLCD_DATAPORT_INPUT		    _S6DLCD_DATAPORT_ODR_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET),_S6DLCD_DATAPORT_PER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET)	  
    #define S6DLCD_DATAPORT_INPUT_CLK_E		 _S6DLCD_DATAPORT_PCER_ = (1 << _S6DLCD_DATAPORT_ID_)
    #define S6DLCD_DATAPORT_INPUT_CLK_D		 _S6DLCD_DATAPORT_PCDR_ = (1 << _S6DLCD_DATAPORT_ID_)
    #define S6DLCD_DATAPORT_OUTPUT     _S6DLCD_DATAPORT_OER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET)           
    #define S6DLCD_DATAPORT_CLEAR     _S6DLCD_DATAPORT_CODR_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET)
    
    #define HIGH 1
    #define LOW 0
    
    #define X_CONST  240
    #define Y_CONST  320
    #define PREC_TOUCH_CONST 10
    #define PixSizeX 13.78
    #define PixOffsX 411
    #define PixSizeY 11.01
    #define PixOffsY 378
    
    #define WINDOW_XADDR_START  0x0050 // Horizontal Start Address Set
    #define WINDOW_XADDR_END   0x0051 // Horizontal End Address Set
    #define WINDOW_YADDR_START  0x0052 // Vertical Start Address Set
    #define WINDOW_YADDR_END   0x0053 // Vertical End Address Set
    #define GRAM_XADDR      0x0020 // GRAM Horizontal Address Set
    #define GRAM_YADDR      0x0021 // GRAM Vertical Address Set
    #define GRAMWR        0x0022 // memory write
    
    /* LCD color */
    #define S6DLCD_White  0xFFFF
    #define S6DLCD_Black  0x0000
    #define S6DLCD_Blue   0x001F
    #define S6DLCD_Blue2  0x051F
    #define S6DLCD_Red   0xF800
    #define S6DLCD_Magenta 0xF81F
    #define S6DLCD_Green  0x07E0
    #define S6DLCD_Cyan   0x7FFF
    #define S6DLCD_Yellow  0xFFE0
    
    /**********************************************
    Val Zone
    **********************************************/
    int TP_X,TP_Y;
    /**********************************************
    Standard C functions zone
    **********************************************/
    void Write_Command(unsigned int c)
    {
    	S6DLCD_RS_LOW;        //LCD_RS=0;
    	S6DLCD_CS_LOW;        //LCD_CS =0;!
    	S6DLCD_DATAPORT_OUTPUT;
    	S6DLCD_DATAPORT_CLEAR;
    	_S6DLCD_DATAPORT_SODR_ = ((c>>8) << S6DLCD_DATAPORT_OFFSET); //LCD_DataPortH=DH>>8;
    	S6DLCD_WR_LOW;       //LCD_WR=0;
    
    	S6DLCD_WR_HIGH;       //LCD_WR=1;!
    	S6DLCD_DATAPORT_CLEAR;
    	_S6DLCD_DATAPORT_SODR_ = ((c) << S6DLCD_DATAPORT_OFFSET);  //LCD_DataPortH=DH;
    	S6DLCD_WR_LOW;       //LCD_WR=0;
    	S6DLCD_WR_HIGH;      //LCD_WR=1;
    	S6DLCD_CS_HIGH ;      //LCD_CS =0;
    }
    void Write_Data(unsigned int c)
    {
    	S6DLCD_RS_HIGH;       //LCD_RS=0;
    	S6DLCD_CS_LOW;       //LCD_CS =0;!
    	S6DLCD_DATAPORT_OUTPUT;
    	S6DLCD_DATAPORT_CLEAR;
    	_S6DLCD_DATAPORT_SODR_ = ((c>>8) << S6DLCD_DATAPORT_OFFSET); //LCD_DataPortH=DH>>8;
    	S6DLCD_WR_LOW;       //LCD_WR=0;
    	S6DLCD_WR_HIGH;       //LCD_WR=1;!
    	S6DLCD_DATAPORT_CLEAR;
    	_S6DLCD_DATAPORT_SODR_ = ((c) << S6DLCD_DATAPORT_OFFSET);  //LCD_DataPortH=DH;
    	S6DLCD_WR_LOW;       //LCD_WR=0;
    	S6DLCD_WR_HIGH;       //LCD_WR=1;
    	S6DLCD_CS_HIGH;       //LCD_CS =0;
    }
    void Write_Command_Data(unsigned int cmd,unsigned int dat)
    {
    	Write_Command(cmd);
    	Write_Data(dat);
    }
    void Lcd_Init()
    {
    	S6DLCD_DATAPORT_INPUT_CLK_E;
    	_S6DLCD_DATAPORT_PER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET);
    	_S6DLCD_DATAPORT_OER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET);
    	_S6DLCD_DATAPORT_PUER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET);
    	_S6DLCD_CONTROLPORT_PER_ = (1 << S6DLCD_RST) | (1 << S6DLCD_RS) | (1 << S6DLCD_CS) | (1 << S6DLCD_WR) | (1 << S6DLCD_RD);
    	_S6DLCD_CONTROLPORT_OER_ = (1 << S6DLCD_RST) | (1 << S6DLCD_RS) | (1 << S6DLCD_CS) | (1 << S6DLCD_WR) | (1 << S6DLCD_RD);
    	_S6DLCD_CONTROLPORT_PUDR_ = (1 << S6DLCD_RST) | (1 << S6DLCD_RS) | (1 << S6DLCD_CS) | (1 << S6DLCD_WR) | (1 << S6DLCD_RD);
    	_S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_RST) | (1 << S6DLCD_CS) | (1 << S6DLCD_RD); 
    	_S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_WR);
    
     S6DLCD_RST_HIGH;
     delay_ms(500);
     S6DLCD_RST_LOW;
     delay_ms(500);
    
     S6DLCD_RST_HIGH;
    	S6DLCD_CS_HIGH;
    	S6DLCD_WR_HIGH;
     delay_ms(1000);
     
    	 Write_Command_Data(0x0011,0x2004);
    	 Write_Command_Data(0x0013,0xCC00);
    	 Write_Command_Data(0x0015,0x2600);
    	 Write_Command_Data(0x0014,0x252A);
    	// Write_Command_Data(0x14,0x002A);
    	 Write_Command_Data(0x0012,0x0033);
    	 Write_Command_Data(0x0013,0xCC04);
    	 //delayms(1);
    	 Write_Command_Data(0x0013,0xCC06);
    	 //delayms(1);
    	 Write_Command_Data(0x0013,0xCC4F);
    	 //delayms(1);
    	 Write_Command_Data(0x0013,0x674F);
    	 Write_Command_Data(0x0011,0x2003);
    	 //delayms(1);
    	 Write_Command_Data(0x0030,0x2609);
    	 Write_Command_Data(0x0031,0x242C);
    	 Write_Command_Data(0x0032,0x1F23);
    	 Write_Command_Data(0x0033,0x2425);
    	 Write_Command_Data(0x0034,0x2226);
    	 Write_Command_Data(0x0035,0x2523);
    	 Write_Command_Data(0x0036,0x1C1A);
    	 Write_Command_Data(0x0037,0x131D);
    	 Write_Command_Data(0x0038,0x0B11);
    	 Write_Command_Data(0x0039,0x1210);
    	 Write_Command_Data(0x003A,0x1315);
    	 Write_Command_Data(0x003B,0x3619);
    	 Write_Command_Data(0x003C,0x0D00);
    	 Write_Command_Data(0x003D,0x000D);
    
    	 Write_Command_Data(0x0016,0x0007);
    	 Write_Command_Data(0x0002,0x0013);
    	 Write_Command_Data(0x0003,0x0003);
    	 Write_Command_Data(0x0001,0x0127);
    	 //delayms(1);
    	 Write_Command_Data(0x0008,0x0303);
    	 Write_Command_Data(0x000A,0x000B);
    	 Write_Command_Data(0x000B,0x0003);
    	 Write_Command_Data(0x000C,0x0000);
    	 Write_Command_Data(0x0041,0x0000);
    	 Write_Command_Data(0x0050,0x0000);
    	 Write_Command_Data(0x0060,0x0005);
    	 Write_Command_Data(0x0070,0x000B);
    	 Write_Command_Data(0x0071,0x0000);
    	 Write_Command_Data(0x0078,0x0000);
    	 Write_Command_Data(0x007A,0x0000);
    	 Write_Command_Data(0x0079,0x0007);
    	 Write_Command_Data(0x0007,0x0051);
    	 //delayms(1);
    	 Write_Command_Data(0x0007,0x0053);
    	 Write_Command_Data(0x0079,0x0000);
    	 Write_Command_Data(0x0007,0x0051);
      Write_Command(0x0022);
    	 delay_ms(500);
    }
    
    
    void SetXY(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1)
    {
    	Write_Command_Data(0x0046,(x1 << 8)| x0);
    	//Write_Command_Data(0x0047,x1);
    	Write_Command_Data(0x0047,y1);
    	Write_Command_Data(0x0048,y0);
    	Write_Command_Data(0x0020,x0);
    	Write_Command_Data(0x0021,y0);
    	Write_Command (0x0022);
    	//LCD_WriteCMD(GRAMWR);
    }
    
    void Pant(unsigned int color)
    {
    	 int i,j;
    
    	 SetXY(0,239,0,319);
    		
    		 for(i=0;i<320;i++)
    		 {
    			 for (j=0;j<240;j++)
    				{
    					Write_Data(color);
    				}
    		 }
    	 }
    
    void LCD_clear()
    {
    		unsigned int i,j;
    	
    		SetXY(0,239,0,319);
    	
    		 for(i=0;i<X_CONST;i++)
    		 {
    		  for(j=0;j<Y_CONST;j++)
    			 {
    		   Write_Data(0x0000);
    			 }
    		 }
    }
  7. #7
    2010/02/28
    شاهرود
    1,147
    19

    پاسخ : اتصال مستقیم تاچ اسکرین به میکرو

    سلام
    تا مطمئن نشی که درایورش چیه نمیتونی راش بندازی مگر هی درایورای مختلف رو تست کنی تا شانسی یکی درست در بیاد
    نکته مهم توی تبدیل درایور ها توابع پایه (مثل رایت و رید از GRAM) و تابع init هست.
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!
  8. #8
    2007/12/01
    83
    0

    پاسخ : اتصال مستقیم تاچ اسکرین به میکرو

    یه سوالی برام پیش اومده، چرا ماژول LCD ECA پین D9 نداره ؟ آیا این تاثیری تو کارکرد هدر میذاره (تو مد 8 بیتی )؟
  9. #9
    2007/12/01
    83
    0

    پاسخ : اتصال مستقیم تاچ اسکرین به میکرو

    از بابت درایورش مطمین شدم که S6D1121 هست. و با این کدها init شد و کارای اولیه رو هم انجام داد حالا موندم بقیه تابع ها رو چی کار کنم.
    آخرین تغییرات هدر :


    کد:
    #include <Headers\AT91SAM7X256.H> 
    #include <Headers\delay.h>
    
    /**********************************************
    Define zone
    **********************************************/
    #define S6DLCD_DATAPORT_B       
    #define S6DLCD_DATAPORT_OFFSET   2
    #define S6DLCD_CONTROLPORT_B     
    #define S6DLCD_RST         18
    #define S6DLCD_RS          19
    #define S6DLCD_CS          20
    #define S6DLCD_WR          21
    #define S6DLCD_RD          22 
    
    #define _S6DLCD_DATAPORT_ID_	    AT91C_ID_PIOB
    #define _S6DLCD_DATAPORT_PER_	    *AT91C_PIOB_PER
    #define _S6DLCD_DATAPORT_PDR_	    *AT91C_PIOB_PDR
    #define _S6DLCD_DATAPORT_OER_	    *AT91C_PIOB_OER
    #define _S6DLCD_DATAPORT_ODR_	    *AT91C_PIOB_ODR
    #define _S6DLCD_DATAPORT_PUER_	  	 *AT91C_PIOB_PPUER
    #define _S6DLCD_DATAPORT_PUDR_	   *AT91C_PIOB_PPUDR
    #define _S6DLCD_DATAPORT_PDSR_	   *AT91C_PIOB_PDSR
    #define _S6DLCD_DATAPORT_SODR_	   *AT91C_PIOB_SODR
    #define _S6DLCD_DATAPORT_CODR_	   *AT91C_PIOB_CODR
    #define _S6DLCD_DATAPORT_PCER_    *AT91C_PMC_PCER
    #define _S6DLCD_DATAPORT_PCDR_    *AT91C_PMC_PCDR
    
    #define _S6DLCD_CONTROLPORT_ID_	    AT91C_ID_PIOB
    #define _S6DLCD_CONTROLPORT_PER_	  *AT91C_PIOB_PER
    #define _S6DLCD_CONTROLPORT_PDR_	  *AT91C_PIOB_PDR
    #define _S6DLCD_CONTROLPORT_OER_	  *AT91C_PIOB_OER
    #define _S6DLCD_CONTROLPORT_ODR_	  *AT91C_PIOB_ODR
    #define _S6DLCD_CONTROLPORT_PUER_	  *AT91C_PIOB_PPUER
    #define _S6DLCD_CONTROLPORT_PUDR_	  *AT91C_PIOB_PPUDR
    #define _S6DLCD_CONTROLPORT_SODR_	  *AT91C_PIOB_SODR
    #define _S6DLCD_CONTROLPORT_CODR_	  *AT91C_PIOB_CODR
    
    #define S6DLCD_RST_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_RST)
    #define S6DLCD_RST_HIGH        _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_RST)
    #define S6DLCD_RS_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_RS)
    #define S6DLCD_RS_HIGH         _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_RS)
    #define S6DLCD_CS_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_CS)
    #define S6DLCD_CS_HIGH         _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_CS)			
    #define S6DLCD_RD_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_RD)
    #define S6DLCD_RD_HIGH         _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_RD)
    #define S6DLCD_WR_LOW         _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_WR)
    #define S6DLCD_WR_HIGH         _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_WR)  
    #define S6DLCD_DATAPORT_INPUT		    _S6DLCD_DATAPORT_ODR_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET),_S6DLCD_DATAPORT_PER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET)	  
    #define S6DLCD_DATAPORT_INPUT_CLK_E		 _S6DLCD_DATAPORT_PCER_ = (1 << _S6DLCD_DATAPORT_ID_)
    #define S6DLCD_DATAPORT_INPUT_CLK_D		 _S6DLCD_DATAPORT_PCDR_ = (1 << _S6DLCD_DATAPORT_ID_)
    #define S6DLCD_DATAPORT_OUTPUT     _S6DLCD_DATAPORT_OER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET)           
    #define S6DLCD_DATAPORT_CLEAR     _S6DLCD_DATAPORT_CODR_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET)
    
    #define HIGH 1
    #define LOW 0
    
    //S6D1121 16 bit mode
    #define 	disp_x_size 239
    #define 	disp_y_size 319
    #define 	display_transfer_mode 16
    
    #define X_CONST  240
    #define Y_CONST  320
    #define PREC_TOUCH_CONST 10
    #define PixSizeX 13.78
    #define PixOffsX 411
    #define PixSizeY 11.01
    #define PixOffsY 378
    
    #define WINDOW_XADDR_START  0x0050 // Horizontal Start Address Set
    #define WINDOW_XADDR_END   0x0051 // Horizontal End Address Set
    #define WINDOW_YADDR_START  0x0052 // Vertical Start Address Set
    #define WINDOW_YADDR_END   0x0053 // Vertical End Address Set
    #define GRAM_XADDR      0x0020 // GRAM Horizontal Address Set
    #define GRAM_YADDR      0x0021 // GRAM Vertical Address Set
    #define GRAMWR        0x0022 // memory write
    
    /* LCD RGB color definitions  */
    #define S6DLCD_Black      0x0000		  /*  0,  0,  0 */
    #define S6DLCD_Navy      0x000F   /*  0,  0, 128 */
    #define S6DLCD_DarkGreen    0x03E0   /*  0, 128,  0 */
    #define S6DLCD_DarkCyan    0x03EF   /*  0, 128, 128 */
    #define S6DLCD_Maroon     0x7800   /* 128,  0,  0 */
    #define S6DLCD_Purple     0x780F   /* 128,  0, 128 */
    #define S6DLCD_Olive      0x7BE0   /* 128, 128,  0 */
    #define S6DLCD_LightGrey    0xC618   /* 192, 192, 192 */
    #define S6DLCD_DarkGrey    0x7BEF   /* 128, 128, 128 */
    #define S6DLCD_Blue      0x001F   /*  0,  0, 255 */
    #define S6DLCD_Green      0x07E0   /*  0, 255,  0 */
    #define S6DLCD_Cyan      0x07FF   /*  0, 255, 255 */
    #define S6DLCD_Red       0xF800   /* 255,  0,  0 */
    #define S6DLCD_Magenta     0xF81F   /* 255,  0, 255 */
    #define S6DLCD_Yellow     0xFFE0   /* 255, 255, 0  */
    #define S6DLCD_White      0xFFFF   /* 255, 255, 255 */
    #define S6DLCD_WHITE      0XFFFF
    #define S6DLCD_RED       0xF800
    #define S6DLCD_BLUE      0x001F
    
    /**********************************************
    Standard C functions zone
    **********************************************/
    void Write_Command(unsigned int c)
    {
    	S6DLCD_RS_LOW;        //LCD_RS=0;
    	S6DLCD_WR_LOW;       //LCD_WR=0;	
    	S6DLCD_RD_HIGH;
    	S6DLCD_DATAPORT_CLEAR;
    	_S6DLCD_DATAPORT_SODR_ = (c << S6DLCD_DATAPORT_OFFSET); 
    	S6DLCD_CS_LOW ;
    	S6DLCD_CS_HIGH ;      //LCD_CS=1;
    	S6DLCD_DATAPORT_CLEAR;
    	S6DLCD_RS_HIGH;
    }
    
    void Write_Data(unsigned int c)
    {
    	S6DLCD_RS_HIGH;        
    	S6DLCD_WR_LOW;       
    	S6DLCD_RD_HIGH;	
    	_S6DLCD_DATAPORT_SODR_ = (c << S6DLCD_DATAPORT_OFFSET); 
    	S6DLCD_CS_LOW ;
    	S6DLCD_CS_HIGH ;     
    }
    
    void Write_Command_Data(unsigned int cmd,unsigned int dat)
    {
    	Write_Command(cmd);
    	Write_Data(dat);
    }
    
    void S6DLCD_Init()
    {
    S6DLCD_DATAPORT_INPUT_CLK_E;
    _S6DLCD_DATAPORT_PER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET);
    _S6DLCD_DATAPORT_OER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET);
    _S6DLCD_DATAPORT_PUER_ = (0xFFFF << S6DLCD_DATAPORT_OFFSET);
    _S6DLCD_CONTROLPORT_PER_ = (1 << S6DLCD_RST) | (1 << S6DLCD_RS) | (1 << S6DLCD_CS) | (1 << S6DLCD_WR) | (1 << S6DLCD_RD);
    _S6DLCD_CONTROLPORT_OER_ = (1 << S6DLCD_RST) | (1 << S6DLCD_RS) | (1 << S6DLCD_CS) | (1 << S6DLCD_WR) | (1 << S6DLCD_RD);
    _S6DLCD_CONTROLPORT_PUDR_ = (1 << S6DLCD_RST) | (1 << S6DLCD_RS) | (1 << S6DLCD_CS) | (1 << S6DLCD_WR) | (1 << S6DLCD_RD);
    _S6DLCD_CONTROLPORT_SODR_ = (1 << S6DLCD_RST) | (1 << S6DLCD_CS) | (1 << S6DLCD_RD); 
    _S6DLCD_CONTROLPORT_CODR_ = (1 << S6DLCD_WR);
    
    S6DLCD_RST_HIGH;    //reset the LCD
    delay_ms(500);
    S6DLCD_RST_LOW;
    delay_ms(500);
    
    S6DLCD_RST_HIGH; 
    S6DLCD_CS_HIGH;
    S6DLCD_WR_HIGH;
    delay_ms(1000);
    	
     //setup registers of LCD for initialization
    	Write_Command_Data(0x11,0x2004);		
    	Write_Command_Data(0x13,0xCC00);		
    	Write_Command_Data(0x15,0x2600);	
    	Write_Command_Data(0x14,0x252A);	
    	Write_Command_Data(0x12,0x0033);		
    	Write_Command_Data(0x13,0xCC04);		
    	Write_Command_Data(0x13,0xCC06);		
    	Write_Command_Data(0x13,0xCC4F);		
    	Write_Command_Data(0x13,0x674F);
    	Write_Command_Data(0x11,0x2003);
    	Write_Command_Data(0x30,0x2609);		
    	Write_Command_Data(0x31,0x242C);		
    	Write_Command_Data(0x32,0x1F23);		
    	Write_Command_Data(0x33,0x2425);		
    	Write_Command_Data(0x34,0x2226);		
    	Write_Command_Data(0x35,0x2523);		
    	Write_Command_Data(0x36,0x1C1A);		
    	Write_Command_Data(0x37,0x131D);		
    	Write_Command_Data(0x38,0x0B11);		
    	Write_Command_Data(0x39,0x1210);		
    	Write_Command_Data(0x3A,0x1315);		
    	Write_Command_Data(0x3B,0x3619);		
    	Write_Command_Data(0x3C,0x0D00);		
    	Write_Command_Data(0x3D,0x000D);		
    	Write_Command_Data(0x16,0x0007);		
    	Write_Command_Data(0x02,0x0013);		
    	Write_Command_Data(0x03,0x0003);		
    	Write_Command_Data(0x01,0x0127);		
    	Write_Command_Data(0x08,0x0303);		
    	Write_Command_Data(0x0A,0x000B);		
    	Write_Command_Data(0x0B,0x0003);  
    	Write_Command_Data(0x0C,0x0000);  
    	Write_Command_Data(0x41,0x0000);  
    	Write_Command_Data(0x50,0x0000);  
    	Write_Command_Data(0x60,0x0005);  
    	Write_Command_Data(0x70,0x000B);  
    	Write_Command_Data(0x71,0x0000);  
    	Write_Command_Data(0x78,0x0000);  
    	Write_Command_Data(0x7A,0x0000);  
    	Write_Command_Data(0x79,0x0007);		
    	Write_Command_Data(0x07,0x0051);  
    	Write_Command_Data(0x07,0x0053);		
    	Write_Command_Data(0x79,0x0000);
    	Write_Command(0x22);
    	 delay_ms(500);
    }
    
    
    void S6DLCD_SetXY(unsigned int x1,unsigned int x2,unsigned int y1,unsigned int y2)
    {
    	Write_Command_Data(0x46,(x2 << 8) | x1);
    	Write_Command_Data(0x47,y2);
    	Write_Command_Data(0x48,y1);
    	Write_Command_Data(0x20,x1);
    	Write_Command_Data(0x21,y1);
    	Write_Command(0x22);	
    }
    
    void S6DLCD_Fill(unsigned int color)
    {
    	 int i,j;
    
    	 S6DLCD_SetXY(0,239,0,319);
    		
    		 for(i=0;i<320;i++)
    		 {
    			 for (j=0;j<240;j++)
    				{
    					Write_Data(color);
    				}
    		 }
    	 }
    
    void S6DLCD_clear()
    {
    		unsigned int i,j;
    	
    		S6DLCD_SetXY(0,239,0,319);
    	
    		 for(i=0;i<X_CONST;i++)
    		 {
    		  for(j=0;j<Y_CONST;j++)
    			 {
    		   Write_Data(0x0000);
    			 }
    		 }
    }

    با این برنامه هم LCD رو اینیت کرد بعد پاک کرد(با رنگ سیاه) بعدم صفحه رو با آبی fill کرد .

    کد:
    S6DLCD_Init();
    S6DLCD_clear();
    delay_ms(1000);
    S6DLCD_SetXY(0, 0, 240, 320);
    delay_ms(1000);
    S6DLCD_Fill(S6DLCD_Blue);
    آقای ایمانی فر شما با این تابع ها کار کردید اگه ممکنه یه نگاهی بندازید ببینید میشه تابع های اولیه مثل نوشتن جمله و کاراکتر و انداختن عکس و مثل اون رو براش نوشت ؟
  10. #10
    2010/02/28
    شاهرود
    1,147
    19

    پاسخ : اتصال مستقيم تاچ اسکرين به ميکرو

    خيلي خب پس حله
    شما اول کاري که ميکني بايد تابع رسم پيکسل رو راه بندازي و بعد همه چي حله
    چون بقيه توابه با همين تابع کار ميکنن.
    ببين براي رسم پيکسل کافيه اين کار رو کني
    کد:
    S6DLCD_Init();
    S6DLCD_clear();
    delay_ms(1000);
    S6DLCD_SetXY(x, y, x, y);
    delay_ms(1000);
    S6DLCD_Fill(S6DLCD_Blue);
    به جاي اين که کل صفحه رو بگيري بايد فقط همون پيکسل رو بگيري.
    خبرشو بده که چي شد
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!
صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 23

موضوعات مشابه

  1. اتصال مستقیم میکرو به اندروید
    توسط fazel459 در انجمن Android
    پاسخ: 14
    آخرين نوشته: 2015/09/06, 17:38
  2. پاسخ: 6
    آخرين نوشته: 2015/08/31, 18:23
  3. اتصال تاچ اسکرین به AVR
    توسط SAEED.KH در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2015/03/10, 20:51
  4. پاسخ: 12
    آخرين نوشته: 2014/07/11, 18:06
  5. اتصال pir به میکرو به صورت مستقیم
    توسط hamykhafan در انجمن میکروکنترلرهای AVR
    پاسخ: 7
    آخرين نوشته: 2012/02/26, 08:13

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •