реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> PIC16f628A и ЖК SC1602BULT-SH-HS-G, помогите разобраться
Anty
сообщение Apr 28 2008, 14:58
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



доброго времени суток! может кто-нибудь работал со строковыми ЖКИ. Интересует ЖК SC1602BULT-SH-HS-G , как его соединить с PICом. А вообще интересует написание проги для вывода инфы на дисплей. Немного не понимаю, как это делается. Может кто-нибудь пояснит. Или может у кого есть пример программы. Вообще интересует прога на ассемблере, но для уяснения сути дела можно и на любом другом.
Go to the top of the page
 
+Quote Post
*antzol*
сообщение Apr 28 2008, 15:53
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 6-11-07
Пользователь №: 32 085



С каким контроллером индикатор я не нашел, но сутя по выводам на каком-нибудь аналоге HD44780.
А примеры в яндексе... smile.gif
http://www.gaw.ru/html.cgi/txt/app/lcd/pic_to_44780.htm
http://schemz.narod.ru/LCD/lcd.htm
Go to the top of the page
 
+Quote Post
Okor
сообщение Apr 29 2008, 04:27
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 29-01-08
Пользователь №: 34 534



Добрый день.
Тут кусок моей программульки для ПИК18. На таймере TMR2 выполнены регламентируемые задержки, т.к. я без проверки загоняю данные в LCD. Пробовал с проверкой - особого выигрыша во времени нет.

С уважением, ОК


; - RD4-RD7 - выходы передачи данных на LCD в четырехразрядном режиме
; - RD3 - выход выбора LCD
; - RD2 - выход управления записью инструкций в LCD
; - RD1 - выход управления записью адреса в LCD


;************************************************************************
; Вывод верхней строки на экран из памяти по адресам 0x0060**
;************************************************************************
PrintStringUP:
movwf TBLPTRL
movlw 0x00
movwf TBLPTRU
movlw 0x60
movwf TBLPTRH
movlw 0x80
call LCD_Command
movlw d'16'
movwf CounterL
OutStringToLCD_UP:
tblrd*+
movf TABLAT,W
call LCD_Out
decfsz CounterL
goto OutStringToLCD_UP
return

;************************************************************************
; Вывод верхней строки на экран из памяти по адресам 0x0061**
;************************************************************************
PrintStringUP_1:
movwf TBLPTRL
movlw 0x00
movwf TBLPTRU
movlw 0x61
movwf TBLPTRH
movlw 0x80
call LCD_Command
movlw d'16'
movwf CounterL
OutStringToLCD_UP_1:
tblrd*+
movf TABLAT,W
call LCD_Out
decfsz CounterL
goto OutStringToLCD_UP_1
return

;************************************************************************
; Вывод нижней строки на экран из памяти по адресам 0x0060**
;************************************************************************
PrintStringDOWN:
movwf TBLPTRL
movlw 0x00
movwf TBLPTRU
movlw 0x60
movwf TBLPTRH
movlw 0xc0
call LCD_Command
movlw d'16'
movwf CounterL
OutStringToLCD_DOWN:
tblrd*+
movf TABLAT,W
call LCD_Out
decfsz CounterL
goto OutStringToLCD_DOWN
return

;************************************************************************
; Вывод нижней строки на экран из памяти по адресам 0x0061**
;************************************************************************
PrintStringDOWN_1:
movwf TBLPTRL
movlw 0x00
movwf TBLPTRU
movlw 0x61
movwf TBLPTRH
movlw 0xc0
call LCD_Command
movlw d'16'
movwf CounterL
OutStringToLCD_DOWN_1:
tblrd*+
movf TABLAT,W
call LCD_Out
decfsz CounterL
goto OutStringToLCD_DOWN_1
return

;************************************************************************
; Инициализация LCD в четырехзначном режиме. Здесь же подпрограммы управления LCD.
;************************************************************************
LCDinit:
movlw 0xff
call TimeDelayTMR2
movlw 0xff
call TimeDelayTMR2

bcf PORTD,1
bcf PORTD,2
bsf PORTD,3
movlw 0x30
call Out_Nibble
bcf PORTD,3
movlw 0xff
call TimeDelayTMR2

bcf PORTD,1
bcf PORTD,2
bsf PORTD,3
movlw 0x30
call Out_Nibble
bcf PORTD,3
movlw 0xff
call TimeDelayTMR2

bcf PORTD,1
bcf PORTD,2
bsf PORTD,3
movlw 0x30
call Out_Nibble
bcf PORTD,3
movlw 0xff
call TimeDelayTMR2

bcf PORTD,1
bcf PORTD,2
bsf PORTD,3
movlw 0x20
call Out_Nibble
bcf PORTD,3
movlw 0xff
call TimeDelayTMR2

movlw 0x28
call LCD_Command

movlw 0x0d
call LCD_Command

; Подпрограмма очистки дисплея
LCD_Clear:
movlw 0x01
call LCD_Command
movlw 0xff
call TimeDelayTMR2

movlw 0x06
call LCD_Command

movlw 0x00
call PrintStringUP
movlw 0x10
call PrintStringDOWN

return

; Подпрограмма отправки команды
LCD_Command:
bcf PORTD,1
bcf PORTD,2
movwf Value
bsf PORTD,3
call Out_Nibble
bcf PORTD,3
swapf Value,W
bsf PORTD,3
call Out_Nibble
bcf PORTD,3
movlw 0x02
call TimeDelayTMR2
return

; Подпрограмма вывода символа по адресу знакогенератора
LCD_Out:
bcf PORTD,1
bsf PORTD,2
movwf Value
bsf PORTD,3
call Out_Nibble
bcf PORTD,3
swapf Value,W
bsf PORTD,3
call Out_Nibble
bcf PORTD,3
movlw 0x02
call TimeDelayTMR2
return

; Подпрограмма загрузки четырехзначного канала
Out_Nibble:
movwf LCD_Data
bcf PORTD, 4
btfsc LCD_Data, 4
bsf PORTD, 4
bcf PORTD, 5
btfsc LCD_Data, 5
bsf PORTD, 5
bcf PORTD, 6
btfsc LCD_Data, 6
bsf PORTD, 6
bcf PORTD, 7
btfsc LCD_Data, 7
bsf PORTD, 7
return
Go to the top of the page
 
+Quote Post
Anty
сообщение Apr 29 2008, 17:43
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



спасибо за помощь, вроде начинаю понимать. А еще такой вопрос назрел: для вывода информации я просто задаю положение курсора на экране и вывожу нужный символ. Как я понял, можно указывать любую позицию из существующих. Так? И еще, там нет никаких приколов типа выбор кристалла или т.п. ?
Go to the top of the page
 
+Quote Post
dac
сообщение May 1 2008, 11:03
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



Цитата(Anty @ Apr 29 2008, 21:43) *
И еще, там нет никаких приколов типа выбор кристалла или т.п. ?

Там адресация нелинейная, даташит на HD44780. Или документацию на МЭЛТовские ЖКИ, там тоже, но по русски
Go to the top of the page
 
+Quote Post
Anty
сообщение May 5 2008, 12:49
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



Народ, помоги, пожалуйста. Написал прогу по примерам, которые вы мне оставили. вроде все правильно сделал. Пытаюсь проверить в proteus.(Проверять на реальном экране пока считаю бесполезным, пусть бы в протеусе заработала... ) Экран либо просто светиться (ничего не выводит), либо выводит какую то непонятную штуку, причем только в верхней строке, при установленном двухстрочном режиме.
Короче, приведу прогу написанную. Посмотрите, плиз, может найдете какую неточность.

PORTA 1 - RS
PORTA 2 - RW
PORTA 3 - E

PORTB 0..7 - DB0...7

LIST P=16F876
#include <p16f876.inc>

;----------------------------------------------------------------------------------------------------------------------------
; Секция заголовка
;

;биты регистра PORTA
RS EQU 01h
RW EQU 02h
E EQU 03h

; ячейки ОЗУ
TEMP EQU 21h
R0 EQU 20h


; Рабочая секция
;
; начало исполняемого кода


;------------ОБЩАЯ ИНИЦИАЛИЗВЦИЯ----------------
MAIN
CLRF PORTA
BSF STATUS,RP0 ;Выбор банка 1
MOVLW 0x00
MOVWF TRISA
BCF STATUS,RP0 ;Выбор банка 0
;---------------------
;инициализация PORTB
CLRF PORTB
BSF STATUS,RP0 ;Выбор банка 1
MOVLW 0x00 ; <7:0> - выходы
MOVWF TRISB
;BSF OPTION_REG,7 ; RBPU ; включили подтягтвающие регистры

BCF STATUS,RP0 ;Выбор банка 0
;---------------------
;инициализация PORTB
CLRF PORTC
BSF STATUS,RP0 ;Выбор банка 1
MOVLW 0x00 ; <7:0> - выходы
MOVWF TRISC
;BSF OPTION_REG,7 ; RBPU ; включили подтягтвающие регистры

BCF STATUS,RP0 ;Выбор банка 0

;----------------------------------------------


;==============ИНИЦИАЛИЗАЦИЯ LCD===========================

CLRW
MOVWF PORTA
BCF PORTA,RS
BCF PORTA,RW
BCF PORTA,E
MOVLW 3Fh
CALL DELAY1 ;задержка на 15мс



MOVLW 30h
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
MOVLW 11h
CALL DELAY1 ;задержка на 4мс

BSF PORTA,E
BCF PORTA,E ;_-_

CALL delay_100mks
BSF PORTA,E
BCF PORTA,E ;_-_

MOVLW 20h
CALL WRC

MOVLW 28h ;шина-4бит,2строки, 5х8 пикселей
CALL WRC

MOVLW 0Ch ;отображение- вкл без курсора
CALL WRC

MOVLW 06h ;
CALL WRC

