Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 21.02.2007, 14:07  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Управление жки на основе HD44780

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

что не так?

LIST P=P16F84A
#INCLUDE ‹P16F84A.INC›
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC
RADIX HEX

;УЧЕБНАЯ ПРОГРАММА ,УПРАВЛЕНИЕ ИНТИЛИКТУАЛЬНЫМ ЖКИ,НА ОСНОВЕ КОНТРОЛЕРА
; 44780,ВЫВОДИТ НА ИНДИКАТОР СЛОВО "PARALLAX" В ПРЯМОМ И ЗЕРКАЛЬНОМ ВИДЕ
TEMP EQU 0X10
TEMP2 EQU 0X11
COUNTER EQU 0X12
SYN EQU 0X13

#DEFINE LCD_PWR PORTA,3
#DEFINE RS PORTA,2
#DEFINE RW PORTA,1
#DEFINE E PORTA,0
#DEFINE SHIFT STATUS,RP0

ORG 0
START BSF SHIFT
CLRF TRISA
CLRF TRISB
BCF SHIFT
BCF LCD_PWR
;ИНИЦИАЛИЗАЦИЯ
CLRF PORTB
BCF E
BCF RS
BCF RW
;---------------------------------------------------------------------
BSF LCD_PWR
CALL WAIT
;С УЧЕБНИКА ИНИЦИАЛИЗАЦИЯ ПОРТА
MOVLW 0X030
MOVWF PORTB
BSF E
NOP
BCF E
CALL WAIT2 ;ЗАДЕРЖКА 5 МС

MOVLW 0X030
MOVWF PORTB
BSF E
NOP
BCF E
CALL WAIT1 ;ЗАДЕРЖКА 160МКС

MOVLW 0X030
MOVWF PORTB
BSF E
NOP
BCF E
CALL BUSE




MOVLW B'00101000' ;РАЗРЯДНОСТЬ ДАННЫХ 8
MOVWF SYN ;ЧИСЛО СТРОК 2
CALL COMAND ;РАЗМЕР ЗНАКОМЕСТА 5Х7

MOVLW B'00001100' ;ВКЛЮЧ БЕЗ КУРСОРА
MOVWF SYN
CALL COMAND

MOVLW B'00001110' ;ИНКРЕМЕНИРОВАНИЕ КУРСОРА
MOVWF SYN
CALL COMAND

MOVLW B'00000001' ;ОЧИСТИТЬ ДИСПЛЕЯ
MOVWF SYN ;
CALL COMAND ;


MOVLW B'01000000' ;ПЕРЕВОД КУРСОРА В ОБЛАСТЬ ОЗУ
MOVWF SYN ;НАЧНАЯ С АДРЕСА 0
CALL COMAND

CLRF COUNTER
ZAPIS MOVF COUNTER,W
CALL MY_CHARS
MOVWF SYN
CALL DANNUE
INCF COUNTER,F
MOVLW .32 ;СКОЛЬКО ЗНАКОВ ЗАНОСИМ В ОЗУ НА КАЖДЫЙ ЗНАК 8 ЗНАЧЕНИЙ
SUBWF COUNTER,W
BTFSS STATUS,Z
GOTO ZAPIS

MOVLW B'10000000' ;ПЕРЕВОД КУРСОРА НА
MOVWF SYN
CALL COMAND ;ЭКРАН ДИСПЛЕЯ

VIVOD CLRF COUNTER
LOOP MOVF COUNTER,W
CALL VIVA
MOVWF SYN
CALL DANNUE
INCF COUNTER
MOVLW .16 ;ВЫВОДИМ 16 ЗНАКОВ
SUBWF COUNTER,W
BTFSS STATUS,Z
GOTO LOOP
GOTO $
;================================================= ============
;ПОДПРОГРАММА ДАННЫЕ В ЖКИ
;================================================= ============
DANNUE
CALL BUSE ;ПРОВЕРКА ГОТОВНОСТИ ЖКИ
BCF RW ;ЗАПИСЬ В ЖКИ
BSF RS ;ДАННЫЕ
MOVF SYN,W
MOVWF PORTB
NOP
BSF E
NOP
BCF E
SWAPF SYN,F
MOVF SYN,W
MOVWF PORTB
NOP
BSF E
NOP
BCF E
RETLW 0

;ПОДПРОГРАММА ЗАПИСИ НА LCD КОМАНД(КОМАНДЫ НАХОДЯТСЯ В TEMP)
COMAND CALL BUSE

BCF RW ;ЗАПИСЬ В LCD
BCF RS ;КОМАНДЫ
MOVF SYN,W
MOVWF PORTB
NOP
BSF E ;РАЗРЕШЕНИЕ ОБМЕНОМ ИНФОРМАЦИИ
NOP
BCF E ;ЗАПРЕТ
SWAPF SYN,F
MOVF SYN,W
MOVWF PORTB
NOP
BSF E
NOP
BCF E
RETLW 0
;================================================= ===========
;ПОДПРОГРАММ ПРОВЕРКИ ГОТОВНОСТИ ЖКИ
;================================================= ============
BUSE BSF RW
BCF RS
BSF SHIFT
MOVLW 0XFF ;ПЕРЕКЛЮЧАЕМ НА ВВОД
MOVWF TRISB ;ПОРТ В
BCF SHIFT
BSF E ;РАЗРЕШЕНИЕ ОБМЕНОМ ИНФЫ
NOP
MOVF PORTB,W
NOP
MOVWF TEMP
BCF E ;ЗАПРЕТ НА ОБМЕН ИНФОРМАЦИЕЙ
BTFSC TEMP,7 ;ПРОВЕРКА БИТА ЗАНЯТОСТИ LCD(ЕСЛИ 1 ТО ЗАНЯТ)
GOTO BUSE
BSF SHIFT
CLRF PORTB ;ПЕРЕВОД ПОРТА В НА ВЫВОД
BCF SHIFT
RETURN
;ПОДПРОГРАММА ЗАДЕРЖКИ СБРОСА ИНДИКАТОРА НАДО 15 МС
WAIT MOVLW .121
MOVWF TEMP
MOVLW .20
MOVWF TEMP2
LOOP1 DECFSZ TEMP
GOTO LOOP1
DECFSZ TEMP2
GOTO LOOP1
RETLW 0
;ЗАДЕРЖКА 100 МКС
WAIT1 movlw .33
movwf TEMP
wr decfsz TEMP, F
goto wr
RETLW 0
;delay = 4'000 machine cycles
WAIT2 movlw .48
movwf TEMP2
movlw .6
movwf TEMP
wr1 decfsz TEMP2, F
goto wr1
decfsz TEMP, F
goto wr1
RETLW 0
;ПОДПРОГРАММА ВЫБОРА БУКВ ДЛЯ ВЫВОДА
VIVA ADDWF PCL,F
RETLW 'M'
RETLW 0XA5
RETLW 'X'
RETLW 'A'
RETLW B'00100000'
RETLW 0XA1
RETLW 'A'
RETLW 0XE0
RETLW 2
RETLW 0
RETLW 0
RETLW 2
RETLW 1
RETLW 2
RETLW 3
RETLW 4
;ПОДПРОГРАММА ЗАНЕСЕНИЯ СПЕЦ ЗНАКОВ
MY_CHARS ADDWF PCL,F
RETLW B'000110' ;L В ЗЕРКАЛЬНОМ ВИДЕ
RETLW B'000100'
RETLW B'000100'
RETLW B'000100'
RETLW B'000100'
RETLW B'000100'
RETLW B'001110'
RETLW B'000000'

RETLW .0 ;R В ЗЕРКАЛЬНОМ ВИДЕ
RETLW .0
RETLW .13
RETLW .19
RETLW .1
RETLW .1
RETLW .1
RETLW .0

RETLW .0 ;A В ЗЕРКАЛЬНОМ ВИДЕ
RETLW .0
RETLW .14
RETLW .16
RETLW .30
RETLW .17
RETLW .30
RETLW .0

RETLW .15
RETLW .17
RETLW .17
RETLW .15
RETLW .1
RETLW .1
RETLW .1
RETLW .0 ;P В ЗЕРКАЛЬНОМ ВИДЕ
END
Реклама:
CERGEI1982 вне форума  
Непрочитано 22.02.2007, 09:47  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

ЧО ТО ГЛЮЧИТ ПРОТЕУС,ПРИ ПЕРЕВОДЕ НА 4 РАЗРЯДНУЮ ШИНУ,ЖАЛЬ НЕТУ ЖКИ ЧТОБ СОБРАТЬ ПРОВЕРИТЬ В РЕАЛЕ
CERGEI1982 вне форума  
Непрочитано 22.02.2007, 10:01  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

НО ПРИМЕР(ИЗ ПРОТЕУСА) НА ЯЗЫКЕ СИ РАБОТАЕТ
CERGEI1982 вне форума  
Непрочитано 02.03.2007, 01:25  
lisergin_
Частый гость
 
Регистрация: 22.12.2006
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
lisergin_ на пути к лучшему
По умолчанию

Мучался целый день, на второй завелось. Причина может быть в том, что он хочет, чтоб как в рекомендациях к оригинальному контроллеру сперва выдать ему 30h в управляющий регистр, потом ждать вроде миллисекунд 5, потом опять то же самое, ждать уже 100мкс, потом еще раз, сколько ждать уже не написано. Флаг занятости не читать. А вот в следующей команде уже писать 4х разрядную шину, хотя чего это я. Вот из оригинала:

