Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Ответ
Опции темы

Правильная инициализация ЖК 16х2

Непрочитано 25.01.2013, 09:33   #11
Catcatcat1
Прописка
 
Регистрация: 05.05.2007
Сообщений: 115
Сказал спасибо: 10
Сказали Спасибо 57 раз(а) в 33 сообщении(ях)
Catcatcat1 на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

все символьные индикаторы инициализирующий одинаково (с теми что я сталкивался)
это один из вариантов на HI-TECH C Compiler для 4 битного интерфейса

Цитата:
__delay_ms(10);
__delay_ms(10);
__delay_ms(10);
RW=0;//режим записи в дисплей
RS=0;//режим команд
for ( a = 0; a ‹ 4; a++ )
{
LCD = 0b00110000; // код инциализации 0х03 (4 битного интерфейса) 3 раза
E = 1; // загрузить
NOP();
E = 0; //
__delay_ms(6);
}
LCD = 0b00100000; // включить режим 4битный интерфейс.
E = 1; // загрузить
NOP();
E = 0;
__delay_ms(2);

SendLCDc( 0b00101000 ); // Настройка функций
SendLCDc( 0b00001100 ); // Включить дисплей
SendLCDc( 0b00000001 ); // Дисплей очистить
SendLCDc( 0b00000110 ); // Entry Mode
SendLCDc( 0b10000000 ); // DDRAM addresss 0000
SendLCDc( 0b00000010 ); // return home
отсюда можно скачать готовую библиотеку может работать как с 1 строчными так и с 4 строчными индикаторами, поддерживает и вывод строк с русскими и латинскими символами.

Реклама:
Catcatcat1 вне форума   Ответить с цитированием
Непрочитано 25.01.2013, 09:59   #12
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

И зачем это ?
Код:
for ( a = 0; a ‹ 4; a++ )
{
LCD = 0b00110000;	 // код инциализации 0х03 (4 битного интерфейса) 3 раза
E = 1;	 // загрузить
NOP();
E = 0;	 //
Достаточно:

Код:
LCD = 0b00110000;	 // код инциализации 0х03 (4 битного интерфейса) 3 раза
for ( a = 0; a ‹ 4; a++ )
{
E = 1;	 // загрузить
NOP();
E = 0;	 //
Или даже без цикла 3 раза строб...
__________________
Осторожно , злой кот
dosikus вне форума   Ответить с цитированием
Непрочитано 25.01.2013, 10:02   #13
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

Сообщение от omercury Посмотреть сообщение
По шине данных, безусловно.
Но на картинках слева ещё две линии управления - переключатель регистра команд/данных и запись/чтение.
Такшта не надо!
Тогда уж приводи полную с битами управления.
А то найдется умник - скопирует не думая...
__________________
Осторожно , злой кот
dosikus вне форума   Ответить с цитированием
Непрочитано 25.01.2013, 11:28   #14
angelborn
Гражданин KAZUS.RUN
 
Аватар для angelborn
 
Регистрация: 24.08.2006
Адрес: Одесса
Сообщений: 580
Сказал спасибо: 129
Сказали Спасибо 155 раз(а) в 118 сообщении(ях)
angelborn на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

Сообщение от Halex07 Посмотреть сообщение
Ну, если уж очень хочется... то идите ка Вы ... к производителю. Дело в том, что Winstar и не скрывает того, что он использует в своих индикаторах. Там внизу справа по ссылке два даташита контроллеров для Character дисплеев, которые ставятся в Винстаровскую продукцию. Один, как правильно было "угадано с одной ноты" ST7066U. Что конкретно торчит под "каплей" вашего дисплея - х.з. И модифицировать старый проверенный алгоритм 44780 с точки зрения "правильности" имеет смысл только, если он не работает с вашим WH1602B, или вас жестко нормировали по стартовым таймингам в разработке нового девайса.
О, а я это как раз искал, спасибо что отослали куда нужно. Хорошо хоть 2 варианта камней, а не 10.
Про нормирование тоже угадали. Но в ущерб алгоритму конечно резать ничего не буду.
angelborn вне форума   Ответить с цитированием
Непрочитано 25.01.2013, 12:04   #15
vdvvvs
Частый гость
 
Регистрация: 13.03.2009
Сообщений: 27
Сказал спасибо: 3
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
vdvvvs на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

Странно, но с этим модулем (WH1602B-NGG) все вышло сразу и без бубна. Приведу куски библиотеки под STM32:

#define LCD_PORT GPIOC
#define LCD_RS GPIO_Pin_4
#define LCD_E GPIO_Pin_5
#define LCD_RW GPIO_Pin_7
#define LCD_DB4 GPIO_Pin_0
#define LCD_DB5 GPIO_Pin_1
#define LCD_DB6 GPIO_Pin_2
#define LCD_DB7 GPIO_Pin_3

void __EN_(void)
{
LCD_PORT-›ODR|=LCD_E;
_delay_10us(1);
LCD_PORT-›ODR&=~LCD_E;
}

void LCD_NYB(unsigned char nyb, char typed)
{
LCD_PORT-›ODR=nyb;
LCD_PORT-›ODR&=~LCD_RW;
if(typed == 0)
{
LCD_PORT-›ODR&=~LCD_RS;
} else
{
LCD_PORT-›ODR|=LCD_RS;
}
__EN_();
}

void LCD_Read_busy(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = LCD_DB4| LCD_DB5 | LCD_DB6 | LCD_DB7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(LCD_PORT, &GPIO_InitStructure);
LCD_PORT-›ODR&=~LCD_RS;
LCD_PORT-›ODR|=LCD_RW;
do
{
LCD_PORT-›ODR|=LCD_E;
_delay_10us(1);
LCD_PORT-›ODR&=~LCD_E;
}
while (LCD_PORT-›IDR&LCD_DB7);

LCD_PORT-›ODR&=~LCD_RW;
GPIO_InitStructure.GPIO_Pin = LCD_DB4| LCD_DB5 | LCD_DB6 | LCD_DB7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LCD_PORT, &GPIO_InitStructure);
}

void LCD_Write_Byte(unsigned char datas,unsigned char typed)
{
LCD_Read_busy();
LCD_NYB((datas››4),typed);
LCD_NYB(datas, typed);
}

void LCD_Write_CMD(unsigned char b)
{
LCD_Write_Byte(b,0);
}

void LCD_Write_Data(unsigned char b)
{
LCD_Write_Byte(b,1);
}

void initLCD(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = LCD_RS | LCD_E | LCD_DB4| LCD_DB5 | LCD_DB6 | LCD_DB7 | LCD_RW;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LCD_PORT, &GPIO_InitStructure);
LCD_PORT-›ODR&=~LCD_E;
LCD_PORT-›ODR&=~LCD_RS;
LCD_PORT-›ODR&=~LCD_RW;
LCD_NYB(0x03,0); //Required for initialisation
_delay_10us(4); //required delay
LCD_Write_CMD(0x02);
LCD_Write_CMD(0x28 );
LCD_Write_CMD(0x0c);
LCD_Write_CMD(0x01); //clear display
_delay_10us(200);
LCD_Write_CMD(0x06);
}

