Разработка микропроцессорной системы на базе микроконтроллера для терморегулятора аквариума

курсовая работа

4. Разработка алгоритма работы устройства

Алгоритм работы программы микроконтроллера показан на рис. 6.

Рис. 6. Алгоритм работы программы «терморегулятор для аквариума»

После пуска и инициализации регистров микроконтроллера выполняется самая продолжительная инициализация ЖК-дисплея. Далее проверяется состояние флага установки. Если установки нет, то на индикацию выводятся значения регистров текущего режима. Если идет установка, то проверяется флаг курсора. Если флаг курсора установлен, то индицируется курсор. При установке индикация курсора и значений регистров индикации выполняется поочередно.

После индикации программа переходит к инициализации и считыванию температуры с первого датчика DS1820. Микроконтроллер принимает девять бит информации с кодом знака температуры в девятом бите и значением десятых долей температуры в первом бите. Если девятый бит равен единице, то знак измеренной температуры отрицательный. При единичном первом бите десятые равны пятерке. Двоичное значение принятой температуры сравнивается с установленной температурой. Если измеренная температура больше установленной, то выключается управляющий выход. В противном случае выход включается. Для отрицательных установок при понижении температуры управляющий выход включается. Далее двоичное значение температуры перекодируется в двоично-десятиричный код для индикации (на рис. 6 не показано).

Аналогично первому выполняются считывание температуры из второго датчика и установка второго управляющего выхода. Поскольку вывод на индикацию занимает довольно много времени (8 мс), то он выполняется после шести циклов считывания температуры через 68 мс. Когда счетчик циклов будет равен нулю, проверяется состояние кнопок управления и по установленному режиму заполняются регистры индикации. После этого цикл индикации и измерения температуры повторяется. Цикл измерения температуры и установка управляющих выходов обоих датчиков выполняются за 11,4 мс/Таким образом, управление каждым нагревателем будет выполняться минимум один раз за период сетевого напряжения.

Делись добром ;)