Ваш пробный код сложночитаем, имхо нет смысла разбираться с ним, намного проще рассказать Вам, как должно быть

Первая попавшаяся мне в гуглокартинках фоточка интерфейсного разъёма:
https://4.bp.blogspot.com/-P3auvkuEEO4/ ... necotr.jpg
Делать ннада так:
1) ставим на R1R2G1G2B1B2 интересующий нас цвет. Для начала, к примеру,
0xFFFFFF upd: сорри, размечтался чот

111111, конечно же

2) подаём стробирующий импульс на CLK. Таким образом мы фиксируем цвет первой точки в строке (полустроке, четвертьстроке, и т.д. - в зависимости от организации матрицы)
3) повторяем пп 1, 2 необходимое количество раз (опять же, зависит от организации матрицы)
4) ставим на выводах ABCDE разъёма адрес (порядковый номер) строки. Тут опять же могут быть варианты, зависящие от организации матрицы.
5) подаём стробирующий импульс на LAT
6) ...
7) профит!
По поводу "буферных мосфетов" и согласования уровней - у Вас повторяющаяся картина, хоть и не та, которой Вы ждёте, очевидно

Следовательно, с большой вероятностью, ошибка в логике. Я бы для Вашей матрицы сделал примерно так: записывал бы 128 пикселей в строку (это 2 строки физически на Вашей матрице получатся), затем подавал бы адреса по порядку 0, 1, 2 и т.д. до 16. И смотрел бы, что выходит. если заливка хоть в каком-то виде начнёт получаться - пол-экрана по вертикали зальётся, или с каким-нибудь чередованием белые/чёрные полосы - выставлял бы разные цвета для различных строк, так выяснил бы порядок расположения строк на дисплее. Ну, и т.д., метод тыка - самый могучий метод в мире

А, про пункт 0 чуть не забыл - подать питание, прижать OE к земле...