MOVLW 01h ;очистить дисплей
CALL WRC
MOVLW 03h
CALL DELAY1 ;вместо опроса BUSY

CLRW
MOVWF PORTB
;Загрузка строки
MOVLW h'80'
CALL WRC
movlw h'65' ;"П"
call WRD ;
movlw h'84' ;"р"
call WRD ;
movlw h'b8' ;"и"
call WRD ;
movlw h'b3' ;в
call WRD ;
movlw h'65' ;"е"
call WRD ;
movlw h'bf' ;"т"
call WRD ;
movlw h'2c' ;","
call WRD ;
movlw h'20' ;Пробел
call WRD ;
;

;-----------ВТОРАЯ СТРОКА-----------------------------------------------------------------------
movlw 0xC0 ;
call WRC ;
movlw h'43' ;"C"
call WRD ;
movlw h'79' ;"у"
call WRD ;
movlw h'70' ;"р"
call WRD ;
movlw h'b4' ;"г"
call WRD ;
movlw h'79' ;"у"
call WRD ;
movlw h'bf' ;"т"
call WRD ;
movlw h'21' ;"!"
call WRD


CALL DELAY2
CALL DELAY2
CALL DELAY2
WAIT
BSF PORTA,0
GOTO WAIT

;======================================================================
; ПОДПРОГРАММЫ
;======================================================================

;===Запись кода команд LCD=========
WRC
BCF PORTA,RS
CLRF TEMP
BCF PORTA,RW
MOVWF TEMP
ANDLW 0F0h
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
SWAPF TEMP,0
ANDLW 0F0h
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
MOVLW 4h
CALL DELAY1 ;вместо опроса BUSY
RETURN

;===Запись кода данных LCD=========
WRD

BSF PORTA,RS
CLRF TEMP
BCF PORTA,RW
MOVWF TEMP
ANDLW 0F0h
;IORLW 02h ;оставить RS=1
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
SWAPF TEMP,0
ANDLW 0F0h
;IORLW 02h ;оставить RS=1
MOVWF PORTB
BSF PORTA,E
BCF PORTA,E ;_-_
MOVLW 4h
CALL DELAY1 ;вместо опроса BUSY
BCF PORTA,RS

RETURN


DELAY1 ;задержка на ... мс
MOVWF TEMP
DLOOP
MOVLW 0F0h
MOVWF R0
DECFSZ R0
GOTO $-1
DECFSZ TEMP
GOTO DLOOP
RETURN

DELAY2 ;задержка на 0.2сек
MOVLW 0FFh ;задержка
MOVWF TEMP
DLOOP2
MOVLW 0FFh
MOVWF R0

DECFSZ R0
GOTO $-1
DECFSZ TEMP
GOTO DLOOP2
RETURN

delay_100mks
movlw 0x30
movwf TEMP
nop
nop
decfsz TEMP, f
goto $-1
nop
return

delay_8mks
nop
nop
nop
nop
return


END

Сообщение отредактировал Anty - May 5 2008, 12:52
Go to the top of the page
 
+Quote Post
Okor
сообщение May 5 2008, 19:30
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 29-01-08
Пользователь №: 34 534



А Вы не забыли в четырехпроводном режиме подвесить остальные выводы LCD (с 0 по 3) на питание через сопротивления? Или по крайней мере, если они подсоединены к контроллеру, то отправлять, например не "Х0h", а "Хfh"?
И еще. У меня в LCD нет кириллицы - только латиница.
Go to the top of the page
 
+Quote Post
Anty
сообщение May 6 2008, 08:38
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



Цитата(Okor @ May 5 2008, 22:30) *
А Вы не забыли в четырехпроводном режиме подвесить остальные выводы LCD (с 0 по 3) на питание через сопротивления? Или по крайней мере, если они подсоединены к контроллеру, то отправлять, например не "Х0h", а "Хfh"?
И еще. У меня в LCD нет кириллицы - только латиница.


Ну вот кстати не знал про "Xfh". Но все равно не помогло. Все равно ничего не выводит. Я подумал, может тут проблема в задержках (может мало жду или много), переписал с модулем опроса готовности. Прога проходит до конца, т.е. флаг готовности постоянно разрешает идти дальше, а на экране пусто... Да и переписал на латинские буквы, тож не помогло...

А есть вообще конкретные цифры задержек после команд? А то в разных источниках пишут по разному и вроде все аналоги HD44780.
И может есть у кого-нибудь конкретный алгоритм инициализации и порядок вывода информации на экран?
Короче, везде пишут просто, а что-то мне уже так не кажется... wacko.gif
Go to the top of the page
 
+Quote Post
Vanizma
сообщение May 6 2008, 13:35
Сообщение #9





Группа: Новичок
Сообщений: 12
Регистрация: 4-05-08
Из: Pskov
Пользователь №: 37 266