Цитата:
Несколько слов о процессе инициализации ЖКИ-модуля. Производитель контроллера рекомендует выполнять следующую последовательность действий для инициализации. Выдержать паузу не менее 15 мс между установлением рабочего напряжения питания (› 4,5 В) и выполнением каких-либо операций с контроллером. Первой операцией выполнить команду, выбирающую разрядность шины (это должна быть команда $30 независимо от того, какой разрядности интерфейс вы собираетесь использовать в дальнейшем), причем перед выполнением этой операции не проверять значение флага BF. Далее опять выдержать паузу не менее 4,1 мс и повторить команду выбора разрядности шины, причем перед подачей команды вновь не производить проверку флага BF. Следующим шагом необходимо вновь выдержать паузу, на этот раз 100 мкс, и в третий раз повторить команду установления разрядности шины, вновь без проверки BF. Эти три операции являются инициализирующими и призваны вывести контроллер в исходный режим работы (то есть перевести в режим работы с 8-ми разрядной шиной) из любого состояния. Следом за ними нормальным порядком (без выдерживания пауз, но с проверкой флага BF) выполняется инициализация режимов работы с выдачей инициализирующей последовательности, аналогичной указанной в таблице 7 (содержащей в том числе команду выбора необходимой разрядности шины).

Необходимо помнить, что когда Вы объявляете режим работы с 4-х разрядной шиной, то есть выдаете команду $20, то делаете это обычно из 8-ми разрядного режима, который устанавливается автоматически после подачи напряжения питания, а значит вы не сможете адекватно объявить необходимое значение флагов N и F, располагающихся в младшей тетраде команды установки разрядности шины. Поэтому команду необходимо повторить в уже установившемся 4-х разрядном режиме путем последовательной передачи двух тетрад, то есть для 4-х разрядного режима образом.
__________________
Ничто так не говорит об отсутствии доказательств, как слова: бесспорно, очевидно, общеизвестно...
lisergin_ вне форума  
Непрочитано 02.03.2007, 07:45  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

проверю как время будет
спасибо за помощь
CERGEI1982 вне форума  
Непрочитано 04.03.2007, 20:08  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Переделал,работает на вывод(в 4 разрядном формате),но как только хочу записать свои знаки,записывает в память,но на экран не выходит потом,в чем дело,не пойму



вот в этом куске,после записи в память индикатора

BTFSS STATUS,Z
GOTO ZAPIS

MOVLW B'10000000' ;ПЕРЕВОД КУРСОРА НА
MOVWF SYN ;ЭКРАН ДИСПЛЕЯ
CALL COMAND ;ДОЛЖНО ВЫСВЕТИТСЯ КУРСОР НА ЭКРАНЕ,А ЕГО НЕТ,В ЧЕМ ДЕЛО?

MOVLW B'00000010' ;ОЧИСТИТЬ ДИСПЛЕЯ
MOVWF SYN ;
CALL COMAND ;



ВСЕ ПРОГРАМУ,НИЖЕ В АРХИВЕ,ТАМ ЖЕ ШЛУ РУССКИЙ ТЕКСТ НА ЖКИ,ТАМ МОЖНО ЛЮБОЙ СИМВОЛ СДЕЛАТЬ

Прикрепленный файл: 2160486.rar
CERGEI1982 вне форума  
Непрочитано 04.03.2007, 20:09  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

НА ЖКИ ДЛЯ ПРОТЕУСА

Прикрепленный файл: 5538751.rar
CERGEI1982 вне форума  
Непрочитано 04.03.2007, 20:27  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

lisergin_ у тебя записались символы в жки и вывел на экран?
CERGEI1982 вне форума  
Непрочитано 04.03.2007, 20:37  
lisergin_
Частый гость
 
Регистрация: 22.12.2006
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
lisergin_ на пути к лучшему
По умолчанию

Тяжковато читать, ну ничего.
Смотри, идея какая. Если охота отладить юзер интерфейс, просто заменяю символы русские на аглицкие, по количеству. Потом, уже в девайсе, достраиваю. Протеусовские экраны глючит и даже не в отсутствии русского дело. Просто даже для той же инициализации достаточно записать 0х30 раз, подождать 5мс и потом выдать команду для четырехразрядной шины. А с тем, чтоб писать туда что-то вообще не парился. Не для протеуса дело это а для макета.
В общем, не парся, протеус - хорошо, макет - нужно...
__________________
Ничто так не говорит об отсутствии доказательств, как слова: бесспорно, очевидно, общеизвестно...
lisergin_ вне форума  
Непрочитано 05.03.2007, 05:16  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

понятно,спасибо за объяснения,я пока изучаю жки,пробую сам програмки делать,а как жки появится состряпаю что нибудь полезное.Попробую слепить что нибудь со сдвиговым регистром,управлять по двум проводам(извиняюсь за правописание )
CERGEI1982 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускается ЖКИ на KS0066 ЖКИ WH2002L jtlex Микроконтроллеры, АЦП, память и т.д 0 04.04.2008 12:09
LCD на контроллере HD44780 yga Микроконтроллеры, АЦП, память и т.д 8 03.12.2007 16:50
PIC16F84A и LCD HD44780 I_0 Микроконтроллеры, АЦП, память и т.д 16 20.09.2006 12:06
вОПРРОС ПРО HD44780 sergunrussia Микроконтроллеры, АЦП, память и т.д 7 26.08.2006 00:25
инициализация KS0066U (или HD44780). xelos Микроконтроллеры, АЦП, память и т.д 9 21.11.2004 13:06


Часовой пояс GMT +4, время: 16:21.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot