STM32F4. Урок 6 - робота з дисплеєм ST7783
Ця бібліотека призначена для управління графічним дисплеєм з контролером ST7783 (240х320 пікселів і 16-біт). Дисплей управляється зовнішньою шиною контролера FSMC, і, отже, повинен бути підключений до ЦП (дивіться призначення виводів у бібліотеці). Бібліотека виконує основні функції, такі як ініціалізація, орієнтація екрану, підсвітка, установка курсора та очищення екрану. Для графічних функцій (кола, зображення тощо) існують окремі бібліотеки. Для виводу тексту є бібліотеки шрифтів. Швидкість: очищення екрану займає близько 9мс.
Підсвітка:
Сигнал управління підсвіткою "LCD_Backlight" не може (і не повинен) бути підключений безпосередньо до світлодіодної підсвітки. Там повинен бути встановлений PNP-транзистор для комутації (дивіться малюнок). [PB0 = LED_EN]
16-бітний 8080-паралельний режим:
IM0 = Lo IM1 = Hi IM2 = Lo IM3 = Lo
Приклад зображення (використовується графічна бібліотека):
Використовувані виводи:
PB0 -> LCD_Backlight PE3 -> LCD_RS PD0 -> LCD_D2 PE7 -> LCD_D4 PD1 -> LCD_D3 PE8 -> LCD_D5 PD4 -> LCD_RD PE9 -> LCD_D6 PD5 -> LCD_WR PE10 -> LCD_D7 PD7 -> LCD_CS PE11 -> LCD_D8 PD8 -> LCD_D13 PE12 -> LCD_D9 PD9 -> LCD_D14 PE13 -> LCD_D10 PD10 -> LCD_D15 PE14 -> LCD_D11 PD14 -> LCD_D0 PE15 -> LCD_D12 PD15 -> LCD_D1
Вимоги:
Підключувані модулі CooCox-IDE : GPIO, FSMC.
Підтримувані бібліотеки: відсутні.
Стандартні кольори:
#define RGB_COL_BLACK 0x0000 #define RGB_COL_BLUE 0x001F #define RGB_COL_GREEN 0x07E0 #define RGB_COL_RED 0xF800 #define RGB_COL_WHITE 0xFFFF #define RGB_COL_CYAN 0x07FF #define RGB_COL_MAGENTA 0xF81F #define RGB_COL_YELLOW 0xFFE0 #define RGB_COL_GREY 0xF7DE
Функції:
ErrorStatus UB_LCD_Init(void); // Ініціалізація LCD void UB_LCD_SetCursor2Draw(uint16_t xpos, uint16_t ypos); // Встановити курсор у вказану позицію void UB_LCD_FillScreen(uint16_t color); // Заповнити екран вказаним кольором void UB_LCD_Backlight_On(void); // Увімкнути підсвітку void UB_LCD_Backlight_Off(void); // Вимкнути підсвітку void UB_LCD_SetMode(LCD_MODE_t mode); // Режим: Портретний, альбомний void UB_LCD_SetWindow(uint16_t xstart, uint16_t ystart, uint16_t xend, uint16_t yend); // Встановити розмір вікна для малювання
Приклад використання:
//-------------------------------------------------------------- // Файл : main.c // Дата : 18.02.2013 // Версія : 1.1 // Автор : UB // EMail : mc-4u(@)t-online.de // Веб : www.mikrocontroller-4u.de // ЦП : STM32F4 // IDE : CooCox CoIDE 1.7.0 // Модуль : CMSIS_BOOT, M4_CMSIS_CORE // Функція : Демонстрація LCD-бібліотеки (ST7783) // Примітка : Ці два файли повинні бути на 8MHz // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_lcd_st7783.h" int main(void) { uint32_t n; SystemInit(); // Ініціалізація налаштувань кварца UB_LCD_Init(); // Ініціалізація LCD // Видалити кольори з дисплея UB_LCD_FillScreen(RGB_COL_BLUE); // Переміщення курсора UB_LCD_SetCursor2Draw(10,50); // Намалювати червону лінію for(n=0;n<100;n++) { LCD_RAM=RGB_COL_RED; } while(1) { } }
В додатку проект CooCox і окрема бібліотека для використання в інших проектах. Автор оригіналу статті просить ставити питання на його сайті німецькою або англійською мовами.
Прикреплені файли:
- ub_stm32f4_lcd_st7783_v106_RUS.rar (6 Кб)
- Demo_06_LCD1_RUS.rar (169 Кб)