Пост N: 153
Info: Среднее
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
0
Фото:
Отправлено: 27.01.07 19:28. Заголовок: Индикатор на основе HD44780
Ребята, что-то я начал парить по черному. Объясните мне вкратце каким образом общаться с данным индикатором при 4х проводном интерфейсе? Что-то я начал путаться совсем. В самоучителе при инициализации модуля даются совершенно другие команды. Да вот еще что, я запутался как же выставить в 4х проводном интерфейсе бит выбора страницы, он кажется 1й. Когда разбирался с 8ми проводным все было ясно как день и команды соответствовали даташитовским, а тут... короче заааапутался.
Пост N: 24
Зарегистрирован: 26.12.06
Откуда: Украина, Новомосковск
Рейтинг:
0
Отправлено: 17.02.07 22:10. Заголовок: Re:
Помогите ПЛИЗ. Как определить живой индикатор на основе HD44780 или нет? Подаю на него питание (все остальные выводы в воздухе), а у него засвечивается квадратиками только верхняя строчка это нормально или должны засвечиватся обе строчки? Индикатор дразнится DM1620. Спрашиваю потому что индикатор не новый, а с ними не работал хочю разобраться, а если он битый то толку его мучить буду тогда искать новый.
Пост N: 1
Зарегистрирован: 26.03.07
Откуда: Россия , Зеленогорск
Рейтинг:
0
Отправлено: 09.09.07 10:47. Заголовок: Re:
Здравствуйте, уважаемые коллеги. Изучаю 25/1 раздел "Самоучителя". Собрал на макетной плате демонстрационное устройство по материалам журнала "Elector" с прошивкой LCDAlb_1.asm. Вывел надпись на ЖКИ: "PICee .....", всё получилось. После редактирования программы, с целью заменить латинские буквы на русские- получил кракозябры??? Подскажите, пожалуйста, что я упустил из виду.
Пост N: 86
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг:
1
Отправлено: 09.09.07 14:02. Заголовок: Re:
В первую очередь нужно выяснить, какой ЖКИ Вы приобрели: русифицированный или нерусифицированный. В более поздних разделах есть программа, которая позволяет это выяснить. Я ее разработал специально для выяснения этого. Советую Вам пока не опережать события, а поработать с латинскими символами. По ходу работы, Вы "автоматически упретесь" и в "русские дела", которые достаточно подробно расписаны.
Если вы правильно подключили питание и цепь регулировки контрастности, покрутите подстроечник контрастности. Должна загореться верхняя строка (первая). Если так, индикатор исправен. Успехов
Первый раз подключил как написано всамоучителе 1-общий 2-плюс но после эксперементов оказалось что у WH1602D питание перепутано 1-плюс 2-общий после неправильного подключения мерцают обе строчки, последние 4 знакоместа в обеих строчках видны очень четко и тоже мерцают Наверное его можно выбросить?
Пост N: 104
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг:
1
Отправлено: 06.10.07 12:41. Заголовок: Re:
В "Самоучителе..." я предупреждал, что, в зависимости от типа ЖКИ, полярность питающего напряжения может быть обратной указанной (и не один раз). Чтобы не "спалить" ЖКИ при определении полярности, нужно подключать питание через резистор, с замером тока, протекающего через него. Минимальный ток соответствует правильному выбору полярности.
Пост N: 267
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск, Мурманской обл.
Рейтинг:
1
Отправлено: 06.10.07 21:26. Заголовок: Re:
igor пишет:
цитата:
И что будет?
...На аппаратуре зачастую делают подобную "защиту" от переполюсовки. Правда там по + питания (где + известно). Сейчас я уже задумался... Может я и не прав. Надо проверить в понедельник...
Пост N: 35
Зарегистрирован: 08.03.07
Откуда: Раша, Санкт-Петербург
Рейтинг:
0
Отправлено: 07.10.07 17:09. Заголовок: Re:
Купил ЖКИ DataVision - первым же делом перепутал полярность... - ничего живой... работает... я думаю там диодная защита по питанию. Только он очень не любит нестабильное питание, сбивается при провалах напряжения. Кушает много. В остальном хвалю - хорошая веСчь!
Пост N: 395
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 16.10.07 21:20. Заголовок: Re:
Попалась мне тут статья в журнале "Радио" 2001-04-30, с программой (можно скачать с ФТП в/у сайта), для тестирования индикаторов, на основе HD44780. Кто-нибудь пробовал? Я вот не понял, она инициализацию сама, при запуске производит, или надо отдельно делать?
Пост N: 397
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 17.10.07 07:34. Заголовок: Re:
Алексей пишет:
цитата:
Я пробовал
Если речь об упоминавшейся выше программе, то, насколько понял, она умеет только включать-выключать текст на дисплее. Та же, про которую я говорю, работает на низком уровне (при чём, в полубайтовом режиме). Так что ей можно не только (наверное, даже точнее будет говороить: " не столько") проверить индикатор, но и освоить управление им. Работает она из ДОСа, и я пока не нашёл, как из неё выйти?
Пост N: 5
Зарегистрирован: 19.10.07
Откуда: РФ, Белоярский
Рейтинг:
0
Отправлено: 29.10.07 10:01. Заголовок: Re:
Попался мне 8-ми разрядный ЖКИ с 2-мя контроллерами КР1820ВГ1. Нашел инфу, как его грузить по I2C. Попытался, не получилось. горит все вразнобой, еще и мигает беспорядчно. Но тут такая ерунда - он снят с неисправной контрольно кассовой машины, поэтому может быть сам по себе дохлым. Никто не работал с таким чудовищем? Может, завалялся у кого кусочек рабочего исходника, чтобы уж точно убедиться, что не я виноват?
Пост N: 31
Зарегистрирован: 04.05.07
Откуда: Беларусь, Минск
Рейтинг:
0
Отправлено: 30.10.07 00:40. Заголовок: Re:
stas_00 пишет:
цитата:
Изучаю 25/1 раздел "Самоучителя". Собрал на макетной плате демонстрационное устройство по материалам журнала "Elector" с прошивкой LCDAlb_1.asm. Вывел надпись на ЖКИ: "PICee .....", всё получилось. После редактирования программы, с целью заменить латинские буквы на русские- получил кракозябры???
При работе с латынью достаточно в ячейки сразу записывать нужные буквы ("A", "B", "C", "D"). А вот при работе с кириллицей нужно пользоваться числовым представлением каждой буквы (0A0h, 0A1h, 0A2h и т.д.) Это связано с тем, что для латыни компьютерная и ЖКИ кодировки совпадают, а для кирилицы - нет.
Пост N: 7
Зарегистрирован: 19.10.07
Откуда: РФ, Белоярский
Рейтинг:
0
Отправлено: 30.10.07 13:24. Заголовок: Alberto пишет: Дмит..
Alberto пишет:
цитата:
Дмитрий прав. А вообще зайдите сюда: http://community.livejournal.com/ru_electronics/40219.html там, по моему, такой же обсуждается.
Прошу прощения, но посчитал - глупо создавать ветку из-за одного вопроса-ответа, поэтому и втиснул в подходящую. Спасибо за инфо, Alberto, точно такая же фигня у меня, как там. тока они там на более раннем этапе, чем я.
Наконец-то и я "добрался" до данного девайса. В связи с этим вопрос, кто-нибудь запускал его в Протеусе? А то у меня что-то не хочет.
про Ваш интерес к R/W ни слова. Спросите у Винтика, он специалист в Протеусе, а, вообще-то, если есть сам девайс, то почему не хотите заняться самим железом?
Пост N: 442
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 31.10.07 21:11. Заголовок: Alberto пишет: Ваш ..
Alberto пишет:
цитата:
Ваш интерес к R/W
Дык, именно это в самоучителе и расписано. Зачем же отказываться? А вот в Протеусе "плавающая задержка" работать почему-то не хочет. С обычными - всё в порядке.
цитата:
заняться самим железом
Именно это и сделаю в ближайшее время. Другого пути не вижу.
Кстати, смена кодовой страницы, в Протеусе, тоже не работает.
Пост N: 359
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 05.11.07 12:44. Заголовок: Сейчас и не вспомню,..
Сейчас и не вспомню, но точно не ParaLight, хотя по большому счету, разницы между ними нет, есть отличие по быстродействию, еще какие-то мелочи, но всё самое главное работает так же как и в оригинале.
Пост N: 363
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
1
Фото:
Отправлено: 05.11.07 19:51. Заголовок: Может кто знает, поч..
Может кто знает, почему на индикаторе на основе хд44780 16х1 отображается только первые 8 символов? Вторая половина ни вкакую. Подпрограмма взята из самоучителя и немного переписана под свои нужды. Эта же подпрограмма практически без изменений работала в другой конструкции, только индикатор был совместимый с 44780 и 16х2. Замечено еще что этот индикатор не работает с плавающей задержкой, а с простой задержкой все прекрасно работает. Может битый или в настройках есть такой режим?
Пост N: 360
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 05.11.07 20:32. Заголовок: По идее если работае..
По идее если работает с 16х2, то должен и с 16х1 работать, адресация первой строки такая же. Было бы неплохо проверить на заведомо исправном, т.к. впечатление такое что он "дохлый".
Пост N: 33
Зарегистрирован: 04.05.07
Откуда: Беларусь, Минск
Рейтинг:
0
Отправлено: 09.11.07 02:16. Заголовок: Я вот думаю, а так л..
Я вот думаю, а так ли она нужна эта плавающая задержка? А вдруг отсоединится/переломается шлейф с индикатором и контроллер зациклится на ожидании готовности, а проще говоря прекратит выполнение основной программы? Лично я минимизировал время задержки уменьшая его до тех пор, пока не начинались глюки на дисплее, после чего увеличивал для страховки полученное число вдвое и оставлял в таком виде (получилось около 30мкс). Мне кажется, сомнительный выигрыш в виде десятка микросекунд не оправдывает риск полного останова контроллера... Или все-таки есть задачи в которых этот выбор может оказаться важным?
Пост N: 366
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 09.11.07 18:03. Заголовок: kroko пишет: А вдру..
kroko пишет:
цитата:
А вдруг отсоединится/переломается шлейф с индикатором
если устройство не работает то так ли важно с индикатором или без? Да и насчет задержки я полностью на стороне Дмитрия, хотя, по честному говоря, почти никогда плавающую задержку для ЖКИ не применяю: иногда выводов у МК не хватает, а иногда просто нет такой необходимости.
ИМХО, проблема, как говорится, "высосана из пальца". Судя по тому, что все проверенные мною "сторонние" программы, в Протеусе работают, их авторы используют фиксированные задержки. Подозреваю, что дело здесь, в использовании ЯВУ. Как бы там ни было, это - личное дело каждого. Лично я, в первую очередь уделяю внимание универсальности (что бы потом не маяться с модефикациями, или переносами в другую программу), даже иногда в ущерб (но незначительный) оптимизации кода. "Плавающая задержка", на мой взгляд, как-раз сочетание того и другого. Про экономию 1 ноги говорить, когда задействуются 10... Даже, если использовать полубайтный режим, то всё-равно разница: 7-6.
А вот давно хотел узнать. Есть ли глубокий смысл, в многократном дублировании на плате контактов подсветки A и K? И вообще. Как она осуществляется? Обычный светодиод?
Пост N: 35
Зарегистрирован: 04.05.07
Откуда: Беларусь, Минск
Рейтинг:
0
Отправлено: 10.11.07 14:26. Заголовок: Внутри несколько SMD..
Внутри несколько SMD светодиодов с параллельным или последовательно-параллельным включением (разбирал не такой, но похожий девайс). На счет контактов подсветки - может и лишние, а вот на счет резисторов обильно разбросанных по плате - немногие знают, что все они служат лишь для создания резистивного делителя для регулирования контрасности дисплея!
Пост N: 478
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 11.11.07 11:17. Заголовок: kroko пишет: через ..
kroko пишет:
цитата:
через ЦАП
Не понимаю Вашей иронии. Или же это - предложение? Тогда поясните подробнее. ШИМ, кстати говоря, как-раз является некой разновидностью ЦАПа. Так вот. Используя 10-ти разрядный ПИКовский ШИМ, можно получить 1024 уровней яркости свечения. Это теоретически. Практически же, я использовал подобное включение, но несколько по другому алгоритму. Там был многоразрядный светодиодный индикатор, поэтому эффект присутствовал. Как это будет смотреться с одним светодиодом, да ещё который стоИт в подсветке, я не знаю. Собственно в этом и вопрос.
Пост N: 37
Зарегистрирован: 04.05.07
Откуда: Беларусь, Минск
Рейтинг:
0
Отправлено: 11.11.07 14:22. Заголовок: Это уже больше из ра..
Это уже больше из разряда "понтов". В мобильниках это используется для плавного гашения экрана, поэтому если цель оправдывает средства, то будет вполне экстравагантно. Правда в ЖКИ индикаторе стоит не один, а несколько светодиодов, которые все вместе кушают неплохой ток. Поэтому нужно предусмотреть транзистор на выходе шима.
Пост N: 368
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 12.11.07 13:11. Заголовок: kroko пишет: без ин..
kroko пишет:
цитата:
без индикатора устройство очень даже будет работать
только зачем оно нужно без вывода результатов работы? Именно это я и имел ввиду. Задержки у всех HD44780 и клонов практически не отличаются, т.ч. задавая ее раза в полтора больше я пока что проблем не имел. Dmitry Dubrovenko пишет:
цитата:
А никто не пробовал эту самую подсветку через ШИМ запитывать
Идея хорошая, только лучше не подсветку а контраст.
Винстаровский модуль, совместно с 628-м ПИКом получился - 25mA.
Проверил сегодня ток подстветки 16*2 индикатора - при 40 мА светится еле-еле, при 100 мА достаточно прилично, а по паспорту можно вообще до 260 мА подавать. Что-то мне подсказывает что одной ногой пика отделаться будет сложно. И яркость и контрасность можно регулировать ШИМом, в одном случае на выходе понадобится транзистор, в другом - сглаживающий фильтр. Только вот мне кажется что на практике никто из вас этим пользоваться не будет, так как плюсы подобных решений пока озвучены не были да и сложно вообще представить для чего это нужно. Да и интересно посмотреть как вы будете на ощупь програмно настраивать контрасность при первом включении модуля )
Пост N: 486
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 13.11.07 10:44. Заголовок: kroko пишет: при 40..
kroko пишет:
цитата:
при 40 мА светится еле-еле
Так что за модуль-то?
цитата:
яркость и контрасность можно регулировать ШИМом
Да это-то понятно. Просто мне что-то не представить ситуацию, когда контрастность необходимо регулировать многократно в процессе эксплуатации. Вроде как, первый раз включил, отрегулировал, и забыл. Ну, может, через пол года ещё разок подстроил. А вариант применения с подсветкой Вы сами сказали.
мне что-то не представить ситуацию, когда контрастность необходимо регулировать многократно в процессе эксплуатации
кому как, одному фиксированная задержка, а конечный потребитель должен сам выставить контрастность по своему вкусу. А подсветку я всегда делаю ниже среднего: и по глазам не бъет, и в темноте видно хорошо, и ток около 20 мА.
Пост N: 412
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск, Мурманской обл.
Рейтинг:
1
Отправлено: 06.12.07 09:53. Заголовок: А почему нет? Сам ин..
А почему нет? Сам индикатор рассчитан на напряжение подсветки в 5 вольт. Согласен, даже 300 mА многовато, а кому легко? Поэтому и делаем яркость поменьше. А в MT-20S4A-2YLG при 5 вольтах вообще средняя яркость... В своём синтезаторе я сделал ключ на 2N3904 и при входе в сервисное меню, пользователь сам выбирает 2 градации яркости.
Пост N: 557
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 07.12.07 10:34. Заголовок: kroko пишет: В дата..
kroko пишет:
цитата:
В даташите на 1602 фигурирует напряжение 4,2-4,6В.
Вот и я о том же.
цитата:
на основе светодиодной матрицы
Помнится я имел дело с SMD сверхяркими светодиодами. В отличии от корпусных, они были расчитанны на ток всего лишь в несколько mA. Так сколько же надо светодиодов, что бы получить 300mA?
Может быть, решение загадки гораздо проще? Ведь задача подсветки, не что б индикатор излучал яркий свет, а что б цифры были видны. А они нормально видны и при небольшой яркости.
Добрый день! Возникла следующая проблема : некое устройство собранное на 16ф876а питается от импульсного блока питания и имеет гальваническую связь с переменкой 220в результаты работы выводятся на 2-х строчный жк дисплей при косании щупами мультиметра переменки иногда присходит зависание жк дисплея хотя все устройство продолжает нормально функционировать В чем может быть проблема пробывал ставить по питанию кандеры не помогло?
Пост N: 36
Зарегистрирован: 08.03.07
Откуда: Раша, Санкт-Петербург
Рейтинг:
0
Отправлено: 13.12.07 19:38. Заголовок: А как у вас ~220 гал..
А как у вас ~220 гальванически завязана? Через емкостной делитель? А вообще - висняк обычно по питанию идет. Надо развязывать... DC-DC... Заодно и входы развяжете... 2 микросхемы с оптронами и никаких беспокойств.
Отправлено: 14.12.07 23:05. Заголовок: Схему выложить нет в..
Схему выложить нет возможности! кандеры пробовал ставить по питанию жк электролиты 45*50в С 220 на прямую идет минус платы чтобы развязать оптронами и преобразователями 1-нужно переделывать всю печатку 2-по габаритам не войдет После эксперементов выяснилось что жк зависает не полностью а только часть отвечающая за вывод на индикацию, при косании щупом переменки на индикаторе может включиться только 1-я строка при повторном косании может активироваться 2-я строка это при том что инициализация производится только на первом витке программы ,пробывал другой индикатор результат один еще в момент касания щупом видно промилькивание содержимого 2-й строки в 1-й еще когда происходит сбой и остается 1-я строка то иногда она продолжает отображать информацию а иногда замерзает.
кандеры пробовал ставить по питанию жк электролиты 45*50в
Помимо электролита расположенного на входе и выходе стабилизатора, на ножки каждой микросхемы (либо в максимальной от них близости) желательно добавлять керамические конденсаторы емкостью 50n-100n. Для ЖК дисплея можно использовать SMD конденсатор типоразмера 0805 запаянный непосредственно между 1 и 2 контактами платы ЖК. Андр пишет:
цитата:
С 220 на прямую идет минус платы
Если вы были вынуждены гальванически соединить минус с сетью 220, то смею предположить, что несколько входов/выходов пика так же связаны с сетью. Если это так, не мешает снабдить эти выводы такими RC цепочками, которые не мешали бы прохождению полезного сигнала, но в тоже время препятствовали выходу напряжения за рамки 0-5V в результате прохождения паразитного импульса.
Пост N: 28
Зарегистрирован: 04.12.07
Откуда: Россия, Новосибирск
Рейтинг:
0
Замечания:
Отправлено: 03.03.08 16:45. Заголовок: Пробовал свой 1601AY..
Пробовал свой 1601AYGHCT (16х1)запустить через лпт для проверки. Спаял, запускаю smartie5 показывает только первые 8 знакомест. Запускаю lcdmonitor3 - тоже самое. В даташите написано что надо питать его от 5В, но ему мало(ничего не показывает) подал 12В - начал показывать, но только 8 знакомест. В чем проблема? вот схема
Пост N: 200
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг:
0
Отправлено: 03.03.08 20:54. Заголовок: 16x1, это не одна..
16x1, это не одна строка, а две строки, идущих друг за другом, по восемь знакомест в каждой (8x2). В Вашем случае, видимо не иннициализируется вторая строка. 12 вольт подавать не стоит. Дорого эксперимент может обойтись.
Пост N: 624
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 03.03.08 23:50. Заголовок: MAZ пишет: контраст..
MAZ пишет:
цитата:
контрастность крутили
похоже что нет, ведь у него 3-ий вывод на "земле висит". И похоже что это индикатор на расширенный температурный диапазон (буква Н в названии), а у них для нормальной работы надо на 3-ий вывод до -5В (регулируется) подать. А то что от 12В не сгорел, однозначно "крутой" экземпляр .
Пост N: 623
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 08.04.08 17:47. Заголовок: Сегодня зашёл радио-..
Сегодня зашёл радио-магазин и... нашёл то, что уже 2 года ждал, появились ОНИ - двустрочные индикаторы! Пока не покупал (попросил отложить 1 штуку). Хочу узнать кто-то работал с моделью WH1602A-NGG-CT, не глючат ли случайно такие индикатоы?
Пост N: 781
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 08.04.08 20:30. Заголовок: Пётр пишет:кто-то ра..
Пётр пишет:
цитата:
кто-то работал
Это продукция Winstar'а. У меня есть ихние индикаторы. Жалоб нет. Но у меня, с буквой B (это Model name) после 1602. Про поддержку языков говорит последний элемент в маркировке. Судя по таблице, у вас позитивный, серый индикатор, без подсветки, с энглиш и кириллицей.
Зайди сюда: http://gete.ru/post_1175015847.html здесь по твоим индикаторам. А еще лучше сходи на сайт производителя, только там, скорее всего, на буржуйском.
Отправлено: 09.04.08 07:42. Заголовок: Пётр берите любой. О..
Пётр берите любой. Они практически одинаковые. Посмотрите на плате индикатора, на какой вывод подключен общий. И если получится, разберитесь где плюс. Они обычно на 1 или 2 выводе. На плате есть маркировка. Главная задача их не перепутать. А потом можно и экспериментировать. С отрицательным питанием не разу не встречал, но бывают и такие.
Пост N: 702
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 09.04.08 12:10. Заголовок: MAZ пишет: С отрица..
MAZ пишет:
цитата:
С отрицательным питанием не разу не встречал, но бывают и такие.
там не совсем отрицательное, там только на вывод контрастности подается отрицательное напряжение. Это индикаторы на расширенный температурный режим. Я их искал, но, увы, не нашел... может плохо искал?
Пост N: 688
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 11.05.08 17:42. Заголовок: Есть индикатор WH160..
Есть индикатор WH1602A-YGH-CTK Что означает буква K в конце? В даташите написано ^ Special Code CT : English and Cyrillic standard font ;K: LED 20 DICE Не совсем понял что значит LED 20 DICE, "Сократ 4.1" перевёл как ПРОВЕДШЕЕ 20 КРИСТАЛЛОВ Что это может значить?
Пост N: 697
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 16.05.08 15:52. Заголовок: Что-то индикатор WH1..
Что-то индикатор WH1602A-YGH-CTK не может со мной "подружится", показывает мне Он рабочий, поскольку с прошивками из "Самоучителя..." работает по 8-ми и 4-ёх проводной схеме.
А при запуске с моей прошивкой "светится" только вся верхняя строка или в левой позиции мигает курсор в виде знакоместа. Правда, я немного схитрил, решил сэкономить выводы ПИКа и подключил индикатор по 4-ёх проводной схеме к 74HC595 Эта м/с представляет собой сдвиговый регистр с последовательной загрузкой данных. Есть так-же и регистр-защёлка, в который записываются данные после их загрузки, т. е. при загрузке эти данные на выходах не появляются. Они появятся только после команды "Запись".
Индикатор подключен так: Выводы DB4-DB7 индикатора подключил к выводам 15, 1-3 м/с. Вывод RS к выв. 4 Вывод E к выв. 5
Здесь набросок исходника, который зашит в 628 ПИК.
Как подключается 74HC595 к ПИКу можно узнать из секции #define исходника.
Пост N: 897
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 16.05.08 17:35. Заголовок: Пётр пишет: Что-то ..
Пётр пишет:
цитата:
Что-то индикатор WH1602A-YGH-CTK не может со мной "подружится"
так это не индикатор, это 74НС595 . Я так подключал ЖКИ, тоже по 4-х проводному интерфейсу. Сигналы D4-D7 и RS шли через регистр, а Е напрямую на ЖКИ. Для вывода информации использовалось три вывода ПИКа: Е на ЖКИ, Data (данные) и Clock (для сдвига информации) на регистр. Никаких проблем небыло. А у тебя, я так понял, все сигналы на ЖКИ идут через регистр (включая Е)? Вечером гляну, можешь схемку скинуть, что бы проще разбираться было?
Пост N: 699
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 16.05.08 19:21. Заголовок: Нашёл одну ошибку в ..
Нашёл одну ошибку в ПП HD_Out. Перед всеми вызовами ПП _595_OUT нужно добавить строку movfw HD_temp1 После этого вроде как проходит инициализация, поскольку верхняя строка перестаёт светитья и начинают едва светитья две строки, но инфа на экран по прежнему не выводится.
Пост N: 700
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 16.05.08 19:33. Заголовок: Удалось вывести инфу..
Удалось вывести инфу на экран. Правда, варварским методом. Решил поэкспериментировать, после включения питания, через 2 секунды вытащил ПИК под напряжением (знаю, это делать ни в коем случае нельзя, но ведь нужно как-то до сути докопаться). После его установки, на экране появилась надпись. Значит я где-то напутал с задержками. Знать-бы где.
Пост N: 900
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 16.05.08 19:42. Заголовок: Другое дело :sm1:. Я..
Другое дело . Я так понимаю что это не реверсивный счетчик? Надо даташит скачать (может мне "ник" даташит взять?), но насколько я понял со схемы у тебя строб Е приходит одновременно с установкой данных и сигнала RS. Скорее всего в этом и есть проблема. Тебе нужно выдержать паузу (так сразу не вспомню какую точно, кажись 1 мксек, посмотри в "Самоучителе") для того чтобы данные установились и только потом подавать строб. Нельзя подавать сигнал строба одновременно с подачей данных и RS. Если уж ты все равно успользуешь три вывода МК подай строб напрямую на ЖКИ, т.е. данные в регистр приходят и выставляются на выходах по каждому такту. Данные в регистр записались (прошел последний такт), выждал 1 мкс и подал строб Е на ЖКИ. Так было у меня, при такой организации никаких проблем нет. Или сделай задержку на строб Е, но это лишняя м/с (или RC цепочка) и такой вариант заведомо проиграшен.
Пост N: 901
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 16.05.08 19:44. Заголовок: Пётр пишет: вытащил..
Пётр пишет:
цитата:
вытащил ПИК под напряжением
могу выслать програмку на шаговый двигатель. Можно сделать так, что ПИК будет выдёргиваться и вставляться в панельку в полностью автоматическом режиме с заданной частотой!
Пост N: 701
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 16.05.08 21:45. Заголовок: Alberto пишет: Я та..
Alberto пишет:
цитата:
Я так понимаю что это не реверсивный счетчик
Правильно, это регистр, причём вывод "E" это запись в защёлки регистра.
Alberto пишет:
цитата:
я понял со схемы у тебя строб Е приходит одновременно с установкой данных и сигнала RS
Нет, сначала записываются данные с установленым лог. 1 на выв. "E" индикатора, а затем уже с те-же данные, но уже с лог. 0. Так что задержка программная и она намного больше 1мкс.
Alberto пишет:
цитата:
даташит взять
А у меня даже даташита нет, просто полистал пару журналов "Радио" и понял как она работает. Там всё элементарно. Банальный 8-ми разрядный сдвиговый регистр, совмещённый с регистром-защёлкой в который записываются данные по команде на выводе 12 м/с.
Alberto пишет:
цитата:
могу выслать програмку на шаговый двигатель. Можно сделать так, что ПИК будет выдёргиваться и вставляться в панельку в полностью автоматическом режиме с заданной частотой!
Пост N: 904
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 17.05.08 00:03. Заголовок: Пётр пишет: Правиль..
Пётр пишет:
цитата:
Правильно, это регистр
Про регистр я всё понял, просто хотел тебя на мысль навести, но...
цитата:
Так что задержка программная и она намного больше 1мкс.
неправильно ты, дядя Фёдор, бутерброд ешь . Когда происходит запись данных в ЖКИ? По спаду строба с "1" в "0", но при этом данные и RS на ЖКИ должны быть установлены! Не может сдвиговый регистр поменять данные на шестом выводе предварительно не "протолкнув" через себя пять предыдущих бит. Если бы у тебе был простой регистр без защелок, было бы проще. Соединил вывод RA2 МК с выводом Е ЖКИ, выставил на нем "1". Загнал в регистр пять бит, перевел строб ЖКИ в "0", выждал 1 мксек, перевел в "1". Протокнул следующие пять бит через регистр, опять строб на ЖКИ... А здесь у тебя еще строб и на защелку регистра подавать нужно. Надо подумать.
Пост N: 906
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 17.05.08 01:43. Заголовок: Alberto пишет: Надо..
Alberto пишет:
цитата:
Надо подумать.
боюсь что так как у тебя не получится. Ведь данные DB4-DB7, RS и E на ЖКИ поступают одновременно, а по мануалу спад строба на ЖКИ должен быть не ранее чем через 200 нсек, после установки данных (всё о ЖКИ), а у тебя одновременно. Поправь меня, Пётр, если я не прав. С программой не разбирался, мне проще свою написать, завтра куплю регистр и, если будет время, попробую. У меня на макетке схема управления CD-ROM'ом собрана, жалко разбирать... Если уж совсем "труба" будет постараюсь подключиться. Какие еще 8-ми разрядные регистры у тебя есть? Может на другом будет проще?
Пост N: 702
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 17.05.08 06:17. Заголовок: Alberto пишет: Попр..
Alberto пишет:
цитата:
Поправь меня, Пётр, если я не прав.
Выше я об этм уже писал. Сначала в регистр записываются байт с 6 битом, установленым в 1, т. е. на входе индикатора "E" будет 1. Затем в регистр записывается тот же байт, но его 6 бит сброшен в 0. Для передачи одного байта, данные в регистр загоняются 4 раза. Сначала старший полубайт с 1 в шестом разряде (на выводе "E" индикатора) затем эти же данные, но с нулём в шестом разряде. После чего таким же образом загоняются 2 раза младший полубайт (сначала с 1 в шестом разряде, а потом с 0). Т. е. формируется активный перепад (1-0) с уже установившимися данными, ведь состояние остальных бит не поменялось. Задержка между установкой данных и активным перепадом намного больше 200 нсек и равняется времени повторной загрузки данных в регистр. Может не так понял и ты имел в виду что-то другое?
Alberto пишет:
цитата:
Ведь данные DB4-DB7, RS и E на ЖКИ поступают одновременно
Нет, см. выше.
Как я уже писал раньше, инициализация кажется проходит, но скорее не доконца, поскольку включаются 2 строки, но данные не выводятся на индикатор. Если ПИК вытащить и поставить на место, то происходит повторная инициализация и в большенстве случаев инфа на экране появляется. Думаю собака порылась именно во временных задержках между командами инициализации.
Alberto пишет:
цитата:
мне проще свою написать
Это понятно, мне тоже проще свою написать. Ладно, попробую как нибудь сам разобраться. Как только появится положительный результат - сообщю.
Пост N: 907
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 17.05.08 07:35. Заголовок: Пётр пишет: Выше я ..
Пётр пишет:
цитата:
Выше я об этм уже писал.
вот здесь у меня и есть сомнения. Идею я понял. Это то же самое что описано вот здесь: http://www.rtcs.ru/article_detail.asp?id=40 только ты хочешь применить ее к HD44780. Теоретически я с тобой согласен, информация на выходах регистра "защелкивается" и во время повторной загрузки не меняется до следующего "защелкивания"... А при следующем защелкивании меняются только данные на выводе Е ЖКИ, т.к. загоняется тот же полубайт... Согласен, тормознул я , я чего-то посчитал что между "перезащелкиваниями" данные на выходе регистра будут сбрасываться. Каюсь , был неправ. Ладно, сегодня уже поздно, завтра (вернее сегодня, но уже утром) я к тебе подключусь. Мне тоже стало интересно, т.к. у меня нехватка выводов на схеме с CD-ROM'ом. Скорее всего придется применять такую же схему или что-то похожее. Так что стоит заняться.
Соеденил вывод "E" индикатора с RA3 ПИКа. В ПП HD_Out после каждого вызова подпрограммы _595_OUT добавил строб call PAUSEOUT ; Задержка на 10 машинных циклов bsf porta,3 call PAUSEOUT ; Задержка на 10 машинных циклов bcf porta,3 ; Активный перепад строба И ничего не изменилось.
Сейчас скачаю исходник из устройства, опубликованого в "Радио" 2007, №5, с 42-45. Там индикатор связян с контроллером по ИК каналу. Посмотрим, может найду ответ.
PS. Все устройства их самоучителя используют плавающую задержку, а я по понятным причинам её использовать не могу.
Пост N: 909
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 17.05.08 16:19. Заголовок: Пётр пишет: Соедени..
Пётр пишет:
цитата:
Соеденил вывод "E" индикатора с RA3 ПИКа.
в твоём случае так нельзя, так у тебя регистр с защёлкой. Я использовал CD4094, хотя он тоже был с защёлкой, но там при подаче "1" на вывод защёлки данные на выходе менялись по ходу поступления тактовых импульсов. А в случае 595-ой я чего-то понять не могу. Даташит как будто не "русскими" составлен. Надо проверить на железе. Сейчас пойду куплю его. К вечеру должны быть результаты (нюхом чую ).
Пост N: 704
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 17.05.08 17:51. Заголовок: Alberto пишет: в тв..
Alberto пишет:
цитата:
в твоём случае так нельзя, так у тебя регистр с защёлкой.
А при чём тут регистр? Ведь я не отсоединял от него выводы ПИКа а всего лишь задействовал для управления выводом "E" индикатора свобоный вывод контроллера.
Пост N: 383
Зарегистрирован: 26.12.06
Откуда: Украина, Одесса
Рейтинг:
0
Отправлено: 17.05.08 19:53. Заголовок: Петр, я могу предло..
Петр, я могу предложить осцилограмки временнЫх интервалов инициализации и вывода данных ЖКИ на HD44780, (4.17 обмена). Может быть тогда будет проще разобраться.
Большое спасибо за наводку. Уж незнаю что конкретно было в проге, но когда адаптировал инициализацию под свой исходник, всё заработало. Предполагаю что проблема была либо в глючной ПП задержки или в некорректной передаче команды 00101000 Раньше она отправлялась полностью (сначала 0010, а потом 1000), а теперь только первая часть. Счас разбиратся буду где конкретно "грабли" были.
Сейчас всё Ок.
PS. Я же говорил что проблема где-то в инициализации.
Пост N: 387
Зарегистрирован: 26.12.06
Откуда: Украина, Одесса
Рейтинг:
0
Отправлено: 17.05.08 23:25. Заголовок: Вот, правда все не у..
Вот, правда все не успел разрисовать, теперь уже не актуально Тут видно, сначала передается 4бита b'0010', а потом установка 4х битного режима, команда b'00101000'.
DISPLAY ;------------------------------------------- ; Вывод надписи в 1-ю строку. ;-------------------------------------------
clrf PCLATH movlw .128 ; Выбор ячейки DD RAM с адресом 46h, что соответствует ; установке курсора в третье слева знакоместо 2-й строки. call ENTER_BF ; "Плавающая" задержка со стробом под команду 11000010.
movlw .16 ; Запись числа .16 (количества выводимых в строку movwf COUNT ; символов) в регистр Count. WR_1 movf COUNT,W ; Копирование содержимого регистра Count в W. sublw .16 ; .16-Count=... (результат записывается в W). call STR_1 ; Условный переход в ПП EEPR. bsf PORTA,RS ; Установка на линии RS "1" (режим записи данных). movwf FSR movfw INDF addlw 30h call ENTER_BF ; "Плавающая" задержка со стробом под вывод ; данных на индикацию. decfsz COUNT,F ; Подготовка к выводу на индикацию ; следующего символа таблицы. goto WR_1 ; Если результат декремента не=0, то переход в ПП WR_1. ; Если результат декремента =0, то программа ; исполняется далее. goto STROKA_2
;============================================================================================= ; Вывод результатов измерения во 2-ю строку. ;=============================================================================================
STROKA_2 movlw .192 ; Выбор ячейки DD RAM с адресом 46h, что соответствует ; установке курсора в третье слева знакоместо 2-й строки. call ENTER_BF ; "Плавающая" задержка со стробом под команду 11000010.
movlw .16 ; Запись числа .16 (количества выводимых в строку movwf COUNT ; символов) в регистр Count. WR_2 movf COUNT,W ; Копирование содержимого регистра Count в W. sublw .16 ; .16-Count=... (результат записывается в W). call STR_2 ; Условный переход в ПП EEPR. bsf PORTA,RS ; Установка на линии RS "1" (режим записи данных). movwf FSR movfw INDF addlw 30h call ENTER_BF ; "Плавающая" задержка со стробом под вывод ; данных на индикацию. decfsz COUNT,F ; Подготовка к выводу на индикацию ; следующего символа таблицы. goto WR_2 ; Если результат декремента не=0, то переход в ПП WR_1. ; Если результат декремента =0, то программа ; исполняется далее. return ; GOTO INIDS
Где то обещал выложить исходник, как работать с двумя строками. Все сделано на основе информации из самоучителя. Здесь извлечение данных из нужных регистров происходит через косвенную адресацию одновременно с преобразованием цифр к аски коду, поэтому для вывода статичных надписей возникают некоторые проблемы, необходимо отнимать от кода символа 30h чтобы в результате получить правильные данные на индикаторе. Регистры в названии которых нет цифр, это буквы. Лучшего ничего не придумал, так как необходимо было выводить показания трех термометров ДС по пять разрядов для каждого и еще 4 разряда. всего 19 разрядов постоянно изменяются. Пока есть задумка сделать универсальную подпрограмму для работы с любым символьным индикаторам на HD44780 и не плодить для каждой строки свою процедуру. сделать одну для работы с любым количеством строк.
Алексей, хорошая задумка, но похоже она выльется в большой объем программы, половину символов надо анализировать и выставлять соответствующий код таблицы знакогенераторов. Всегда, как выясняется, говоря о применении знакогенераторов нужно оговариваться, с каким и под какой ЖКИ вы работали, приводя выдержку из программы. Получается: по таблице составь свою таблицу. Поясню ....."необходимо отнимать от кода символа 30h чтобы в результате получить правильные данные на индикаторе." ЖКИ Winstar WH1602A.. одна таблица знакогегнератора, что касается латинских символов идет один к одному и без какой либо коррекции выводиться на дисплей. Что касается кирилицы тут сплошная утопия (хотел сходу составить подпрограмму преобразований кодов...), во -первых, какие буквы совпадают с латиницей (A,P,H,...) те должны браться оттуда, 22 буквы символа кирилицы имеют разницу про которую вы говорите 30h, другие по разному (21h., 2eh,...) усидчивости не хватило проработать до конца. То есть отдельные программы по фирмам, это более реально. Что касается МЭЛТ (МТ-10S1), можно сказать, что в этом плане молодцы, у них две таблицы знакогенератора, "0" совпадает с Winstar, а вот в "1" кирилица совпадает с кодами выставляемые таблицей компа, можно писать тексты соответствующими символами кирилицы, не задумываясь о кодах (но опять надо прыгать со страницы на страницу). Спрашивается, почему не поместить в "0" таблицу, чтобы и латиница и кирилица были в одном месте - непонятно(я работаю в MPLAB, другие программы могут иметь и другие знакогенераторы). А почему не оттолкнуться от отработанной таблицы ASCII, мне лично не понятно, какие сложности в этом процессе...
Смутно припоминаю про что идет речь, согласен, программа не без недостатков... nik_nik пишет:
цитата:
но похоже она выльется в большой объем программы
извините, но одна универсальная программа выльется в десятки раз больший объем кода. Данная программа предназначена для вывода статичных надписей и символов, для которых в любом конкретном случае нужно будет составлять таблицу, а отнять вручную 30h от кода символа во время написания программы не составляет большого труда. А также для вывода изменяющихся цифровых данных, в данном случае вывод значений тепмератур с трех различных DS18B20, при чем считывание с каждого датчика проиходит одновременно, следовательно и значения на индикаторе желательно бы менять одновременно, в результате цикл индикации занимает не 3 с., а чуть меньше 1 секунды. Показания на индикаторе от любого датчика фиксируются и отображаются одновременно с периодом чуть меньше 1 секунды. Т.е. прога предназначена в основном для вывода на индикацию изменяющихся цифровых данных, при этом, как Вы уже заметили нет необходимости преобразовывать в коды символов аски, программа это делает самостоятельно. nik_nik пишет:
цитата:
Алексей, хорошая задумка
Рад, что Вы разобрались с программой... Косвенная адресация великая вещь, если хорошенько с ней разобраться, можно наворотить такого... Было дело нужно было измерять в прерывании один сигнал, спустя время уже два, а потом вообще четыре. для одного сигнала прерывание получилось примерно в десять команд, для двух примено в два раза больше, для четырех этот способ оказался слишком сложным и пришлось придумывать чтото новое, пришла на помощь косвенная адресация и прерывание получилось чуть больше чем для одного сигнала, хотя измерялись все четыре, правда все они разнесены по фазе что и дало возможность такое сделать.
Пост N: 41
Зарегистрирован: 27.08.07
Откуда: Россия, Москва
Рейтинг:
0
Отправлено: 03.07.08 06:20. Заголовок: Алексей, я вообще то..
Алексей, я вообще то про твою фразу:"Пока есть задумка сделать универсальную подпрограмму для работы с любым символьным индикаторам на HD44780", и мое сообщение про коды, а не про программу, видимо я вас не совсем понял, а вы меня. Я сейчас как раз на индикаторах топчусь. Вопрос: есть ли какие ограничения использования (F84A) RB регитсра как под данные (RB4-7)? так и под управление (RB0-3) (HD44780). А то с использованием RA проходит(RS, RW,E) , а перехожу на RB не хочет работать, вроде при организации записи не изменяю младший бит использую наработку Самоучителя ПП ENTER № 49, 43), а все равно не хочет выводить?
Пост N: 477
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
1
Фото:
Отправлено: 03.07.08 07:24. Заголовок: Нет, ограничений нет..
Нет, ограничений нет, только обязательно надо позаботиться о неизменном состоянии RS, RW,E при установке данных. Мне кажется у тебя именно эта проблемка, изменяется какой либо из этих сигналов при установке данных. Это делается при помощи двух или трех логических операций. Плюс ко всему уже необходимо тщательно следить за регистром трис.
Спасибо Алексей, проблема оказалась банальной, при пайке перепутал RS с RW? проводки попутал на индикатор, все пошло. Можно было и програмно переопределить, ну ...а паяльник уже нагрелся.
Пост N: 14
Зарегистрирован: 29.07.08
Откуда: Россия, Саратов
Рейтинг:
0
Фото:
Отправлено: 28.08.08 10:27. Заголовок: HD44780 + PortA и прочие вкусности
Целиком демо-проект с сырцами + схема подключения в разноброд на любые (!) лини портов, в любом порядке. Кириллица, латиница, любое количество строк, анимация через дорисовку и покадровая.
Использована 4х проводная шина + 2 управляющих + 2 питание т.е. всего 8 проводов. Делайте рисунки своих плат более простыми и удобными.
Здравствуйте форумчане. У меня такая проблема возникла: LCD DataVision. Если интерфейс 8-и проводной всё ОК. Если же 4-х проводной, не работает автоинкремент. Прописываю при инициализаци, но ЖК выдаёт только первй символ и всё. Если для каждого знака указывать знакоместо и не прописывать автоинкремент- тоже всё ОК. Помогите советом.
Означает ли данная фраза, что программа пробовалась с другими индикаторами? Если нет, то, скорее всего, как Игорь сказал, программа. В противном случае, индикатор.
igor пишет:
цитата:
Очень помог бы отладчик ICD2.
Почему именно он? Мне, например, здорово Протеус помогает.
Пост N: 1184
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
3
Награды:
Отправлено: 14.02.09 23:29. Заголовок: Есть еще индикаторы ..
Есть еще индикаторы фирмы Fordata, в них применяются контроллеры SPLC780D не совместимые с HD44780 по каким-то параметрам именно в 4-х битном интерфейсе, т.е. если просто воткнуть такой ЖКИ вместо, например, Winstar'овского, то он работать не будет. Надо исправлять программу. Хотя и стоят они раза вполтора дешевле чем "нормальные" ЖКИ, но иметь несколько несовместимых ЖКИ как-то не сильно охота.
Здравствуйте. Подскажите, почему при включении двух строк ЖКИ контрасность хуже чем при включении только одной. Подстройка сопротивлением не решает проблемы. Задержки везде с опросом флага BF. Ещё иногда не высвечивается строчка по горизонтали в первой строке.
Пост N: 10
Зарегистрирован: 14.02.09
Откуда: РФ, Белгород
Рейтинг:
0
Отправлено: 28.02.09 22:01. Заголовок: Да кстати, думаю пре..
Да кстати, думаю представить для всеобщего обозрения прогу. У меня она работает с клавиатурой из 4 кнопок, ЖК и шаговым мотором. На ЖК положение мотора(верхняя строка), и задаёшь смещение(нижняя). Работает в железке. Вот только прогу красиво оформлю.
Пост N: 708
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг:
4
Отправлено: 28.02.09 22:17. Заголовок: Если после вывода ..
Если после вывода данных в обе строки и goto $, контрастность строк разная, то ЖКИ можно выбросить. Если нормальная, то ошибка в программе. Вернее всего, она связана с коротким циклом (кристаллы не успевают повернуться на "нужный" угол).
Друзья! Прочитал весь пост и пришёл к выводу: "...я отстал от поезда!..." Последнее сообщение аж в марте 2009 года! Неужели HD44780 капитулировал на наших условиях? ... Начиная с первых строк "Самоучителя" про HD44780, меня не оставляла мысль о том, чтобы прицепить индикатор целиком на один порт (в моём случае, PortB PIC16F628A), 4х-проводный интерфейс и по максимуму задействовать флаг BF. Ибо, по моему скромному мнению, задействование флага BF позволяет писать наиболее гибкие программы, а посему, хотелось бы с оным дружить! Но толи по невнимательности, или отсутствии систематических занятий или какой ещё причине, не удалось мне воплотить мою идею в жизнь. А главное, нет ясности, возможно ли это в принципе? Используя материалы "Самоучителя" и коллег, мне удалось составить программу которая прилежно работала в MPLab'е, но отказывалась работать в "железе". По поведению дисплея предполагю, что програма останавливается при первом обращении к ПП Enter BF. Я не прошу готовых решений, но если это не возможно (один Port*, 4х-проводный интерфейс + флаг BF), так может я зря трачу время? Не хотелось бы. Ведь всё-таки мечта.
Пост N: 885
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
1
Фото:
Отправлено: 03.09.09 18:33. Заголовок: Да, прекрасно работа..
Да, прекрасно работает на одном порту. Только необходимо разделять сигналы управления и данные. Т.е. в порт нужно выдавать полубайт данных, не изменяя состояния второго полубайта на порту. Это реализуется при помощи трех логических операций над данными в порту и выдавемыми данными в порт. Посказка, одна из команад будет ANDLW или ANDWF 11110000 или 00001111 в зависимости от того куда подключена шина данных индикатора...
Пост N: 12
Зарегистрирован: 26.03.07
Откуда: Россия , Зеленогорск
Рейтинг:
0
Отправлено: 04.09.09 19:02. Заголовок: Alberto пишет: для ..
Alberto пишет:
цитата:
для вставки текста...
Alberto, спасибо за помощь.
Alberto пишет:
цитата:
Выделяете свой текст
Alberto, вы имеете ввиду скопировать нужный участок в буфер обмена и нажать указанную кнопку?
igor пишет:
цитата:
команда выделенная синим не нужна.
А как же быть с младшим полубайтом? Ведь если её убрать, командой swapf 11110000 поменяется на 00001111. ??? Может я очевидных вещей не вижу, или мешают стереотипы. ???
Пост N: 886
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг:
1
Фото:
Отправлено: 04.09.09 19:05. Заголовок: igor пишет: команда..
igor пишет:
цитата:
команда выделенная синим не нужна. Если её выполнять, то в регистр Mem запишется результат предыдущего побитного "ИЛИ".
Она просто не нужна, но она и не мешается, она просто из мем копирует в аккумулятор... Тут скорее всего глюк в том, что блокируется младший полубайт, а если в младшем полубайте находятся и сигнальные линии, то на них установится нулевой уровень. С сигналом Е конечно не мешается но с остальными мешается. Индикатор никогда не сможет выдать флаг BF. Ведь при выдаче полубайта слова управления индикатор сразу же переходит в режим записи. Так что глюк здесь...
Пост N: 1475
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
4
Награды:
Отправлено: 04.09.09 19:40. Заголовок: stas_00 пишет: вы и..
stas_00 пишет:
цитата:
вы имеете ввиду скопировать нужный участок в буфер обмена и нажать указанную кнопку?
нет, вставить текст, потом его выделить и нажать кнопку. Попробуйте, есть же предосмотр. Просто текст программы выделен и размечен с ним приятнее работать. Алексей пишет:
цитата:
Она просто не нужна, но она и не мешается
а зачем нужно копировать данные из регистра в W, если следующая команда всё равно затрет данные в W. Мусор в чистом виде. И распишите, пожалуйста, как у Вас подключен ЖКИ, а то непонятно, там и RA, и RB. Где окнчательный вариант?
Пост 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?
Пост 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).
спасибо, я так и понял. Просто лучше когда это написано явно, чем догатываться.
цитата:
почему команды MOV лишние?
пишут не про все команды MOV, а только про выделенную зеленым цветом. Первая команда "movfw Mem" переписывает данные из Mem в регистр W, а вторая (swapf Mem,W) переписывает данные из Mem в W с перестановкой полубайт (тетрад). Какой смысл в первой команде если вторая тут же затирает предидущие данные? P.S. Игорь писал про командую выделенную синим цветом в своем сообщении. Будьте, пожалуйста, внимательнее. P.P.S. Вы так и не приняли во внимание мое замечание на построение Вашей п/программы Enter_BF? Ведь при таком построении линия RS у Вас всегда равна "0". И при выводе данных, и при выводе команд, а это глюк в явном виде.
;============================================================================================ ; ПП "плавающей" задержки на основе анализа состояния флага занятости 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-й банк.
;============================================================================================ ; ПП "плавающей" задержки на основе анализа состояния флага занятости 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 ; Возврат по стеку.
А вот так попробуйте... Я как то так делал и все работало. Если нигде с логикой не ошибся, то заработает. Но то что можно заставить работать используя только три команды это точно.
Все даты в формате GMT
3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет