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 і окрема бібліотека для використання в інших проектах. Автор оригіналу статті просить ставити питання на його сайті німецькою або англійською мовами.

Оригінал статті

Прикреплені файли:

Top