Работа с ЖКИ на контроллере HD44780 и его аналогах
- ВСЕГДА НА СВЯЗИ
- Открыл глаза
- Сообщения: 55
- Зарегистрирован: Сб апр 16, 2011 19:55:15
- Откуда: Красноярский край
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Друзья, будьте добры, подскажите пожалуйста. Есть пару дисплеев с контроллерами, с DVD. Хочу поставить в свой самодельный трансивер для указания рабочей частоты и других функций. Как их туда можно подогнать? Нужно ли будет перепрограммировать контроллеры или что то добавить ещё. Ранее с этим не занимался, поэтому прошу подсказки. Заранее спасибо.
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Можно все, но не все могут
А вообще если серьезно, какой контроллер для начала на этих дисплеях.Ищем информацию на контроллер, работаем.
А вообще если серьезно, какой контроллер для начала на этих дисплеях.Ищем информацию на контроллер, работаем.
В поисках истины человек развивается.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Если при подключении сигнала RS с выхода Pic к индикатору, на выходах DB0..DB7, Е,RS сигнал по форме http://www.lcdinfo.ru/data/lcd/lcd.pdf (страница 12) меняется на отрицательную постоянку, то индикатор труп ? Квадраты на верхней строке при этом высвечиваются нормально.
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
а нога чтения/записи в каком состоянии?Для перевода дисплея в режим чтения нужно ногу R/W к земле притянуть.В этом режиме никакие сигналы из дисплея не должны выходить.Если притянули и все еще ноги на минусе, то конечно труп.
Там же русский даташит, почему вообще вопросы возникают?
Там же русский даташит, почему вообще вопросы возникают?
В поисках истины человек развивается.
-
mr.boroda
- Встал на лапы
- Сообщения: 124
- Зарегистрирован: Вт июл 10, 2012 00:13:27
- Откуда: Белгородская обл.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
что то перестал дисплей wg1602 работать высвечивает в первой строке мелькающие горизонтальные полоски, в каждом разряде на разном расстоянии.
контраст крутил - не помогает...
это конец ему?
контраст крутил - не помогает...
это конец ему?
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
нужно внимательно проверять все уровни в том числе и питания.Как раз дисплей загорается всплеском индикаторов,потом уже нормально верхнюю строку заполняет.
В поисках истины человек развивается.
-
mr.boroda
- Встал на лапы
- Сообщения: 124
- Зарегистрирован: Вт июл 10, 2012 00:13:27
- Откуда: Белгородская обл.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
vitalik_1984 писал(а):нужно внимательно проверять все уровни в том числе и питания.Как раз дисплей загорается всплеском индикаторов,потом уже нормально верхнюю строку заполняет.
проблема оказалась не в железе, а скорее всего в cvavr))
когда использую библиотеку alcd.h - все работает, если использую lcd.h или lcd_rus.h - то никак... завтра подробней... седня уже спать пойду...
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
а нога чтения/записи в каком состоянии?Для перевода дисплея в режим чтения нужно ногу R/W к земле притянуть.В этом режиме никакие сигналы из дисплея не должны выходить.Если притянули и все еще ноги на минусе, то конечно труп.
К минусу RW притянут. Если сигнал RS от дисплея отключить то на Е, RS и на каналах данных DB0...7 как и положено есть импульс, при подключении RS к дисплею, на всех каналах кроме Е показывает вместо импульса -0,4в.
Там же русский даташит, почему вообще вопросы возникают?
Там - это где ? Видел только на английском.
-
mr.boroda
- Встал на лапы
- Сообщения: 124
- Зарегистрирован: Вт июл 10, 2012 00:13:27
- Откуда: Белгородская обл.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
В общем то гадал сегодня, так ниче и не получилось.
Если используюстандартную библиотеку alcd.h - работает
Если же подключаю lcd_rus.h или просто стандартную lcd.h то не хочет(при замене строки #include <alcd.h> ), выводит только мигающий сегмент...
Вот код, может где то недописал?
и еще вопрос вывожу не экран время и если время 13:05:04, то выводит 13:5:4... Чтоб вывести с нулями это мне нужно на разряды разложить и по разряду выводить?
Если используюстандартную библиотеку alcd.h - работает
Если же подключаю lcd_rus.h или просто стандартную lcd.h то не хочет(при замене строки #include <alcd.h> ), выводит только мигающий сегмент...
Вот код, может где то недописал?
Код: Выделить всё
#include <mega8.h>
#include <1wire.h>
#include <stdio.h>
#include <delay.h>
#include <ds18b20.h>
#asm
.equ __lcd_port=0x12; PORTD /* ЖКИ дисплей подключили к порту I/O D*/
#endasm
#include <alcd.h>
unsigned char min,sek,chas,T,lcd_buffer[33];
int temp;
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Place your code here
T++;
if (T==200){T=0;sek++;};
if (sek==60){sek=0;min++;};
if (min==60){min=0;chas++;};
if (chas==24){chas=0;};
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=In Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=P State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x20;
DDRB=0xDF;
// Port C initialization
// Func6=Out Func5=In Func4=Out Func3=In Func2=In Func1=In Func0=Out
// State6=0 State5=P State4=0 State3=P State2=P State1=P State0=0
PORTC=0x2E;
DDRC=0x51;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 1500,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x0A;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AH=0x1D;
OCR1AL=0x4C;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x10;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// 1 Wire Bus initialization
// 1 Wire Data port: PORTB
// 1 Wire Data bit: 5
// Note: 1 Wire port settings must be specified in the
// Project|Configure|C Compiler|Libraries|1 Wire IDE menu.
w1_init();
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 7
// RD - PORTD Bit 6
// EN - PORTD Bit 5
// D4 - PORTD Bit 3
// D5 - PORTD Bit 2
// D6 - PORTD Bit 1
// D7 - PORTD Bit 0
// Characters/line: 8
ds18b20_init(0, 0, 60, DS18B20_12BIT_RES);
lcd_init(16);
PORTC.0=1;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
lcd_clear(); /* очистка дисплея */
lcd_gotoxy(0,0); /* верхняя строка, 0 позиция */
lcd_putsf("fack"); /* выводим надпись в указанных координатах */
lcd_gotoxy(0,1); /* нижняя строка, 0 позиция */
sprintf(lcd_buffer,"%u:%u:%u - %u gr",chas,min,sek,temp); /* заполняем буфер */
lcd_puts(lcd_buffer); /* выводим надпись в указанных координатах */
if (PINC.5==0){chas++;};
if (PINC.3==0){min++;};
temp=ds18b20_temperature(0);
delay_ms(100);
}
}
и еще вопрос вывожу не экран время и если время 13:05:04, то выводит 13:5:4... Чтоб вывести с нулями это мне нужно на разряды разложить и по разряду выводить?
- Вложения
-
- Фото0338.jpg
- когда lcd или lcd_rus
- (173.83 КБ) 533 скачивания
-
- Фото0339.jpg
- когда библиотека alcd.h
- (162.23 КБ) 496 скачиваний
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
mr.boroda писал(а):и еще вопрос вывожу не экран время и если время 13:05:04, то выводит 13:5:4... Чтоб вывести с нулями это мне нужно на разряды разложить и по разряду выводить?
Код: Выделить всё
sprintf(lcd_buffer,"%02u:%02u:%02u - %2u gr",chas,min,sek,temp); /* заполняем буфер */А потом садимся и внимательно читаем сказку о предмете... http://ru.wikipedia.org/wiki/Printf
А потом становимся умные-умные. И учим других..
С уважением,
Виктор.
Виктор.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Странно. Тогда почему возник вопрос? Там ведь все четко расписано. Если непонятно, а под рукой есть отлаживаемое устройство с рабочим дисплеем, что мешает все неясные вопросы перепробовать на макете? Другие на Протезусе тренируются, говорят, тоже помогает...mr.boroda писал(а):http://mega-avr.ucoz.ru/publ/1 вот тут читал...
С уважением,
Виктор.
Виктор.
-
Biggy
- Открыл глаза
- Сообщения: 71
- Зарегистрирован: Вт дек 09, 2008 20:54:30
- Откуда: Златоуст
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
А как на экран вывести русские символы. Нашел не помню уж где программу - перекодировщик LCD20 (в приложении).
В результате ее работы словосочетание "Русский язык" преобразуется в
Как это скормить дисплею?
В результате ее работы словосочетание "Русский язык" преобразуется в
Код: Выделить всё
Db 50h,79h,63h,63h,0BAh,0B8h,0B9h,20h,0C7h,0B7h,0C3h,0BAh,20h,20h,20h,20hКак это скормить дисплею?
- Вложения
-
- LCD20.zip
- (125.01 КБ) 211 скачиваний

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Вопрос. Вы прикинули, насколько информативна выложенная часть кода? В процентах от общего объема. Как у кого, у меня пропадает желание вылущивать оттуда полезную часть. Вы бы потрудились убрать из текста все то, что вам "волшебник" кодвижна нагенерировал, там почти все абсолютно ненужное. Поберегите чужое время.mr.boroda писал(а):Вот код, может где то недописал?Код: Выделить всё
Далее много всякого
Обработчик прерывания будет выполняться быстрее, если его переписать:
Код: Выделить всё
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Place your code here
if( ++T != 200 ) return;
T = 0; if( ++second != 60 ) return;
second = 0; if( ++minutes != 60 ) return;
minutes = 0; if( ++hours != 24 ) return;
hours = 0;
}Хотя в вашем тренировочном варианте это не так уж и важно, но приучайте себя к оптимизации обработчиков по быстродействию. Иногда бывает полезно.
Пусть вас не пугает обилие операторов возврата. Компилятор их превратит в джампы на точку выхода из обработчика. Вообще, при написании на Си желательно "видеть", во что компилятор превратит вами написанное.
Последний раз редактировалось ut1wpr Сб сен 08, 2012 08:50:27, всего редактировалось 1 раз.
С уважением,
Виктор.
Виктор.
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
ut1wpr писал(а):Вы бы потрудились убрать .... все абсолютно ненужное. Поберегите чужое время.
Согласен полностью, и к тому же еще и без спойлера такой большой код.
В поисках истины человек развивается.
-
Biggy
- Открыл глаза
- Сообщения: 71
- Зарегистрирован: Вт дек 09, 2008 20:54:30
- Откуда: Златоуст
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
А как очистить содержимое экрана. Команда
0х01 не помогает.
0х01 не помогает.

- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Судя по даташиту команда очистки экрана заполняет символами 0x20 - (пробелы) весь дисплей.Можете поступить аналогичным образом.
Ну а вообще хотелось бы посмотреть каким образом команда отсылается.
Ну а вообще хотелось бы посмотреть каким образом команда отсылается.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добрый день .У меня такой вопрос,может быть он ламерский ,но информацию по нему не могу нигде найти.Мне нужно вывести часы на LCD 20x4,но так чтобы размер цифр был не на одну строку ,а на 2 или 3 строки типа такого .Если кто знает поделитесь как или подскажите где можно найти информацию по этой теме
- Вложения
-
- IMG_0909.1.jpg
- (48.08 КБ) 346 скачиваний
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
8 первых символов с номером 0...7 находятся в области CGRAM и их изображение может задавать пользователь, т.е. вы. Вам нужно записать туда разные 'кубики' и из них строить изображение цифр. Многие библиотеки выложенные в этой ветке имеют функции для определения пользовательских символов. Это на тот случай если ваша не имеет такойсвозможности.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
можно более подробно что и как