Отправлено: 30.10.14 05:51. Заголовок: Помогите с реализацией программы на pic
Здравствуйте, помогите пожалуйста с алгоритмической схемой для устройства - кофемолка. Вот условие: Управление кофемолкой. В проектируемом устройстве 2 режима функционирования: «программирование» и «работа». Режим программирования первоначальный, а «работа» активизируется однократным нажатием кнопки SBpusk. В режиме программирования можно задать длительность перемалывания кофе в секундах (от 0 до 9 сек.) с помощью кнопки SB. В системе есть дисплей на который выводится время (как отражающее программируемое время, так и в режиме работы время от начала цикла). При нажатии кнопки SB и ее удержании время увеличивается на единицу, т.е. сначала будет 0, потом 1 и т.д. Считать, что в системе есть дискретный датчик (сымитировать кнопкой SBk), отвечающий за открытие крышки – если крышка открыта, то перемол не происходит. Если крышка открывается в режиме работы, то перемол не только останавливается, но может быть и возобновлен, при закрытии крышки, при этом до делаться оставшееся время. В режиме работа светодиод VD горит заданное время. Зачатки алгоритма уже есть, но не могу довести до ума
Отправлено: 30.10.14 17:56. Заголовок: Ну вот пруха поперла..
Ну вот пруха поперла. Там микроволновка, тут кофемолка Это что за кофемолка которая 9 секунд крутит? Люблю кофе Или это виртуальная кофемолка? Вам алгоритм работы или алгорим программы нужен? Или сама программа?
Кофемолка виртуальная. Вообще нужна программа, но хотелось бы сначала разобраться с алгоритмом. Программу я буду писать на PIC16С63А. Принципиальную схему устройства я сделала... осталась программная часть...
Отправлено: 31.10.14 12:37. Заголовок: по схеме сразу могу ..
по схеме сразу могу сказать последовательно в цепь со светодиодом резистор 220-470 ом, и на весь порт В тоже к ледам ABCDEFG через резюки. и у подруги вашей таже ошибка.
Отправлено: 31.10.14 15:56. Заголовок: Вообще нужна програм..
цитата:
Вообще нужна программа, но хотелось бы сначала разобраться с алгоритмом. Программу я буду писать на PIC16С63А.
То что программу будете сами писать уже вызывает уважение. Теперь вопрос: с алгоритмом чего Вы хотите разобраться? Я уже выше спрашивал. По сути что у Вас нарисовано это не алгоритм, а не понятно чего. "отображение цифр на индикаторе" чем отличается от "время на дисплеи". Какие цифры, откуда взялись и т.д. И не видел где считается ( обрабатывается) время, когда оно вводится. Вы же часы настраиваете кнопочками +/- Мне в принципе понятна Ваша задача. И программа совсем не сложная. И даже написать её можно быстро, без всяких алгоритмов, до такой степени она проста. Но не понял, Вы хотите сами научиться или по готовому примеру? По схеме выоды мк на кнопки настроенны на вход и "висят в воздухе. Z- cсостояние порта. Лучше подтянуть выводы к + через резистор. А кнопки подключают общий провод к выводу порта. Светодиод и сегменты индикатора через резисторы 430 ом. Нет цепи сброса мк MCLR
Отправлено: 01.11.14 13:31. Заголовок: MAZ пишет: Какие ци..
MAZ пишет:
цитата:
Какие цифры, откуда взялись и т.д. И не видел где считается ( обрабатывается) время, когда оно вводится. Вы же часы настраиваете кнопочками +/-
Время вводится в режиме "программирование" при помощи удержания кнопки SB(т.е по циклу). кнопок +/- нет. MAZ пишет:
цитата:
хотите сами научиться или по готовому примеру?
Конечно хочется самой научится) но без помощи я наврятли смогу сделать... опыта в программирование совсем мало.... А схему в proteus буду переделывать, МК возьму с меньшим количеством ножек и учту все резисторы
Отправлено: 01.11.14 14:32. Заголовок: Время вводится в реж..
цитата:
Время вводится в режиме "программирование" при помощи удержания кнопки SB(т.е по циклу). кнопок +/- нет.
Я понимаю что кнопок нет, но и алгоритме не определено где считается время. Можно конечно жать на кнопку и смотреть на ручные часы отсчитывая время. С кнопками тоже много вопросов. - При задание ( программирование) времени надо держать кнопку или каждый раз нажимать чтобы изменить показания индикатора. - Что будет если все кнопки нажаты одновременно? Понимаете, тут нужна сначала простая логика. Мы же не говорим об алгоритме программы. Мы говорим о всех возможных случаях при работе программы. В начале надо описать трезво и подробно, что должна делать программа. Потом по этим записям делать алгоритм работы, где обязательно возникнут какие то нестыковки. Они исправляются. Потом уже можно думать о программе. Но у программы тоже может быть несколько алгоритмов. Все зависит от знания мк, методов работы с ним, различных программных трюков и т.д. В Вашем варианте просто просится, включить таймер на некоторое время и прерывание программы по его переполнению. В каждом промежутке между переполнениями можно проверять кнопки, выполнять какие то операции, даже просто считать время и "одновременно" проверять кнопки и т.д..
Отправлено: 01.11.14 18:01. Заголовок: Кнопку надо удержива..
Кнопку надо удерживать для изменения времени на индикаторе. Потом нажимаем кнопку запуска и кофемолка начинает работать) Но если у нас открыта крышка устройства, открытие которой мы эмитируем тоже кнопкой(SBk), перемол происходить не будет. Думаю поставить кнопочку с фиксаций... т.е. если мы во время перемола нажмем на кнопку SBk, работа приостановится, а при отжатии кнопки должна быть возобновлена. Исходя из этого, если все кнопки нажаты работа происходить не будет
Отправлено: 01.11.14 18:15. Заголовок: Не надо с фиксацией...
Не надо с фиксацией. Все можно сделать программно. Например контролировать в программе, что кнопка не отпущена. Тогда нажатие другой принимать за ложное. Кнопка SBk, такая же кнопка. Если крышка закрыта - нажата. Открыта - отжата. Может быть не надо пережидать "дребезг контактов" и сразу по её состоянию принимать решение. Я вот подумал. Может Вам написать программу за выходные. Если меня некуда не припашут. Лучше обсуждать готовую, намного наглядней. Протеусом я не пользуюсь, макет собирать не буду. Так что только симулятор и Ваши проверки в Протеусе.
Отправлено: 01.11.14 19:30. Заголовок: Было бы время, помог..
Было бы время, помог бы с большим удовольствием. Конечно, закономерный вопрос, а зачем тогда лезешь сюда если времени нет? А потому лезу, что задача наипростецкая. В пору написать самому самому начинающему микроконтролерщику. Даже не надо учить ASM. Просто смотри на команды и выбирай которая тебе в данной ситуации подходит. Просто совет от проходящего мимо мужичка. Я бы , время отсчитывал от полуволн синусоид. Вставил бы на RB0 напряжение с диодного моста (10миллисекунд). Вот тебе и счётчик секунд, вот тебе и высвечивание индикатора в динамическом режиме.
Отправлено: 01.11.14 21:39. Заголовок: Программу написал. Н..
Программу написал. Надо конечно протестировать. Хотя бы в симуляторе, чтобы ошибок совсем глупых не показывать. И схемку нарисовать. И куда это Ксения делась. На танцы что ли пошла?
Отправлено: 02.11.14 09:32. Заголовок: MAZ пишет: Игорь ср..
MAZ пишет:
цитата:
Игорь сразу загрузил. Я вот думаю, как написать используя минимум команд и попроще.
Так и я про простоту. Проще некуда. Флаг переноса-заёма откидываем. Тупо 10 мс каждый раз прерываемся. А то и прерываться не нужно, просто вход опрашиваем и всё. В такой программе это просто километровое время. Всё можно десять раз успеть. А если считать каждые полволны (один период 20мс) то вообще программе можно лежать и курить. Но это моё мнение.
Отправлено: 02.11.14 10:28. Заголовок: Я прерываюсь по тайм..
Я прерываюсь по таймеру 5мс. И никаких лишних деталей. Что-то наши "заказчики" не сильно спешат разобраться. Сегодня еще могу чего-нибудь подправить в программе.
Все даты в формате GMT
3 час. Хитов сегодня: 5
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет