реклама на сайте
подробности

 
 
> atmega - LCD на порту C, не работает
idono
сообщение Dec 20 2007, 11:02
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 90
Регистрация: 19-12-07
Пользователь №: 33 459



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


add:
Отмена тревоги smile.gif Наткнулся на описание похожей проблемы - надо было выключить JTAG (по дефолту он включен)

Сообщение отредактировал idono - Dec 20 2007, 11:02
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 11)
DimaSPB
сообщение Dec 20 2007, 21:06
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 22-08-07
Пользователь №: 29 972



Что такое lcd_putsf()?
Сам хочу приступить к работе с LCD
Go to the top of the page
 
+Quote Post
Gogan
сообщение Dec 21 2007, 06:15
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 25-10-07
Из: Киев
Пользователь №: 31 728



Цитата(DimaSPB @ Dec 20 2007, 23:06) *
Что такое lcd_putsf()?
Сам хочу приступить к работе с LCD

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

п.с. был такой случай, что при зависании лсд - программа не могла его проинитить и висла вся система. Полез внутрь драйвера, убрал ожидание готовности от лсд, задержки укоротил, теперь лсд инититься всегда, даже если завис, причем быстрее.
Go to the top of the page
 
+Quote Post
Веталь
сообщение Mar 20 2008, 20:49
Сообщение #4





Группа: Новичок
Сообщений: 6
Регистрация: 20-03-08
Пользователь №: 36 094



Добрый день!Немогли б вы кинуть схемку подключения на контроллере HD44780 к atmega16 .буду премного благодарен!Пасибо.Хочу выводить изменение напряжения на дисплей. smile.gif
Go to the top of the page
 
+Quote Post
aspID
сообщение Mar 21 2008, 05:16
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



Раз уж такая петрушка, отпишусь и я по 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?

Сообщение отредактировал aspID - Mar 21 2008, 07:30
Go to the top of the page
 
+Quote Post
vooon
сообщение Mar 21 2008, 07:50
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 27-06-06
Из: Msk
Пользователь №: 18 401



@ aspID
для 16*1 дисплеев это обычная практика - первые 8 символов на первой строке и остальные 8 на второй.
памяти на 80 символов т.к. используется стандартный контроллер, который поддерживает дисплеи до 40*2
в дисплеях 40*4 два таких контроллера, два пина E, все остальное параллельно.

перекодировку делаю перед компиляцией с помощью небольшого парсера на питоне
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Mar 21 2008, 08:29
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



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

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


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
aspID
сообщение Mar 21 2008, 09:01
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



Pyku_He_oTTyda, а инициализируете как 2-строчный? Не понимаю... sad.gif
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Mar 21 2008, 09:37
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Цитата
а инициализируете как 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);
}


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
DiMomite
сообщение Mar 21 2008, 10:02
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 47
Регистрация: 8-04-06
Из: Одесса
Пользователь №: 15 959



Цитата(aspID @ Mar 21 2008, 07:16) *
P.S. Еще было бы интересно, кто каким образом организует таблицу перекодировки русских символов...


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

#pragma rl+
lcd_putsf ("Русский текст");
#pragma rl-
Go to the top of the page
 
+Quote Post
aspID
сообщение Mar 21 2008, 11:12
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



Цитата
В CodeVision...

IAR... smile.gif
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 21 2008, 14:47
Сообщение #12


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



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


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01466 секунд с 7
ELECTRONIX ©2004-2016