Прикрепленный файл  WH2002M_YGH_CP.pdf ( 250.83 килобайт ) Кол-во скачиваний: 623
Цитата(Anty @ May 6 2008, 12:38) *
Ну вот кстати не знал про "Xfh". Но все равно не помогло. Все равно ничего не выводит. Я подумал, может тут проблема в задержках (может мало жду или много), переписал с модулем опроса готовности. Прога проходит до конца, т.е. флаг готовности постоянно разрешает идти дальше, а на экране пусто... Да и переписал на латинские буквы, тож не помогло...

А есть вообще конкретные цифры задержек после команд? А то в разных источниках пишут по разному и вроде все аналоги HD44780.
И может есть у кого-нибудь конкретный алгоритм инициализации и порядок вывода информации на экран?
Короче, везде пишут просто, а что-то мне уже так не кажется... wacko.gif


Проверь инициализацию. Первая команда после init - включить ЖКИ. Времена при инициализации лучше увеличить немного - 16 мс, 5 мс, 150мкс. Времена выполнения команд во всех источниках практически не отличаются: очистка,переход на начало - 1,53-1,6мс, запись данных 43 мкс, остальное 39-41 мкс. Я брал задержки - 44 мкс и 1,8 мкс.
Порядок вывода инфы: адрес - задержка на выполнение - строка данных - задержка на выполнение - переход на другую строку - .... Или адрес - задержка на выполнение - байт данных - задержка на выполнение - адрес - ....
Лучше конечно использовать флаг готовности. Не забудь, что в 4-х битном режиме нужно писать и читать всегда оба полубайта.
Ты бы лучше завел его в 8-ми битном режиме для начала, разобрался. А уж потом...
Go to the top of the page
 
+Quote Post
Vanizma
сообщение May 6 2008, 15:30
Сообщение #10





Группа: Новичок
Сообщений: 12
Регистрация: 4-05-08
Из: Pskov
Пользователь №: 37 266



Кстати, в proteus'e можно поменять кодировку ЖКИ LMXXXL на кодаровку с кириллицей. Нужно хакнуть файл LCDALPHA.DLL и перерисовать таблицу кодировки. можно хоть CP-1251 нарисовать.
Кому лень рисовать - могу поделиться.

Прикрепленный файл  SC1602B_1_.pdf ( 129.04 килобайт ) Кол-во скачиваний: 392
Прикрепленный файл  t13.pdf ( 114.58 килобайт ) Кол-во скачиваний: 410
Прикрепленный файл  t12.pdf ( 123.98 килобайт ) Кол-во скачиваний: 309
Прикрепленный файл  t10.11.pdf ( 70.88 килобайт ) Кол-во скачиваний: 307
Прикрепленный файл  t8.9.pdf ( 64.43 килобайт ) Кол-во скачиваний: 331
[attachment=207
3
4:attachment]
Цитата(Anty @ Apr 28 2008, 18:58) *
доброго времени суток! может кто-нибудь работал со строковыми ЖКИ. Интересует ЖК SC1602BULT-SH-HS-G , как его соединить с PICом. А вообще интересует написание проги для вывода инфы на дисплей. Немного не понимаю, как это делается. Может кто-нибудь пояснит. Или может у кого есть пример программы. Вообще интересует прога на ассемблере, но для уяснения сути дела можно и на любом другом.


Вся правда о твоем ЖКИ smile.gif Это http://www.sunlikedisplay.com/
аналоги тута: http://display.compel.ru/passive/passive_i...php?ser=SC1602B
Прикрепленные файлы
Прикрепленный файл  t05.07.pdf ( 108.29 килобайт ) Кол-во скачиваний: 178
 
Go to the top of the page
 
+Quote Post
Anty
сообщение May 7 2008, 08:31
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



Спасибо за ответы. Накопал много интересного и полезного. Буду изучать. Надеюсь, теперь получится. smile.gif
Go to the top of the page
 
+Quote Post
SYurev
сообщение Jul 19 2009, 03:42
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 22-11-06
Из: Пермь
Пользователь №: 22 604



Скажите, модель lcdalpha.dll поддерживает другие, кроме дефолтных, адреса строк?
К примеру по даташиту для WH1602D адреса начинаются с 0x00 и 0x40.
Прописываю их в модели и программе получаю пустой экран.
Возвращаю к дефолным модельным 0x80 и 0xC0 - всё работает как прежде...
Та же история и с 4-х строчником.

Сообщение отредактировал SYurev - Jul 19 2009, 03:43
Go to the top of the page
 
+Quote Post
volodya
сообщение Jul 21 2009, 04:35
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 194
Регистрация: 14-02-07
Из: УКРАИНА
Пользователь №: 25 344



Вообщето в комплекте MPLAB IDE прилагается библиотека в числе всего прочего библиотечка для работы с такой серией дисплеев. Хорошо прокоментировано, доступно для понимания. Рекомендую ознакомиться перед изобретением велосипеда.


--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть"
"Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
Go to the top of the page
 
+Quote Post
backa
сообщение Jul 21 2009, 09:49
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 313
Регистрация: 15-06-05
Из: Минск
Пользователь №: 6 028



