Страница 1 из 1
Использование графического LCD WG12864A.
Добавлено: Сб июн 09, 2007 23:27:22
Alexc
Сделал по аналогии с
данной статьёй, т.е. процедуры записы, команд принципиально не отличаются, МК - ATMega8515. Проблема заключается в том, что если после установки X и У начать загружать данные в ОЗУ дисплея, то в итоге ничего не выводитсья, если послать только одну команду записи, после опять установить Х и У, снова команда на запись, снова ставить Х и У и т. д., то всё выводиться, но это по крайней мере не удобно. Тем более в
даташите написано что после записи байта данных автоматически адрес столбца увеличивается на один, чего и не происходит. Что я делаю не правильно

? Вот код функций на всякий случай:
Код: Выделить всё
#define E 0b00000001
#define RD_W 0b00000010
#define A0 0b00000100
#define RST 0b00001000
#define C PORTB.4
#define C_L 1
#define C_R 0
#define DATA PORTA //Шина данных
#define COM PORTB //порт управляющих выводов
void writecom (char com,char CS)
{
SBit(COM,E);
CBit(COM,RD_W);
PORTB.4=CS;
CBit(COM,A0);
#asm("nop");
#asm("nop");
DATA = com;
CBit(COM,E);
#asm("nop");
#asm("nop");
SBit(COM,E);;
}
void WriteData(char data, char CS)
{
SBit(COM,E);
CBit(COM,RD_W);
PORTB.4=CS;
SBit(COM,A0);
#asm("nop");
#asm("nop");
DATA=data;
CBit(COM,E);
#asm("nop");
#asm("nop");
SBit(COM,E);
CBit(COM,E);
}
void WriteXY(char x,char y,char CS)
{C=CS;
writecom((0b00000000+x),CS);
writecom((0b10111000+y),CS);
}
Вот так всё работать будет
Код: Выделить всё
init_LCD();
clear();
WriteXY(0,0,C_R);
WriteData(0b10101010,C_R);
WriteXY(1,0,C_R);
WriteData(0b01010101,C_R);
WriteXY(2,0,C_R);
WriteData(0b10101010,C_R);
а так, как положено, не хочет ни в какую:
Код: Выделить всё
init_LCD();
clear();
WriteXY(0,0,C_R);
WriteData(0b10101010,C_R);
WriteData(0b01010101,C_R);
WriteData(0b10101010,C_R);
Добавлено: Чт июн 14, 2007 16:29:07
Alexc
После долгих эксперементов выяснилось что всё начинает работать как положено ещё дописать в функцию записи данных строчку очитски бита А0. Вот так теперь работает
Код: Выделить всё
void WriteData(char data, char CS)
{
SBit(COM,E);
CBit(COM,RD_W);
PORTB.4=CS;
SBit(COM,A0);
#asm("nop");
#asm("nop");
DATA=data;
CBit(COM,E);
#asm("nop");
#asm("nop");
SBit(COM,E);
CBit(COM,A0);
}
Использование графического LCD WG12864A.
Добавлено: Чт авг 11, 2011 19:36:15
JurisG
Добрый день!
Поэкспериментировал с дисплеем на основе KS0108. Все получилось. Но я так и не понял для чего параметр Z (начальная область отображения). Что измениться, если, например, вместо Z=0 установить Z=2.
Re: Использование графического LCD WG12864A.
Добавлено: Пт сен 09, 2011 16:02:39
AleksanderG
На сайте MCS Electronics есть интересный для меня проект AN #148 - LCD display with touchscreen and AVR. Подскажите пожалуста кто знает тип дисплея с функцией тачскрин-а на базе контроллера KS0108.
Re: Использование графического LCD WG12864A.
Добавлено: Ср дек 28, 2011 16:51:13
Gef79
Подскажите пожайлуста, как самому шрифт написать, так как нужно внести некоторые значьки?
Как это дело вычисляется?
Re: Использование графического LCD WG12864A.
Добавлено: Вт янв 31, 2012 17:36:46
Takker
Здравствуйте, подскажите пожалуйста, где взять библиотеку macros.h и другие?
Re: Использование графического LCD WG12864A.
Добавлено: Вс мар 18, 2012 06:55:41
sashashemelev1
С выводом строк и графикой потихоньку стал понимать. А как сделать меню на GLCD? Не пинайте - я только только начинаю программировать. Желательно проект в протеусе...
Re: Использование графического LCD WG12864A.
Добавлено: Вс май 13, 2012 21:04:36
TimeHunt
Всем привет!
У меня ЖК WG240128B-TFH TZ# - с контроллером T6963C, в протеусе для отладки какую модель выбирать???
я нашёл LM3229 это 240*128 Graphical lcd - если работать с ним это 1к1 будет по отношению к моему ???

Re: Использование графического LCD WG12864A.
Добавлено: Ср янв 23, 2013 18:16:46
rocky7
В конце статьи:
http://www.radiokot.ru/lab/controller/15/есть ссылки на исходники. Исходники не работают. В ICCV7 for AVR компилятор сходу выдаёт ошибку что не обнаружен "delay.h".
Люди добрые! Такая статья с виду классная, а повторить вывод строки в PROTEUS я так и не смог. Вышлите пожалуйста у кого есть рабочий проект.
Re: Использование графического LCD WG12864A.
Добавлено: Вс апр 07, 2013 16:09:33
kentik
сделал все как в статье.
запустил в proteus 7,1 - все работает.
Запустил в живую - не пашет. показывает засвеченный экран и все. потенциометр кручу верчу - появляется матрица пикселей/убывает матрица пикселей. картинка не выводится. в чем может быть проблема? подключение верно. камень работает без кварца на своей частоте 1 МГц. Atmega64.
экран не спалил 100%. у меня их два

p.s. не хочу плодить одинаковые посты, по-этому, тем кто разобрался - плиииииз посмотрите в теме у меня:
http://radiokot.ru/forum/viewtopic.php?f=20&t=87864
Re: Использование графического LCD WG12864A.
Добавлено: Сб май 04, 2013 19:29:26
cas2010
Люди я приобрел дисплей 12864B V2.0
Так вот. Там немножко другая распиновка, не вижу CS1 и CS2
Там есть другие выходы как PSB, VOUT
я могу подключить таким же образом как WG12864A
пожалуйста объясните распиновку? на фото ниже...
Re: Использование графического LCD WG12864A.
Добавлено: Пт ноя 15, 2013 20:43:18
Nikitka
Чем можно заменить команду NOP в компиляторе Atmel Studio 6,1??? не нравится она ему
Re: Использование графического LCD WG12864A.
Добавлено: Чт окт 16, 2014 19:09:06
loki_amorf
Nikitka писал(а):Чем можно заменить команду NOP в компиляторе Atmel Studio 6,1??? не нравится она ему
asm ("nop");
Re: Использование графического LCD WG12864A.
Добавлено: Пт ноя 07, 2014 07:23:36
volkovnp
Оговорюсь сразу, я новичок в области программирования МК, ну уж очень хочется разобраться и попробовать написать что то свое, у меня вопрос к автору статьи, не могли бы вы пояснить что означает эта запись:
Код: Выделить всё
#define SetBit(x,y) (x|=y)
#define ClrBit(x,y) (x&=~y)
#define TestBit(x,y) (x&y)
Я так понял это встроенные функции CVAVR, которые позволяют, устанавливать, очищать, и читать бит. То есть директива мне ясна, но не понятно что выполняют параметры указанные в скобочках после директивы:
Помогите пожалуйста разобраться, не пинайте сильно, новичок я, совсем зеленый...
Re: Использование графического LCD WG12864A.
Добавлено: Вт дек 30, 2014 10:12:33
Nikitka
помогите разобраться с данным дисплеем. Подробнее написал тут.
viewtopic.php?f=61&t=111518&p=2223895#p2223895
Re: Использование графического LCD WG12864A.
Добавлено: Ср мар 21, 2018 09:56:56
bezzabotna
Здравствуйте! Вот мучаю дисплей MT-12864J. В даташите написано:
Для начальной установки модуля необходимо подать сигнал RES равный логическому «0» длительностью не
менее 1 мкс. При этом модуль выполняет команды установки Display Start Line в 0, DisplayOff. После
деактивации сигнала RES (переключения в логическую «1» с временем фронта не более 200 нс) необходимо
дождаться сброса битов BUSY и RESET в регистре состояния обоих кристаллов или выдержать паузу не менее
10 мкс. После этого модуль нормально функционирует
Я правильно понимаю, мне нужно подать на RES лог.0, подождать 1 мкс, подать на RES лог. 1, подождать 10 мкс.
Код: Выделить всё
void LSD_Ini(void)
{
RES_OFF; //nachalnaya ustanovka
delay_us(10);
RES_ON;
delay_us(5000);
while(GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_7)||GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_4)); //Цикл выполняется пока BUSY и RESET не станут нулями.
// delay_us(100);
// delay_us(1);
SetXY(0,0,(CS1+CS2));//ustanovka nachala koordinat dlya cristalov
WriteCom(0xc0,(CS1+CS2));//Display Start Line
WriteCom(0x3f,(CS1+CS2));//Display ON
}
Условия выполняются, но на RES так и остается лог. 1. Дисплей не работает. Он должен сам сброситься или должен быть лог.1? Или его надо сбрасывать принудительно?
Re: Использование графического LCD WG12864A.
Добавлено: Чт мар 22, 2018 10:09:48
bezzabotna
Все заработало. RES должна быть единицей, а не работало потому что на одной ножке напряжение просело. +Дисплей все-таки работает только от 5В, хотя в даташите написано, что от 3 В тоже должен.
Добавлено after 1 minute 18 seconds:
Все заработало! RES должна быть единицей, а не работало потому что на одной ножке напряжение просело. +Дисплей все-таки работает только от 5В, хотя в даташите написано, что от 3 В тоже должен.
Re: Использование графического LCD WG12864A.
Добавлено: Пт янв 11, 2019 21:57:57
gc986
Здравия! Переделываю проект на AtMega16 и попутно переназначаю на PORTA и PORTC. Проверяю в Proteus, не работает

Код пишу в AvrStudio.
Это мой первый проект где использую графический дисплей поэтому скорее всего ошибка очень глупая

Прошу помощи корифеев

Re: Использование графического LCD WG12864A.
Добавлено: Сб янв 12, 2019 23:36:22
gc986
Решил задачку. Как оказалось банальная не внимательность, при инициализации дисплея нужно выставить бит RST в 1 и не снимать в дальнейшем. В этом случае всё прекрасно функционирует

Re: Использование графического LCD WG12864A.
Добавлено: Вс янв 13, 2019 21:49:16
gc986
Ктонить имеет опыт работы с дисплеями WG12864B? Нашёл инфу что основное отличие от WG12864A заключается в инверсии сигнала для CS1 и CS2, ну и распиновка соответственно. Два дня пытаюсь в реальном железе воспроизвести, в протеусе всё ок, в на макетке дисплей не отображает что я ему отправляю. Контрастность работает хорошо, через ардуину вывожу данные нормально, а с помощью моей программы для Mega16 никак :,(