Merhaba arkadaşlar,dokunmatik ve yazı yazma konusunda sıkıntım yok fakat resim basma konusunda problem yaşıyorum. sizce problem ne olabilir ? resim'i hex'e çevirme programım image2lcd.
main.c
#include "stm32f4xx.h"
#include "delay.h"
#include "SSD1289.h"
#include "husky.h"
void tft_yaz(void);
extern unsigned int xxx,yyy;
extern unsigned char flag;
extern u8 gImage_husky[];
int main(void)
{
Delay(0x3FFFFF);
LCD_Init();
Delay(0x3FFFFF);
LCD_Clear(BLUE);
LCD_SetTextColor(GREEN);
LCD_SetDisplayWindow(0, 0, 239, 319);
while(1)
{
tft_yaz();
Delay(5000000);
LCD_Clear(BLUE);
Delay(0x3FFFFF);
LCD_WriteBMP(239,139 ,100 ,100, gImage_husky);
Delay(5000000);
}
}
void tft_yaz(void)
{
LCD_SetTextColor(GREEN);
LCD_SetBackColor(WHITE);
LCD_BackLight(100);
LCD_StringLine(100,20, "deneme");
}
Problem
TFT ekranın init kodundan veya LCD_WriteBMP();
fonksiyonun dan olabilir.
Ekrana resim basmaya çalıştığınızda ekranda nasıl bir durum oluyor.
Resimi ana mesajıma eklemiştim ama sanırım karakter sınırı var mesajlarda.
Buyrun Hocam şöyle bir resimle karşılaşmaktayım:
http://u1312.hizliresim.com/1j/8/vb67b.jpg (http://u1312.hizliresim.com/1j/8/vb67b.jpg)
tft lcd'de görmek istediğim resim de bu :
(http://u1312.hizliresim.com/1j/8/vb696.gif)
Lcd_init () Foknsiyonu altaki fonksiyonla karşılaştır bakalım
Bir fark var mı ? Bu fonksiyonda dik yazmak icin ayarlanmıştır.
void LCD_Init(void)
{
LCD_CtrlLinesConfig();
Delay(3000);
LCD_FSMCConfig();
Delay(3000);
TIM_Config();
LCD_BackLight(100);
LCD_WriteReg(0x0007,0x0021); Delay(50);
LCD_WriteReg(0x0000,0x0001); Delay(50);
LCD_WriteReg(0x0007,0x0023); Delay(50);
LCD_WriteReg(0x0010,0x0000); Delay(90);
LCD_WriteReg(0x0007,0x0033); Delay(50);
LCD_WriteReg(0x0011,0x6830); Delay(50);
LCD_WriteReg(0x0002,0x0600); Delay(50);
LCD_WriteReg(0x0012,0x6CEB); Delay(50);
LCD_WriteReg(0x0003,0xA8A4); Delay(50);
LCD_WriteReg(0x000C,0x0000); Delay(50);
LCD_WriteReg(0x000D,0x080C); Delay(50);
LCD_WriteReg(0x000E,0x2B00); Delay(50);
LCD_WriteReg(0x001E,0x00B0); Delay(50);
LCD_WriteReg(0x0001,0x2b3F); Delay(50); //RGB
LCD_WriteReg(0x0005,0x0000); Delay(50);
LCD_WriteReg(0x0006,0x0000); Delay(50);
LCD_WriteReg(0x0016,0xEF1C); Delay(50);
LCD_WriteReg(0x0017,0x0103); Delay(50);
LCD_WriteReg(0x000B,0x0000); Delay(50);
LCD_WriteReg(0x000F,0x0000); Delay(50);
LCD_WriteReg(0x0041,0x0000); Delay(50);
LCD_WriteReg(0x0042,0x0000); Delay(50);
LCD_WriteReg(0x0048,0x0000); Delay(50);
LCD_WriteReg(0x0049,0x013F); Delay(50);
LCD_WriteReg(0x004A,0x0000); Delay(50);
LCD_WriteReg(0x004B,0x0000); Delay(50);
LCD_WriteReg(0x0044,0xEF00); Delay(50);
LCD_WriteReg(0x0045,0x0000); Delay(50);
LCD_WriteReg(0x0046,0x013F); Delay(50);
LCD_WriteReg(0x0030,0x0707); Delay(50);
LCD_WriteReg(0x0031,0x0204); Delay(50);
LCD_WriteReg(0x0032,0x0204); Delay(50);
LCD_WriteReg(0x0033,0x0502); Delay(50);
LCD_WriteReg(0x0034,0x0507); Delay(50);
LCD_WriteReg(0x0035,0x0204); Delay(50);
LCD_WriteReg(0x0036,0x0204); Delay(50);
LCD_WriteReg(0x0037,0x0502); Delay(50);
LCD_WriteReg(0x003A,0x0302); Delay(50);
LCD_WriteReg(0x002F,0x12BE); Delay(50);
LCD_WriteReg(0x003B,0x0302); Delay(50);
LCD_WriteReg(0x0023,0x0000); Delay(50);
LCD_WriteReg(0x0024,0x0000); Delay(50);
LCD_WriteReg(0x0025,0x8000); Delay(50);
LCD_WriteReg(0x004f,0x0000); Delay(50);
LCD_WriteReg(0x004e,0x0000); Delay(50);
}
gördüğüm kadarıyla bir farklılık yok hocam.
void LCD_Init(void)
{
LCD_CtrlLinesConfig();
Delay(3000);
LCD_FSMCConfig();
Delay(3000);
TIM_Config();
LCD_BackLight(100);
LCD_WriteReg(0x0007,0x0021); Delay(50);
LCD_WriteReg(0x0000,0x0001); Delay(50);
LCD_WriteReg(0x0007,0x0023); Delay(50);
LCD_WriteReg(0x0010,0x0000); Delay(90);
LCD_WriteReg(0x0007,0x0033); Delay(50);
LCD_WriteReg(0x0011,0x6830); Delay(50);
LCD_WriteReg(0x0002,0x0600); Delay(50);
LCD_WriteReg(0x0012,0x6CEB); Delay(50);
LCD_WriteReg(0x0003,0xA8A4); Delay(50);
LCD_WriteReg(0x000C,0x0000); Delay(50);
LCD_WriteReg(0x000D,0x080C); Delay(50);
LCD_WriteReg(0x000E,0x2B00); Delay(50);
LCD_WriteReg(0x001E,0x00B0); Delay(50);
LCD_WriteReg(0x0001,0x2b3F); Delay(50); //RGB
LCD_WriteReg(0x0005,0x0000); Delay(50);
LCD_WriteReg(0x0006,0x0000); Delay(50);
LCD_WriteReg(0x0016,0xEF1C); Delay(50);
LCD_WriteReg(0x0017,0x0103); Delay(50);
LCD_WriteReg(0x000B,0x0000); Delay(50);
LCD_WriteReg(0x000F,0x0000); Delay(50);
LCD_WriteReg(0x0041,0x0000); Delay(50);
LCD_WriteReg(0x0042,0x0000); Delay(50);
LCD_WriteReg(0x0048,0x0000); Delay(50);
LCD_WriteReg(0x0049,0x013F); Delay(50);
LCD_WriteReg(0x004A,0x0000); Delay(50);
LCD_WriteReg(0x004B,0x0000); Delay(50);
LCD_WriteReg(0x0044,0xEF00); Delay(50);
LCD_WriteReg(0x0045,0x0000); Delay(50);
LCD_WriteReg(0x0046,0x013F); Delay(50);
LCD_WriteReg(0x0030,0x0707); Delay(50);
LCD_WriteReg(0x0031,0x0204); Delay(50);
LCD_WriteReg(0x0032,0x0204); Delay(50);
LCD_WriteReg(0x0033,0x0502); Delay(50);
LCD_WriteReg(0x0034,0x0507); Delay(50);
LCD_WriteReg(0x0035,0x0204); Delay(50);
LCD_WriteReg(0x0036,0x0204); Delay(50);
LCD_WriteReg(0x0037,0x0502); Delay(50);
LCD_WriteReg(0x003A,0x0302); Delay(50);
LCD_WriteReg(0x002F,0x12BE); Delay(50);
LCD_WriteReg(0x003B,0x0302); Delay(50);
LCD_WriteReg(0x0023,0x0000); Delay(50);
LCD_WriteReg(0x0024,0x0000); Delay(50);
LCD_WriteReg(0x0025,0x8000); Delay(50);
LCD_WriteReg(0x004f,0x0000); Delay(50);
LCD_WriteReg(0x004e,0x0000); Delay(50);
}
LCD_WriteBMP();
iceriği nasıl.
Birde Resmi nasıl hexe cevirdiniz o kısımdaki ayarlarda sorun olmasın.
void LCD_WriteBMP(uint8_t Xpos, uint16_t Ypos, uint8_t Height, uint16_t Width, uint8_t *bitmap)
{
volatile uint32_t index;
uint16_t *bitmap_ptr = (uint16_t *)bitmap;
uint16_t i;
uint32_t size;
size=(Height * Width);
LCD_SetDisplayWindow(Xpos, Ypos,Height, Width);
LCD_WriteReg(LCD_REG_17, 0x6048);
LCD_WriteRAM_Prepare();
for(index = 0; index < size ; index++)
{
LCD_WriteRAM(*bitmap_ptr++);
//for(i=0;i<2;i++);
}
LCD_WriteReg(LCD_REG_17, 0x6028);
LCD_SetDisplayWindow(0, 0, 239, 319);
}
içerik bu hocam,resim'i image2lcd programından output file type c,horizan scan,16-bit true color,320 x 240,scan bottom to top,sağ alt tab'dan 16 bit color 5 6 5.C dosyasını cıktı olarak aldım const unsigned char olarak dosya verdi ben uint8_t olarak değiştirerek .h dosyası olarak kaydettim yanlış mı yaptım acaba. ???
not: LCD_WriteBMP fonksiyonunda bitmap 8bit olarak tanımlanmıs,fakat benim olusturdugum dosya 16bit ondan dolayı olabilir mi hocam ? bitmap 16bit için olan uygun kütüphane var mı sizde acaba?
komutta biraz değişiklik yaptıktan sonra ortaya çıkan görüntü.Hala tam resmi elde ede
http://u1312.hizliresim.com/1j/b/vcpz6.jpg (http://u1312.hizliresim.com/1j/b/vcpz6.jpg)
Kullandığın bmp basma koduna uygun olarak 8 bitlik converter programını kullanarak denemelisin. Aşağıdaki programı kullanarak data dosyasını üret 8bpp seç ve koduna dahil et. Sorunun çözümlenmesi lazım...
Bitmap converter for Emwin...
http://rapidshare.com/share/432E17E129A6162BB2539666175B5D1A (http://rapidshare.com/share/432E17E129A6162BB2539666175B5D1A)
teşekkür ediyorum inceliyorum,
mesaj birleştirme:: 10 Aralık 2013, 21:09:20
sorunum çözüldü,ilk önce bir resmi bmp formatına çevirdim daha sonra çevirdiğim resmi hex kodlarına döktüm
LCD_WriteBMP(239,139 ,100 ,100, (uint8_t *)gImage_images); kalın gösterdiğim yeri 8bitlik tanımlayarak sorunumu çözdüm,
tekrar teşekkürler M_B, ve pisayisi hocam.