Цитата(volodya @ Jul 21 2009, 07:35) *
Вообщето в комплекте MPLAB IDE прилагается библиотека в числе всего прочего библиотечка для работы с такой серией дисплеев. Хорошо прокоментировано, доступно для понимания. Рекомендую ознакомиться перед изобретением велосипеда.

хочу высказать своё мнение в разрезе данного вопроса . Я когда-то тоже долго мучался - не мог вывести буквы на дисплей - всё оказалось банально просто - наши люди не привыкли читать документацию(изучать матчасть) перед тем как что-то делать а студенты и подавно не утруждают себя таким пошлостями - ЧИТАТЬ перед тем как ДЕЛАТЬ - молодость даёт о себе знать- всё делать сходу "снахрапа" biggrin.gif
Скачайте любой дэйтшит на контроллер HD44700 и сделайте тютелька-в-тютельку как там "РАЗЖЁВАНО"!!!!!!! и особенно обратите внимание на времена задержек если не юзаете флаг готовности! В первую очередь читать ДОКИ а на чужих примерах лучше проверять насколько вы разобрались и находить чужие ошибки в исходниках! biggrin.gif
Могу при необходимости дать исходники СВОИ - но они на С! Настоятельно рекомендую не засижываться на АСМ - сам когда-то был его приверженцем пока коллега не "насильно" :-)) не заставил перейти на С о чём совсем не жалею . На асм денег не заработаешь - только как хобби! Но это уже ОффТоп...
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jul 21 2009, 23:02
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(backa @ Jul 21 2009, 12:49) *
хочу высказать своё мнение в разрезе данного вопроса . Я когда-то тоже долго мучался - не мог вывести буквы на дисплей - всё оказалось банально просто - наши люди не привыкли читать документацию(изучать матчасть) перед тем как что-то делать а студенты и подавно не утруждают себя таким пошлостями - ЧИТАТЬ перед тем как ДЕЛАТЬ - молодость даёт о себе знать- всё делать сходу "снахрапа" biggrin.gif
Скачайте любой дэйтшит на контроллер HD44700 и сделайте тютелька-в-тютельку как там "РАЗЖЁВАНО"!!!!!!!


И... процентов на 80 индикатор не заработает... biggrin.gif
Сейчас HD44780 ( а не HD44700) в чистом виде практически не применяется... Другие чипы, другие задержки, отличия в инициализации, плюс частые ошибки и неточности в PDF некоторых производителей...
Go to the top of the page
 
+Quote Post
backa
сообщение Jul 22 2009, 11:47
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 313
Регистрация: 15-06-05
Из: Минск
Пользователь №: 6 028



Цитата(HHIMERA @ Jul 22 2009, 02:02) *
И... процентов на 80 индикатор не заработает... biggrin.gif
Сейчас HD44780 ( а не HD44700) в чистом виде практически не применяется... Другие чипы, другие задержки, отличия в инициализации, плюс частые ошибки и неточности в PDF некоторых производителей...

согласен насчёт того что может стоять другой конроллер но в SC1602BULT 100%совместимый с HD44780 (навскидку не вспомнил точную маркировку :-)) ) стоит !!! Сам его использовал когда-то ...
Я пытался донести мысль что в 1 очередь надо немного почитать про то что хочешь ОСВОИТЬ а не сразу кидаться "писать" проги иди разбирать чужие проги !!!!!
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jul 23 2009, 10:53
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(HHIMERA @ Jul 22 2009, 03:02) *
И... процентов на 80 индикатор не заработает... biggrin.gif
Сейчас HD44780 ( а не HD44700) в чистом виде практически не применяется... Другие чипы, другие задержки, отличия в инициализации, плюс частые ошибки и неточности в PDF некоторых производителей...

Да ладно страсти-то рассказывать ! Клоны-не клоны, а совместимость заявляется и есть на практике (ну, у МЭЛТовских какие-то свои заморочки, но при достаточно экзотической логике работы с индикатором, чтобы на это попасть, надо специально постараться). Задержки регламентированы, и если соблюдать рекомендации в точности - работает всегда и везде... Что до "ошибок и неточностях в PDF" - так и не надо пользоваться "левыми" PDF. Есть родной тошибовский даташит - по нему и работать. Тонкости выплывают, когда модуль какой-нибудь нестандартный, с преобразователем питания, например.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 23 2009, 15:02
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(rx3apf @ Jul 23 2009, 16:53) *
Что до "ошибок и неточностях в PDF" - так и не надо пользоваться "левыми" PDF. Есть родной тошибовский даташит - по нему и работать.
"Родной" вообще-то от фирмы Hitachi. rolleyes.gif
Прикрепленные файлы
Прикрепленный файл  HD44780U.pdf ( 316.48 килобайт ) Кол-во скачиваний: 63
 
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jul 23 2009, 16:14
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(rezident @ Jul 23 2009, 19:02) *
"Родной" вообще-то от фирмы Hitachi. rolleyes.gif