Код, правда, писал с даташита на 1602А.
Вложения:
Тип файла: zip HD4470.ZIP (1.5 Кб, 102 просмотров)
vdvvvs вне форума   Ответить с цитированием
Непрочитано 25.01.2013, 13:24   #16
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

Сообщение от vdvvvs Посмотреть сообщение
все вышло сразу и без бубна.
Позвольте усомниться , ибо :

Код:
LCD_PORT-›ODR=nyb;
__________________
Осторожно , злой кот
dosikus вне форума   Ответить с цитированием
Непрочитано 25.01.2013, 13:26   #17
vdvvvs
Частый гость
 
Регистрация: 13.03.2009
Сообщений: 27
Сказал спасибо: 3
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
vdvvvs на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

Сообщение от dosikus Посмотреть сообщение
Позвольте усомниться , ибо :

Код:
LCD_PORT-›ODR=nyb;
Отвечу просто:

#define LCD_PORT GPIOC
#define LCD_RS GPIO_Pin_4
#define LCD_E GPIO_Pin_5
#define LCD_RW GPIO_Pin_7
#define LCD_DB4 GPIO_Pin_0
#define LCD_DB5 GPIO_Pin_1
#define LCD_DB6 GPIO_Pin_2
#define LCD_DB7 GPIO_Pin_3
vdvvvs вне форума   Ответить с цитированием
Непрочитано 25.01.2013, 14:03   #18
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

vdvvvs, То есть вы все равно упретесь рогом и не согласитесь, что
данная команда просто тупо портит порт целиком?
И не надо считывать порт а потом выводить через маску?
Отличную свинью вы подкладываете в виде своей либы...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 25.01.2013 в 14:09.
dosikus вне форума   Ответить с цитированием
Непрочитано 25.01.2013, 14:31   #19
vdvvvs
Частый гость
 
Регистрация: 13.03.2009
Сообщений: 27
Сказал спасибо: 3
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
vdvvvs на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

Сообщение от dosikus Посмотреть сообщение
vdvvvs, То есть вы все равно упретесь рогом и не согласитесь, что
данная команда просто тупо портит порт целиком?
И не надо считывать порт а потом выводить через маску?
Отличную свинью вы подкладываете в виде своей либы...
На порту С просто ничего кроме дисплея не висит, а кому надо, сам и маску наложит.
vdvvvs вне форума   Ответить с цитированием
Непрочитано 25.01.2013, 14:36   #20
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Правильная инициализация ЖК 16х2

Сообщение от vdvvvs Посмотреть сообщение
На порту С просто ничего кроме дисплея не висит, а кому надо, сам и маску наложит.
Вредительство!
Easyrider83 вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по библиотекам HI-TECH PICC для подключения LCD 44780 16х2 к PIC 3ann Embedd С 9 20.12.2012 16:46
Индикатор 16х2 "OPVO" V0020380 rev.A Evg_55 Информация по радиокомпонентам 0 03.07.2010 13:06
Правильная разводка заземления в производственном помещении duritskiy Производственное оборудование 4 03.10.2007 07:48
Правильная задержка в HI-TECH PIC16 vsvetlov Микроконтроллеры, АЦП, память и т.д 1 06.09.2007 13:59


Часовой пояс GMT +4, время: 14:29.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.