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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
medved10
Родился
Сообщения: 4
Зарегистрирован: Вт июл 24, 2012 18:07:38

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

Сообщение medved10 »

всем здрасьте :))
имеется прога для 2 строчного M202MD15AJ
требуется переделать для работы с 4 строчным 036x3-124-09420
в даташите противоречие про busy
написано что высокий уровень для записи а на диаграммах наоборот
выводится только мигающий курсор и не управляется совсем(
Аватара пользователя
Chiper
Грызет канифоль
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

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

Сообщение Chiper »

Имеется дисплей Winstar WH1602L-PGP-CT.


Хочу использовать в проекте одновременно прогрессбар, для отображения при регулировке параметров, и визуальный эквалайзер. Соответсвенно для отображения горизонтальных стобиков в первом случае, и вертикальных для эквалайзера. При этом 8 "своих" символов маловато. Вот я хочу, перепрошивать таблицу символов по мере необходимости :) Для эквалайзера однин набор символов, а для прогрессбара другой.

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

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

Сообщение vitalik_1984 »

если хорошенько подумать,можно уменьшить количество необходимых символов.Например для прогресс бара достаточно трех символов, если использовать во всю длину сроки
а для эквалайзера можно использовать уже имеющийся символ _ 8)
В поисках истины человек развивается.
Аватара пользователя
Chiper
Грызет канифоль
Сообщения: 251
Зарегистрирован: Ср окт 07, 2009 18:37:22
Откуда: BMSTU

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

Сообщение Chiper »

Да нет, это не солидно....
Я хочу нормальный прогрессбар и нормальные столбики с плавным попиксельным заполнением, в 8 символов тут никак не уложиться несмотря на то, что есть символ нижнего подчёркивания и полностью заполненный квадратик в таблице символов :)
Так что там по поводу реал-тайм перезаписи ПЗУ ?
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

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

Сообщение спящий »

здравствуйте, уже все перепробывал немогу найти ошибку,хочу чтобы хоть пиксель появился)



.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m48def.inc"
.nolist
.list

.def temp = r16;
.def counter = r17;
.def delay = r25;
.def delay1 = r18;
.def delay2 = r19;

rjmp init;
zapoln:
ldi delay,0x01;
ldi delay1,0x5;

;задерка
loop:
subi delay,1;
sbci delay1,0;
brcc loop;
ret


init:
clr temp;

ldi temp,0b00000001;настраиваем LCD на команду (E=1,RS=0)
out portd,temp;
ldi temp,0b00111000;выбираем 8-битную передачу
out PORTB,temp;
rcall zapoln;тупо задержка

ldi temp,0b00001100;включили дисплей
out PORTB,temp;

rcall zapoln;

ldi temp,0b00000001;очистили дисплей
out PORTB,temp;

rcall zapoln;задержка

ldi temp,0b10000001;задаем запись в DDRaM(на экран)
out PORTB,temp;

rcall zapoln;задержка

ldi temp,0b00000101;настраиваем LCD на данные (E=1,RS=1)
out portd,temp;
rcall zapoln;задержка

start:
ldi temp,0X31;выводим "1"
out portb,temp;

rjmp start;



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

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

Сообщение vitalik_1984 »

насколько я понял, дисплей ожидает увидеть падающий фронт на ноге enable при готовых других ногах.
то есть вам нужно сначала настроить команда, данные, а потом активировать низким уровнем.
вроде даже при каждой смене команды или данных нужно дергать ногой.
Пусть меня специалисты поправят.
тоже все собираюсь такой же дисплей запустить, все руки ну доходят.лежит мертвым грузом пока что.

и делайте макросы ваш

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

ldi temp,0X31;выводим "1"
out portb,temp;

превратится в

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

.
outi portb,0X31;выводим "1"

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

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

Сообщение vitalik_1984 »

Посмотрел на ваш код скомпилировал действительно не показывает символы.
Немного отредактировал, чтобы читаемо было

Спойлер

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


.include <m48Pdef.inc>

.def temp = r16;
.def counter = r17;
.def delay = r25;
.def delay1 = r18;
.def delay2 = r19;

.macro outi ; макрос вывода константы в порт
   ldi temp,@1
   out @0,temp
.endm

.macro ENABLE; макрос активировать дисплей
   cbi PORTD,0
.endm

.macro SET_COMAND
   outi PORTD,0b00000001;настраиваем LCD на команду (E=1,RS=0)
.endm

.macro SET_DATA
   outi PORTD,0b00000101;настраиваем LCD на данные (E=1,RS=1)
.endm

.list
.macro SEND_BITE
   outi PORTB,@0;выводим данные
   nop
   ENABLE ;активируем дисплей
.endm
.nolist

rjmp init;
Wait_busy:
ldi delay,0x02;
Wait:
ldi delay1,0x05;

;задержка
loop:
dec delay1;
brne loop;
dec delay;
brne loop;
ret

init:
outi DDRB,0xFF
outi DDRD,0b00000101

SET_COMAND
SEND_BITE 0b00111000;выбираем 8-битную передачу
rcall Wait;тупо задержка


SET_COMAND
SEND_BITE 0b00001100;включили дисплей
rcall Wait;

SET_COMAND
SEND_BITE 0b00000001;очистили дисплей
rcall Wait;задержка

SET_DATA
SEND_BITE 0x31
rcall Wait;задержка

SET_DATA
SEND_BITE 0x32
rcall Wait_busy;задержка

SET_DATA
SEND_BITE 0x33
rcall Wait;задержка

start:
rjmp start;

И заметил, что протеус сообщает о том, что контроллер принимает данные, пока занят
Увеличил паузу.Теперь выводит символы
Смотрите по даташиту какая команда дисплея сколько требует времени и считайте сколько в цикле тупить для вашей частоты процессора.
Занимайтесь :solder:

PS Кстати у вас вроде даже на картинке протеуса нет контакта между контроллером и дисплеем.
В поисках истины человек развивается.
central30
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Вс май 15, 2011 11:21:59

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

Сообщение central30 »

Добрый день!Нужна ваша подсказка!Сейчас делаю заказ одного исполнительного устройства с выводом на LCD,тоесть нажал одну кнопку,пишет какое то слово,нажал другую,пишет другое слово.Это не важно.В чем собственно вопрос,выводить информацию надо на турецком языке.Тоесть надо мне добавить еще 4 пользовательских символа(Ş),(Ç)и т.д.Преобразовал эти буквы,проверил в протеусе,на железе пока не проверяю.Вообщем эти самые символы моргают в слове (ÇALIŞIR)Может я не так что делаю

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

#include <mega8.h>

 #asm
  .equ _lcd_port=0x18
  #endasm
#include <alcd.h>
#include <delay.h>
typedef unsigned char byte;
flash byte char0[8]={
0b0001110,//S
0b0010001,
0b0010000,
0b0001110,
0b0000001,
0b0010101,
0b0001110,
0b0000000};
flash byte char1[8]={
0b0001110,//C
0b0010001,
0b0010000,
0b0010000,
0b0010000,
0b0010101,
0b0001110,
0b0000000};

void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3)|0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
void main(void)
{
PORTC=0x3F;
DDRC=0x00;
PORTD=0xFF;
DDRD=0xFF;


lcd_init(20);

lcd_putsf("     KLIMATEX     ");//выводим информацию
delay_ms(3000);//ждем 3 секунды
lcd_clear();//очистка дисплея
define_char(char0,0);
define_char(char1,1);

while (1)

      {   
          lcd_gotoxy(7,0);           
          lcd_putsf("ALI IR");
          lcd_gotoxy(6,0);
          lcd_putchar(1);
          lcd_gotoxy(10,0);
          lcd_putchar(0);
                                                               
      }
}
Вложения
PULT.rar
Исходник и протеус в архиве
(16.2 КБ) 177 скачиваний
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

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

Сообщение zero648 »

Думаю, может в параметрах функции поставить не 0 а 1 :dont_know: ? Моргает только этот символ.

define_char(char0,1);
define_char(char1,1);
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

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

Сообщение zero648 »

Я кажись понял, тебенадо вот эту строку выводить отдельно, пробел перекрывает.