Пардон, я оговорился...
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jul 23 2009, 19:41
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(rx3apf @ Jul 23 2009, 13:53) *
Да ладно страсти-то рассказывать ! Клоны-не клоны, а совместимость заявляется и есть на практике (ну, у МЭЛТовских какие-то свои заморочки, но при достаточно экзотической логике работы с индикатором, чтобы на это попасть, надо специально постараться). Задержки регламентированы, и если соблюдать рекомендации в точности - работает всегда и везде... Что до "ошибок и неточностях в PDF" - так и не надо пользоваться "левыми" PDF. Есть родной тошибовский даташит - по нему и работать. Тонкости выплывают, когда модуль какой-нибудь нестандартный, с преобразователем питания, например.


biggrin.gif
Да ну??? Неужели??? А два даташита на HD44780 и KS0066 сравнить слабо??? А как написано в PDF SC1602B, что KS0066 или совместимый - тоже ничего??? Т.е. там может стоять уже не HD44780 и не
KS0066, а что-то совместимое...

А теперь стриптиз... Голые факты...

BTHQ 22005VSS фирмы BATRON

NC1602A-BIW-TSN фирмы NEWTEC

Безымянный ЖКИ 16X1 с какого-то принтера, но с чипом HD44780

У всех трёх разная инициализация!!! Отличия не только в задержках, но и в количестве команд (на самом деле, а не по PDF)... И только у последнего, безымянного, полное совпадение с даташитом...

И насчёт PDF... Мне их читать не надо - я их наизусть выучил... biggrin.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 23 2009, 19:55
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(HHIMERA @ Jul 23 2009, 22:41) *
У всех трёх разная инициализация!!!

Это в раделе "примера"-отсебятины написанного каким-нибудь полуграмотным китайцем в левом китайском даташите она "разная", а в реале если действовать хоть чуть-чуть подумать все эти многочисленные клоны (не менее десятка совершенно разных от 1x16 до 4x40 прошли через меня) совершенно спокойно работают по одной процедуре инициализации вдумчиво написанной в процессе чтения единственного хитачевского мануала.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Jul 23 2009, 20:21
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Цитата(zltigo @ Jul 23 2009, 22:55) *
Это в раделе "примера"-отсебятины написанного каким-нибудь полуграмотным китайцем в левом китайском даташите она "разная", а в реале если действовать хоть чуть-чуть подумать все эти многочисленные клоны (не менее десятка абсолютно безвестных прошли через меня) совершенно спокойно работают по одной процедуре инициализации вдумчиво написанной в процессе чтения единственного хитачевского мануала.

При всём Уважении... Спорить я не буду, у меня то всё работает... Пройдитесь по форумам и посмотрите на количество вопросов по HD44780 "совместимых" индикаторов, что-то не совсем гладко и сладко... И топикстартеру никто толком не ответил... Так киньте ему Ваш универсальный пример, который "совершенно спокойно работает по одной процедуре инициализации вдумчиво написанной в процессе чтения единственного хитачевского мануала."... rolleyes.gif А я выделю время, чтобы взять все что у меня есть клоны, сдуть с них пыль и подключить... О результатах доложу...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jul 23 2009, 21:00
Сообщение #23


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(HHIMERA @ Jul 23 2009, 23:41) *
biggrin.gif
Да ну??? Неужели??? А два даташита на HD44780 и KS0066 сравнить слабо??? А как написано в PDF SC1602B, что KS0066 или совместимый - тоже ничего??? Т.е. там может стоять уже не HD44780 и не
KS0066, а что-то совместимое...

_Совместимое_. Со всеми вытекающими.
Цитата
А теперь стриптиз... Голые факты...

BTHQ 22005VSS фирмы BATRON

NC1602A-BIW-TSN фирмы NEWTEC

Безымянный ЖКИ 16X1 с какого-то принтера, но с чипом HD44780

У всех трёх разная инициализация!!!

Пока никакого "стриптиза" не вижу. PLS, конкретнее, в чем выражается "разная" инициализация ? Последовательность конкретных команд и задержек ?
Цитата
Отличия не только в задержках, но и в количестве команд (на самом деле, а не по PDF)... И только у последнего, безымянного, полное совпадение с даташитом...

В даташите на 44780 указаны диапазоны задержек. И, насколько помню, крайние случаи. Т.е. если выдержать худший вариант - все работает. Ну и фактически - да, работает (уж поработал я с ними изрядно, с самыми разными). Один раз написал инициализацию и копирую ее из проекта в проект, с разными индикаторами - ну ни разу никаких проблем.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 23 2009, 21:03
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(HHIMERA @ Jul 23 2009, 23:21) *
Пройдитесь по форумам и посмотрите на количество вопросов по HD44780 "совместимых" индикаторов, что-то не совсем гладко и сладко... И топикстартеру никто толком не ответил...

Да надоело просто даже читать дежурные вопросы sad.gif
Цитата
Так киньте ему Ваш универсальный пример....

