با سلام
در این تایپیک قصد داریم در مورد نمایش تصویر روی TFTLCD 4.3 و 7 اینچ فروشگاه با استفاده از برد lpc1768 تبادل نظر کنیم
من یه توضیح به عنوان مقدمه بدهم:
ساده ترین راه برای راه اندازی TFTLCD 4.3 و TFTLCD 7 اینچبا lpc1768 ،برد lpc1768-wb فروشگاه می باشد(البته با برد مینی STM32F103 ساپورت السیدی های 3.2 و4.3 و 7 اینچ هم میشه که در این تایپیک بحث شده). در این حالت لازم است درایور lcd4.3 و درایور lcd7 اینچ :
را نیز در اختیار داشته باشیم. به این ترتیب از جایی که بین خروجی پایه های برد wb و پایه های درایور LCD مطابقت کامل وجود دارد فقط کافی است درایور همراه lCD را روی برد wb قرار دهیم.
حالا اومدیما یکی خواست با کمترین هزینه TFTLCD 4.3 و TFTLCD 7 اینچ را با lpc1768 راه اندازی کند! اون موقع لازم است از یک هدر برد استفاده کند و خودش سیم بندی لازم را انجام دهد. می توان از برد قابل توسعه lpc1768 با کمی سیم بندی استفاده کرد یا برد کاربردی lpc1768 خود کویر
که در ضمیمه شکل ها آورده شده است
نکته ای که در این حالت وجود دارد این است که با برد وی بی ، دیتا را با 8 بیت میکرو به صورت 8 بیت به درایور ال سی دی ارسال می کنیم ، ولی در حالتی که خودمان با سیم بندی از هدر برد استفاده می کنیم از 16 پایه میکرو استفاده خواهیم کرد. بدین ترتیب اولین کاری که لازم است انجام شد این است که در برنامه ال سی دی تغییرات لازم را بدهیم. مورد دیگر اینکه بردهای که تغذیه انها با usb است جریان دهی لازم برای ساپورت این ال سی دی ها را ندارند. لذا بایستی از یک آداپتور 5 ولت برای تذیه برد و ال سی دی استفاده کرد. این کار نیز بسادگی انجام پذیر است. خیلی راحت میتونید از پین هدر سه پین کنار جمپر on/off استفاده کنید به اسم exp.
همراه برد وی بی سمپلی هست [48] LCD7_SD(7.0) (2012.11.13) که تصویر را از روی SD کارت دیکد کرده و نمایش می دهد. سه تصویر نمونه هم همراه این سمپل هست که این تصاویر را به خوبی نمایش می دهد
مشکلی که در اینجا جود دارد این است که این سمپل فقط این تصاویر را خوب نمایش می دهد هر تصویر دیگری را که شما BMP کنید (16 بیت و 800*480) خوب نمایش نمی دهد!
در صورتی که نحوه دیکد کردن را عوض کنیم و از کدی که در سایت همسایه بود :
[PHP]void lcd_show_bmp(int x,int y,char *name){ unsigned char info[70]; int offset,width,height,bpp,comp,color,r,g,b; int counter_x, counter_y,a; FILE *f; f = fopen (name,"r"); if(f!=NULL){ fread(info,1,70,f); offset=(info[13]<<24)|(info[12]<<16)|(info[11]<<8)|(info[10]); width =(info[21]<<24)|(info[20]<<16)|(info[19]<<8)|(info[18]); height=(info[25]<<24)|(info[24]<<16)|(info[23]<<8)|(info[22]); bpp =(info[29]<<8 )|(info[28]); comp =(info[33]<<24)|(info[32]<<16)|(info[31]<<8)|(info[30]); fseek(f,offset,SEEK_SET);
//************************************************** *************** if(bpp==16){ if(comp==0){ LCD_WindowMax (0, 0,width, height); /* ʨ׃ࠚ */ LCD_WR_DATA_Prepare(); for(counter_y=y;counter_y <height+y;counter_y++){ for(counter_x =x;counter_x < width+x;counter_x++){ color=fgetc(f); color|=fgetc(f)<<8; wr_dat(color); } } } }
//************************************************** ***************** fclose (f); } }[/PHP]
استفاده شود انگار داره نقاشی نشون میده! فیلمش در ضمیمه هست.
این تجربیات من بود که خیلی مختصر گفتم. سایر دوستان روی این موضوع کاری انجام داده اند؟