Вопросы и замечания по статьям и схемам, представленным на нашем сайте
При поддержке РадиоКОТструктор.ру
Сб июн 09, 2007 23:27:22
Сделал по аналогии с
данной статьёй, т.е. процедуры записы, команд принципиально не отличаются, МК - 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
После долгих эксперементов выяснилось что всё начинает работать как положено ещё дописать в функцию записи данных строчку очитски бита А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);
}
Чт авг 11, 2011 19:36:15
Добрый день!
Поэкспериментировал с дисплеем на основе KS0108. Все получилось. Но я так и не понял для чего параметр Z (начальная область отображения). Что измениться, если, например, вместо Z=0 установить Z=2.
Пт сен 09, 2011 16:02:39
На сайте MCS Electronics есть интересный для меня проект AN #148 - LCD display with touchscreen and AVR. Подскажите пожалуста кто знает тип дисплея с функцией тачскрин-а на базе контроллера KS0108.
Ср дек 28, 2011 16:51:13
Подскажите пожайлуста, как самому шрифт написать, так как нужно внести некоторые значьки?
Как это дело вычисляется?
Вт янв 31, 2012 17:36:46
Здравствуйте, подскажите пожалуйста, где взять библиотеку macros.h и другие?
Вс мар 18, 2012 06:55:41
С выводом строк и графикой потихоньку стал понимать. А как сделать меню на GLCD? Не пинайте - я только только начинаю программировать. Желательно проект в протеусе...
Вс май 13, 2012 21:04:36
Всем привет!
У меня ЖК WG240128B-TFH TZ# - с контроллером T6963C, в протеусе для отладки какую модель выбирать???
я нашёл LM3229 это 240*128 Graphical lcd - если работать с ним это 1к1 будет по отношению к моему ???
Ср янв 23, 2013 18:16:46
В конце статьи:
http://www.radiokot.ru/lab/controller/15/есть ссылки на исходники. Исходники не работают. В ICCV7 for AVR компилятор сходу выдаёт ошибку что не обнаружен "delay.h".
Люди добрые! Такая статья с виду классная, а повторить вывод строки в PROTEUS я так и не смог. Вышлите пожалуйста у кого есть рабочий проект.
Вс апр 07, 2013 16:09:33
сделал все как в статье.
запустил в proteus 7,1 - все работает.
Запустил в живую - не пашет. показывает засвеченный экран и все. потенциометр кручу верчу - появляется матрица пикселей/убывает матрица пикселей. картинка не выводится. в чем может быть проблема? подключение верно. камень работает без кварца на своей частоте 1 МГц. Atmega64.
экран не спалил 100%. у меня их два
p.s. не хочу плодить одинаковые посты, по-этому, тем кто разобрался - плиииииз посмотрите в теме у меня:
http://radiokot.ru/forum/viewtopic.php?f=20&t=87864
Сб май 04, 2013 19:29:26
Люди я приобрел дисплей 12864B V2.0
Так вот. Там немножко другая распиновка, не вижу CS1 и CS2
Там есть другие выходы как PSB, VOUT
я могу подключить таким же образом как WG12864A
пожалуйста объясните распиновку? на фото ниже...
- Вложения
-
- Безымянный.jpg
- (80.28 KiB) Скачиваний: 1078
Пт ноя 15, 2013 20:43:18
Чем можно заменить команду NOP в компиляторе Atmel Studio 6,1??? не нравится она ему
Чт окт 16, 2014 19:09:06
Nikitka писал(а):Чем можно заменить команду NOP в компиляторе Atmel Studio 6,1??? не нравится она ему
asm ("nop");
Последний раз редактировалось
AlekseyEnergo Пн окт 20, 2014 18:24:11, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.7 правил форума. Предупрежден!
Пт ноя 07, 2014 07:23:36
Оговорюсь сразу, я новичок в области программирования МК, ну уж очень хочется разобраться и попробовать написать что то свое, у меня вопрос к автору статьи, не могли бы вы пояснить что означает эта запись:
- Код:
#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)
Помогите пожалуйста разобраться, не пинайте сильно, новичок я, совсем зеленый...
Вт дек 30, 2014 10:12:33
помогите разобраться с данным дисплеем. Подробнее написал тут.
viewtopic.php?f=61&t=111518&p=2223895#p2223895
Ср мар 21, 2018 09:56:56
Здравствуйте! Вот мучаю дисплей 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? Или его надо сбрасывать принудительно?
Чт мар 22, 2018 10:09:48
Все заработало. RES должна быть единицей, а не работало потому что на одной ножке напряжение просело. +Дисплей все-таки работает только от 5В, хотя в даташите написано, что от 3 В тоже должен.
Добавлено after 1 minute 18 seconds:
Все заработало! RES должна быть единицей, а не работало потому что на одной ножке напряжение просело. +Дисплей все-таки работает только от 5В, хотя в даташите написано, что от 3 В тоже должен.
Пт янв 11, 2019 21:57:57
Здравия! Переделываю проект на AtMega16 и попутно переназначаю на PORTA и PORTC. Проверяю в Proteus, не работает
Код пишу в AvrStudio.
Это мой первый проект где использую графический дисплей поэтому скорее всего ошибка очень глупая
Прошу помощи корифеев
- Вложения
-
- GLCD_Test.c
- (3.64 KiB) Скачиваний: 613
Сб янв 12, 2019 23:36:22
Решил задачку. Как оказалось банальная не внимательность, при инициализации дисплея нужно выставить бит RST в 1 и не снимать в дальнейшем. В этом случае всё прекрасно функционирует
Вс янв 13, 2019 21:49:16
Ктонить имеет опыт работы с дисплеями WG12864B? Нашёл инфу что основное отличие от WG12864A заключается в инверсии сигнала для CS1 и CS2, ну и распиновка соответственно. Два дня пытаюсь в реальном железе воспроизвести, в протеусе всё ок, в на макетке дисплей не отображает что я ему отправляю. Контрастность работает хорошо, через ардуину вывожу данные нормально, а с помощью моей программы для Mega16 никак :,(
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.