АвторСообщение
постоянный участник


Пост N: 153
Info: Среднее
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг: 0
Фото:
ссылка на сообщение  Отправлено: 27.01.07 19:28. Заголовок: Индикатор на основе HD44780


Ребята, что-то я начал парить по черному. Объясните мне вкратце каким образом общаться с данным индикатором при 4х проводном интерфейсе? Что-то я начал путаться совсем. В самоучителе при инициализации модуля даются совершенно другие команды. Да вот еще что, я запутался как же выставить в 4х проводном интерфейсе бит выбора страницы, он кажется 1й. Когда разбирался с 8ми проводным все было ясно как день и команды соответствовали даташитовским, а тут... короче заааапутался.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 181 , стр: 1 2 3 4 5 All [только новые]


постоянный участник




Пост N: 11
Зарегистрирован: 26.03.07
Откуда: Россия , Зеленогорск
Рейтинг: 0
ссылка на сообщение  Отправлено: 04.09.09 18:07. Заголовок: Ой, что-то я не то с..


Ой, что-то я не то сделал, что хотел.
Хотел сделать выпадающий текст, а он целиком показан.

Станислав Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1474
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 4

Награды: Отлично!',
ссылка на сообщение  Отправлено: 04.09.09 18:18. Заголовок: stas_00 пишет: Ой, ..


stas_00 пишет:

 цитата:
Ой, что-то я не то сделал


для вставки текста программы есть кнопка "Моноширинный шрифт" (вторая из двух). Выделяете свой текст, кликаете по кнопке и получаете в таком виде:
Pause5: 
movlw .85 ;
movwf Reg_3 ;
movlw .138 ;
movwf Reg_4 ;
movlw .3 ;


Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1094
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 04.09.09 18:25. Заголовок: movfw Mem ; swapf Me..


movfw Mem ;
swapf Mem,W ; Меняем местами полубайты.
andlw b'11110000' ; Блокируем младший полубайт.
movwf PortB ;

команда выделенная синим не нужна. Если её выполнять, то в регистр Mem запишется результат предыдущего побитного "ИЛИ". Вот и глюк.

В строчке:
SNOVA nop ;
вместо nopа желательно вставить clrwdt.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 12
Зарегистрирован: 26.03.07
Откуда: Россия , Зеленогорск
Рейтинг: 0
ссылка на сообщение  Отправлено: 04.09.09 19:02. Заголовок: Alberto пишет: для ..


Alberto пишет:

 цитата:
для вставки текста...


Alberto, спасибо за помощь.

Alberto пишет:

 цитата:
Выделяете свой текст


Alberto, вы имеете ввиду скопировать нужный участок в буфер обмена и нажать указанную кнопку?

igor пишет:

 цитата:
команда выделенная синим не нужна.


А как же быть с младшим полубайтом? Ведь если её убрать, командой swapf 11110000 поменяется на 00001111. ??? Может я очевидных вещей не вижу, или мешают стереотипы. ???


Станислав Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 886
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг: 1
Фото:
ссылка на сообщение  Отправлено: 04.09.09 19:05. Заголовок: igor пишет: команда..


igor пишет:

 цитата:
команда выделенная синим не нужна. Если её выполнять, то в регистр Mem запишется результат предыдущего побитного "ИЛИ".

Она просто не нужна, но она и не мешается, она просто из мем копирует в аккумулятор...
Тут скорее всего глюк в том, что блокируется младший полубайт, а если в младшем полубайте находятся и сигнальные линии, то на них установится нулевой уровень. С сигналом Е конечно не мешается но с остальными мешается. Индикатор никогда не сможет выдать флаг BF. Ведь при выдаче полубайта слова управления индикатор сразу же переходит в режим записи. Так что глюк здесь...

Еще неизвестно, что хуже: постоянный бардак или непостоянный порядок? Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1095
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 2
Фото:
ссылка на сообщение  Отправлено: 04.09.09 19:19. Заголовок: Алексей пишет: Она ..


Алексей пишет:

 цитата:
Она просто не нужна, но она и не мешается, она просто из мем копирует в аккумулятор


Да действительно, извиняюсь, перепутал с movwf.

В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1475
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 4

Награды: Отлично!',
ссылка на сообщение  Отправлено: 04.09.09 19:40. Заголовок: stas_00 пишет: вы и..


stas_00 пишет:

 цитата:
вы имеете ввиду скопировать нужный участок в буфер обмена и нажать указанную кнопку?


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

 цитата:
Она просто не нужна, но она и не мешается


а зачем нужно копировать данные из регистра в W, если следующая команда всё равно затрет данные в W. Мусор в чистом виде.
И распишите, пожалуйста, как у Вас подключен ЖКИ, а то непонятно, там и RA, и RB. Где окнчательный вариант?

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1476
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 4

Награды: Отлично!',
ссылка на сообщение  Отправлено: 04.09.09 20:10. Заголовок: Вот Ваш код: ENTER_B..


Вот Ваш код:
ENTER_BF: 
movwf Mem ; Сохраняем данные в регистре памяти.
andlw b'11110000' ; Блокируем младший полубайт.
movwf PortB ; Выводим данные в порт.

nop ; Задержка в 1 м.ц.
bsf PortB,E ; Установка на линии E "1".
nop ; Задержка в 1 м.ц.
bcf PortB,E ; Установка на линии Е "0" (активный перепад).

movfw Mem ;
swapf Mem,W ; Меняем местами полубайты.
andlw b'11110000' ; Блокируем младший полубайт.
movwf PortB ;

nop ; Задержка в 1 м.ц.
bsf PortB,E ; Установка на линии E "1".
nop ; Задержка в 1 м.ц.
bcf PortB,E ; Установка на линии Е "0" (активный перепад).

я так понимаю что выводы управления RS, R/W и E также подключены к порту В? Если так, то что мы имеем на выходах RB0-RB3 после команды andlw b'11110000'? Строб Вы подали, а чему равен RS? Или для записи данных в ЖКИ у Вас другая п/программа ENTER_BF?

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 8
Зарегистрирован: 15.07.08
Откуда: Украина, Макеевка
Рейтинг: 0
ссылка на сообщение  Отправлено: 04.09.09 21:05. Заголовок: Отправлять данные в ..


Отправлять данные в порт без изменения сигнальных линий можно так.
При входе в подпрограмму из акумулятора данные копируются в регистр TEMP
ENTER_BF    BCF         Status,RP0  ; 0-Й БАНК 
MOVWF TEMP ;
MOVLW b'00001111' ;
ANDWF PortB,F ;
MOVLW b'11110000' ; Нейтролизация младшего полубайта
ANDWF TEMP,W ; Переправка старшего п/байта регистра W на
IORWF PortB,F ; линии RB4...7.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 888
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг: 1
Фото:
ссылка на сообщение  Отправлено: 04.09.09 21:18. Заголовок: А можно проще, всего..


А можно проще, всего три команды и запись в порт... Вот только не могу вспомнить как и где я так делал .

Еще неизвестно, что хуже: постоянный бардак или непостоянный порядок? Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1477
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 4

Награды: Отлично!',
ссылка на сообщение  Отправлено: 05.09.09 00:06. Заголовок: Алексей пишет: Вот ..


Алексей пишет:

 цитата:
Вот только не могу вспомнить как и где я так делал


не на 18-ом ли ПИКе?

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 889
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг: 1
Фото:
ссылка на сообщение  Отправлено: 05.09.09 07:05. Заголовок: Не, на 16. Помню где..


Не, на 16. Помню где то делал а где не помню... и не могу найти.

Еще неизвестно, что хуже: постоянный бардак или непостоянный порядок? Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 13
Зарегистрирован: 26.03.07
Откуда: Россия , Зеленогорск
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.09.09 15:33. Заголовок: Alberto пишет: И ра..


Alberto пишет:

 цитата:
И распишите, пожалуйста, как у Вас подключен ЖКИ



ЖКИ подключен так:

 RB0 - E, 
RB1 - RS,
RB2 - R/W, Весь PortB задействован
RB3 - для управления HD44780.
RB4 - DB4,
RB5 - DB5,
RB6 - DB6,
RB7 - DB7.


Алексей и igor, почему команды MOV лишние? В первом случае, при выводе старшего полубайта, я сохраняю исходный байт (выделено синим), во втором случае (выделено зелёным) восстанавливаю значение для процедуры переправки младшего полубайта в дисплей, вот смотрите:


             movlw       b'00000110'          ; Команда включения режима автоинкремента       ОСНОВНОЕ  
call ENTER_BF ; и режима "дисплей не сдвигается". "ТЕЛО"
;----> Возврат по стеку из ПП ENTER_BF ПРОГРАММЫ
return ; Возвращаемся.

;========================================================================
; ПП "плавающей" задержки на основе анализа состояния флага занятости BF.
;========================================================================
; "Запуск в работу" текущего байта, выставленного на выходах защелок порта В.
;----------------------------------------------------------------------------
ENTER_BF
movwf Mem ; Сохраняем данные в регистре памяти.
andlw b'11110000' ; Блокируем младший полубайт.
movwf PortB ; Выводим данные в порт.

nop ; Задержка в 1 м.ц.
bsf PortB,E ; Установка на линии E "1".
nop ; Задержка в 1 м.ц.
bcf PortB,E ; Установка на линии Е "0" (активный перепад).

movfw Mem ;
swapf Mem,W ; Меняем местами полубайты.
andlw b'11110000' ; Блокируем младший полубайт.
movwf PortB ;

nop ; Задержка в 1 м.ц.
bsf PortB,E ; Установка на линии E "1".
nop ; Задержка в 1 м.ц.
bcf PortB,E ; Установка на линии Е "0" (активный перепад).


igor пишет:

 цитата:
команда выделенная синим не нужна. Если её выполнять, то в регистр Mem запишется результат предыдущего побитного "ИЛИ".



igor, у меня в тексте нет команд "ИЛИ", а только "И" (andlw).

Станислав Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1478
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 4

Награды: Отлично!',
ссылка на сообщение  Отправлено: 05.09.09 15:47. Заголовок: stas_00 пишет: поче..


stas_00 пишет:

 цитата:
ЖКИ подключен так:


спасибо, я так и понял. Просто лучше когда это написано явно, чем догатываться.

 цитата:
почему команды MOV лишние?


пишут не про все команды MOV, а только про выделенную зеленым цветом. Первая команда "movfw Mem" переписывает данные из Mem в регистр W, а вторая (swapf Mem,W) переписывает данные из Mem в W с перестановкой полубайт (тетрад). Какой смысл в первой команде если вторая тут же затирает предидущие данные?
P.S. Игорь писал про командую выделенную синим цветом в своем сообщении. Будьте, пожалуйста, внимательнее.
P.P.S. Вы так и не приняли во внимание мое замечание на построение Вашей п/программы Enter_BF? Ведь при таком построении линия RS у Вас всегда равна "0". И при выводе данных, и при выводе команд, а это глюк в явном виде.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 14
Зарегистрирован: 26.03.07
Откуда: Россия , Зеленогорск
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.09.09 18:56. Заголовок: Нашёл свои ошибки! Т..


Нашёл свои ошибки! Тороплив и невнимателен!

Alberto, igor, Алексей, andrey - спасибо за помощь!

Вот, что получилось:

RB0 - E,
RB1 - RS,
RB2 - R/W,
RB3 - Управление подсветкой,
RB4 - DB4,
RB5 - DB5,
RB6 - DB6,
RB7 - DB7.

;============================================================================================ 
; ПП "плавающей" задержки на основе анализа состояния флага занятости BF.
;============================================================================================
; "Запуск в работу" старшего полубайта, выставленного на выходах защелок RB4...RB7.
;----------------------------------------------------------------------------------
ENTER_BF movwf Mem ; Сохраняем данные W в регистре временной памяти.
movlw b'00001111' ; Очищаем старший полубайт регистра PortB,
andwf PortB,F ; оставляя неизменным младший.
movlw b'11110000' ; Блокируем младший полубайт,
andwf Mem,W ; сохраняем в аккумуляторе,
iorwf PortB,F ; и выводим в порт.

nop ; Задержка в 1 м.ц.
bsf PortB,E ; Установка на линии E "1".
nop ; Задержка в 1 м.ц.
bcf PortB,E ; Установка на линии Е "0" (активный перепад).

;-----------------------------------------
; "Запуск в работу" младшего полубайта данных.
;-----------------------------------------
swapf Mem,F ; Меняем местами полубайты.
movlw b'00001111' ; Очищаем старший полубайт регистра PortB,
andwf PortB,F ; оставляя неизменным младший.
movlw b'11110000' ; Блокируем младший полубайт,
andwf Mem,W ; сохраняем в аккумуляторе,
iorwf PortB,F ; и выводим в порт.

nop ; Задержка в 1 м.ц.
bsf PortB,E ; Установка на линии E "1".
nop ; Задержка в 1 м.ц.
bcf PortB,E ; Установка на линии Е "0" (активный перепад).

;-----------------------------------------
; Проверка флага BF.
;-----------------------------------------
Bank1 ; Переход в 1-й банк.
movlw b'11110000' ; Перестраиваем RB4...RB7 на вход,
movwf TrisB ; для опроса флага BF.
Bank0 ; Переход в 0-й банк.

SNOVA bcf PortB,RS ; Установка на линии RS "0" (режим команд).
bsf PortB,RW ; Установка на линии R/W "1" (режим чтения).
nop ;
bsf PortB,E ; Установка на линии E "1".

clrwdt ; Обнуляем WDT.
btfsc PortB,BF ; Если флаг BF опустился, программа исполняется далее,
goto SNOVA ; а если нет, ждём-с.

movlw b'00001000' ; Очищаем старший полубайт регистра PortB, кроме RB3,
andwf PortB,F ; оставляя неизменным младший.
Bank1 ; Переход в 1-й банк.
clrf TrisB ; Весь PortB работает на выход.
Bank0 ; Переход в 0-й банк.

return ; Возврат по стеку.

Красота!
Мечты сбываются!

Станислав Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 914
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг: 1
Фото:
ссылка на сообщение  Отправлено: 21.09.09 22:16. Заголовок: ;===================..


;============================================================================================  
; ПП "плавающей" задержки на основе анализа состояния флага занятости BF.
;============================================================================================
; "Запуск в работу" старшего полубайта, выставленного на выходах защелок RB4...RB7.
;----------------------------------------------------------------------------------
ENTER_BF movwf Mem ; Сохраняем данные W в регистре временной памяти.
comf Mem,W ; Инвертируем значение регистра Mem, т.к. при выводе в порт В младший полубайт останется
; таким же, каким был до записи в порт, а старший будет просто инвертирован логическим
; "Исключающее ИЛИ"
andlw b'11110000' ; Блокируем младший полубайт,
xorwf PortB,F ; и выводим в порт.

nop ; Задержка в 1 м.ц.
bsf PortB,E ; Установка на линии E "1".
nop ; Задержка в 1 м.ц.
bcf PortB,E ; Установка на линии Е "0" (активный перепад).

;-----------------------------------------
; "Запуск в работу" младшего полубайта данных.
;-----------------------------------------
swapf Mem,F ; Меняем местами полубайты.
comf Mem,W ; То же самое, что и впредыдущем случае.
andlw b'11110000' ; Блокируем младший полубайт,
xorwf PortB,F ; и выводим в порт.

nop ; Задержка в 1 м.ц.
bsf PortB,E ; Установка на линии E "1".
nop ; Задержка в 1 м.ц.
bcf PortB,E ; Установка на линии Е "0" (активный перепад).

;-----------------------------------------
; Проверка флага BF.
;-----------------------------------------
Bank1 ; Переход в 1-й банк.
movlw b'11110000' ; Перестраиваем RB4...RB7 на вход,
movwf TrisB ; для опроса флага BF.
Bank0 ; Переход в 0-й банк.

SNOVA bcf PortB,RS ; Установка на линии RS "0" (режим команд).
bsf PortB,RW ; Установка на линии R/W "1" (режим чтения).
nop ;
bsf PortB,E ; Установка на линии E "1".

clrwdt ; Обнуляем WDT.
btfsc PortB,BF ; Если флаг BF опустился, программа исполняется далее,
goto SNOVA ; а если нет, ждём-с.

movlw b'00001000' ; Очищаем старший полубайт регистра PortB, кроме RB3,
andwf PortB,F ; оставляя неизменным младший.
Bank1 ; Переход в 1-й банк.
clrf TrisB ; Весь PortB работает на выход.
Bank0 ; Переход в 0-й банк.

return ; Возврат по стеку.


А вот так попробуйте... Я как то так делал и все работало. Если нигде с логикой не ошибся, то заработает. Но то что можно заставить работать используя только три команды это точно.

Еще неизвестно, что хуже: постоянный бардак или непостоянный порядок? Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 9
Зарегистрирован: 15.07.08
Откуда: Украина, Макеевка
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.09.09 23:11. Заголовок: stas_00 Рад был пом..


stas_00 Рад был помочь!

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 580
Зарегистрирован: 03.12.09
Откуда: Украина, Киев
Рейтинг: 1
ссылка на сообщение  Отправлено: 01.12.10 11:55. Заголовок: На нелюбимом, в наше..

"Труднее всего поверить в очевидное."
(наскальная надпись)
Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1537
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 4
ссылка на сообщение  Отправлено: 01.12.10 14:16. Заголовок: В журнале "Радио..


В журнале "Радио" 2009, №4, стр. 25, есть более удобный конвертер для HD44780 ftp://ftp.radio.ru/pub/2009/04/ConverterForHD44780_1.1.rar<\/u><\/a>

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2681
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг: 5
ссылка на сообщение  Отправлено: 01.12.10 23:21. Заголовок: Просба не оставлят..


Просба не оставлять сообщений в этой теме и продолжить обсуждение в теме Индикатор на основе HD44780. Часть 1.


Безумству храбрых поем мы песню (А.М.Горький) Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 13.04.20
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.04.21 20:51. Заголовок: Там продолжение перв..


Там продолжение первой строки надо рассматривать как вторую строку в двух строчнике, в смысле адресов, и все получится

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 181 , стр: 1 2 3 4 5 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия