Форум РадиоКот https://radiokot.ru/forum/ |
|
Использование графического LCD WG12864A. https://radiokot.ru/forum/viewtopic.php?f=25&t=5486 |
Страница 1 из 1 |
Автор: | Alexc [ Сб июн 09, 2007 23:27:22 ] |
Заголовок сообщения: | Использование графического LCD WG12864A. |
Сделал по аналогии с данной статьёй, т.е. процедуры записы, команд принципиально не отличаются, МК - 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); |
Автор: | Alexc [ Чт июн 14, 2007 16:29:07 ] |
Заголовок сообщения: | |
После долгих эксперементов выяснилось что всё начинает работать как положено ещё дописать в функцию записи данных строчку очитски бита А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); } |
Автор: | JurisG [ Чт авг 11, 2011 19:36:15 ] |
Заголовок сообщения: | Использование графического LCD WG12864A. |
Добрый день! Поэкспериментировал с дисплеем на основе KS0108. Все получилось. Но я так и не понял для чего параметр Z (начальная область отображения). Что измениться, если, например, вместо Z=0 установить Z=2. |
Автор: | AleksanderG [ Пт сен 09, 2011 16:02:39 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
На сайте MCS Electronics есть интересный для меня проект AN #148 - LCD display with touchscreen and AVR. Подскажите пожалуста кто знает тип дисплея с функцией тачскрин-а на базе контроллера KS0108. |
Автор: | Gef79 [ Ср дек 28, 2011 16:51:13 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Подскажите пожайлуста, как самому шрифт написать, так как нужно внести некоторые значьки? Как это дело вычисляется? |
Автор: | Takker [ Вт янв 31, 2012 17:36:46 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Здравствуйте, подскажите пожалуйста, где взять библиотеку macros.h и другие? |
Автор: | sashashemelev1 [ Вс мар 18, 2012 06:55:41 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
С выводом строк и графикой потихоньку стал понимать. А как сделать меню на GLCD? Не пинайте - я только только начинаю программировать. Желательно проект в протеусе... |
Автор: | TimeHunt [ Вс май 13, 2012 21:04:36 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Всем привет! У меня ЖК WG240128B-TFH TZ# - с контроллером T6963C, в протеусе для отладки какую модель выбирать??? я нашёл LM3229 это 240*128 Graphical lcd - если работать с ним это 1к1 будет по отношению к моему ??? ![]() |
Автор: | rocky7 [ Ср янв 23, 2013 18:16:46 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
В конце статьи: http://www.radiokot.ru/lab/controller/15/ есть ссылки на исходники. Исходники не работают. В ICCV7 for AVR компилятор сходу выдаёт ошибку что не обнаружен "delay.h". Люди добрые! Такая статья с виду классная, а повторить вывод строки в PROTEUS я так и не смог. Вышлите пожалуйста у кого есть рабочий проект. |
Автор: | kentik [ Вс апр 07, 2013 16:09:33 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
сделал все как в статье. запустил в proteus 7,1 - все работает. Запустил в живую - не пашет. показывает засвеченный экран и все. потенциометр кручу верчу - появляется матрица пикселей/убывает матрица пикселей. картинка не выводится. в чем может быть проблема? подключение верно. камень работает без кварца на своей частоте 1 МГц. Atmega64. экран не спалил 100%. у меня их два ![]() p.s. не хочу плодить одинаковые посты, по-этому, тем кто разобрался - плиииииз посмотрите в теме у меня: http://radiokot.ru/forum/viewtopic.php?f=20&t=87864 |
Автор: | cas2010 [ Сб май 04, 2013 19:29:26 ] | ||
Заголовок сообщения: | Re: Использование графического LCD WG12864A. | ||
Люди я приобрел дисплей 12864B V2.0 Так вот. Там немножко другая распиновка, не вижу CS1 и CS2 Там есть другие выходы как PSB, VOUT я могу подключить таким же образом как WG12864A пожалуйста объясните распиновку? на фото ниже...
|
Автор: | Nikitka [ Пт ноя 15, 2013 20:43:18 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Чем можно заменить команду NOP в компиляторе Atmel Studio 6,1??? не нравится она ему |
Автор: | loki_amorf [ Чт окт 16, 2014 19:09:06 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Nikitka писал(а): Чем можно заменить команду NOP в компиляторе Atmel Studio 6,1??? не нравится она ему asm ("nop"); |
Автор: | volkovnp [ Пт ноя 07, 2014 07:23:36 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Оговорюсь сразу, я новичок в области программирования МК, ну уж очень хочется разобраться и попробовать написать что то свое, у меня вопрос к автору статьи, не могли бы вы пояснить что означает эта запись: Код: #define SetBit(x,y) (x|=y) #define ClrBit(x,y) (x&=~y) #define TestBit(x,y) (x&y) Я так понял это встроенные функции CVAVR, которые позволяют, устанавливать, очищать, и читать бит. То есть директива мне ясна, но не понятно что выполняют параметры указанные в скобочках после директивы: Код: (x|=y) (x&=~y) (x&y) Помогите пожалуйста разобраться, не пинайте сильно, новичок я, совсем зеленый... |
Автор: | Nikitka [ Вт дек 30, 2014 10:12:33 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
помогите разобраться с данным дисплеем. Подробнее написал тут. viewtopic.php?f=61&t=111518&p=2223895#p2223895 |
Автор: | bezzabotna [ Ср мар 21, 2018 09:56:56 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Здравствуйте! Вот мучаю дисплей 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? Или его надо сбрасывать принудительно? |
Автор: | bezzabotna [ Чт мар 22, 2018 10:09:48 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Все заработало. RES должна быть единицей, а не работало потому что на одной ножке напряжение просело. +Дисплей все-таки работает только от 5В, хотя в даташите написано, что от 3 В тоже должен. Добавлено after 1 minute 18 seconds: Все заработало! RES должна быть единицей, а не работало потому что на одной ножке напряжение просело. +Дисплей все-таки работает только от 5В, хотя в даташите написано, что от 3 В тоже должен. |
Автор: | gc986 [ Пт янв 11, 2019 21:57:57 ] | ||
Заголовок сообщения: | Re: Использование графического LCD WG12864A. | ||
Здравия! Переделываю проект на AtMega16 и попутно переназначаю на PORTA и PORTC. Проверяю в Proteus, не работает ![]() Это мой первый проект где использую графический дисплей поэтому скорее всего ошибка очень глупая ![]() ![]() ![]()
|
Автор: | gc986 [ Сб янв 12, 2019 23:36:22 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Решил задачку. Как оказалось банальная не внимательность, при инициализации дисплея нужно выставить бит RST в 1 и не снимать в дальнейшем. В этом случае всё прекрасно функционирует ![]() |
Автор: | gc986 [ Вс янв 13, 2019 21:49:16 ] |
Заголовок сообщения: | Re: Использование графического LCD WG12864A. |
Ктонить имеет опыт работы с дисплеями WG12864B? Нашёл инфу что основное отличие от WG12864A заключается в инверсии сигнала для CS1 и CS2, ну и распиновка соответственно. Два дня пытаюсь в реальном железе воспроизвести, в протеусе всё ок, в на макетке дисплей не отображает что я ему отправляю. Контрастность работает хорошо, через ардуину вывожу данные нормально, а с помощью моей программы для Mega16 никак :,( |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |