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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Пример о котором мы с Alex говорили находится в HI-TECH Software\PICC\STD\9.60\samples\delay
Надо всего лишь подключить хэдер и исходник и определить XTAL_FREQ.
Делов на 5 минут. :)))

А так , на xc8 все уже есть и не в пример проще.
Но вам похоже без разницы, ибо без знания языка изучать что то весьма трудно...
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Технический английский не так сложно выучить, а словари... не помогут, надо смотреть в словарях несколько значений слов, иногда нет полного аналога русского слова и перевод должен учитывать контекст, что не доступно автоматическим переводчикам хотя гугл к этому стремится при поддержке пользователей(накапливает базу переводов целыми выражениями).
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Может хватит тут компиляторы обсуждать и их некомпетентность в работе с задержками? Тут вроде тема про дисплеи с определеннным контролером. Как задержка относится к дисплею? Правильно - посредственно.
Аватара пользователя
Mon
Встал на лапы
Сообщения: 92
Зарегистрирован: Вс авг 21, 2011 23:12:37
Откуда: Харьков

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

Сообщение Mon »

банальный вопрос, но всё же
пока крутил проверял БП на индикаторе вольтамперметра заметил - что пропал контраст.
попробовал подкрутить потенциометр, ничего не появилось, но подсветка начала тускло светить и моргать.
контраст тоже скачками появляется (но символы не выдаёт) --- это значит я угробил дисплей?(wh1602a-ygh-ctk)
выше головы не прыгнешь - ниже зад**цы не сядешь.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Mon писал(а):пока крутил проверял БП на индикаторе вольтамперметра заметил - что пропал контраст.

Вот это попробробней можно?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Mon
Встал на лапы
Сообщения: 92
Зарегистрирован: Вс авг 21, 2011 23:12:37
Откуда: Харьков

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

Сообщение Mon »

Gudd-Head писал(а):
Mon писал(а):пока крутил проверял БП на индикаторе вольтамперметра заметил - что пропал контраст.

Вот это попробробней можно?


Блок питания, стабилизатор регулируемый на ЛМ317, если быть точным. С ним проблемы были, а мультиметр был подпаян к выходу БП. пока "игрался" вилкой на вкл\выкл, случилось вот такое приключение)
выше головы не прыгнешь - ниже зад**цы не сядешь.
Аватара пользователя
dimitriy91
Вымогатель припоя
Сообщения: 619
Зарегистрирован: Ср июн 08, 2011 15:37:56
Откуда: ДВ

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

Сообщение dimitriy91 »

Всем привет, пытаю инициализировать LCD ( аналог 44780 ), код на VHDL :
Спойлер

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

init_lcd : process
variable init : integer := 0;
variable var_lcd_e : boolean := true;
begin
wait until rising_edge(clk_load_lcd);
if var_lcd_e then
   if init = 0 then
   lcd_rs <= '0';
   lcd_data <= x"2";
   lcd_e <= '1';
   var_lcd_e := false;
   init := 1;
      elsif init = 1 then
      lcd_data <= x"0";
      lcd_e <= '1';
      var_lcd_e := false;
      init := 2;
         elsif init = 2 then
         lcd_data <= x"2";
         lcd_e <= '1';
         var_lcd_e := false;
         init := 3;
            elsif init = 3 then
            lcd_data <= x"0";
            lcd_e <= '1';
            var_lcd_e := false;
            init := 4;
               elsif init = 4 then
               lcd_data <= x"0";
               lcd_e <= '1';
               var_lcd_e := false;
               init := 5;
                  elsif init = 5 then
                  lcd_data <= x"1";
                  lcd_e <= '1';
                  var_lcd_e := false;
                  init := 6;
                     elsif init = 6 then
                     lcd_data <= x"0";
                     lcd_e <= '1';
                     var_lcd_e := false;
                     init := 7;
                        elsif init = 7 then
                        lcd_data <= x"c";
                        lcd_e <= '1';
                        var_lcd_e := false;
                        init := 8;
                           elsif init = 8 then
                           lcd_rs <= '1';
                           lcd_data <= x"3";
                           lcd_e <= '1';
                           var_lcd_e := false;
                           init := 9;
                              elsif init = 9 then
                              lcd_data <= x"0";
                              lcd_e <= '1';
                              var_lcd_e := false;
                              init := 10;
   end if;
else
var_lcd_e := true;
lcd_e <= '0';      
end if;
end process;


Пытаюсь включить 4 битный режим ( он припаян только верхним нибблом ) , далее пытаюсь вкл однострочный режим. И вывести "0" в DDRAM по адресу 0x00 . После включения , включаются обе строки , горят все пикселы, ноль почему то не выводится. :cry:
Последний раз редактировалось Gudd-Head Пн окт 07, 2013 12:33:06, всего редактировалось 1 раз.
Причина: Нарушение п.2.5 Правил Форума
"Ленивый человек в бесчестном покое сходен с неподвижною болотною водою, которая, кроме смраду и презренных гадин, ничего не производит". М.В. Ломоносов
Teplotexnik
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Вт сен 17, 2013 01:59:48

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

Сообщение Teplotexnik »

Здравствуйте, у меня проблема небольшая подключил дисплейчик RC1602A фирмы Raystar http://www.microchip.ua/LCD/Raystar/pdf/RC1602A.pdf к Atmega8
Изображение ,
прошивка прошла успешно. а светиться он так и не начал. все контакты прозванивал от дисплея до мк. может там питание на дисплей нужно не 5в или дополнительное питание на мк нужно подавать даже не знаю. и еще у меня остались не задействованные ножки 16 и 15 на дисплее.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Настраивай контраст, у дисплея как минимум должны появится квадраты в первой строке если его никак не инициализировать. 15-16 контакты идут прямо к площадкам подсветки.
Teplotexnik
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Вт сен 17, 2013 01:59:48

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

Сообщение Teplotexnik »

Alexeyslav писал(а):Настраивай контраст, у дисплея как минимум должны появится квадраты в первой строке если его никак не инициализировать. 15-16 контакты идут прямо к площадкам подсветки.

Спасибо мил человек сопротивления 2,9кОм оказалось достаточно чтобы символы проступили. все еще не ясно что такое площадка подсветки.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

сбоку у индикатора есть контакты для подключения подсветки.
Teplotexnik
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Вт сен 17, 2013 01:59:48

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

Сообщение Teplotexnik »

Alexeyslav писал(а):сбоку у индикатора есть контакты для подключения подсветки.
подключил 15 к +5В 16й к земле светится.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Недолго оно у тебя будет светится от 5 вольт, однако. Ты просто издеваешься над светодиодами. Даташит читал? схему отслеживал как диоды соединены на плате от контактов до панельки с диодами? Ток через плату подсветки не превысил?
Teplotexnik
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Вт сен 17, 2013 01:59:48

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

Сообщение Teplotexnik »

Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

dimitriy91 писал(а):После включения , включаются обе строки , горят все пикселы, ноль почему то не выводится. :cry:

К вам сообщение о контрасте тоже относится.Сначала можно просто подать питание и реостатом отрегулировать чтобы начали показываться символы первой строки. Далее уже можно говорить об инициализации.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

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

Сообщение Ghost in shell »

Доброго времени суток!
Пытаюсь запустить 1602 с библиотекой уважаемого Alex
Спойлер

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

