AFON//Радиотехник
AHDL · проект 34/50

Драйвер инициализации LCD HD44780

Автомат выдачи команд инициализации

Задача

Выдать на дисплей HD44780 последовательность команд инициализации в 8-битном режиме.

Тип схемы и среда

Синхронный конечный автомат: шесть состояний, TABLE отображает состояние в код команды.

Алгоритм работы

Автомат по стробам tick проходит команды: function set, display on, clear, entry mode. TABLE ставит на шину data нужный код, e стробирует запись, done поднимается в конце.

Код на AHDL

ahdl_34_lcd_drayver.tdf↓ скачать .tdf
% Проект 34: драйвер инициализации LCD HD44780 (автомат) %
SUBDESIGN ahdl_34_lcd_drayver
(
    clk, reset : INPUT;
    tick       : INPUT;   % медленный такт %
    rs         : OUTPUT;
    e          : OUTPUT;
    data[7..0] : OUTPUT;
    done       : OUTPUT;
)
VARIABLE
    sm : MACHINE OF BITS (s2, s1, s0)
         WITH STATES (INIT, FUNC, DISP, CLR, MODE, RDY);
    er : DFF;
BEGIN
    sm.clk   = clk;
    sm.reset = reset;
    er.clk   = clk;
    er.clrn  = !reset;
    er.d     = tick;

    CASE sm IS
        WHEN INIT => IF tick THEN sm = FUNC; END IF;
        WHEN FUNC => IF tick THEN sm = DISP; END IF;
        WHEN DISP => IF tick THEN sm = CLR;  END IF;
        WHEN CLR  => IF tick THEN sm = MODE; END IF;
        WHEN MODE => IF tick THEN sm = RDY;  END IF;
        WHEN RDY  => sm = RDY;
    END CASE;

    rs = GND;
    e  = tick;

    TABLE
        sm   => data[];
        INIT => H"30";
        FUNC => H"38";
        DISP => H"0C";
        CLR  => H"01";
        MODE => H"06";
        RDY  => H"00";
    END TABLE;

    done = (sm == RDY);
END;

Пояснения

HD44780 требует выдержек между командами — их задаёт медленный tick. Полный драйвер добавляет вывод символов и адресацию DDRAM.

Инструменты и справочники по теме

📦 help-user.ru — скупка и ремонт компьютерной техники. Продать ноутбук, ПК, комплектующие — help-user.ru.

Что дальше

Скачайте ahdl_34_lcd_drayver.tdf, создайте проект в MAX+PLUS II или Quartus, назначьте выводы под свою плату и скомпилируйте. Остальные 49 разработок — в разделе проектов на AHDL.