Некоторое время назад я написал макросы для реализации виртуальных портов. С помощью этих макросов можно переделать практически любую библиотеку для работы с произвольными выводами микроконтроллера. Первая библиотека, которая попала под это изменение, стала библиотека для символьного LCD. В этом посте я расскажу, как ее применить в своем проекте. 

   Подправил библиотеку для LCD, теперь она поддерживает контроллеры ks0066 и hd44780. Фишка в чем. Библиотека для hd44780 может работать и с ks0066, а вот библиотека для ks0066 с контроллером hitachi уже не работает.  У этих контроллеров есть некоторое отличие в инициализации при использовании 4-ех разрядной шины. Вообщем я добавил несколько строк кода и заключил их в директивы условной компиляции, чтобы можно было выбирать тип контроллера. Код для hitachi чуть "потолще", а если будет использоваться контроллер ks0066 зачем нам лишние 40 байт кода. 

   Микроконтроллер может “общаться” с lcd  по 8-ми или 4-ех разрядной шине данных. Первый вариант более простой, поэтому мы с него и начали, второй посложнее, но позволяет сэкономить 4 вывода микроконтроллера.  
   Давайте разберемся чем отличается это подключение, и добавим в нашу библиотеку поддержку 4-ех разрядной шины.
   Для выполнения команд или вывода данных контроллеру символьного lcd требуется определенное время. Поэтому в конце функций записи мы использовали программные задержки в 40 us. Это вполне работоспособное решение, однако не единственно возможное.   
   Контроллер символьного lcd имеет флаг занятости BF. Он устанавливается в 1,  когда контроллер выполняет внутреннюю работу и сбрасывается, когда контроллер освобождается. Вместо программной задержки можно опрашивать состояние этого флага и запускать цикл записи команд/данных, только когда флаг сброшен.
   Следующим этапом работы над нашей программой будет разбиение ее на модули. Мы разделим программу на 2 части – основная программа и библиотека для работы с дисплеем. Зачем нужно разбивать программу на модули, и какие это дает преимущества?
   
   Это был мой первый мобильник. Как и все последующие он достался мне от сестры, которая регулярно их меняла и меняет. Помню особые надежды я возлагал на ее Nokia 7610, но за день до покупки нового телефона, она уронила его в туалет. Девайс испустил дух, не приходя в себя. Разбор, перебор и сушка феном ничего не дали. Вот ведь облом. Ну да ладно..
   Вообщем валялась у меня эта Motorola, валялась, пока в один прекрасный день мне не захотелось подключить ее экранчик к микроконтроллеру. Сказано, сделано. Посерфил сеть, нашел распиновку разъема, datasheet на контроллер экранчика и начал шаманить.