STM32F4. Урок 6 — работа с дисплеем ST7783

Эта библиотека предназначена для управления графическим дисплеем с контроллером ST7783 (240х320 пикселей и 16-бит). Дисплей управляется внешней шиной контроллера FSMC, и следовательно должен быть подключен к CPU (смотрите назначение выводов в библиотеке). Библиотека выполняет основные функции, такие как иициализация, ориентаци я экрана, подсветка, установка курсора и очистка экрана. Для графических функций (круги, изображения и тд) существуют отдельные библиотеки. Для вывода текста есть библиотеки шрифтов. Скорость: очистка экрана занимает около 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); // Установить размер окна для рисования

Пример использования:

 //-------------------------------------------------------------- // File     : main.c // Datum    : 18.02.2013 // Version  : 1.1 // Autor    : UB // EMail    : mc-4u(@)t-online.de // Web      : www.mikrocontroller-4u.de // CPU      : STM32F4 // IDE      : CooCox CoIDE 1.7.0 // Module   : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo der LCD-Library (ST7783) // Hinweis  : Diese zwei Files muessen auf 8MHz stehen //              "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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.