STM32F4. Урок 34 - Підключення символьного LCD-дисплея 16х2 (HD44780)

Ця бібліотека використовується для управління символічним ЖК-дисплеєм розміром 16х2 символів. Програмний код сумісний з чіпами: ST7066U, HD44780, SED1278, KS0066U та S6A0069X.

Дисплей працює в 4-бітному режимі. Для передачі даних використовуються 6 GPIO-виводів. У C-файлі, за бажанням, можуть бути встановлені будь-які вільні виводи (автор використовував PE5-PE10).

Приклад роботи:

Використовувані піни:

PE5  -> LCD_RS
PE6  -> LCD_E
PE7  -> LCD_DB4
PE8  -> LCD_DB5
PE9  -> LCD_DB6
PE10 -> LCD_DB7

Необхідні бібліотеки:

Підключувані модулі CooCox-IDE: GPIO
Підтримувані бібліотеки: відсутні

Перерахування:

typedef enum {
  TLCD_OFF =0,    // Дисплей=off, Курсор=off, Миготіння=off
  TLCD_ON,        // Дисплей=on,  Курсор=off, Миготіння=off
  TLCD_Cursor,    // Дисплей=on,  Курсор=on,  Миготіння=off
  TLCD_BLINK      // Дисплей=on,  Курсор=on,  Миготіння=on
}TLCD_MODE_t;

Функції:

void UB_LCD_2x16_Init(void);                              // ініціалізація дисплея
void UB_LCD_2x16_Clear(void);                             // очищення дисплея
void UB_LCD_2x16_SetMode(TLCD_MODE_t mode);               // встановлення режиму роботи дисплея
void UB_LCD_2x16_String(uint8_t x, uint8_t y, char *ptr); // вивід рядка на дисплей з координатами x,y

Приклад використання:

//--------------------------------------------------------------
// Файл     : main.c
// Дата     : 17.04.2013
// Версія   : 1.0
// Автор     : UB
// EMail    : mc-4u(@)t-online.de
// Веб      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Модуль   : CMSIS_BOOT, M4_CMSIS_CORE
// Функція  : Демонстрація бібліотеки LCD-2x16
// Примітка  : Ці два файли повинні бути на 8MHz
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_lcd_2x16.h"

int main(void)
{
  SystemInit(); // Ініціалізація налаштувань кварца

  // Ініціалізація ЖК-дисплея
  UB_LCD_2x16_Init();

  // Друк тексту в першому рядку
  UB_LCD_2x16_String(0,0,"LCD 2x16 STM32F4");

  // Друк тексту в першому рядку
  UB_LCD_2x16_String(3,1,"Discovery");

  while(1)
  {

  }
}

У додатку проект CooCox і окрема бібліотека для використання в інших проектах. Автор оригінальної статті просить задавати питання на його сайті німецькою або англійською мовами.

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

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

Top