ЭФО предлагает со своего склада новую серию преобразователей интерфейсов USB UART компании FTDI FT232RNL-REEL

Подключение LCD (HD44780) к микроконтроллеру PIC12F683 (трехпроводный интерфейс)

Rajendra Bhatt

Как известно ЖК дисплей на базе контроллера HD44780 требует для управления до 6 линий ввода/вывода микроконтроллера, поэтому подключить его к микроконтроллеру  с малым числом линий ввода/вывода, например PIC12F683, в стандартном 8/4-битном режиме невозможно. В этом проекте мы рассмотрим технику управления таковым ЖК дисплеем с использованием всего лишь трех линий ввода/вывода микроконтроллера. Команды управления и данные будут пересылаться последовательно в сдвиговый регистр 74HC595 (8-разрядный сдвиговый регистр с защелкой на выходе), а параллельные выходные данные с регистра поступают на LCD.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Схема: подключение LCD (HD44780) к PIC12F683

Микросхема 74HC595 содержит 8 битный регистр хранения и 8 битный сдвиговый регистр. Данные последовательно передаются в сдвиговый регистр, затем фиксируются в регистре хранения. К регистру хранения подключены 8 выходных линий. На картинке ниже показано расположение выводов микросхемы 74HC595.

74HC595

Сдвиговый регистр и регистр хранения имеют различные тактовые входы: SH_CP и ST_CP, соответственно. Когда на тактовом входе SH_CP появляется логическая единица, регистр считывает бит со входа данных DS и записывает его в самый младший разряд. При поступлении на тактовый вход следующего импульса, все повторяется, только бит записанный ранее сдвигается на один разряд, а его место занимает вновь пришедший бит. Когда все восемь бит заполнились и приходит девятый тактовый импульс, регистр снова начинает заполнятся с младшего разряда, и все повторятся вновь. Что бы данные появились на выходах Q0…Q7, нужно их «защелкнуть». Для этого необходимо подать логическую единицу на вход ST_CP. Что бы мы не делали с регистром, данные на выходах не изменятся пока мы вновь не «защелкнем» их.

В нашем случае тактовые входы SH_CP и ST_CP объединены, поэтому, если нам необходимо получить 8 бит, переданных последовательно, в параллельном формате на выходе Q0…Q7, после передачи 8 бита, необходим еще один тактовый импульс, т.к. регистр хранения запаздывает на 1 тактовый импульс от регистра сдвига.

Символьные ЖК дисплеи на базе контроллера HD44780 для управления, в общем случае, требует 14 линий ввода/вывода: 8 линий данных (D0…D7), 3 линии управления (RS, E, R/W), 3 линии питания (Vdd, Vss, Vee). Кроме того многие модели оснащены подсветкой.

HD44780

Аппаратная часть проекта очень простая.

Принципиальная схема: подключение регистра сдвига к LCD модулю

Подключение LCD HD44780 к PIC12F683
Кликните для увеличения

 К параллельным выходным линиям регистра сдвига подключен ЖК индикатор: выводы данных D4-D7 и вывод RS (4-битный режим работы). Такое решение потребует от микроконтроллера лишь трех линий ввода/вывода: 2 для передачи тактового сигнала и данных в регистр сдвига 74HC595 и 1 для управления индикатором (вывод E). Так как используется 4-битный режим работы, любые восемь бит (команда или данные) передаются в два этапа: сначала старший полубайт, затем передается младший полубайт.

Стоит отметить также, что вывод управления индикатора R/W (чтение/запись) подключается к общему проводнику, вследствие чего чтение данных или состояния ЖК модуля при таком подключении невозможно.

Принипиальная схема: подключение микроконтроллера к регистру сдвига и LCD модулю

Подключение LCD HD44780 к PIC12F683
Кликните для увеличения

Последовательные данные от микроконтроллера поступают на вывод DS (14). Вывод OE (13) подключен к общему проводнику, вывод MR (10) подключен к +5 В. Выводы параллельных данных Q0-Q3 регистра сдвига подключены к выводам данных LCD модуля D4-D7. Также вывод Q4 подключен к выводу RS управления LCD модуля. Если LCD модуль имеет встроенную подсветку, то управление ею можно осуществить по линии LED (см. схему), логическая 1 на этой линии включает подсветку.

Вид монтажной платы с установленным регистром сдвига и коннекторами для подключения LCD модуля и микроконтроллера

Программная часть для нашего проекта сложнее, чем аппаратная. Необходимо соблюдать последовательность операций для реализации алгоритма последовательной передачи данных и команд в регистр сдвига.

Первый бит данных, переданный на вывод DS регистра появится на выходе Q0 через 2 тактовых импульса (т.к. SH_CP и ST_CP объединены). Поэтому для передачи 4-х бит и сигнала RS потребуется шесть тактовых импульсов, прежде чем эти 4 бита появятся на выходных параллельных линиях регистра 74HC595.

Когда подается питание на LCD модуль, он настроен на работу в 8-битном режиме. Для инициализации его в 4-битный режим требуется несколько команд.

Автор составил для LCD модуля 16×2 подпрограммы работы по такой схеме подключения в компиляторе mikroC, однако пользователи могут самостоятельно изменить параметры инициализации в соответствующей функции для различных дисплеев.

Описание подпрограмм

  • Initialize_LCD(): инициализация дисплея для работы в 4-битном режиме, 2-строчный дисплей, размер символов 5×7, дисплей включен, курсор не отображается;
  • Write_LCD_Data(): посылка байта данных в дисплей, в текущую позицию курсора;
  • Write_LCD_Cmd(): посылка байта команды в дисплей;
  • Write_LCD_Nibble(): данные или команда посылается в дисплей как два полубайта. Эта функция отвечает именно за посылку полубайта в дисплей;
  • Write_LCD_Text(): отправка символьной строки в дисплей в текущую позицию курсора;
  • Position_LCD(): смена позиции курсора.

Конфигурация микроконтроллера: работа от внутреннего RC осциллятора 4 МГц, MCLR отключен, WDT (сторожевой таймер) отключен. Необходимо также в программе определить сигнальные линии (Data_Pin, Clk_Pin, Enable_Pin), которые вы будете использовать для своего микроконтроллера.

Исходный код — скачать

electronics-lab.com

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: 3-Wire Serial LCD using a Shift Register

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя