Работа с ЖКИ на контроллере 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
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 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 КБ) 236 скачиваний
Кот гуляет сам по себе, но вблизи холодильника.
Ответить

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