Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Vrungel
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт сен 07, 2007 22:13:42
Откуда: Мариуполь

Re: Re:

Сообщение Vrungel »

Vrungel писал(а):
uk8amk писал(а):В реальной схеме заработало?

Да заработало.

Обнаружился неприятный момент. При выполнении кода подобного такому:

Код: Выделить всё

lcd_putsf("first label");
delay_ms(1000);
lcd_clear();
lcd_putsf("second label");
delay_ms(1000);
lcd_clear();
lcd_putsf("third label");
delay_ms(1000);
lcd_clear();
lcd_putsf("fourth label");

на экран по идее должны выводиться последовательно четыре сообщения с позиции 0:0.
На самом деле надписи искажаются.
Например вместо second label выводиться
secon
d label

вместо third label
ehird lab
И такие "сбои" возникают в самые разные моменты и имеют разный "вид".

Уважаемый uk8amk, посмотрите пожалуйста свой драйвер.
С "родным" драйвером от кодевижена таких проблем нет.
Но ваш несомненно удобнее.

Проблемы как в "железе" так и в протеусе одинаковые.
Vrungel
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт сен 07, 2007 22:13:42
Откуда: Мариуполь

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Vrungel »

Проблема решается добавлением строки

Код: Выделить всё

lcd_gotoxy(0,0);
в процедуру lcd_clear.
Но подозреваю что такое решение не совсем верное.
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение uk8amk »

Vrungel писал(а):Но подозреваю что такое решение не совсем верное.

Отчего же неверное?
Да, в моем случае lcd_clear() сам не сбрасывает указатель знакоместа, зато это делает lcd_gotoxy();
Юзайте их в паре и ничего не бойтесь:)

ЗЫ. Сенкс за баг репорт.
Аватара пользователя
dt_andrew
Мявтор!
Сообщения: 2057
Зарегистрирован: Чт ноя 30, 2006 12:27:46
Откуда: Челябинск

Re:

Сообщение dt_andrew »

Igor_67 писал(а):Мяу всем!
Вопрос к знатокам LCD: Собирая проект Андрея Дойникова "FM тюнер...и т.д....", столкнулся с такой проблемой: подключил индикатор 16х1 (Powertip PC1601B). Показывает только половину индикатора - первые 8 символов (с 1 по 8 ). Остальная половина (с 9 по 16) молчит. Почему такое может быть? Индикатор 100% рабочий. Пробовал другой такой же - то же самое!
Написал отдельно тестовую программу для LCD, проверил на ней - та же фигня. Уже не знаю, что и делать. Может у этого индикатора какой-то замудренный алгоритм управления, хотя по даташиту стоит контроллер KS0066, ну или его аналог.... Может кто с подобным сталкивался? как его заставить показывать все 16 символов в строке?


если не разобрался еще то вот

индикатор хоть и 16х1 а внутри он на самом деле 8х2
первая строка начальный адрес 0х80 а второй 0хС0
тоесть если расматривать его как однострочный то первые 8 символов будут иметь адреса с 0х80 по 0х87
а вторые 8 с 0хС0 по 0хС7

когда я писал прогу для тюнера пришлось немного доработать проверенную библу для индикатора
у меня все делается автоматом

пришлось ввести еще одну функцию и использовать вместо стандартной lcd_com() lcd_col()
harchenko_pavel
Родился
Сообщения: 6
Зарегистрирован: Вт апр 13, 2010 18:28:44
Откуда: Запорожье

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение harchenko_pavel »

Библиотека для работы с символьными дисплеями на базе контроллеров HD44780 и KS0073 с Хмега под Winavr, за основу была взята библиотека для atmega от Peter Fleury. Реализована поддержка контроллеров Xmega в 4-х битном режиме, добавлен символ уровня заряда батареи (lcd_putc(batn) n=0-5) и массив для автоматической перекодировки символов кириллицы.

Пример работы с библиотекой:

#include <avr/io.h>
#include <util/delay.h>
#include "clksys_driver.h"
#include "lcd.h"

int main(void)
{

CLKSYS_PLL_Config( OSC_PLLSRC_RC2M_gc, 16 );
CLKSYS_Enable( OSC_PLLEN_bm );
do {} while ( CLKSYS_IsReady( OSC_PLLRDY_bm ) == 0 ); /* Wait for PLL to be ready */
CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_PLL_gc ); /* Switch main clock PLL */
CLKSYS_AutoCalibration_Disable( DFLLRC2M );

lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_puts("Привет мир");
lcd_putc(bat0);
lcd_putc(bat1);
lcd_putc(bat2);
lcd_putc(bat3);
lcd_putc(bat4);
lcd_putc(bat5);


PORTD.DIRSET=PIN2_bm;

while (1)
{
PORTD.OUTTGL=PIN2_bm;
_delay_ms(100);
}
}
hd44780 xmega lib.zip
(6.1 КБ) 683 скачивания

Пользуйтесь на здоровье :))
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Arlleex »

ох... тут спрошу.
Не затерялась ли у кого русскоязычный вариант вот этой таблички:
?
http://www.winstar.com.tw/products_deta ... 98&lang=ru
Не умеешь - не берись, но не взявшись не научишься...
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Arlleex »

О! спасибо большое!
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
goodspeedmen
Встал на лапы
Сообщения: 123
Зарегистрирован: Вс дек 13, 2009 01:04:42
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение goodspeedmen »

вот нарыл в недрах старинного принтера ЖКИ но его марки нет подскажите на контроллере HD44780 распиновка одинакова для всех или нет?