lcd_putsf("ALI IR");

Сделай вот так:

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

while (1)

      {   
          lcd_gotoxy(6,0);
          lcd_putchar(1);
          lcd_gotoxy(7,0);           
          lcd_putsf("ALI");
          lcd_gotoxy(10,0);
          lcd_putchar(0);
          lcd_gotoxy(11,0);           
          lcd_putsf("IR");
                                                           
      }
}
central30
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Вс май 15, 2011 11:21:59

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

Сообщение central30 »

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

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

Сообщение vitalik_1984 »

конечно через дефайн можно.
я так понимаю что у созданных символов есть свои адреса?
создаешь строку в виде массива с адресами нужных букв.
в массиве пишешь свои буквы, потом этот массив скармливаешь дисплею.можно и через путсф вроде как.
что там у нас массив может вывести?
В поисках истины человек развивается.
medved10
Родился
Сообщения: 4
Зарегистрирован: Вт июл 24, 2012 18:07:38

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

Сообщение medved10 »

medved10 писал(а):всем здрасьте :))
имеется прога для 2 строчного M202MD15AJ
требуется переделать для работы с 4 строчным 036x3-124-09420
в даташите противоречие про busy
написано что высокий уровень для записи а на диаграммах наоборот
выводится только мигающий курсор и не управляется совсем(


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

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

Сообщение vitalik_1984 »

что подсказать то?

мало информации.
что на что меняете даташит на оба, какая программа, как хотите поменять?
В поисках истины человек развивается.
medved10
Родился
Сообщения: 4
Зарегистрирован: Вт июл 24, 2012 18:07:38

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

Сообщение medved10 »

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

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

Сообщение vitalik_1984 »

теперь сразу все стало ясно :))) что ж вы сразу то не сказали.

может вы нам пример программы своей дадите, а то непонятно что вы хотите поменять. и почему не работает у вас.
В поисках истины человек развивается.
Аватара пользователя
I-Basil
Потрогал лапой паяльник
Сообщения: 316
Зарегистрирован: Сб сен 04, 2010 22:04:39
Откуда: Украина

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

Сообщение I-Basil »

Уважаемые коты! Может быть, я не совсем по теме, поэтому заранее извиняюсь. Имеется индикатор WH1602B- YGH - CTK# (хотя, "узкоплёночные" братья как всегда слукавили, наклеив сей лейбл поверх WH1602F :( ). Неожиданно проявился вот такой дефект, хотя прежде всё было ОК"
дефект.jpg
(93.05 КБ) 523 скачивания

Ошибка монтажа исключена, проверено на других устройствах и с аналогичными индикаторами, "тестовые полоски" показал преднамеренно, чтобы было видно - какие элементы не высвечиваются... Подскажите пожалуйста - ЭТО дефект чипа ( платы ) или самого ЖК?

З.Ы : В режиме 8Х2 работает нормально, но всё-таки как-то обидно использовать в этом режиме 16х2 :cry:
"... Не НАДО изобретать велосипед, а НЕОБХОДИМО!"
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

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

Сообщение zero648 »

Либо контакты у дисплея хреновые, либо на выходе контроллера дисплея косяк, под пластмасской наверно резинки, прижаты плохо может?
Аватара пользователя
I-Basil
Потрогал лапой паяльник
Сообщения: 316
Зарегистрирован: Сб сен 04, 2010 22:04:39
Откуда: Украина

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

Сообщение I-Basil »

Проверял, разобрал индикатор "до винтика"... Контакт вроде бы неплохой - на резинках имеются отпечаткки контактных площадок, крепежи затянул "с пристрастием" :) , но результата нет :cry: ... Попробую ещё феном с паяльной станции на работе прогреть. Таким "макаром" удалось "реанимировать" видюхи, может и здесь поможет :(
"... Не НАДО изобретать велосипед, а НЕОБХОДИМО!"
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Не вздумайте вместе с резинками там феном шурудить.Только хуже сделаете.

А не пробовали весь экран заполнять? может понятнее картинка станет?
В поисках истины человек развивается.
Ответить

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