Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.13.255] |
|
Сообщ.
#1
,
|
|
|
Очень интересует реализация вывода на ЖКИ(на ассемблере) для AVR. Если есть, поделитесь, пожалуйста. А то моя не пашет
|
Сообщ.
#2
,
|
|
|
Цитата COOLibin @ реализация вывода на ЖКИ(на ассемблере) Есть на Bolimin SC1602ESLB на Пик 18F452 (и даже рабочая) Процессор ЖКИ - Hitachi KS066 (стандарт), если не путаю. Посмотри подойдет стандарт к твоему ЖКИ??? Или ссылку на даташит дай. Добавлено Цитата COOLibin @ А то моя не пашет Кинь на мыло если не трудно. |
Сообщ.
#3
,
|
|
|
Взял отсюда: Сопряжение AVR-микроконтроллеров и ЖКИ и немного переделал
|
Сообщ.
#4
,
|
|
|
Посмотрел...ну очень похоже.
Цитата COOLibin @ А то моя не пашет Показывай инициализацию контроллера ЖКИ (как у тебя в программе идет) + схему включения.Чудес обычно не бывает. И опиши что именно не работает??? Вообще ничего не выводится или как??? Дисплей вкл. курсор есть??? |
Сообщ.
#5
,
|
|
|
Хм...ну что я могу сказать:
icom_2313: swap r25 ;подготовить старшую тетраду для передачи mov r26,r25 andi r26,$ef ;очистка бита 4 порта D (сигнал RS=0) ori r26,$e0 ;установка бита 5 порта D ( сигнал E=1) out portd,r26 nop nop nop nop cbi portd, 5 ;стробирующий сброс бита 5 порта D ( сигнал E=0). out portd,r26 ori r26,$e0 ;установка бита 5 порта D ( сигнал E=1) nop nop nop |
Сообщ.
#6
,
|
|
|
Цитата Начнем с того, что данные должны висеть на порту Д до подачи импульса стробирования Е Чего не скажешь по временным диаграммам |
Сообщ.
#7
,
|
|
|
Цитата COOLibin @ Чего не скажешь по временным диаграммам Согласен, но сам на это налетал, поэтому зачем грабли создавать???? Даташит смотрел??? |
Сообщ.
#8
,
|
|
|
А можно RS выставить одновременно с данными?
|
Сообщ.
#9
,
|
|
|
Всё равно не пашет:)
Вот основные функции: INITLCD: ldi r25, 0x20 rcall ICOM_2313 rcall DELAY_50_MKS ldi r25, 0x0F rcall ICOM_2313 rcall DELAY_50_MKS ldi r25, 0x20 rcall ICOM_2313 rcall DELAY_50_MKS ldi r25, 0x01 rcall ICOM_2313 rcall DELAY_50_MKS ret icom_2313: swap r25 mov r26, r25 andi r26, 0x0F out PORTD, r26 cbi PORTD, 4 nop sbi PORTD, 5 nop nop nop nop nop cbi PORTD, 5 swap r25 mov r26, r25 andi r26, 0x0F out PORTD, r26 cbi PORTD, 4 nop sbi PORTD, 5 nop nop nop nop nop cbi PORTD, 5 ret DELAY_50_MKS: ldi r16, 200 DEL_50_MKS: dec r16 brne DEL_50_MKS ret DELAY_ON_START: ldi r16, 0 ldi r17, 0 ldi r18, 3 DEL_ON_START: dec r16 brne DEL_ON_START dec r17 brne DEL_ON_START dec r18 brne DEL_ON_START ret |
Сообщ.
#10
,
|
|
|
Всё круто, всё работает. Просто ЖКИ по умолчанию работает в 8ми битном режиме, поэтому первую команду надо отсылать только по высшей тетраде
|
Сообщ.
#11
,
|
|
|
Цитата COOLibin @ Всё круто, всё работает. Просто ЖКИ по умолчанию работает в 8ми битном режиме, поэтому первую команду надо отсылать только по высшей тетраде и даже не одну ! рекомендую глянуть аппноты на данную тематику. Есть "магическая" последовательность команд при инициализации девайса на 4 или 8 пинов данных. как правило запуск происходит в несколько этапов... 1) проверка подключения - схемотехника... 2) выведение яркости (чтоб засветка была на половину рядов)... 3) инициализация - сброс засветки (изменение интенсивности)... 4) элементарные команды типа позиционирование курсора, стерание с экрана, мигание курсора... 5) запуск полного вывода на экран (строк, данных)... с уважением (круглый) ЗЫ Очень актуальны временные задержки при инициализации девайса. При переходе с одного мк на другой - именно они отсасывают основное время у проверенных алгоритмов. |
Сообщ.
#12
,
|
|
|
А может кто-нибудь дать толковую по его мнению документацию по сопряжению того же ЖКИ, только 8031\51?
|
Сообщ.
#13
,
|
|
|
Цитата Крон @ А может кто-нибудь дать толковую по его мнению документацию по сопряжению того же ЖКИ, только 8031\51? Даташита на индикатор вполне достаточно для сопряжения с любым контроллером. |
Сообщ.
#14
,
|
|
|
А на русском языке ена бывает?
|
Сообщ.
#15
,
|
|
|
Цитата Крон @ А на русском языке ена бывает? Да. |
Сообщ.
#16
,
|
|
|
Цитата medved_68 @ Цитата Крон @ А на русском языке ена бывает? Да. Ссылки нет случайно ? |
Сообщ.
#17
,
|
|
|
А адрес начала ДДРАМ обеих строк какой?
|
Сообщ.
#18
,
|
|
|
Цитата Крон @ Ссылки нет случайно ? Есть даташит на аналог. Посмотри во всяком случае я им пользуюсь эпизодически - проблем не было. Цитата Крон @ А адрес начала ДДРАМ обеих строк какой? 00-0F - Первая строка. 40-4F - Вторая строка. |
Сообщ.
#19
,
|
|
|
Цитата medved_68 @ 00-0F - Первая строка. 40-4F - Вторая строка. А есть ли какой-нибудь указатель дисплея? Т. е. что бы начать выводить на дисплей с пророизвольной ячейки? Или надо последовательно сдвигать экран? |
Сообщ.
#20
,
|
|
|
Цитата Крон @ Конечно. Есть команда выбора области для записи данных (DDRAM или CGRAM).А есть ли какой-нибудь указатель дисплея? Цитата Крон @ Т. е. что бы начать выводить на дисплей с пророизвольной ячейки? Или надо последовательно сдвигать экран? Сначала необходимо выбрать (установить) активную ячейку и только потом выводить данные. Ну а далее - хочешь сдвигай экран, хочешь по новой определяй следующую ячейку для вывода. |
Сообщ.
#21
,
|
|
|
medved_68
А какая команда для установки активной ячейки? Что то не нахожу. |
Сообщ.
#22
,
|
|
|
Цитата Крон @ А какая команда? Что то не нахожу. А ты какой даташит смотришь??? |
Сообщ.
#23
,
|
|
|
Ну то что Вы дали и методичку еще одну по HD44780.
Установка адреса для послед. операции и выбор области DDRAM это не то случаем? =) |
Сообщ.
#24
,
|
|
|
Цитата Крон @ Ну то что Вы дали и методичку еще одну по HD44780 Тогда вот это: Цитата Set DDRAM Address 0 0 1 ADD Установка адреса для последующих операций и выбор области DDRAM 40 мкс |
Сообщ.
#25
,
|
|
|
Адреса устанавливаются синхроно для обоих строк ?
По дефалту на нуле установлен? |
Сообщ.
#26
,
|
|
|
Цитата Крон @ Адреса устанавливаются синхроно для обоих строк ? Нет. Ты устанавливаешь активной ячейку с определенном адресом. А будет она в первой или во второй строке - зависит от адреса, который передашь этой команде. Цитата Крон @ Нет. зависит от того как провел инициализацию. Если выполнил как предписывает даташит - то активная ячейка в правом углу во второй строке. По дефалту на нуле установлен? |
Сообщ.
#27
,
|
|
|
medved_68
Спасибо. И последняя просьба. У меня такая задача "Вывести в верхнюю строку '_РАСХОД_' А в нижнюю '___xx___', где xx 2 ASCI кода из РПД. Всего их там 10. То есть получается 5 2-х значных чисел. Если не трудно посмотрите мой код. А то вохможности проверки нет.Заранее спасибо ADR equ 0E000h ;адрес ЖКИ в адресном простр-ве ВПД Adr_Count equ 30h ; адрес чисел в РПД Count equ 05h ; кол-во чисел R_W equ P1.7 ;линия R/W RS equ P1.5 ;линия RS - 0 - команды; 1 - данные org 2000h Message: db 20h, 50h, 41h, 43h, 58h, 4Fh, 0E0h, 20h ; ' РАСХОД ' Text: db 20h, 20h, 20h ; ' ' ;****************************************************** OUT: ;подпрограмма вывода на ЖКИ команды/данных из A ;Вход : A - команда/данные ;C - выбор команды(0) или данных(1) MOV RS,C ;C=0 - команда С=1 - данные MOVX @DPTR,A ;отправить команду/данные RET ;****************************************************** IN: ;подпрограмма чтения статуса/данных ЖКИ в A ;Вход : C - выбор статуса(0) или данных(1) ;Выход: A - статус/данные MOV RS,C ;C=0 - статус; С=1 - данные SETB R_W ;установить линию R/W = 1 MOVX A,@DPTR ;получить статус/данные CLR R_W ;установить линию R/W = 0 RET ;****************************************************** MACRO @_DELL ;задержка (max 131588 мкс при dd1 = dd2 = 0) MOV R4,#|1 MOV R5,#|2 DJNZ R5,$ DJNZ R4,$-2 ENDMAC ;задержка = 6 + 2*dd2 + 514*(dd1-1) mks ;****************************************************** MACRO @_WAIT_BISY ;ожидание готовности ЖКИ (BF=1) CALL IN JB ACC.7,$-2 ENDMAC ;****************************************************** MACRO @_OUTCOM ;посылка команды с ожиданием готовности ЖКИ @_WAIT_BISY MOV A,#|1 CALL OUT ENDMAC ;****************************************************** MACRO @_OUTDAN ;посылка данных с ожиданием готовности @_WAIT_BISY MOV A,#|1 SETB C CALL OUT CLR C ENDMAC ;****************************************************** SYM_WR: ;подпрограмма записи символа в память ЖКИ ;Вход : R2 - символ ;R0 - адрес DDRAM/CGRAM @_OUTCOM 00h ;установка адреса DDRAM/CGRAM @_OUTDAN 02h ;запись символа RET MACRO @_SYM_WR MOV R0,#|1 MOV R2,#|2 CALL SYM_WR ENDMAC ;****************************************************** SYM_RD: ;подпрограмма чтения символа из памяти ;DDRAM/CGRAM ЖКИ ;Вход : R0 - адрес DDRAM/CGRAM ;Выход: A - код символа @_OUTCOM 00h ;установка адреса DDRAM/CGRAM SETB C CALL IN ;чтение символа из DDRAM/CGRAM CLR C RET ;****************************************************** STR_WR_RPP: ;подпрограмма записи строки символов в память ;DDRAM/CGRAM ЖКИ ;строка символов находится в РПП ;Вход : DPTR - адрес таблицы символов ;R0 - адрес DDRAM/CGRAM ;R2 - кол-во записыв. символов ;Используются : R3,R4,R5. MOV R4,DPL ;сохренение регистра DPTR MOV R5,DPH MOV DPTR,#ADR ;запись в DPTR адреса ЖКИ @_OUTCOM 00h ;установка адреса DDRAM/CGRAM ANL A,#0 L_STR_RPP: MOV DPL,R4 ;восстановление рег-ра DPTR MOV DPH,R5 MOV R3,A ;сохранение A @_WAIT_BISY ;ожидание готовности ЖКИ MOV A,R3 ;восстановление А MOVC A,@A+DPTR ;получить символ из таблицы MOV DPTR,#ADR ;запись в DPTR адреса ЖКИ SETB C CALL OUT ;вывод данных CLR C MOV A,R3 ;восстановление A INC A ;следующий символ из таблицы DJNZ R2,L_STR_RPP RET MACRO @_STR_WR_RPP MOV R0,#|1 MOV R2,#|3 MOV DPTR,#|2 CALL STR_WR_RPP ENDMAC ;****************************************************** STR_WR_RPD: ;подпрограмма записи строки символов в память ;DDRAM/CGRAM ЖКИ ;строка символов находится в РПД ;Вход : R1 - адрес таблицы символов ;R0 - адрес DDRAM/CGRAM ;R2 - кол-во записыв. символов ;Используется A @_OUTCOM 00h ;установка адреса DDRAM/CGRAM L_STR_RPD: @_OUTDAN 01h ;вывод данных INC R1 ;следующий символ из таблицы DJNZ R2,L_STR_RPD RET MACRO @_STR_WR_RPD MOV R0,#|1 MOV R2,#|3 MOV R1,|2 MOV A, @R1 MOV R1, A CALL STR_WR_RPD ENDMAC ;****************************************************** INIT: ;инициализация ЖКИ MOV DPTR,#ADR ;здесь указать адрес ЖКИ в адресном простр-ве CLR R_W ;линия R_W нулевой уровень CLR C ;посылаем команды ;сброс ЖКИ MOV A,#38h ;необходимо для сброса ЖКИ CALL OUT @_DELL #8,#248 ;задержка не менее 4.1 мс CALL OUT @_DEL #01,#49 ;задержка не менее 100мкс CALL OUT ;стандартные установки ... @_OUTCOM #03h ;очистка экрана, AC = 0, AC -> DDRAM , начало строки адресуется ;в начале DDRAM @_OUTCOM #38h ;ширина данных - 8, две строки, матрица 5х8 точек @_OUTCOM #0Ch ;включить изображение, отключить курсор @_OUTCOM #06h ;режим автоматического сдвига курсора @_STR_WR_RPP #00h,#Message, #08h ; #80h RET ;****************************************************** ; 2 строка #40h BEGIN: Call INIT mov R4, #Count for: @_STR_WR_RPP #40h, #Text, #03h @_STR_WR_RPD #43h, 03h, #02h @_STR_WR_RPP #45h, #Text, #03h @_DELL #00h, #00h inc R3 inc R3 DJNZ R4, for END Есть не много не нужных вещей но вы них внимания не обращаите. |
Сообщ.
#28
,
|
|
|
Цитата Крон @ А то вохможности проверки нет.Заранее спасибо Схемку по которой работаешь (пишешь сию программу (подключение индикатора к контроллеру)) приложи. А то въезжать куда какой сигнал идет - долго. Добавлено Кстати а строб данных где???? Так называемая линия Е???? |
Сообщ.
#29
,
|
|
|
Вот не большой фаил. Там в принципе все есть =)наверное=)
-Added Цитата medved_68 @ Кстати а строб данных где???? Так называемая линия Е???? Она как бы автоматически формируется. Я подключаю кстати к ОЦМ31. Может это имеет значение =) Прикреплённый файлЖКИ.rar (52.18 Кбайт, скачиваний: 560) |
Сообщ.
#30
,
|
|
|
Цитата Крон @ Вот не большой фаил. Попробуй не РАР а ЗИП архив, а то что то только ссылка скачивается, а не сам файл |
Сообщ.
#32
,
|
|
|
Хм...согласно схеме строб формируется в 1 при помощи элемента 3 ИЛИ-НЕ. Т.Е. другими словами 1 на Е возникнет только тогда, когда все входные линии (3 шт.) будут опущены в 0. Либо маркировка элемента на схеме неверна, либо..... Вообщем в данной интерпретации диалога с ЖКИ не получится. Твой контроллер автоматом опустит либо шину RD, либо WR при использовании команды:
MOVX @DPTR,...... |
Сообщ.
#33
,
|
|
|
medved_68
Спасибо. С меня пиво. куда везти?: =) |
Сообщ.
#34
,
|
|
|
Цитата Крон @ Спасибо. С меня пиво. куда везти?: =) Зачем везти??? Приезжай в Рязань - напьемся!!!! |