В общем-то не жалко и помнится уже выкладывал, только 99,9% вопрошателей рассчитывают на волшебные решения и просто не смогут нормально привязать к железу sad.gif и диаграммы с гарантированными таймингами выстроить. Обычно ими вообще не заморачиваются, а там их довольно много гарантированных интервалов от 10ns, 20ns, 60ns, 230ns, 500ns, 1us, 2us. Кстати, сейчас глянул исходники - одно исключение было - Самсунговский клон выставлял бит готовности на 1/2 такта раньше, нежели был реально готов. Пришлось задержку добавить (из расчета на ~270KHz тактовой).
Цитата
А я выделю время, чтобы взять все что у меня есть клоны, сдуть с них пыль и подключить... О результатах доложу...

Клонов и у меня достаточно, а о результатах я доложил.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lastmage
сообщение Jul 25 2009, 18:49
Сообщение #25





Группа: Участник
Сообщений: 14
Регистрация: 2-06-09
Пользователь №: 49 837



Товарищ, вот здесь все подробно разжевано - как подключить ЖКИ к pic, как в него потом писать, восьмибитный интерфейс, четырехбитный интерфейс, ... Короче, читай.
http://radiohlam.ru
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 27 2009, 05:50
Сообщение #26


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(SYurev @ Jul 19 2009, 06:42) *
К примеру по даташиту для WH1602D адреса начинаются с 0x00 и 0x40.
Да. И именно с этих адресов начинаются строки в любом индикаторе на 44780-совместимом контроллере.
Цитата(SYurev @ Jul 19 2009, 06:42) *
Прописываю их в модели и программе получаю пустой экран.
Возвращаю к дефолным модельным 0x80 и 0xC0 - всё работает как прежде...
А теперь наконец прочитайте хоть один даташит, ссылками на которые вас тут просто завалили и разберитесь - где с коде 0xC0 адрес (и какой именно), а где - команда установки курсора.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
SYurev
сообщение Jul 28 2009, 07:46
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 22-11-06
Из: Пермь
Пользователь №: 22 604



Цитата(Сергей Борщ @ Jul 27 2009, 11:50) *
Да. И именно с этих адресов начинаются строки в любом индикаторе на 44780-совместимом контроллере.А теперь наконец прочитайте хоть один даташит, ссылками на которые вас тут просто завалили и разберитесь - где с коде 0xC0 адрес (и какой именно), а где - команда установки курсора.

В каком коде вы мне предлагаете разобраться уважаемый? Я его сам писал.
Цитата(Сергей Борщ @ Jul 27 2009, 11:50) *
Да. И именно с этих адресов начинаются строки в любом индикаторе на 44780-совместимом контроллере.

Не в любом.
Адреса у производителей могут отличаться, к прмеру у хитачевского LM044L, реализованного в протеусе, это 80, c0, 94, d4
Я использую WH2004D-YGH-CT, адреса строк там 00, 40, 14, 54.
Для этого в модели адреса доступны для изменения.

Впрочем я уже реализовал модель в железе, там с даташитными адресами всё прекрасно работает. Т.е. модель в протеусе игнорирует не дефолтные значения.

Сообщение отредактировал SYurev - Jul 28 2009, 07:48
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 28 2009, 10:31
Сообщение #28


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(SYurev @ Jul 28 2009, 10:46) *
В каком коде вы мне предлагаете разобраться уважаемый? Я его сам писал.
В шестнадцатиричном коде 0xC0.
Читайте по губам: 0x80, 0xC0 - это не адреса, это команда установки курсора и адрес в одном флаконе. Пока вы этого не поймете - у вас "адреса" будут отличаться.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
SYurev
сообщение Jul 28 2009, 11:57
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 22-11-06
Из: Пермь
Пользователь №: 22 604



Цитата(Сергей Борщ @ Jul 28 2009, 16:31) *
В шестнадцатиричном коде 0xC0.
Читайте по губам: 0x80, 0xC0 - это не адреса, это команда установки курсора и адрес в одном флаконе. Пока вы этого не поймете - у вас "адреса" будут отличаться.

Вообще то согласно того же даташита, старший бит при передаче адреса - код инструкции, остальные - адрес.
Маску 0x80 я накладываю на сформированный адрес после.
Покажите мне даташит, где сказано, что адреса строк указаны с учетом инструкции или где в документации на lcdalpha.dll об этом говорится?
Вот и получается, что в pdf от winstar адреса указаны честные, без бита инструкции, а в модели должна быть введена инструкция целиком.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 28 2009, 15:13
Сообщение #30


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(SYurev @ Jul 28 2009, 14:57) *
Покажите мне даташит, где сказано, что адреса строк указаны с учетом инструкции
Откройте любой даташит на HD44780 или клон, которых несколько выложено только на этой ветке форума, и в любом из низ написано, что адрес кодируется семью битами. Восьмой бит - код инструкции "установка курсора". А теперь сформируйте команду "установить курсор на начало второй строки" используя адрес 0x40 и "адрес" 0xC0. Что получилось в каждом случае?

