سلام من میخوام lcd ssd1963 رو تو مد 8 بیتی راه بندازم حالا من از d0 تا d7 رو استفاده کردم آیا باید از d8 تا d23 رو به زمین وصل کنم یا آزاد باشه درسته ؟ چون مدار رو دادم چاپ کردن
سلام من میخوام lcd ssd1963 رو تو مد 8 بیتی راه بندازم حالا من از d0 تا d7 رو استفاده کردم آیا باید از d8 تا d23 رو به زمین وصل کنم یا آزاد باشه درسته ؟ چون مدار رو دادم چاپ کردن
نه مهندس زمانیکه داری ssd رو اینیت میکنی تا بهش بگی 8 بیتی کانفیگ شو خودش اتوماتیک از بیت 8 تا 23 رو گراند میکنه که تو اپلیکیشن نوت خود ssd سریحا گفته که خیلی مراقب این حالت باشید یعنی نیاید پایه های 8 تا مثلا 15 رو همینجوری از میکرو به ssd وصل کنید چون تا 8 بیتی کانفیگش کنید این پایه ها گراند میشه و به میکروتون اسیب میزنه
ممنون
پایه ها آزاده مشکلی نداره پس
یه سوال دیگه آیا نمونه برنامه ای با avr هست تو سایت ؟
نه مهندس مشکلی نداره برای پورت رکدنش نمونه های مثالش برای stm32 هست پورت کردنش رو avr مثل اب خوردنه مهندس فقط تابع اصلیت اینیت کردنش !
شما برد اماده براش گرفتید؟
نه خودم زدم با avr هیچ مشکلی نداره فقط الان برد رو زدم ولی از d8 تا d23 آزاده و من از arm به avr ترجمه کردم و تست کردم جواب نداد میشه یه جایی که برنامش مطمئن باشه بهم معرفی کنید ممنون
تو فروم stm32 برنامه امادش هست
مهندس من گیج شدم الان اگه من تو مد 8 بیتی و در صورت آزاد بودن پایه های d8 تا d23 بخوام lcd رو اینیت کنم مشکلی نیست؟
نه هیچ دشواری نداره فقط پایه هارو ازاد بزار
ممنون
تو دیتاشیت نوشته بود به پایه های ورودی 3.3 بیشتر به ورودی ندید شما تا حالا 5 ولت دادید؟
ویرایش توسط REZA1373 : 09-03-2013 در ساعت 22:52
پس بعد از معرفی واحد pll باید بگم ال سی دی تو مد 8 بیته درسته ؟ من اصلا نمیگفتم تو مد چند بتیه
مهندس تا 4.6 ولت میتونید بهش بدید ولی شما از میکرو های avr نوع low استفاده کنید که ولتاژ کاریش 3.3 هستش
آقای kamikazi ممنون
پس بعد از معرفی واحد pll باید بگم ال سی دی تو مد 8 بیته هست درسته ؟
آیا شما برنامه ای با avr دارید؟
نه مهندس ندارم ولی فقط یه کامند هست که اینتر فیس ورودی رو مشخص میکنه همونو رو مد 8 بیتی بزار در ضمن این تابع اینیت برای ورودیه 24 بیتیه از همین استفاده کن منم از همین جواب گرفتم مشکلی نداره [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]
همین چند خط رو باید تغییر بدی
[PHP] //Set pixel data interface
SSD1963_WriteCommand(SSD1963_SET_PIXEL_DATA_INTERF ACE); // 0x00F0
SSD1963_WriteData(SSD1963_PDI_24BIT);
delay_ms(20);[/PHP]
ممنون تست میکنم ببینم چی میشه
کریستال من 3.579545 هست حالا اگه من ضرب 84 کنم و تقسیم بر 3 کنم درسته؟
SSD1963_WriteCommand(SSD1963_SET_PLL_MN); // 0x00E2
SSD1963_WriteData(0x53); // PLLclk = REFclk * (83+1) = 300MHz
SSD1963_WriteData(0x02); // SYSclk = PLLclk / (2+1) = 100MHz
SSD1963_WriteData(0x04); // dummy
سلام مهندس رحیمی این کدهای منه هرکاری میکنم کار نمیکنه حتی بک لایتم روشن نمیشه چیکار کنم؟
[PHP]$regfile = "m16def.dat"
$crystal = 1000000
_cs Alias Portb.2
_a0 Alias Portb.3
_wr Alias Portd.0
_rd Alias Portb.4
_rst Alias Portb.1
_dataport Alias Porta
Config Portd.7 = Output
Config _rst = Output
Config _cs = Output
Config _a0 = Output
Config _wr = Output
Config _rd = Output
Config _dataport = Output
Dim Dataa As Word , Index As Byte
Wait 1
************************************************** *****************************
----- declare sub ---------------------------------------------
************************************************** *****************************
Const Ssd1963_nop = &H00
Const Ssd1963_soft_reset = &H01
Const Ssd1963_get_power_mode = &H0A
Const Ssd1963_get_address_mode = &H0B
Const Ssd1963_get_display_mode = &H0D
Const Ssd1963_get_tear_effect_status = &H0E
Const Ssd1963_enter_sleep_mode = &H10
Const Ssd1963_exit_sleep_mode = &H11
Const Ssd1963_enter_partial_mode = &H12
Const Ssd1963_enter_normal_mode = &H13
Const Ssd1963_exit_invert_mode = &H20
Const Ssd1963_enter_invert_mode = &H21
Const Ssd1963_set_gamma_curve = &H26
Const Ssd1963_set_display_off = &H28
Const Ssd1963_set_display_on = &H29
Const Ssd1963_set_column_address = &H2A
Const Ssd1963_set_page_address = &H2B
Const Ssd1963_write_memory_start = &H2C
Const Ssd1963_read_memory_start = &H2E
Const Ssd1963_set_partial_area = &H30
Const Ssd1963_set_scroll_area = &H33
Const Ssd1963_set_tear_off = &H34
Const Ssd1963_set_rear_on = &H35
Const Ssd1963_set_address_mode = &H36
Const Ssd1963_set_scroll_start = &H37
Const Ssd1963_exit_idle_mode = &H38
Const Ssd1963_enter_idle_mode = &H39
Const Ssd1963_set_pixel_format = &H3A
Const Ssd1963_write_memory_continue = &H3C
Const Ssd1963_read_memory_continue = &H3E
Const Ssd1963_set_tear_scanline = &H44
Const Ssd1963_get_scanline = &H45
Const Ssd1963_read_ddb = &HA1
Const Ssd1963_set_lcd_mode = &HB0
Const Ssd1963_get_lcd_mode = &HB1
Const Ssd1963_set_hori_period = &HB4
Const Ssd1963_get_hori_period = &HB5
Const Ssd1963_set_vert_period = &HB6
Const Ssd1963_get_vert_period = &HB7
Const Ssd1963_set_gpio_conf = &HB8
Const Ssd1963_get_gpio_conf = &HB9
Const Ssd1963_set_gpio_value = &HBA
Const Ssd1963_get_gpio_status = &HBB
Const Ssd1963_set_post_proc = &HBC
Const Ssd1963_get_post_proc = &HBD
Const Ssd1963_set_pwm_conf = &HBE
Const Ssd1963_get_pwm_conf = &HBF
Const Ssd1963_get_lcd_gen0 = &HC0
Const Ssd1963_set_lcd_gen0 = &HC1
Const Ssd1963_get_lcd_gen1 = &HC2
Const Ssd1963_set_lcd_gen1 = &HC3
Const Ssd1963_get_lcd_gen2 = &HC4
Const Ssd1963_set_lcd_gen2 = &HC5
Const Ssd1963_get_lcd_gen3 = &HC6
Const Ssd1963_set_lcd_gen3 = &HC7
Const Ssd1963_set_gpio0_rop = &HC8
Const Ssd1963_get_gpio0_rop = &HC9
Const Ssd1963_set_gpio1_rop = &HCA
Const Ssd1963_get_gpio1_rop = &HCB
Const Ssd1963_set_gpio2_rop = &HCC
Const Ssd1963_get_gpio2_rop = &HCD
Const Ssd1963_set_gpio3_rop = &HCE
Const Ssd1963_get_gpio3_rop = &HCF
Const Ssd1963_set_dbc_conf = &HD0
Const Ssd1963_get_dbc_conf = &HD1
Const Ssd1963_set_dbc_th = &HD4
Const Ssd1963_get_dbc_th = &HD5
Const Ssd1963_set_pll = &HE0
Const Ssd1963_set_pll_mn = &HE2
Const Ssd1963_get_pll_mn = &HE3
Const Ssd1963_get_pll_status = &HE4
Const Ssd1963_set_deep_sleep = &HE5
Const Ssd1963_set_lshift_freq = &HE6
Const Ssd1963_get_lshift_freq = &HE7
Const Ssd1963_set_pixel_data_interface = &HF0
Const Ssd1963_pdi_8bit = 0
Const Ssd1963_pdi_12bit = 1
Const Ssd1963_pdi_16bit = 2
Const Ssd1963_pdi_16bit565 = 3
Const Ssd1963_pdi_18bit = 4
Const Ssd1963_pdi_24bit = 5
Const Ssd1963_pdi_9bit = 6
Const Ssd1963_get_pixel_data_interface = &HF1
Config Submode = New
Declare Sub Ssd1963_writecommand(byval Index As Byte)
Declare Sub Ssd1963_writedata(byval Dataa As Word)
Declare Sub Ssd1963_init()
Ssd1963_init
Do
Set Portd.7
Waitms 500
Reset Portd.7
Waitms 500
Loop
************************************************** *****************************
Sub Ssd1963_writecommand(byval Index As Byte)
_dataport = Index
_a0 = 0
_cs = 0
_wr = 0
_rd = 1
Waitms 1
_a0 = 1
_cs = 1
_wr = 1
End Sub
************************************************** *****************************
Sub Ssd1963_writedata
_dataport = Dataa
_rd = 1
_a0 = 1
_rd = 0
_a0 = 0
Waitms 1
_rd = 1
_cs = 1
_wr = 1
End Sub
************************************************** *****************************
Sub Ssd1963_init
_rst = 0
Waitms 100
_rst = 1
Waitms 100
Ssd1963_writecommand Ssd1963_soft_reset
'REFclk = crystal = 10MHz
Ssd1963_writecommand Ssd1963_set_pll_mn
Ssd1963_writedata &H53 '/ / Pllclk = Refclk * 30(300mhz)
Ssd1963_writedata &H02 '/ / Sysclk = Pllclk / 3(100mhz)
Ssd1963_writedata &H54 '/ / Dummy
Ssd1963_writecommand Ssd1963_set_pll
Ssd1963_writedata &H01
Waitms 50
Ssd1963_writecommand Ssd1963_set_pll
Ssd1963_writedata &H03
Ssd1963_writecommand &H01 '// soft reset
'Set LSHIFT freq, i.e. the DCLK with PLL freq 120MHz set previously
'Typical DCLK for TY430TFT480272 is 9MHz
'9MHz = 100MHz*(LCDC_FPR+1)/2^20
'LCDC_FPR = 94370 (0x170A2)
Ssd1963_writecommand Ssd1963_set_lshift_freq
Ssd1963_writedata &H01
Ssd1963_writedata &H70
Ssd1963_writedata &HA2
'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);
'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) & 0xFF);
'SSD1963_WriteData(TFT_HSYNC_PULSE-1);
'SSD1963_WriteData(0x00);
'SSD1963_WriteData(0x00);
'SSD1963_WriteData(0x00);
'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);
'Set Pixel Data Interface
Ssd1963_writecommand Ssd1963_set_pixel_data_interface
Ssd1963_writedata Ssd1963_pdi_8bit
'set address mode
Ssd1963_writecommand Ssd1963_set_address_mode
Ssd1963_writedata &H45
'setting PWM for LED backlight
Ssd1963_writecommand Ssd1963_set_pwm_conf
Ssd1963_writedata &H0E
Ssd1963_writedata &HFF '/ / Set 0xff For Full And 0x00 For Off
Ssd1963_writedata &H01
Ssd1963_writedata &H00
Ssd1963_writedata &H00
Ssd1963_writedata &H00
'GPIO0,1,2,3 is output
Ssd1963_writecommand Ssd1963_set_gpio_conf
Ssd1963_writedata &H0F
Ssd1963_writedata &H01
'set GPIO0 , 1 , 2, 3 = 1
Ssd1963_writecommand Ssd1963_set_gpio_value
Ssd1963_writedata &H0F
'SET display on
Ssd1963_writecommand Ssd1963_set_display_on
'exit sleep mode
Ssd1963_writecommand Ssd1963_exit_sleep_mode
End Sub[/PHP]
من کریستال گزاشتم خازناش 5 پیکو هست و مقاومتش 120 هست مشکلی نداره؟
اولا باید کریستالو 10 مگ بزاری چون اگه دیتاشیت رو خونده باشی برای vco باید کلاک pll بین 250 تا 700 البته فکر میکنم باید باشه که این مقادیر با کریستال 10 مگ راحتتر بدست میاد برای خازنها هم میشه از 22 پیکو استفاده کرد جواب میده من خودم استفاده کردم و مشکلی نداره البته اگه اسلاتور میزاشتی خیلی بهتر بود چون این کریستالها خیلی پالس دقیقی ایجاد نمیکنن در مورد برنامتم من خیلی وقته با bascom کار نکردم خیلی یادم نیست ولی ترتیب برنامتو دیدم مشکلی نداره شما یه کار کن بیا سر خروجی هر پایه کنترلری میکروت یه ال ای دی بزار ببین تغییر وضعیت میده بعد برو سر برنامت و اینیت کردن ssd
سلام خسته نباشید هرکاری میکنم نمیشه یه هفتس دارم روش کار میکنم شما تو مد 8 بیتی راهش انداختین؟
این عکس مداره