-
17.08.2005, 22:07 #1
- Регистрация
- 11.07.2003
- Адрес
- г.Заозерск Мурманская обл.
- Возраст
- 59
- Сообщений
- 215
- Поблагодарили
- 3
- Поблагодарил
- 0
Драйвер для HT-1611
Вопрос к знатокам-программистам. Есть индикатор Holtek HT-1611. Необходимо вывести на него данные из PIC16F84A. Просьба помочь в этом деле. К сожалению, я зашёл в тупик! Пересмотрел массу листингов подпрограмм, но так и не нашёл правильного пути. В аттаче подпрограмма вывода данных на HT-1611. Подскажите, что не так? На дисплей выводятся несколько знаков (для примера брал 2). И ещё: просьба не избивать ногами начинающих...
Спасибо!
-
18.08.2005, 06:51 #2
- Регистрация
- 16.07.2005
- Адрес
- Омск
- Возраст
- 50
- Сообщений
- 34
- Поблагодарили
- 0
- Поблагодарил
- 0
Посмотрите через поиск Яндекса домашнюю страницу Николая Хлюпина с описанием УКВ тюнера. В тексте есть ссылка на описание ЖК модуля (правда НТ1613, а не 1611) и пример программы для вывода символов для PIC16F84. Может будет полезно. С наилучшими пожеланиями!
-
18.08.2005, 10:48 #3
- Регистрация
- 11.07.2003
- Адрес
- г.Заозерск Мурманская обл.
- Возраст
- 59
- Сообщений
- 215
- Поблагодарили
- 3
- Поблагодарил
- 0
На основе этого примера и я писал подпрограмму. Индикаторы похожи. Но получается не то, что мне нужно.
Последний раз редактировалось RW1ZK; 18.08.2005 в 12:10.
-
18.08.2005, 15:57 #4
- Регистрация
- 28.07.2003
- Адрес
- город
- Сообщений
- 28
- Поблагодарили
- 0
- Поблагодарил
- 0
На странице Александра Денисова http://ra3rbe.qrz.ru/ есть исходники программы частотомера с ЖКИ - посмотрите, может поможет?
-
18.08.2005, 19:35 #5
- Регистрация
- 11.07.2003
- Адрес
- г.Заозерск Мурманская обл.
- Возраст
- 59
- Сообщений
- 215
- Поблагодарили
- 3
- Поблагодарил
- 0
Смотрел и это. К сожалению, тоже непонятно... Да, ещё: Mpasm выдаёт ошибку-51 штука! Так что в данном листинге что-то не так.
-
18.08.2005, 21:15 #6Alex007ГостьПервоначальное сообщение от RW1ZK
Смотрел и это. К сожалению, тоже непонятно... Да, ещё: Mpasm выдаёт ошибку-51 штука! Так что в данном листинге что-то не так.
-
18.08.2005, 22:43 #7
- Регистрация
- 11.07.2003
- Адрес
- г.Заозерск Мурманская обл.
- Возраст
- 59
- Сообщений
- 215
- Поблагодарили
- 3
- Поблагодарил
- 0
Использую MPLAB IDE v7.20. Библиотеку P16f84a.inc подключал в проект. Дело даже не в этом. Мне нужна точка отсчёта (от чего можно оттолкнуться). Сегодня убрал по одной холостой команде "nop". На индикатор выводится то одна двойка, то две. Нужен хотя-бы простейший пример вывода. В таком большом листинге трудновато разобраться. Повторю, я только начинаю. Есть литература: В.С. Яценков "Микроконтроллеры MicroCHIP практическое руководство" и Заец "Конструкции на PIC". Простейшие программы писал на Pic Basic Pro. Там особых сложностей не возникало.
-
20.08.2005, 09:14 #8
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 55
- Сообщений
- 935
- Записей в дневнике
- 16
- Поблагодарили
- 64
- Поблагодарил
- 4
Вот по этой ссылке лежит описание ЖКИ с таким контроллером (вернее совместимого по командам HT1613)
http://www.telesys.ru/compon/lcm-10.pdf
Там на второй странице описания есть исходник (от производителя) вывода информации на ЖКИ. Круче первоисточника не найти
Будут вопросы --- пишите.
73!
RU3GA
-
20.08.2005, 09:21 #9
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 55
- Сообщений
- 935
- Записей в дневнике
- 16
- Поблагодарили
- 64
- Поблагодарил
- 4
Первоначальное сообщение от RW1ZK
Смотрел и это. К сожалению, тоже непонятно... Да, ещё: Mpasm выдаёт ошибку-51 штука! Так что в данном листинге что-то не так.
Денисов пользуется другим компилятором --- в его коде есть чисто ассемблеровские директивы , которые MPASM не понимает, например --- JZ , JMP и т.д. --- вот поэтому MPASM и выдает ошибку.
Посмотрите на цифровую шкалу от RW4LED --- она лежит на СКР . Вот там все команды стандартные и компилируется все нормально. Я в свое время, при изучении PIC, отталкивался именно от этой схемы и программы, менял там все так, как мне надо было, и все превосходно получилось.
Удачи!
RU3GAПоследний раз редактировалось RU3GA; 20.08.2005 в 11:32.
-
20.08.2005, 09:40 #10
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 55
- Сообщений
- 935
- Записей в дневнике
- 16
- Поблагодарили
- 64
- Поблагодарил
- 4
Первоначальное сообщение от RW1ZK
На индикатор выводится то одна двойка, то две. Нужен хотя-бы простейший пример вывода.
Грубо говоря, надо отслеживать как нажатие кнопки , так и отжатие. И в зависимости от времени того и другого принимать решение --- кнопка нажата два раза или это был дребезг от первого нажатия.
Например, первый вариант --- если кнопка была нажата 200 мс , а потом была отжата 200 мс --- вот тогда переходим к выводу числа на индикатор, а иначе --- это дребезг и помехи.
Второй вариант --- по нажатию кнопки сразу выводим на экран цифру , но больше никаких действий не предпринимаем , пока не получим отжатие , например, в 500мс...
Разница между этими вариантами в том , что в первом событие будет происходить по отжатию кнопки (а ведь ее с дуру можно полчаса держать и событие не наступит) Однако высокая помехоустойчивость на ложное срабатывание (такой вариант скорее применим на производстве)
А во втором варианте, событие наступает как раз по нажатию и дребезг отслеживается. Но возможно ложное срабатывание (случайный проскок искры между выводами кнопки) в условиях больших наводок и помех, коие в домашних условиях как правило не возникают.
Удачи!
RU3GAПоследний раз редактировалось RU3GA; 20.08.2005 в 11:37.
-
20.08.2005, 13:11 #11
- Регистрация
- 11.07.2003
- Адрес
- г.Заозерск Мурманская обл.
- Возраст
- 59
- Сообщений
- 215
- Поблагодарили
- 3
- Поблагодарил
- 0
По этому datasheetу я и писал программный код. Всё тоже самое, только вставил подпрограмму опроса кнопки. По идее, после нажатия кнопки программа уходит на загрузку значения числа 2 в переменную "ind". Далее идёт проверка битов этого числа и вывод на индикатор. После вывода - конец программы. Возврата нет. Т.е. должен выводиться один знак. В понедельник (макет находится на работе) я перепишу подпрограмму опроса кнопки (сделаю задержку) и попробую снова. Кстати, мне не понятна команда "goto $+1". Это переход на подпрограмму временной задержки? Но почему её нет в datasheet? Да, спасибо за подсказки! Иван.
-
20.08.2005, 16:29 #12
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 55
- Сообщений
- 935
- Записей в дневнике
- 16
- Поблагодарили
- 64
- Поблагодарил
- 4
Первоначальное сообщение от RW1ZK
По этому datasheetу я и писал программный код. Всё тоже самое, только вставил подпрограмму опроса кнопки. По идее, после нажатия кнопки программа уходит на загрузку значения числа 2 в переменную "ind". Далее идёт проверка битов этого числа и вывод на индикатор. После вывода - конец программы. Возврата нет. Т.е. должен выводиться один знак. В понедельник (макет находится на работе) я перепишу подпрограмму опроса кнопки (сделаю задержку) и попробую снова. Кстати, мне не понятна команда "goto $+1". Это переход на подпрограмму временной задержки? Но почему её нет в datasheet? Да, спасибо за подсказки! Иван.
goto $+1 --- это переход на выполнение оператора "текущая строка+1" , т.е фактически --- это переход на следующую строчку . Можно было бы вставить NOP , но оператор goto выполняется за два машинных цикла, а NOP --- один , т.е. мы одним оператором практически сделали задержку, на которую потребовалось бы две строчки --- два NOP.
Я только не понял --- а зачем вообще переменная х ?
Никакой полезной нагрузки она не несет. И cycle зачем? Можно безболезненно его удалить вместе с переменной х ... По логике --- после инициализации сразу переходим на опрос кнопки, нажатия нет -> переходим снова на опрос, и так будем крутиться , пока не будет нажатия. Нажатие есть -> вывод цифры и остановка программы " --- и никакие декременты переменной х и проверки ее на ноль не нужны.
Для чистоты эксперимента --- уберите лишний цикл, сделайте вывод на ЖКИ цифры прямо по включению PIC, прямо из какой-нибудь ячейки. А у кнопки уберите программно дребезг и пусть она выводит другую цифру --- вот и поглядите что выйдет.
Удачи!
RU3GA
-
20.08.2005, 16:44 #13
- Регистрация
- 11.07.2003
- Адрес
- г.Заозерск Мурманская обл.
- Возраст
- 59
- Сообщений
- 215
- Поблагодарили
- 3
- Поблагодарил
- 0
Всё правильно! Переменная "х" и "cycle" в данном случае не нужны. Я их воткнул в программу для дальнейшего развития. После того, как получится вывод хотя-бы одного знака, буду пробовать вывод других знаков в других разрядах HT-1611. Здесь и понадобится задержка. Спасибо за разъяснение команды "goto $+1". Не всё работает так, как нужно. Двойка-то выводится либо одна, либо две.
-
21.08.2005, 07:13 #14
- Регистрация
- 16.07.2005
- Адрес
- Омск
- Возраст
- 50
- Сообщений
- 34
- Поблагодарили
- 0
- Поблагодарил
- 0
Бороться с дребезгом при нажатии можно еще таким программным способом: после опроса кнопки дать паузу в 100-200 мс и снова опросить кнопку. Если результаты опроса совпадают (т.е. нажата одна и та же кнопка) - перейти к обработке события ее нажатия. За время паузы дребезг успеет завершиться. Программный код такого варианта выложен на www.intuit.ru/department/hardware/mpbasics/12/mpbasics_12.html (там вообще много полезных примеров для начинающих).
При таком способе дребезг при размыкании кнопки не должен вызывать ложных выводов на индикатор.
Удачи!
-
24.08.2005, 18:10 #15
- Регистрация
- 11.07.2003
- Адрес
- г.Заозерск Мурманская обл.
- Возраст
- 59
- Сообщений
- 215
- Поблагодарили
- 3
- Поблагодарил
- 0
Всё слишком прозрачно... А пример привести реально? Спецы-программисты, где вы?
|
Социальные закладки