Изображение
Изображение
Изображение
Вложения
20042010310.gif
(153.86 КБ) 9030 скачиваний
20042010309.gif
(145.35 КБ) 8709 скачиваний
20042010308.gif
(138.64 КБ) 8661 скачивание
Голосовой чат.
Аватара пользователя
goodspeedmen
Встал на лапы
Сообщения: 123
Зарегистрирован: Вс дек 13, 2009 01:04:42
Контактная информация:

Re:

Сообщение goodspeedmen »

_noise писал(а):Распиновка у микросхемы одинаковая.
А модуль, частью которого микросхема является - может сделать кто угодно и как угодно, и не обязан он договариваться с другими делателями модулей и/или покупателями.
А если тебе кто-то сейчас напишет что-нибудь пообещает "я думаю что наверное вот так нормально будет точно!", а ты включишь по написанному, а оно задымится и сгорит - и?

--

Документацию на микросхему смотри, от её ног пляши, сам узнаешь всё. Заодно поймёшь, как работает и почему именно так сделано.

мяу
да я вроде определился по даташиташ посмотрел питание микросхем и получилось что первый минус второй плюс, да и к томуже это подтверждает что 1 это копус буду пробывать. :idea:
Голосовой чат.
Аватара пользователя
levibyte
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт апр 27, 2010 06:11:37

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение levibyte »

Люди добрые , помогите пожалуйста =[
У меня atemga16 и LCD TS1620A-20A/Y ( lcdstar )
Подключение по 4 битной сxеме.

(
RS - PORTC.5
R/W - земля
EN - PORD.7
DB0 - PORTC.0
DB1 - PORTC.1
DB2 - PORTC.2
DB3 - PORTC.3
)

Уже 4 дня мучаюсь , использовал и библиоетеки codevision и microPascal
и другие примеры из инета. Ничего не работает.
И jtagen отключил , и кварц поставил...ничего.

Потом просто увеличил делай-и и тeперь команды нормално выпалнаются , ( типа стереть экран , переместить курсор..итд )
но вместо букв показывает всякую абракадабру
типа ( ||| ||-| |): Уже не знаю в чем проблема.
Программатор у меня самый простой под lpt, прошываю avrdude-ом.

Да и еще , я прочитал , что во время 4битной сxемы для отобрежения букв нужно два раза посылать data .
но у меня не так. Задаю что нибудь в порте c , и даю en=1 а потом en=0 и команда срабатывает.
Вложения
asd.c
исxодник codevision
(4.32 КБ) 464 скачивания
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение uk8amk »

levibyte писал(а):Подключение по 4 битной сxеме.


А ничего что в исходнике в самом начале говорится про 8-битную шину?

Встроенная либа из CVAVR работает с другим расположением выводов(см хелп). И к тому же 4-битному режиму требуется не младшая, а старшая тетрада бит(7:4), по вашему описанию все наоборот.
Есть встроенная либа и на 8 бит, но там используются контроллеры с поддержко внешней памяти:

LCD Functions for displays connected in 8 bit memory mapped mode
These functions can be used only with AVR chips that allow using external memory devices.
Чего нельзя сказать про ATmega8535.
Аватара пользователя
levibyte
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт апр 27, 2010 06:11:37

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение levibyte »

поменял lcd на winstar ( WH1620c ) заработало ( 8 битный вариант ) =]
harchenko_pavel
Родился
Сообщения: 6
Зарегистрирован: Вт апр 13, 2010 18:28:44
Откуда: Запорожье

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение harchenko_pavel »

Почитай внимательно даташит и правильно расставь задержки перед коммандами и будет счастье, сам не однократно сталкивался с проблемой когда на 8МГц все работает на ура, а на 16МГц начинается свистопляска :)))
Аватара пользователя
levibyte
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт апр 27, 2010 06:11:37

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение levibyte »

И еще.
Чтоб использовать библиотеку кодвижн , все выxоды LCD должны идти на один порт ( по дефолту C ).
А у меня контролные ножки на порте D. а дата - на порте C.
Возможно ли именно так изменить порты в кодвижне?
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение uk8amk »

>Возможно ли именно так изменить порты в кодвижне?

Нет, встроенная библиотека этого не позволяет. Но можно использовать отдельную либу, которую вы найдете на 19-й и 20-й страницах этой ветки.
Аватара пользователя
levibyte
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт апр 27, 2010 06:11:37

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение levibyte »

Да , спасибо , я так и сделал.
Работает нормально =]
Аватара пользователя
Freerider
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вс сен 06, 2009 20:17:20

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Freerider »

Сделал небольшой видеоурок основных команд библиотеки lcd.h в cvavre для HD44780 добавил 2 статьи инициализация hd44780 и ходовые команды для lcd в cvavre.Можете скачать отсюда http://turbobit.net/g462zsk2oc93.html
или http://depositfiles.com/ru/files/iu3uj3vps
Аватара пользователя
radioman
Родился
Сообщения: 16
Зарегистрирован: Чт ноя 05, 2009 05:31:38

P1620B

Сообщение radioman »

Всем доброго времени, нашел LCD от принтера, на нем есть пару опознавательных знаков, а именно P1620B и WHX1620(на наклейке контроллера).Написал программку для создания велокомпьютера в CAVR и протестировал в Proteus. Но при физической реализации устройства, экран не подает признаков жизни. Как я понял из форума у меня проблемы с инициализацией LCD. Может кто поможет советом или делом...
Аватара пользователя
Modest
Сверлит текстолит когтями
Сообщения: 1138
Зарегистрирован: Сб апр 03, 2010 08:57:35

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Modest »

А сообщения _noise в этой теме это что то вроде разделителя между постами, да?? :))
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
Ответить

Вернуться в «Периферия»