Библиотека для работы с HD44780

В прошлой статье мы рассмотрели теоретические основы управления LCD дисплеем на базе контроллера HD44780. Но разумеется теория без практики ничего не значит, а поэтому я предлагаю побаловаться с этим дисплеем вживую. Дисплей стоит не дорого, что-то в районе 6$, лично я экспериментировал с дисплеем под названием ACM1602K-FL-YTH-02. Редкостный отстой скажу я вам, не покупайте такой. Некоторые символы в левой половине экрана плохо видны, хотя первое время дисплей работал без проблем. Кстати точно такой-же дисплей пришлось вернуть обратно в магазин, у него полностью не работала левая его часть. Лучше купить на бакс подороже и не иметь проблем в будующем, мне например понравились наши отечественные МЭЛТовские дисплеи они кстати лишены некоторых проблем с русскими символами (об этом подробнее позже). Для того чтоб использовать ваш дисплей совместно с моей программой не производя ни каких изменений в коде, вы должны подключить его к контроллеру STM32 следующим образом: 
 
hd44780 and stm32
 

Подключаем HD44780 дисплей к STM32

Зачастую контроллеру приходится сообщать пользователю какие-либо данные, и далеко не всегда можно обойтись одними лишь цифрами. Для отображения текстовой информации как правило применяют LCD индикаторы на базе контроллера HD44780. Не смотря на то, что подобный дисплеев очень много все они управляются одинаково так как контроллер в них стоит один и соответственно система команд у них одна, так же они имеют одинаковый набор ног. В этой статье мы попробуем подключить такой дисплей к контроллеру установленному на STM32vl Discovery. Сам дисплей выглядит следующим образом:
 
hd44780
 

Простой счётчик на STM32

Теперь когда мы более-менее разобрались как рулить портами микроконтроллера можно попробовать сделать что-то практическое и даже немного полезное, дабы закрепить знания. Делать мы сегодня будем простейший счётчик, а считать он будет количество нажатий кнопки. Ну а кнопку в свою очередь можно прицепить куда угодно, например к двери, чтоб считать количество открываний :) Это первое что пришло мне в голову, вероятно что вы придумаете ему куда более лучшее применение. В качестве устройства индикации мы будем использовать 4-х разрядный семисегментный индикатор. Он представляет собой вот такую железяку:

7seg-indicator