Если для вас так сложен паскаль, разжую на русском языке

итак заранее объявим две константы CMD=0 и DAT=1, можно и не объявлять, а сразу давать 1 или 0, но мне так удобнее и читабильнее код
таперь сама процедура
WRITE (w:boolean,datt:byte) - это процедура которой требуется передать 2 значения: значение w -либо 0 либо 1 (ранее объявили как CMD и DAT)
и 8 битное значение (от 0 до 255)
теперь рассмотрим из чего состоит данная процедура.
опять таки ранее мы объявили названия и присвоили их к пинам процессора это:
LCD_CS - ни что иное как "выборка чипа" CHIP SELECT. в нашем случае когда на этом пине 1, то экран заперт и ничего не принимает из вне.
когда на этом пине появится 0 - Экран будет принимать в свой контроллер команды или данные (что именно будет принимать - для этого другой пин)
LCD_RS - это пин отвечает за то как будет регировать контроллер дисплея на число - если =1 то декодирует как ДАННЫЕ , а если =0 то как команду.
LCD_CLK, LCD_DATA - т.к. наш интерфейс последовательный и в экран сразу байт не загонишь то каждый байт мы раскладываем на биты и побитно заталкиваем их в экран (LCD_DATA), а чтобы контроллер дисплея их правильно собирал в кучки байтовые, пин LCD_CLK ведет синхронизацию битов т.е. отдали бит подтвердили сигланом LCD_CLK и т.д.
поподробней только остановлюсь на строке datt:=datt shl 1;
это ничто иное как побитный сдвиг влево. этой штучкой удобно в дисплей биты засылать

в любом языке есть такая команда, только синтаксис свой