Четверг, 02.05.2024, 14:36

Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Чат
 Запуск LCD H44780 на STM32
В данной статье хочу поделиться опытом в сопряжении контроллера STM32F103RBT6 и простенького LCD дисплея на основе контроллера H44780.
 
Подключать его не сложно, вот простенькая схема.
Здесь мы рассматриваем четырех проводную систему подключения, это нам позволит сэкономить порты микроконтроллера 
Как подключить питание можно посмотреть в Datasheet здесь
Протокол обмена и принципы работы можно посмотреть здесь и здесь.
Теперь когда мы все подключили, начнем это дела запускать.
Для начала нам понадобиться библиотека для работы с дисплеем, 
так же не забываем про Delay
В Header файле нам надо всего лишь указать к каким портам подключен порт служебных линий и порт данных

/*************************************************
 * Здесь ручками установим порты подключения LCD *
 *************************************************/
#define PORT_RS_RW_EE                         GPIOC                                      //Порт подключения служебных линий
#define PORT_DATA                                 GPIOC                                      //Порт подключения шины данных 4bit
 
#define INT_PORT_RS_RW_EE                   RCC_APB2Periph_GPIOC           //Порт подключения служебных линий, шины тактирования
#define INT_PORT_DATA                           RCC_APB2Periph_GPIOC           //Порт подключения шины данных 4bit, шины тактирования
#define RS                                               GPIO_Pin_0                              //Служебная шина RS
#define RW                                              GPIO_Pin_1                              //Служебная шина RW
#define EE                                               GPIO_Pin_2                              //Служебная шина E
#define D4                                               GPIO_Pin_3                             //Шина данных D4
#define D5                                               GPIO_Pin_4                             //Шина данных D5
#define D6                                               GPIO_Pin_5                             //Шина данных D6
#define D7                                               GPIO_Pin_6                             //Шина данных D7
/*********************************************************************************************************/

Теперь простенький код для LCD

LCD_INIT(); //Инициализация LCD
LCD_PUT("Hello World");         //Вывод на дисплей Hello World

Да, не забываем инициализировать дисплей
Вот собственно, что получилось. 

Если вы посмотрите header файл там можно будет найти следующие функции
/*******************************Функции для работы с дисплеем*********************************************/
void PORT_INIT(void);                                       //Инициализация Портов работы с LCD
void LCD_INIT(void);                                         //Инициализирует LCD: 2строки по 16 символов, 4bit шина данных,
void LCD_CLEAR(void);                                      //Очистка экрана
void LCD_GOTO(uint8_t x, uint8_t y);                   //Перевод курсора в нужное положение
void LCD_PUT(char *STR);                                 //Вывод на экран Символов
void LCD_COMMAND(uint8_t byte);                      //Отправка каманд по 4бита
void WRIGHT_HALF_BYTE(uint8_t byte);               //Запись полубайта
void LCD_SEND_DATA(uint8_t data);                  //отправка данных в LCD (код ASCII)
/********************************************************************************************************/
Вот и все что хотел сказать по этой теме, если есть вопросы, пишите.

2024
Поиск
Перевод
Статистика
Счетчики
Онлайн лист
Онлайн всего: 1
Гостей: 1
Пользователей: 0