// MK pic16f72
// работа с LCD
#include <pic.h>
//----------
volatile struct strPause         // объявление структуры strPause типа volatile
{
unsigned bPause1_1:1;      // бит на защелку задержки 01 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause2_1:1;      // бит на защелку задержки 02 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause3_1:1;      // бит на защелку задержки 03 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause4_1:1;      // бит на защелку задержки 04 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause5_1:1;      // бит на защелку задержки 05 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause6_1:1;      // бит на защелку задержки 06 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause7_1:1;      // бит на защелку задержки 07 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause8_1:1;      // бит на защелку задержки 08 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause9_1:1;      // бит на защелку задержки 09 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause10_1:1;      // бит на защелку задержки 10 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause11_1:1;      // бит на защелку задержки 11 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause12_1:1;      // бит на защелку задержки 12 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause13_1:1;      // бит на защелку задержки 13 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause14_1:1;      // бит на защелку задержки 14 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause15_1:1;      // бит на защелку задержки 15 символа в 1-й строке(1 - да, 0 - нет)
unsigned bPause16_1:1;      // бит на защелку задержки 16 символа в 1-й строке(1 - да, 0 - нет)
unsigned char varPause;      // strPause.varPause - счетчик до 10 миллисекунд
}strPause;
//----------
void interrupt isr(void) // обработчик прерываний
{
   if (T0IF && T0IE)  // ветка опроса флага прерывания по переполнению TMR0
   {
      T0IF = 0;    // сброс флага прерывания по переполнению TMR0
      TMR0+= 6;   // предзагрузка TMR0
      T0IE = 1;     // 1/0 разрешение/запрет прерывания по переполнению TMR0
      strPause.varPause++;
   }            // конец ППОП TMR0
}
//----------
__CONFIG (XT & WDTDIS & PWRTDIS & BOREN & UNPROTECT);   // биты конфигурации программатора
//----------
// объявление функций, используемые в файле------------------------------------------------------------------------------------------
extern void lcd_init(void);
extern void lcd_clear(void);   
extern void lcd_gotoxy(char, char);
extern void lcd_puts(char *);
extern void lcd_putch(char);
extern void lcd_cgram(char *, unsigned char); // Добавляет массив строк из arr в CGRAM, по адресу adr.
void podgot (void)   // настройки
{
GIE = 1;   // разрешены все немаскированные прерывания
// Начало настройки TMR0 ----------
T0CS = 0;   // bit 5 TMR0 Выбор источника сигнала 0 - Fosc/4 (внутренний); 1 - подача на T0CKI
T0SE = 0;   // bit 4 TMR0 Выбор фронта приращения TMR0 при внешнем тактовом сигнале (0-передний фронт)
PSA  = 0;   // bit 3 Выбор включения предделителя: 0 - перед TMR0, 1 - перед WDT
PS2  = 0;   // bit 2 Настройка предделителя
PS1  = 0;   // bit 1 Настройка предделителя
PS0  = 1;   // bit 0 Настройка предделителя
// Конец настройки TMR0 ----------
}
// конец объявления функций, используемые в файле----------------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main ()
{
podgot();   //настройки
//DelayMs(10); задержка на 10 миллисекунд
T0IE = 1;     // 1/0 разрешение/запрет прерывания по переполнению TMR0
strPause.bPause1_1 = 1;
strPause.bPause2_1 = 0;
// (strPause.varPause >= 10)
//
T0IE = 0;     // 1/0 разрешение/запрет прерывания по переполнению TMR0
lcd_init();         // инициализация дисплея
lcd_clear();      // очистка дисплея
strPause.varPause = 0;
//
for(;;)
{
//начало вывода 1-го символа 1-й строки-----------------------------------------------------
if(strPause.bPause1_1==1)
{
lcd_gotoxy(0,0);
lcd_putch('H');
if(strPause.varPause>9){strPause.bPause1_1 = 0; strPause.bPause1_2 = 1;}
}//конец вывода 1-го символа 1-й строки-----------------------------------------------------
//начало вывода 2-го символа 1-й строки-----------------------------------------------------
if(strPause.bPause1_2 == 1)
{
lcd_gotoxy(1,0);
lcd_putch('e');
strPause.varPause = 0;
   if(strPause.varPause>9)   {strPause.bPause1_2 = 0; strPause.bPause1_1 = 1;}
}//конец вывода 2-го символа 1-й строки-----------------------------------------------------
}// end main
//----------

Вылетает с руганью:
Error [255] D:\Work\PIC_CI\My_program\LCD\main.c; 81.70 not a member of the struct/union "strPause"
Error [182] D:\Work\PIC_CI\My_program\LCD\main.c; 81.73 illegal conversion between types
Error [255] D:\Work\PIC_CI\My_program\LCD\main.c; 84.23 not a member of the struct/union "strPause"
Error [206] D:\Work\PIC_CI\My_program\LCD\main.c; 84.27 illegal use of void expression
Error [255] D:\Work\PIC_CI\My_program\LCD\main.c; 89.45 not a member of the struct/union "strPause"
Error [182] D:\Work\PIC_CI\My_program\LCD\main.c; 89.48 illegal conversion between types
Warning [345] D:\Work\PIC_CI\My_program\LCD\main.c; 92.0 unreachable code
Error [195] D:\Work\PIC_CI\My_program\LCD\main.c; 92.0 expression syntax
Error [300] D:\Work\PIC_CI\My_program\LCD\main.c; 92.0 unexpected end of file

и какого ей недодали?!
Последний раз редактировалось Gudd-Head Пн окт 07, 2013 12:35:08, всего редактировалось 1 раз.
Причина: Нарушение п.2.5 Правил Форума
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Ругается на отсутствие объявления strPause. Она у Вас объявлена неправильно.
Воть так надо:

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

volatile struct         // объявление структуры strPause типа volatile
{
............
}strPause;

а не так:

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

volatile struct strPause         // объявление структуры strPause типа volatile
{
..........
}strPause;
:)
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

ну здесь хз, Леш, одновременное объявление и реализацию еще никто не запрещал...Зависит от конкретного компилятора.
То, что скобка после for(;;)пропущена, это да.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

одновременное объявление и реализацию еще никто не запрещал...
С одинаковыми именами ? Не знал :dont_know:

У него ошибка вообще не связана с отсутствием объявления, чёто я поспешил с ответом... :facepalm:
Ghost in shell, выложите весь проект, попробую скомпилировать. Очень трудно подсчитывать строки и искать проблему по одному тексту.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

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

Сообщение Ghost in shell »

Alex вы правы: ликвидация двойного объявления ничего не дала.
Более того, в другой программе мой вариант объявления прекрасно работает, в т.ч. с оператором if.
Компилятор использую C:\Program Files\HI-TECH Software\PICC\std\9.60
Вложения
LCD.rar
(44.64 КБ) 234 скачивания
Кот гуляет сам по себе, но вблизи холодильника.
Ответить

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