ممکنه معادل c تابع اینیت تون رو بزارید ؟ شاید من تو اینیت اشتباه میکنم!
ممکنه معادل c تابع اینیت تون رو بزارید ؟ شاید من تو اینیت اشتباه میکنم!
[PHP]void SSD1963_Init (void)
{
SSD1963_CTRLPORT->BRR = SSD1963_PIN_RST;
delay_ms(10);
SSD1963_CTRLPORT->BSRR = SSD1963_PIN_RST;
delay_ms(10);
// REFclk = crystal = 10MHz
SSD1963_WriteCommand(SSD1963_SET_PLL_MN); // 0x00E2
SSD1963_WriteData(0x23); // PLLclk = REFclk * (29+1) = 300MHz
SSD1963_WriteData(0x02); // SYSclk = PLLclk / (2+1) = 100MHz
SSD1963_WriteData(0x04); // dummy
SSD1963_WriteCommand(SSD1963_SET_PLL); // 0x00E0
SSD1963_WriteData(0x01); // Enable PLL
delay_ms(10);
SSD1963_WriteCommand(SSD1963_SET_PLL); // 0x00E0
SSD1963_WriteData(0x03);
delay_ms(10); // Use PLL output as system clock & Enable PLL
SSD1963_WriteCommand(SSD1963_SOFT_RESET); // soft reset 0x0001
delay_ms(10);
//Set LSHIFT freq, i.e. the DCLK with PLL freq 110MHz set previously
//Typical DCLK for AT090TN12 V.3 and AT090TN33 and AT070TN92 and AT090TN10 is 33.3MHz
//33.264MHz = 100MHz*(LCDC_FPR+1)/2^20
//LCDC_FPR = 348797 (0x5527D)
SSD1963_WriteCommand(SSD1963_SET_LSHIFT_FREQ); // 0x00E6 0x553f6
SSD1963_WriteData(0X05); // (LCD_FPR >>16)&0xFF
SSD1963_WriteData(0X52); // (LCD_FPR >>8)&0xFF
SSD1963_WriteData(0X7D); // LCD_FPR&0xFF
delay_ms(50);
/*
//Set panel mode, varies from individual manufacturer
SSD1963_WriteCommand(SSD1963_SET_LCD_MODE); // 0x00B0
SSD1963_WriteData(0x2c);//24-Bit //(0x0C); //18-Bit
SSD1963_WriteData(0x00);
SSD1963_WriteData((HDP>>8) & 0x0000FF);
SSD1963_WriteData(HDP & 0x00FF);
SSD1963_WriteData((VDP>>8) & 0x0000FF);
SSD1963_WriteData(VDP & 0xFF);
SSD1963_WriteData(0x000000);
delay_ms(10);
//Set horizontal period
SSD1963_WriteCommand(SSD1963_SET_HORI_PERIOD); // 0x00B4
SSD1963_WriteData((HT>>8) & 0X0000FF);
SSD1963_WriteData(HT & 0x0000FF);
SSD1963_WriteData((HPS>>8) & 0xFF );
SSD1963_WriteData(HPS & 0xFF);
SSD1963_WriteData(HPW);
SSD1963_WriteData((LPS>>8)&0X0000FF);
SSD1963_WriteData(LPS&0X0000FF);
SSD1963_WriteData(0x000000);
delay_ms(10);
//Set vertical period
SSD1963_WriteCommand(SSD1963_SET_VERT_PERIOD); // 0x00B6
SSD1963_WriteData((VT>>8) & 0x0000FF);
SSD1963_WriteData(VT & 0x0000FF);
SSD1963_WriteData((VPS>>8) & 0x0000FF); // 51
SSD1963_WriteData(VPS & 0x0000FF);
SSD1963_WriteData(VPW);
SSD1963_WriteData((FPS>>8)&0X0000FF);
SSD1963_WriteData(FPS&0X0000FF);
delay_ms(10);*/
//Set panel mode, varies from individual manufacturer
SSD1963_WriteCommand(SSD1963_SET_LCD_MODE);
SSD1963_WriteData(0x2c);//24-Bit //(0x0C); //18-Bit
SSD1963_WriteData(0x00);
SSD1963_WriteData((TFT_WIDTH-1)>>8);
SSD1963_WriteData((TFT_WIDTH-1) & 0xFF);
SSD1963_WriteData((TFT_HEIGHT-1)>>8);
SSD1963_WriteData((TFT_HEIGHT-1) & 0xFF);
SSD1963_WriteData(0x00);
delay_ms(20);
//Set horizontal period
SSD1963_WriteCommand(SSD1963_SET_HORI_PERIOD);
SSD1963_WriteData((TFT_HSYNC_PERIOD-1)>>8);
SSD1963_WriteData((TFT_HSYNC_PERIOD-1) & 0xFF);
SSD1963_WriteData((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH-1)>>8);
SSD1963_WriteData((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH-1)&0xFF);
SSD1963_WriteData(TFT_HSYNC_PULSE-1);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
delay_ms(20);
//Set vertical period
SSD1963_WriteCommand(SSD1963_SET_VERT_PERIOD);
SSD1963_WriteData((TFT_VSYNC_PERIOD-1)>>8);
SSD1963_WriteData((TFT_VSYNC_PERIOD-1) & 0xFF);
SSD1963_WriteData((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH-1)>>8);
SSD1963_WriteData((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH-1) & 0xFF);
SSD1963_WriteData(TFT_VSYNC_PULSE-1);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
delay_ms(20);
//Set pixel data interface
SSD1963_WriteCommand(SSD1963_SET_PIXEL_DATA_INTERF ACE); // 0x00F0
SSD1963_WriteData(SSD1963_PDI_24BIT);
delay_ms(20);
// set address mode
SSD1963_WriteCommand(SSD1963_SET_ADDRESS_MODE); // 0x0036
SSD1963_WriteData(0x0000);
//SSD1963_WriteData(0x0060);
// GPIO0,1,2,3 is output
SSD1963_WriteCommand(SSD1963_SET_GPIO_CONF); // 0x00B8
SSD1963_WriteData(0x0F);
SSD1963_WriteData(0x01);
// set GPIO0 , 1 , 2, 3 = 1
SSD1963_WriteCommand(SSD1963_SET_GPIO_VALUE); // 0x00BA
SSD1963_WriteData(0x07);
SSD1963_ClearScreen(0x000000); // black screen
delay_ms(10);
//SET display on
SSD1963_WriteCommand(SSD1963_SET_DISPLAY_ON); // 0x0029
// exit sleep mode
// SSD1963_WriteCommand(SSD1963_EXIT_SLEEP_MODE); // 0x0011
}
void set_backlight (unsigned char light)
{
// setting PWM for LED backlight
SSD1963_WriteCommand(SSD1963_SET_PWM_CONF);
SSD1963_WriteData(0x000E);
SSD1963_WriteData(light); // Set 0xFF for full and 0x00 for off
SSD1963_WriteData(0x0001); // ser 0x0009 for DBC controller
SSD1963_WriteData(0x00FF);
SSD1963_WriteData(0x0000);
SSD1963_WriteData(0x0000);
}[/PHP]
سلام دوستان من این مدار رو طراحی کردم نمیدونم مشکل از کجاس حتی بکلایت هم روشن نمیشه البته مدار رو دوباره طراحی کردم تو روخدا کمک کنید چون من برای چند تا کار از این ال سی دی میخوام استفاده کنم ولی هموز نتونستم راهش بندازم مدار تو لینک زیر هست ببینید مدار مشکلی داره وقتی خودم دستی به pwm
5 ولت میدم بکلایت روشن میشه
اینم فایل ها در altium
http://upload.ugm.ac.id/547PCB.rar
تو رو خدا کمک کنید چون فقط تو عید وقت دارم خواهش میکنم
ویرایش توسط REZA1373 : 19-03-2013 در ساعت 17:39
مهندس ریست ssd رو باید پول اپ کنی اینم تست کن
مدار رو نگاه کردید تو فایلی که گزاشتم بود آیا مدار درست بود؟ تو رو خدا کمک کنید
کریستالی که گذاشتم 8 مگ هست مشکلی نداره؟
آیا مدار کریستال درسته؟
ویرایش توسط REZA1373 : 19-03-2013 در ساعت 23:50
کریستالت باید 10 مگ باشه مدار ریست رو هم پول اپ نکردی من دیدم با یه مقاومت 10 کیلو به 3.3 ولت وصلش کن
اهم بین تغزیه 1.2 ولت تا زمین و 3.3 ولت تا زمینت چند اهمه به هم اتصال نداره اینقدرم حرس نخور
برای 3.3 ولت 744 اهم و برای 1.2 ولت 94 اهم هست
اگه کریستال 8 باشه نمیشه با برنامه درستش کرد؟
تاحالا هیچ وقت اینقد نا امید نشده بودم
مداری که شما تو سایت داده بودید هیچ مشکل سخت افزاریی نداره اگه نداره اینی که شما زحمتشو کشیدید بدم چاپ کنن لیست مدارتون رو کجا میتونم پیدا کنم
سلام. دوستام من شماتیک تغذیه ای که واسه ال سی دی 7 اینچ استفاده کردید و نویز نداره رو نتونستم پیدا کنم. اگه میشه لطف کنین و اونو بزارین و اینکه کسی میدونه این دوتا ال سی دی 7 اینچ تو فروشگاه کدوم بهتره(یکی 40 پین و دیگری 50 پین)؟ ممنون
ویرایش توسط dmco : 08-04-2013 در ساعت 11:07
مهندس بهترین گزینه استفاده از شماتیک برد ال سی دی کرتکس a8 هست که تو سایت اولیمکس وجود داره برای قسمت ای سی کانورترش میتونید از هر کانورتری استفاده کنید شکل کلیش همینه خیلی نویز مدارو پایین میاره میتونید از این ای سی ها استفاده کنید
fp6290
fp6796
tps61140
tps61040
و همین ای سی که خود شماتیک گفته برای مورد tps داخل فروشگاه موجوده ولی برای موارد دیگه باید به شرکت کویر سفارش خرید از خارج بدید
سلام مهندس رحیمی من برد تو سایتتون رو زدم و stm رو به Avr تبدیل کردم جواب نداد حتی یه برگشتی کوچیکم نتونستم بگیرم برود خیلی تمیز زدم اینم عکسش
الانم به SAM7X256 تبدیل کردم باز هم جواب نداد چیکار کنم مهندس مشکل میتونه از کجا باشه
کد:#include <AT91SAM7X256.H> #include <lib_AT91SAM7X256.h> #include <delay.h> #include <pio.h> #define SSD_WR PA0 #define SSD_RD PA1 #define SSD_RS PA2 #define SSD_CS PA3 #define SSD_PIN_RST PA4 #define SSD_NOP 0x00 #define SSD_SOFT_RESET 0x01 #define SSD_GET_POWER_MODE 0x0A #define SSD_GET_ADDRESS_MODE 0x0B #define SSD_GET_DISPLAY_MODE 0x0D #define SSD_GET_TEAR_EFFECT_STATUS 0x0E #define SSD_ENTER_SLEEP_MODE 0x10 #define SSD_EXIT_SLEEP_MODE 0x11 #define SSD_ENTER_PARTIAL_MODE 0x12 #define SSD_ENTER_NORMAL_MODE 0x13 #define SSD_EXIT_INVERT_MODE 0x20 #define SSD_ENTER_INVERT_MODE 0x21 #define SSD_SET_GAMMA_CURVE 0x26 #define SSD_SET_DISPLAY_OFF 0x28 #define SSD_SET_DISPLAY_ON 0x29 #define SSD_SET_COLUMN_ADDRESS 0x2A #define SSD_SET_PAGE_ADDRESS 0x2B #define SSD_WRITE_MEMORY_START 0x2C #define SSD_READ_MEMORY_START 0x2E #define SSD_SET_PARTIAL_AREA 0x30 #define SSD_SET_SCROLL_AREA 0x33 #define SSD_SET_TEAR_OFF 0x34 #define SSD_SET_REAR_ON 0x35 #define SSD_SET_ADDRESS_MODE 0x36 #define SSD_SET_SCROLL_START 0x37 #define SSD_EXIT_IDLE_MODE 0x38 #define SSD_ENTER_IDLE_MODE 0x39 #define SSD_SET_PIXEL_FORMAT 0x3A #define SSD_WRITE_MEMORY_CONTINUE 0x3C #define SSD_READ_MEMORY_CONTINUE 0x3E #define SSD_SET_TEAR_SCANLINE 0x44 #define SSD_GET_SCANLINE 0x45 #define SSD_READ_DDB 0xA1 #define SSD_SET_LCD_MODE 0xB0 #define SSD_GET_LCD_MODE 0xB1 #define SSD_SET_HORI_PERIOD 0xB4 #define SSD_GET_HORI_PERIOD 0xB5 #define SSD_SET_VERT_PERIOD 0xB6 #define SSD_GET_VERT_PERIOD 0xB7 #define SSD_SET_GPIO_CONF 0xB8 #define SSD_GET_GPIO_CONF 0xB9 #define SSD_SET_GPIO_VALUE 0xBA #define SSD_GET_GPIO_STATUS 0xBB #define SSD_SET_POST_PROC 0xBC #define SSD_GET_POST_PROC 0xBD #define SSD_SET_PWM_CONF 0xBE #define SSD_GET_PWM_CONF 0xBF #define SSD_GET_LCD_GEN0 0xC0 #define SSD_SET_LCD_GEN0 0xC1 #define SSD_GET_LCD_GEN1 0xC2 #define SSD_SET_LCD_GEN1 0xC3 #define SSD_GET_LCD_GEN2 0xC4 #define SSD_SET_LCD_GEN2 0xC5 #define SSD_GET_LCD_GEN3 0xC6 #define SSD_SET_LCD_GEN3 0xC7 #define SSD_SET_GPIO0_ROP 0xC8 #define SSD_GET_GPIO0_ROP 0xC9 #define SSD_SET_GPIO1_ROP 0xCA #define SSD_GET_GPIO1_ROP 0xCB #define SSD_SET_GPIO2_ROP 0xCC #define SSD_GET_GPIO2_ROP 0xCD #define SSD_SET_GPIO3_ROP 0xCE #define SSD_GET_GPIO3_ROP 0xCF #define SSD_SET_DBC_CONF 0xD0 #define SSD_GET_DBC_CONF 0xD1 #define SSD_SET_DBC_TH 0xD4 #define SSD_GET_DBC_TH 0xD5 #define SSD_SET_PLL 0xE0 #define SSD_SET_PLL_MN 0xE2 #define SSD_GET_PLL_MN 0xE3 #define SSD_GET_PLL_STATUS 0xE4 #define SSD_SET_DEEP_SLEEP 0xE5 #define SSD_SET_LSHIFT_FREQ 0xE6 #define SSD_GET_LSHIFT_FREQ 0xE7 #define SSD_SET_PIXEL_DATA_INTERFACE 0xF0 #define SSD_PDI_8BIT 0 #define SSD_PDI_12BIT 1 #define SSD_PDI_16BIT 2 #define SSD_PDI_16BIT565 3 #define SSD_PDI_18BIT 4 #define SSD_PDI_24BIT 5 #define SSD_PDI_9BIT 6 #define SSD_GET_PIXEL_DATA_INTERFACE 0xF1 unsigned long int inport; ///////////////////////////////////////////////////// void SSD_Wr_Cmd(unsigned int commandToWrite){ AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, 0xFFFFFFFF); AT91F_PIO_SetOutput(AT91C_BASE_PIOB, commandToWrite); delay_us(1); SET_PORTA= SSD_RD; RST_PORTA= SSD_RS| SSD_WR| SSD_CS; delay_us(1); SET_PORTA=SSD_WR| SSD_CS;} ///////////////////////////////////////////////////// void SSD_Wr_Data(unsigned int dataToWrite){ AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, 0xFFFFFFFF); AT91F_PIO_SetOutput(AT91C_BASE_PIOB, dataToWrite); delay_us(1); SET_PORTA= SSD_RD| SSD_RS; RST_PORTA= SSD_WR| SSD_CS; delay_us(1); SET_PORTA= SSD_CS| SSD_WR;} //////////////////////////////////////////////////// void SSD_Rd_Data(unsigned int dataToREAD) { AT91F_PIO_CfgInput(AT91C_BASE_PIOB, 0xFFFFFFFF); AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, 0xFFFFFFFF); delay_us(1); SET_PORTA= SSD_WR| SSD_RS; RST_PORTA= SSD_RD| SSD_CS; delay_us(1); inport=AT91F_PIO_GetInput(AT91C_BASE_PIOB); SET_PORTA= SSD_CS| SSD_RD; delay_us(1); AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, 0xFFFFFFFF);} //////////////////////////////////////////////////// int main (void) { AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, 0xFFFFFFFF); AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, 0xFFFFFFFF); while (1){ SET_PORTA= PA19; delay_us(600); RST_PORTA= PA19; delay_us(600); delay_us(40); SSD_Wr_Cmd(SSD_SET_GPIO_CONF); SSD_Wr_Data(0x6D); delay_us(40); SSD_Wr_Cmd(SSD_GET_GPIO_CONF); SSD_Rd_Data(0x00); if ( inport>0) SET_PORTA= PA19; else RST_PORTA= PA19; delay_us(40);
ویرایش توسط REZA1373 : 19-06-2013 در ساعت 22:10
سلام مهندس نباید مشکلی داشته باشه کاش با یه stm32 تست میکردید اهم بین 3.3 ولت تا زمین و 1.2 ولت تا زمین رو بگیرید ببینید طبیعی هستش در ضمن اس اس دیت نباید داغ بکنه حواست باشه
راستی تو برد که تغییری ندادید ؟
سلام خسته نباشید ما که نتونیستیم راهش بندازیم نگهش میدارم بعد از کنکور که 24 مرداده راهش بندازم دیگه خسته شدم یه ماه خورده ای یه روشم ولی.... ممنون مهندس هیچی تاحالا اینقد اعصابمو خورد نکرده بود کلی هزینه کرد استادم ولی گفت عیب نداره بعدا راش میندازی
سلام من خودم کلی هزینه برد دادم تا تمام مشکلاتشو حل کردم اگرم ssd1963 داغ نمیکنه و قسمت بک لایتت مشکلی نداره مطمعن باش از برنامت هستش شما یه کاری بکن یه stm32f103rbt6 بگیر که کلا 10 تومنم نیست برنامه تست شدش هم که تو نت زیاده باهاش تست کن یه برد ساده براش بزن منم کمکت میکنم
سلام.
ببخشید یه سوال نسبتا نا مربوط داشتم!
بعضی از کدهایی که دوستان گذاشتن، بالا نوشته شده PHP Code
خواستم ببینم با کدوم کامپایلر نوشتن؟ واسه کار با میکروهای ST و حالت کلی میکروهایARM کدوم کامپایلر رو پیشنهاد میکنین؟ خوش دست باشه و کار باهاش هم مثل بچه آدم راحت باشه!
سوالی که واسم مطرحه اینه که این همه توابع و دیفاین و... رو دوستان از کجا مینویسن؟ مثال کامپایلره؟ و از کجا میدونن که کدوم تابع چیکار میکنه و کجا باید ازش استفاده کرد؟
ببخشید اگه سوالهام مبتدیانه هست...
از نظر هر کسی یک کامپیلر خوب هست.
حالا شما هم می تونید از keil یا iar و یا ..........بقیه کامپایلرهای استفاده کنید.
بعدم سوالات شما مبتدیانه نیست فقط جواب دادن به سوالات شما کمی سخت هست به دلیل اینکه بیشترجواب هاش واضح هست.اگر شما حتی یک برنامه کوچیکم نوشته باشید می تونید بفهمید که چجوری میشه که کدوم تابع برای چیکار استفاده میشه و چرا . و یا اینکه ما این توابع رو از کجا میاریم.
(اگر یک دوست برنامه نویس که رشته کامپیوتر میخونه داشته باشی بهش راجع به برنامه نویس به زبان C ازش بپرس و یکم هم راجع به تاریخچه برنامه نویسی میکرو و ساختمان میکرو بخوصوص ریجیستری های میکرو و نحوه مقدار دهی به آن رو مطالعه کنید می تونید تمامی جواب سوالات خودتون رو پیدا کنید.
شرکت Time Owner
خوب دوست عزیز مشخصا با کامپایلر کیل نوشته شده برای شروع هم بهتره با کیل keil شروع کنید
در مورد اینکه چه تابعی چی کار میکنه باید خودتونو درگیر بکنید تا متوجه شید چی داره چیکار میکنه نه اینکه من بیام بگم این همه تابع چیکار میکنه از حوصله افرادم بر نمیاد که تک تک بیاد همه توابع رو توضیح بدن این توابع رو هم یه بابایی نوشته و دوستان زحمت کشیدن ادیتش کردن و بهینه ترش کردن
شما استارت بزن به مشکلی خوردید تو فروم مطرح کنید دوستان یا من جوابتون رو میدن مشکلی نیست