Наш магазин на eBay Наш магазин на AliExpress Наш канал в telegram

Программа микроконтроллера для управления ЖК-панелью на PCF2112P

Ниже приведён пример программы для управления самодельной ЖК-панелью на драйвере PCF2112P.

Собственно говоря, всё управление нашей ЖК-панелью заключается в загрузке в микросхему драйвера нужных данных, чем и занимается микроконтроллер (PIC16F628A). Алгоритм передачи данных такой: после того, как на линии DLEN установится высокий уровень, микросхема по каждому заднему фронту тактового импульса начинает считывать состояние линии DATA (низкий уровень соответствует «нулю», высокий — «единице»). Пакет состоит из 34 бит. Нулевой бит — тестовый и он всегда должен быть равен нулю, за ним следуют 32 бита данных, соответствующие программируемым состояниям линий сегментов («0» — сегмент выключен, «1» — включен), 33-й бит является служебным и должен быть установлен в «1». После передачи пакета необходимо сбросить линию DLEN в ноль. После того, как линия DLEN сброшена в ноль — первый же тактовый импульс приведёт к загрузке принятых данных. Далее можно передавать новые данные. Тайминги можно посмотреть в доке на PCF2112P.

Сам пакет данных в нашем примере формируется на компьютере специальной тестовой программой (ниже она тоже представлена) в зависимости от того, что мы хотим увидеть на экране. Далее с компьютера на микроконтроллер передаются 4 байта пакета (как раз 32 бита) по интерфейсу RS-232. Передать их можно любой терминалкой с hex-режимом (хотя бы нашей RH_Com). Физически для передачи данных с ПК в драйвер можно использовать плату от генератора прямоугольных импульсов, просто контроллер в этом случае надо будет прошить описанной ниже программой.

Итак, пусть к выводу RB4 микроконтроллера подключена линия DLEN, к выводу RB5 — линия CLB и к выводу RB6 — линия DATA. Для связи с ПК используется модуль UART (выводы RB1, RB2). Биты в передаваемом с ПК пакете данных удобно сразу расположить в том порядке, в котором они будут загружаться в драйвер (этим собственно и занимается наша тестовая программа на ПК), т.е. нулевой бит первого байта (1:0) пакета будет соответствовать состоянию линии S1 драйвера, первый бит первого байта (1:1) — состоянию линии S2, второй бит первого байта (1:2) — состоянию
линии S3 и так далее (смотрите рисунок).

соответствие ног драйвера PCF2112P загружаемым битам

Алгоритм программы микроконтроллера и тайминги протокола:

Алгоритм программы управления драйвером PCF2112
Тайминги протокола обмена данными контроллера с PCF2112

tSUDA — Data setup time — минимальное время от момента установки новых данных до спада на линии CLB — 3 мкс.

tHDDA — Data hold time — минимальное время, в течении которого не должна изменяться линия DATA после спада на линии CLB (для нормального считывания данных) — 3 мкс.

tSUEN — Enable setup time — максимальное время, необходимое драйверу для подготовки к приёму (т.е. минимум такую паузу нужно выдержать между включением DLEN и передним фронтом первого тактового импульса) — 1 мкс.

tSUDI — disable setup time — максимальное время, необходимое чтобы завершить приём данных (т.е. минимум такую паузу нужно выдержать между спадом последнего тактового импульса и выключением линии DLEN) — 2 мкс.

tSULD — loaad pulse setup time — минимальное время между выключением линии DLEN и загрузочным тактовым импульсом — 2,5 мкс.

tBUSY — busy time — минимальное время между загрузочным тактовым импульсом и началом передачи нового пакета — 3 мкс.

tWH — 1 мкс, tWL — 5 мкс, tCLB — 10мкс — минимальные параметры тактового импульса.

Скачать текст программы (*.asm) и прошивку (*.hex) для контроллера.

Скачать тестовую программу для ПК и её исходники на C++ Builder 6.

Добавить комментарий