Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: atmega - LCD на порту C
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
idono
Подключаю простенький LCD 16x2 (на контроллере HD44780) к atmega16, вывожу текст с помощью lcd_putsf() - на портах A B и D работает замечательно.
Но требуется подключить к порту C - при этом на LCD ничего вывести не получается. Сам он запускается нормально (небольшая засветка верхней строки, как на остальных портах если ничего не выводить), но вывод не идет sad.gif
Фьюзы на меге не трогал вообще, все стоит по дефолту. В чем загвоздка? wacko.gif


add:
Отмена тревоги smile.gif Наткнулся на описание похожей проблемы - надо было выключить JTAG (по дефолту он включен)
DimaSPB
Что такое lcd_putsf()?
Сам хочу приступить к работе с LCD
Gogan
Цитата(DimaSPB @ Dec 20 2007, 23:06) *
Что такое lcd_putsf()?
Сам хочу приступить к работе с LCD

вывести строку, которая хранится в памяти программ (флеш) на лсд.
По поводу приступить к работе - вперед, в codevision есть готовая библиотека для работы с этими экранами, только инитить и выводить.

п.с. был такой случай, что при зависании лсд - программа не могла его проинитить и висла вся система. Полез внутрь драйвера, убрал ожидание готовности от лсд, задержки укоротил, теперь лсд инититься всегда, даже если завис, причем быстрее.
Веталь
Добрый день!Немогли б вы кинуть схемку подключения на контроллере HD44780 к atmega16 .буду премного благодарен!Пасибо.Хочу выводить изменение напряжения на дисплей. smile.gif
aspID
Раз уж такая петрушка, отпишусь и я по LCD в этой ветке...

Начал эксперименты ставить, использую мегу8, для генерации 8битного кода использую регистр 4094, схема подключения практически то, что указано на схеме 3 здесь: http://www.caxapa.ru/sch/lcd3v.html

Использовал дисплей 16x1, если конкретно по имени - то Winstar WH1601A-YGH-CTK даташит его скурил почти в пепел - но информации в нем недостаточно. Так, например, пришлось методом проб и ошибок добиваться заполнения всех 16 символов. При его разработке технология такова, что чип управляет только 8 символами. И чтобы отобразить строку из 16 символов приходится устанавливать ему режим ДВУХСТРОЧНОГО, причем, продолжение первой строки (9 символ) необходимо помещать в адрес DDRAM 0x40 (вопреки логичному, казалось бы, 0x28).

Что осталось из неразрешенного:
Зачем данному дисплею память на 80 символов, если отображаются только 16? Я не смог найти способ "сдвинуть" строчку. Кто знает - подскажите, пожалуйста! И еще вопрос - при сдвигании этой самой строчки - как будет происходить сдвигание по экрану - ведь вторая половина строки - уже другая "подстрока"? По-моему, проще генерировать именно 16 символьное отображение, которое выводить на экран sad.gif
Также, подозреваю, что не совсем правильно вгонять экран в 2-строчный режим. Но в 1-строчном режиме издевался даже так, что всю строку пытался забить символами, но на экране все равно светятся только 8...

Еще интересно было бы разобраться с LCD-эмулятором AVR Studio. Что за файлик ему необходимо подсовывать и как с этим работать?

Библиотечку для IAR для работы с LCD, похоже, придется создать свою...

P.S. Еще было бы интересно, кто каким образом организует таблицу перекодировки русских символов...
P.P.S.: может, уважаемые модераторы изменят заголовок темы и здесь будем обсуждать все про LCD?
vooon
@ aspID
для 16*1 дисплеев это обычная практика - первые 8 символов на первой строке и остальные 8 на второй.
памяти на 80 символов т.к. используется стандартный контроллер, который поддерживает дисплеи до 40*2
в дисплеях 40*4 два таких контроллера, два пина E, все остальное параллельно.

перекодировку делаю перед компиляцией с помощью небольшого парсера на питоне
Pyku_He_oTTyda
Цитата
Использовал дисплей 16x1, если конкретно по имени - то Winstar WH1601A-YGH-CTK даташит его скурил почти в пепел - но информации в нем недостаточно. Так, например, пришлось методом проб и ошибок добиваться заполнения всех 16 символов. При его разработке технология такова, что чип управляет только 8 символами. И чтобы отобразить строку из 16 символов приходится устанавливать ему режим ДВУХСТРОЧНОГО, причем, продолжение первой строки (9 символ) необходимо помещать в адрес DDRAM 0x40 (вопреки логичному, казалось бы, 0x28).

У меня нормально. Сдвиг адреса начала второй строки 0х28
const unsigned char addLUT[2] = {0x80, 0xA8}; //номера первой позиции в каждой строке.
Дисплей такой же: WH1601A-YYH-CTK
aspID
Pyku_He_oTTyda, а инициализируете как 2-строчный? Не понимаю... sad.gif
Pyku_He_oTTyda
Цитата
а инициализируете как 2-строчный

Код
//функция инициализации LCD
void lcd_init(void)
{
_delay_ms(2);
     lcd_com(0x33);  //инициализация четырехпроводной шины
_delay_ms(2);
     lcd_com(0x33);  //инициализация четырехпроводной шины
_delay_ms(2);
     lcd_com(0x33);  //инициализация четырехпроводной шины
_delay_ms(2);
     lcd_com(0x28);  //активизация внутреннего шрифта 5х7
     lcd_com(0x08);  //отсуствие изображения на экране
     lcd_com(0x01);  //пустой экран, очистка памяти, курсор в левой верхней позиции
_delay_ms(2);
     lcd_com(0x06);  //автоматический перевод знакоместа вправо
     lcd_com(0x0C);  //включаем дисплей, прячем курсор
_delay_ms(5);
}
DiMomite
Цитата(aspID @ Mar 21 2008, 07:16) *
P.S. Еще было бы интересно, кто каким образом организует таблицу перекодировки русских символов...


В CodeVision можно просто использовать #pragma rl+ и #pragma rl- для того, что бы писать в компиляторе русскими буквами выводимый текст. Таким вот образом:

#pragma rl+
lcd_putsf ("Русский текст");
#pragma rl-
aspID
Цитата
В CodeVision...

IAR... smile.gif
ReAl
Цитата(aspID @ Mar 21 2008, 07:16) *
P.S. Еще было бы интересно, кто каким образом организует таблицу перекодировки русских символов...
Таблицы нужны только если надо снаружи принимать текст в стандартной кодировке для отображения у себя. Если этого нет, как уже было сказано - лучше "маленького перекодировщика на питоне" тяжело что-то придумать - нулевые расходы флеша и времени выполнения.
http://www.onembedding.com/tools/utility/pylcdstring/
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.