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

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

 //-------------------------------------------------------------- // File     : main.c // Datum    : 17.04.2013 // Version  : 1.0 // 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-2x16-Library // Hinweis  : Diese zwei Files muessen auf 8MHz stehen //              "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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.