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

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

Сообщение medved10 »

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

Сообщение Chiper »

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


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

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

Сообщение vitalik_1984 »

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

Сообщение Chiper »

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

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

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



.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 КБ) 419 скачиваний
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

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

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

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

ldi temp,0X31;выводим "1"
out portb,temp;
превратится в

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

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

Сообщение 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 Кстати у вас вроде даже на картинке протеуса нет контакта между контроллером и дисплеем.
В поисках истины человек развивается.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Вс май 15, 2011 11:21:59

Сообщение 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 КБ) 179 скачиваний
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

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

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

Сообщение 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");
                                                           
      }
}
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Вс май 15, 2011 11:21:59

Сообщение central30 »

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

Сообщение vitalik_1984 »

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

Сообщение medved10 »

medved10 писал(а):всем здрасьте :))
имеется прога для 2 строчного M202MD15AJ
требуется переделать для работы с 4 строчным 036x3-124-09420
в даташите противоречие про busy
написано что высокий уровень для записи а на диаграммах наоборот
выводится только мигающий курсор и не управляется совсем(
подскажите мне... :sleep:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

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

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

Сообщение medved10 »

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

Сообщение vitalik_1984 »

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

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

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

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

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

Сообщение zero648 »

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

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

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

Сообщение vitalik_1984 »

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

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

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