PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کمک در نمایش تصویر بر روی برد آموزشی 7 اینچ سایت



arm-mohsen-avr
04-08-2012, 09:46
با سلام به دوستان گرامی

دوستان من می خوام یک تصویر روی LCD 7 اینچ نمایش بدم ولی به جای تصویر صفحه بارنگ زرد پر می شود . دوستان مشکل از کجاست ؟؟؟ من که خودم خیلی درگیرش بودم .
من از این تابع استفاده کردم .

LCD_DisplyBMP(0,0,240,320,gImage);
gImage هم تو سورس برنامه بود که کد یک تصویره.
دوستان اگه کسی رو این برد نمایش تصویر رو چک کرده راهنمایی کنه ؟؟؟:(:(:(
با تشکر:wink:

sadmonew
04-08-2012, 11:35
سلام مهندس
موقع كامپايل برنامه وارنينگي(Warning) نشون نميده؟

arm-mohsen-avr
04-08-2012, 11:39
سلام اقای محمدی
نه مهندس هیچ warningi نمیده.///

sadmonew
04-08-2012, 11:44
سلام اقای محمدی
نه مهندس هیچ warningi نمیده.///
مهندس خودم اين برد رو ندارم.
ميشه فايلي كه داخلش اين تابع تعريف شده رو بذاريد. ببينيم چطور تعريفش كردن و پارامتراش از چه نوعيه؟

arm-mohsen-avr
04-08-2012, 11:44
اینم از تابع که برای نمایش تصویر استفاده می شه /

void LCD_DisplyBMP(uint8_t Xpos, uint16_t Ypos, uint8_t Height, uint16_t Width, uint8_t *bitmap)
{
uint32_t index;
uint32_t size = Height * Width;
uint16_t *bitmap_ptr = (uint16_t *)bitmap;

LCD_SetDisplayWindow(Xpos, Ypos, Width-1, Height-1);

LCD_WriteReg(0x20,Xpos); //ÐÐ
LCD_WriteReg(0x21,Ypos); //ÁÐ
//LCD_WriteReg(0x03, 0x1008); //Èç¹ûÐèÒªºáÏòÏÔʾͼƬ£¬½«´ ËÈ¥µôÆÁ±Î £¬Í¬Ê±½«WidthºÍHightµ÷»»Ò»ÏÂ¾Í ¿ÉÒÔ

LCD_WriteRAM_Prepare();

for(index = 0; index < size; index++)
{
LCD_RAM= (*bitmap_ptr++);
}
//»Ö¸´´°Ìå´óС
LCD_WriteReg(0x50, 0x0000); //ˮƽ·½ÏòGRAMÆðʼµØÖ·
LCD_WriteReg(0x51, 0x00EF); //ˮƽ·½ÏòGRAM½áÊøµØÖ·
LCD_WriteReg(0x52, 0x0000); //´¹Ö±·½ÏòGRAMÆðʼµØÖ·
LCD_WriteReg(0x53, 0x013F); //´¹Ö±·½ÏòGRAM½áÊøµØÖ·
}


void LCD_SetDisplayWindow(uint8_t Xpos, uint16_t Ypos, uint16_t Height, uint16_t Width)
{
LCD_WriteReg(0x50, Xpos); //ˮƽ·½ÏòGRAMÆðʼµØÖ·
LCD_WriteReg(0x51, Xpos+Height); //ˮƽ·½ÏòGRAM½áÊøµØÖ·
LCD_WriteReg(0x52, Ypos); //´¹Ö±·½ÏòGRAMÆðʼµØÖ·
LCD_WriteReg(0x53, Ypos+Width); //´¹Ö±·½ÏòGRAM½áÊøµØÖ·

//LCD_SetCursor(Xpos, Ypos); //ÉèÖùâ±êλÖÃ
}

sadmonew
04-08-2012, 11:53
مهندس السيدي رو ميخواين تو مد 16 بيتي راه اندازي كنين و عكسو روي السيدي نشون بدين؟
اين سوال به اين خاطر پرسيدم نكنه شايد قسمتي كه مربوط به initialize شدن السيديه، يه موقع تغيير داده باشين.

arm-mohsen-avr
04-08-2012, 12:00
بله برد موجود LCD رو تو مد 16 بیت راه اندازی کرده .
اینم قسمت init

void LCD_Init(void)
{
FSMC_GPIO_Configuration();
FSMC_LCD_Init();


LCD_WriteCOM(0x00E2); //PLL multiplier, set PLL clock to 120M
LCD_WriteRAM(0x001D); //N=0x36 for 6.5M, 0x23 for 10M crystal
LCD_WriteRAM(0x0002);
LCD_WriteRAM(0x0004);

LCD_WriteCOM(0x00E0); // PLL enable
LCD_WriteRAM(0x0001);
Delay_Ms(5);
LCD_WriteCOM(0x00E0);
LCD_WriteRAM(0x0003);
Delay_Ms(5);
LCD_WriteCOM(0x0001); // software reset
Delay_Ms(5);
LCD_WriteCOM(0x00E6); //PLL setting for PCLK, depends on resolution
LCD_WriteRAM(0x0004); //0x0003
LCD_WriteRAM(0x0093); //0x0033
LCD_WriteRAM(0x00e0); //0x0033

LCD_WriteCOM(0x00B0); //LCD SPECIFICATION
LCD_WriteRAM(0x0000);
LCD_WriteRAM(0x0000);
LCD_WriteRAM((HDP>>8)&0X00FF); //Set HDP
LCD_WriteRAM(HDP&0X00FF);
LCD_WriteRAM((VDP>>8)&0X00FF); //Set VDP
LCD_WriteRAM(VDP&0X00FF);
LCD_WriteRAM(0x0000);

LCD_WriteCOM(0x00B4); //HSYNC
LCD_WriteRAM((HT>>8)&0X00FF); //Set HT
LCD_WriteRAM(HT&0X00FF);
LCD_WriteRAM((HPS>>8)&0X00FF); //Set HPS
LCD_WriteRAM(HPS&0X00FF);
LCD_WriteRAM(HPW); //Set HPW
LCD_WriteRAM((LPS>>8)&0X00FF); //Set HPS
LCD_WriteRAM(LPS&0X00FF);
LCD_WriteRAM(0x0000);

LCD_WriteCOM(0x00B6); //VSYNC
LCD_WriteRAM((VT>>8)&0X00FF); //Set VT
LCD_WriteRAM(VT&0X00FF);
LCD_WriteRAM((VPS>>8)&0X00FF); //Set VPS
LCD_WriteRAM(VPS&0X00FF);
LCD_WriteRAM(VPW); //Set VPW
LCD_WriteRAM((FPS>>8)&0X00FF); //Set FPS
LCD_WriteRAM(FPS&0X00FF);

LCD_WriteCOM(0x00BA);
LCD_WriteRAM(0x0005); //GPIO[3:0] out 1

LCD_WriteCOM(0x00B8);
LCD_WriteRAM(0x0007); //GPIO3=input, GPIO[2:0]=output
LCD_WriteRAM(0x0001); //GPIO0 normal

LCD_WriteCOM(0x0036); //rotation
LCD_WriteRAM(0x0000);
// LCD_WriteRAM(0x0060);
//============================================

//============================================
// LCD_WriteCOM(0x003A); //rotation
// LCD_WriteRAM(0x0050);

// LCD_WriteCOM(0x0026); //rotation
// LCD_WriteRAM(0x0003);
// LCD_WriteCOM(0x0030); //rotation
// LCD_WriteRAM(0x0000);

//=============================================
LCD_WriteCOM(0x00F0); //pixel data interface
LCD_WriteRAM(0x0003);

Delay_Ms(5);

LCD_Clear(BLUE);

LCD_WriteCOM(0x0026); //display on
LCD_WriteRAM(0x0001);

LCD_WriteCOM(0x0029); //display on

/* LCD_WriteCOM(0x00BE); //set PWM for B/L
LCD_WriteRAM(0x0006);
//LCD_WriteRAM(0x0008);
LCD_WriteRAM(0x0080);
//LCD_WriteRAM(0x00f0);

LCD_WriteRAM(0x0001);
LCD_WriteRAM(0x00f0);
LCD_WriteRAM(0x0000);
LCD_WriteRAM(0x0000); */

LCD_WriteCOM(0x00d0);//ÉèÖö¯Ì¬±³¹â¿ØÖÆÅäÖÃ
LCD_WriteRAM(0x000d);

LCD_WriteCOM(0x0029); //display on
}

sadmonew
04-08-2012, 12:14
خوب يه سوال ديگه:
حتما دستوري داره كه تمام صفحه السيدي رو با يه رنگ خاص تغيير بده. مثل Set_piixel
مثلا از اين دستور استفاده كنيد و بگيد كه تمام صفحه رو آبي نشون بده.
آيا دقيقا رنگ آبي رو نشون ميده؟ و مثلا رنگ صورتي نشون نميده؟

arm-mohsen-avr
04-08-2012, 12:45
اره اتفاقا دیروز تست می کردم وقتی صفحه رو با رنگ زرد پاک می کردم به جاش رنگ دیگه نشون می داد .

sadmonew
04-08-2012, 13:06
معذرت مهندس
اين يعني تنظيماتش بهم ريخته و اس.اس.دي درست راه اندازي نشده.
خوب مد 24 بيتي چطور؟ امكان راه اندازي مد 24 بيتي هست؟ روي برد همچين امكاني رو فراهم كردم؟ با تغيير يا گذاشتن جامپر؟

arm-mohsen-avr
04-08-2012, 13:20
نه تو برد امکانش نیست پایه ها فقط به صورت 16 بیت وصل هستش .