Цитата(SYurev @ Jul 28 2009, 14:57) *
Вот и получается, что в pdf от winstar адреса указаны честные, без бита инструкции, а в модели должна быть введена инструкция целиком.
Я понятия не имею что за модель в протеусе, но наверное она управляется подачей сигналов на "входы" индикатора, точно так же, как и реальный индикатор. А реальному индикатору подать отдельно команду, отдельно адрес никак невозможно.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 28 2009, 15:36
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(SYurev @ Jul 28 2009, 13:46) *
Не в любом.
Адреса у производителей могут отличаться, к прмеру у хитачевского LM044L, реализованного в протеусе, это 80, c0, 94, d4
Я использую WH2004D-YGH-CT, адреса строк там 00, 40, 14, 54.
Для этого в модели адреса доступны для изменения.

Впрочем я уже реализовал модель в железе, там с даташитными адресами всё прекрасно работает. Т.е. модель в протеусе игнорирует не дефолтные значения.

Извините, что вмешиваюсь, но вы зачем-то смешиваете устройство (аппаратное, железное, материальное) и его модель. Зачем? Чтобы показать, что модели могут быть разные, в т.ч. и неправильные (неверно изображающее аппаратное устройство)?
Ради интереса скачал даташит упомянутого LM044L. Там банальная ошибка составителей описания. laughing.gif В таблице DISPLAY POSITION AND DD RAM ADDRESS указаны адреса вместе с кодом команды установки (0x80). Т.е. адреса-то строк вполне стандартные для 4-х строчных 20-и символьных LCD на базе HD44780, типа упомянутого вами же WH2004D (0x00, 0x40, 0x14, 0x54), но записаны неправильно.
Все-таки раз в datsheet LCD указано HD44780 build-in или KS0069 build-in, то и руководством должен быть datasheet указанного контроллера, а не какие-то абстрактные модели в какой-то программе Proteus wink.gif
Go to the top of the page
 
+Quote Post
SYurev
сообщение Jul 28 2009, 16:07
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 22-11-06
Из: Пермь
Пользователь №: 22 604



Цитата(rezident @ Jul 28 2009, 21:36) *
Там банальная ошибка составителей описания.

Вот это меня и ввело в заблуждение, адреса там с учетом бита инструкции...
Теперь разобрался. smile3046.gif
Go to the top of the page
 
+Quote Post
RA3WUM
сообщение Aug 28 2009, 07:14
Сообщение #33


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 22-02-07
Пользователь №: 25 578



Был у нас проект на микротипсовском HD44780-подобном жк.
Сколько мы на него времени убили чтоб нормально инициализировался просто жуть...
В результате взяли команды инициализации из статьи журнала Радио 2001 №4.
Невероятно но факт, радиогубительство иногда бывает востребовано. smile.gif

Сообщение отредактировал RA3WUM - Aug 28 2009, 07:17


--------------------
Мужество есть лишь у тех, кто ощутил сердцем страх!
В. Кипелов, Беги за солнцем.
Go to the top of the page
 
+Quote Post
R-Max
сообщение Feb 20 2011, 15:01
Сообщение #34





Группа: Участник
Сообщений: 5
Регистрация: 21-02-09
Пользователь №: 45 186



Немного не там, но вывожу 2 символа на первую строку на LM044L в 4-битном режиме, в Proteus пропадает первый символ, а в Multisim всё работаект, где собака порылась??? И как заменить кодовые страницы в dll

Сообщение отредактировал R-Max - Feb 20 2011, 15:02
Go to the top of the page
 
+Quote Post
R-Max
сообщение Feb 20 2011, 19:50
Сообщение #35





Группа: Участник
Сообщений: 5
Регистрация: 21-02-09
Пользователь №: 45 186



Вывожу 2 символа на первую строку на LM044L в 4-битном режиме в Proteus -> пропадает первый символ, а в Multisim на HD44780 всё работаект, где собака порылась???

Сообщение отредактировал R-Max - Feb 20 2011, 19:50
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 20 2011, 20:43
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(R-Max @ Feb 21 2011, 00:50) *
где собака порылась???
В коде. Генетическом. Работу устройства нужно проверять на реальном устройстве, а не в симуляторах, имеющих весьма сомнительные модели, проверяемого устройства.
Go to the top of the page
 
+Quote Post
R-Max
сообщение Feb 22 2011, 20:55
Сообщение #37





Группа: Участник
Сообщений: 5
Регистрация: 21-02-09
Пользователь №: 45 186



В железе тоже неадекватно работало, поэтому решил симулятором побаловаться.
А проблему решил увеличением временных задержкек из даташита в 10 раз и дополнительной командой при инициализации. Proteus в отличие от Multisim ниче так ЖК симулирует и кодировку можно в нем менять и обсчитывает схему побыстрее.

Сообщение отредактировал R-Max - Feb 22 2011, 20:59
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 21:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01764 секунд с 7
ELECTRONIX ©2004-2016