Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Своими руками

Своими руками Завершенные и текущие проекты, хард & софт

Ответ
 
Опции темы Опции просмотра
Старый 12.03.2014, 18:25   #1
RTFAMS
Junior Member
 
Регистрация: 12.03.2014
Адрес: Крым
Сообщений: 7
Вес репутации: 100/0
RTFAMS will become famous soon enoughRTFAMS will become famous soon enough
По умолчанию Многоканальный термометр c простым меню на PIC16F877 и АЛС

Доброго времени суток.

Решил сделать многоканальный термометр на PIC16F877 с индикацией на семисегментых индикаторах (3 разряда на АЛС) c простеньким меню и управлением на 4-х кнопках.

Основой для этого проекта послужила информация, опубликованная в источнике:

A Simple Digital Thermometer: http://www.radiolocman.com/shem/sche....html?di=52321

и ее продолжение на русском языке

Простой цифровой термометр Измерения Микроконтроллеры: www.rlocman.ru/shem/schematics.html?di=52321

Собственно мной добавлены в исходную схему еще несколько каналов измерения и пересмотрено управление режимом работы.

Основной канал измерения (1) закреплен за кнопкой [1] и не меняется. Дополнительный канал можно выбирать по необходимости (2..5) и фиксировать за кнопкой [2]. По умолчанию за кнопкой [2] пока закреплен канал (2), но впоследствии хочу предусмотреть восстановление настроек после сброса питания, поэтому использую память, а не переменные. При нажатии на кнопку [1] или [2] происходит вывод на индикатор номера канала (кратковременно), а затем в непрерывном режиме происходит индикация измеренной температуры.

Выбор дополнительного канала измерения (2..5) и запись его номера во встроенную память производится через нажатие кнопки [3]. При этом кнопка [1] служит для изменения номера дополнительного канала в сторону увеличения (+1), а кнопка [2] служит для изменения номера дополнительного канала в сторону уменьшения (-1).

Периодичность проведения измерений можно изменять в пределах (1..9) секунд и производится это через нажатие кнопки [4]. При этом смена значений производится кнопками [1] и [2] аналогично описанному выше.

Управление с клавиатуры состоит в следующем:

кнопка [1]:
-----------
- короткое нажатие: измерения и отображения результатов по заданному каналу, (режим №1) с заданной периодичностью.
= короткие нажатия (increment)[2..5][1..9]: задание номера канала измерения и периодичности измерения (увеличение).

кнопка [2]:
-----------
- короткое нажатие: режим измерения и отображения результатов по № канала из 1-й ячейки ПЗУ с периодичностью, задаваемой числом, занесенным в 2-ю ячейку памяти ПЗУ.
= короткие нажатия (decrement)[5..2][9..1]: задание номера канала измерения и периодичности измерения (уменьшение).

кнопка [3]:
-----------
- первое нажатие: переход в режим задания номера канала измерения + индикация ("ch_").
= второе нажатие: запись в 1-ю ячейку ПЗУ номера канала измерения и возврат в (режим №1).

кнопка [4]:
-----------
- первое нажатие: переход в режим задания периодичности измерения + индикация ("dt_").
= второе нажатие: запись во 2-ю ячейку ПЗУ периодичности измерения и возврат в (режим №1).

На данный момент не получается записывать в память введенный номер канала по второму нажатию кнопки [3]. Если использовать программный код приведенный в (code_1), то не получается выход из цикла и переход к записи в память. В чем ошибка пока не могу понять, может кто подскажет?

Если использовать программный код написанный по другому (code_2)(*), то получается сменить номер канала и записать его в память за один шаг, а после выйти из режима выбора канала.

Пробовал симулировать эту схему в Proteus, она работает с кодом помеченным выше (*). Отдельные светодиоды в схеме выполняют роль сегментов "h" в соответствующих разрядах индикаторов. Режимы работы индикатора EEPROM (сегмент "h" младшего разряда) следующие:
1) LED-ON - смена настроек, работа с EEPROM,
2) 1-Blink - записанные данные = OK,
3) LED-OFF(NO 1-Blink) - данные записаны некорректно.

Схема и фрагменты кода приведены ниже.
Изображения
Тип файла: png code_2.PNG (77.0 Кб, 20 просмотров)
Тип файла: png code_1.PNG (76.7 Кб, 38 просмотров)
Вложения
Тип файла: pdf measure_sys.pdf (50.5 Кб, 60 просмотров)
RTFAMS вне форума   Ответить с цитированием
Старый 12.03.2014, 18:36   #2
korsaj
Senior Member
 
Регистрация: 15.02.2011
Возраст: 37
Сообщений: 738
Вес репутации: 548/45
korsaj is a glorious beacon of lightkorsaj is a glorious beacon of lightkorsaj is a glorious beacon of lightkorsaj is a glorious beacon of lightkorsaj is a glorious beacon of lightkorsaj is a glorious beacon of light
По умолчанию Re: Многоканальный термометр c простым меню на PIC16F877 и АЛС

Без нормального форматирования листинга можно голову сломать..
korsaj вне форума   Ответить с цитированием
Старый 12.03.2014, 19:00   #3
RTFAMS
Junior Member
 
Регистрация: 12.03.2014
Адрес: Крым
Сообщений: 7
Вес репутации: 100/0
RTFAMS will become famous soon enoughRTFAMS will become famous soon enough
По умолчанию Re: Многоканальный термометр c простым меню на PIC16F877 и АЛС

По поводу форматирования листинга пожалуй стоит подумать...

Кстати, по поводу софта, использую компилятор HI-TECH PICC (9.50) и MPLAB 7.42, Proteus 8.1.

Сначала хотел использовать матричную клавиатуру 2х2, но пока это дело не получается, опыта маловато, и сделал попроще.
RTFAMS вне форума   Ответить с цитированием
Старый 13.03.2014, 13:14   #4
RTFAMS
Junior Member
 
Регистрация: 12.03.2014
Адрес: Крым
Сообщений: 7
Вес репутации: 100/0
RTFAMS will become famous soon enoughRTFAMS will become famous soon enough
По умолчанию Re: Многоканальный термометр c простым меню на PIC16F877 и АЛС

Поправил код, убрал мусор и изобразил форматирование. Код приводится ниже.

Этот кусок работает, и происходит это следующим образом:
- нажимеем на кнопку [3] и входим в режим программирования номера канала,
- нажимаем на кнопку [1] (увеличиваем номер канала на +1) или на кнопку [2] (уменьшаем номер канала на -1) и это изменение сразу, автоматически, пишется в память и происходит выход из режима смены номера канала, без повторного нажатия на кнопку [3].

Но, хочу сделать по человечески, так, чтобы можно было сначала набрать номер нужного канала, а уже потом, нажав на кнопку [3], подтвердить изменения и внести их в память.

Как это сделать, пока не могу сообразить. Какие будут предложения?
Изображения
Тип файла: png code_2_w.PNG (69.5 Кб, 33 просмотров)
RTFAMS вне форума   Ответить с цитированием
Старый 15.03.2014, 08:24   #5
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 47
Сообщений: 3,762
Вес репутации: 6211/145
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: Многоканальный термометр c простым меню на PIC16F877 и АЛС

Цитата:
Сообщение от RTFAMS Посмотреть сообщение
Какие будут предложения?

Уже озвучено :

Цитата:
Без нормального форматирования листинга можно голову сломать..
dosikus вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присоветуйте тип и способ управления MOSFETом "верхнего" плеча dr_Sash Источники питания и силовая электроника 37 08.09.2012 18:50
подключение магнитолы Sergey1 Общетехнические вопросы 10 27.12.2007 22:39
Помогите, пожалуйста, найти ошибку в коде Катя Микроконтроллеры других производителей 26 08.12.2007 14:58
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00
USART для PIC16F877 и PIC16F628A на Ассемблере vrup Продукция MICROCHIP 1 19.04.2007 12:45


Часовой пояс GMT +3, время: 17:28.


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