РефератыКоммуникации и связьРаРазработка многофункциональных астрономических часов

Разработка многофункциональных астрономических часов

СОДЕРЖАНИЕ


ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ, СИМВОЛОВ, ЕДИНИЦ, СОКРАЩЕНИЙ И ТЕРМИНОВ


ВВЕДЕНИЕ


РАЗДЕЛ 1 ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ


1.1 Разработка микропроцессорной системы на основе микроконтроллера


1.1.1 Основные этапы разработки


1.1.2 Разработка и отладка аппаратных средств


1.1.3 Разработка и отладка программного обеспечения


1.2 Астрономические часы


РАЗДЕЛ 2 РАЗРАБОТКА МНОГОФУНКЦИОНАЛЬНЫХ АСТРОНОМИЧЕСКИХ ЧАСОВ


2.1 Постановка задачи


2.2 Разработка структурной схемы устройства и функциональной спецификации


2.3 Аппаратные средства микроконтроллеров серии PIC16F877A


2.4 Разработка функциональной схемы устройства


2.5 Разработка алгоритма управления


2.6 Разработка программного обеспечения микроконтроллера


2.7 Выбор, описание и расчет элементной базы


2.8 Разработка схемы электрической принципиальной


РАЗДЕЛ 3 ЭКОНОМИЧЕСКАЯ ЧАСТЬ


РАЗДЕЛ 4 ОХРАНА ТРУДА


4.1 Требования к производственным помещениям


4.1.1 Окраска и коэффициенты отражения


4.1.2 Освещение


4.1.3 Параметры микроклимата


4.1.4 Шум и вибрация


4.1.5 Электромагнитное и ионизирующее излучения


4.2 Эргономические требования к рабочему месту


4.3 Режим труда


4.4 Расчет освещенности


4.5 Расчет вентиляции


4.6 Расчет уровня шума


ВЫВОДЫ


ПЕРЕЧЕНЬ ССЫЛОК


ПРИЛОЖЕНИЯ


ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ, СИМВОЛОВ, ЕДИНИЦ, СОКРАЩЕНИЙ И ТЕРМИНОВ


АЛУ – арифметическо-логическое устройство


АЦП – аналого-цифровой преобразователь


КМОП – комплементарная логика на транзисторах металл-оксид-полупроводник


МПС – микропроцессорная система


ЦПУ – центральное процессорное устройство


ШИМ – широтно импульсная модуляция


ВВЕДЕНИЕ


Как известно, при разработке большинства измерительных систем возникает задача преобразования аналоговых сигналов от различных датчиков в цифровую форму и их последующей обработки. В некоторых случаях вся обработка данных возлагается на компьютер. Однако, если потребность рынка в измерительной системе велика, то удобнее использовать системы со встроенным микроконтроллером. Контроллер берет на себя многие задачи, связанные как с оцифровкой, так и с последующей обработкой данных. При этом за счет серийного производства стоимость системы значительно снижается. В результате получается законченное устройство, решающее задачу эффективно и с минимальными затратами.


Однокристальные (однокорпусные) микроконтроллеры представляют собой приборы, конструктивно выполненные в виде БИС и включающие в себя следующие составные части: микропроцессор, память программ и память данных, а также программируемые интерфейсные схемы для связи с внешней средой.


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


Астрономические часы не отличаются ни по своему назначению, ни по устройству от обыкновенных часов. От них только требуется чрезвычайно правильный ход, для достижения которого астрономические часы снабжаются приспособлениями, слишком дорогими для применения их к обыкновенным часам.


Одно из главных приспособлений состоит в компенсации влияний температуры. Обыкновенные часы, карманные или стенные, спешат при понижении температуры и отстают при повышении её.


В электронных часах для повышения точности во-первых применяют стабильный источник питания, во-вторых – используют термостат для кварцевого резонатора.


Тема дипломной работы – «Разработка многофункциональных астрономических часов», которая и является предметом исследования.


Актуальность данной темы велика, т.к. всю жизнь человечество пыталось «идти в ногу со временем».


Цель работы – разработать особо точные электронные часы на базе микроконтроллера с разнообразными функциями.


За основу для разработки астрономических часов мы взяли микроконтроллер серии PIC16F877A.


РАЗДЕЛ 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ


1.1 Разработка микропроцессорной системы на основе микроконтроллера


1.1.1 Основные этапы разработки


Микропроцессорная система (МПС) на основе микроконтроллера (МК) используются чаще всего в качестве встроенных систем для решения задач управления некоторым объектом. Важной особенностью данного применения является работа в реальном времени, т.е. обеспечение реакции на внешние события в течение определенного временного интервала. Такие устройства получили название контроллеров.


Перед разработчиком МПС стоит задача реализации полного цикла проектирования, начиная от разработки алгоритма функционирования и заканчивая комплексными испытаниями в составе изделия. Методология проектирования контроллеров может быть представлена так, как показано на рис. 1.1.


В техническом задании формулируются требования к контроллеру с точки зрения реализации определенной функции управления. Техническое задание включает в себя набор требований, который определяет, что пользователь хочет от контроллера и что разрабатываемый прибор должен делать. Техническое задание может иметь вид текстового описания.


На основании требований пользователя составляется функциональная спецификация, которая определяет функции, выполняемые контроллером для пользователя после завершения проектирования, уточняя тем самым, насколько устройство соответствует предъявляемым требованиям. Она включает в себя описания форматов данных, как на входе, так и на выходе, а также внешние условия, управляющие действиями контроллера.



Рисунок 1.1- Основные этапы разработки контроллера


Этап разработки алгоритма управления является наиболее ответственным, поскольку ошибки данного этапа обычно обнаруживаются только при испытаниях законченного изделия и приводят к необходимости дорогостоящей переработки всего устройства. Разработка алгоритма обычно сводится к выбору одного из нескольких возможных вариантов алгоритмов, отличающихся соотношением объема программного обеспечения и аппаратных средств.


При этом необходимо исходить из того, что максимальное использование аппаратных средств упрощает разработку и обеспечивает высокое быстродействие контроллера в целом, но сопровождается, как правило, увеличением стоимости и потребляемой мощности. При выборе типа МК учитываются следующие основные характеристики:


- разрядность;


- быстродействие;


- набор команд и способов адресации;


- требования к источнику питания и потребляемая мощность в различных режимах;


- объем ПЗУ программ и ОЗУ данных;


- возможности расширения памяти программ и данных;


- наличие и возможности периферийных устройств, включая средства поддержки работы в реальном времени (таймеры, процессоры событий и т.п.);


- возможность перепрограммирования в составе устройства;


- наличие и надежность средств защиты внутренней информации;


- возможность поставки в различных вариантах конструктивного исполнения;


- стоимость в различных вариантах исполнения;


- наличие полной документации;


- наличие и доступность эффективных средств программирования и отладки МК;


- количество и доступность каналов поставки, возможность замены изделиями других фирм.


Список этот не является исчерпывающим.


Номенклатура выпускаемых в настоящее время МК исчисляется тысячами типов изделий различных фирм. Современная стратегия модульного проектирования обеспечивает потребителя разнообразием моделей МК с одним и тем же процессорным ядром. Такое структурное разнообразие открывает перед разработчиком возможность выбора оптимального МК, не имеющего функциональной избыточности, что минимизирует стоимость комплектующих элементов.


1.1.2 Разработка и отладка аппаратных средств


После разработки структуры аппаратных и программных средств дальнейшая работа над контроллером может быть распараллелена. Разработка аппаратных средств включает в себя разработку общей принципиальной схемы, разводку топологии плат, монтаж макета и его автономную отладку. На этапе ввода принципиальной схемы и разработки топологии используются, как правило, распространенные системы проектирования типа "ACCEL EDA" или "OrCad".


1.1.3 Разработка и отладка программного обеспечения


Содержание этапов разработки программного обеспечения, его трансляции и отладки на моделях существенно зависит от используемых системных средств. В настоящее время ресурсы 8-разрядных МК достаточны для поддержки программирования на языках высокого уровня. Это позволяет использовать все преимущества структурного программирования, разрабатывать программное обеспечение с использованием раздельно транслируемых модулей. Одновременно продолжают широко использоваться языки низкого уровня типа ассемблера, особенно при необходимости обеспечения контролируемых интервалов времени. Задачи предварительной обработки данных часто требуют использования вычислений с плавающей точкой, трансцендентных функций.


В настоящее время самым мощным средством разработки программного обеспечения для МК являются интегрированные среды разработки, имеющие в своем составе менеджер проектов, текстовый редактор и симулятор, а также допускающие подключение компиляторов языков высокого уровня типа Паскаль или Си. При этом необходимо иметь в виду, что архитектура многих 8-разрядных МК вследствие малого количества ресурсов, страничного распределения памяти, неудобной индексной адресации и некоторых других архитектурных ограничений не обеспечивает компилятору возможности генерировать эффективный код.


1.2 Астрономические часы


Астрономические часы не отличаются ни по своему назначению, ни по устройству от обыкновенных часов. От них только требуется чрезвычайно правильный ход, для достижения которого астрономические часы снабжаются приспособлениями, слишком дорогими для применения их к обыкновенным часам.


Одно из главных приспособлений состоит в компенсации влияний температуры. Обыкновенные часы, карманные или стенные, спешат при понижении температуры и отстают при повышении её. В часах с маятником устраивается так называемый компенсационный маятник, в часах с пружиной или хронометрах так называемые chappement.


Иногда под названием астрономических часов понимают также сложные инструменты, которые, указывая час дня, кроме того, дают течение планет и луны, приливы и отливы, подвижные праздники, различные явления неба, в особенности затмения солнца и луны, високосные года и т. п., посредством особых механических приспособлений. Построение таких часов требует большого механического искусства и немало астрономических познаний; наиболее замечательные часы такого рода изготовил Дасиподий в XV-м веке для Страсбургского собора. Мастер Швильге в Страсбурге переделал их заново, и в этом новом виде они до сих пор находятся в соборе. Другие, несколько более простые часы подобного рода находятся в Майнце.


Однако практическая польза подобных сложных инструментов весьма ограничена и не окупает затраченного на изготовление их громадного труда: для астронома удобнее справиться относительно небесных явлений в эфемеридах.


Астрономические часы Федченко (АЧФ) - Высокоточные электронно-механические вычисления часы, завершившие эволюцию маятниковых приборов времени. Погрешность составляет 0,0002-0,0003 секунды в сутки, что на порядок ниже, чем у часов английского ученого В.Шорта, сделанных в 20-х г. 19 в., которыми долгое время оснащались обсерватории мира. Точность достигнута за счет подвеса маятника на специальном трехпружинном подвесе (изобретение Ф.М.Федченко), который обеспечивает изохронные (не зависящие от амплитуды) колебания маятника. Часы Федченко вплоть до 1970-80 гг. выполняли функции хранителей времени - работали в обсерваториях, на космодромах, аэропортах, телецентрах страны.


Была попытка разработать высокоточные электронные астрономические часы, но в связи с высокой стоимостью и рядом непотребных функций они не нашли широкого применения.


РАЗДЕЛ 2. РАЗРАБОТКА МНОГОФУНКЦИОНАЛЬНЫХ АСТРОНОМИЧЕСКИХ ЧАСОВ


2.1 Постановка задачи


Требуется разработать схему многофункциональны астрономических часов.


Разработка устройства велась с учётом следующих требований:


- простота схемы (минимальное количество компонентов);


- функциональная насыщенность, многообразие регулируемых параметров;


- устойчивость к изменениям напряжения и температуры, долговечность;


- отсутствие нагрева компонентов;


- низкое энергопотребление.


2.2 Разработка структурной схемы устройства и функциональной спецификации


Рассмотрим структуру разрабатываемого устройства (Рис. 2.1).


Функциональная спецификация:


1. Входы:


а. 16 кнопок управления и регулировки часами;


b. Источник бесперебойного стабильного электропитания часов.







Рисунок 2.1 – Структурная схема многофункциональных астрономических часов


2. Выходы:


а. Двухрядный шестнадцатиразрядный ЖК индикатор;


b. Звуковой излучатель.


3. Функции:


а. 16 таймеров;


b. Таймеры могут показывать Земное, Марсианское, Юпитерское, сидерическое время, Лунных фаз, времени перемещения большого красного пятна Юпитера и т.д. Одновременное отображение 24 часового и Юлианского времен на десятичном дисплее.


с. Выполнение функций будильника;


d. Осуществление бесперебойного электропитания для осуществления стабильности хода часов (должен иметь встроенный источник питания).


2.3 Аппаратные средства микроконтроллеров серии PIC16F877A


Общее описание:


PIC16F877A 8-разрядные КМОП микроконтроллеры с Flash памятью.


Основные характеристики:


Высокопроизводительный RISC-процессор:


Всего 35 простых для изучения инструкции


Все инструкции исполняются за один такт (200 нс), кроме инструкций перехода, выполняемых за два такта; минимальная длительность такта 200 нс


14 битовые команды


8 - битовые данные


Вход внешних прерываний


8-уровневый аппаратный стек


Прямой, косвенный и относительный режимы адресации для данных и инструкций


Периферия:


22 линий ввода/вывода с индивидуальным контролем направления


Сильноточные схемы портов ввода/вывода:


25 мА макс. вытек. ток


25 мА макс. втек. ток


Timer0: 8-разрядный таймер/счетчик


Timer1: 16-разрядный таймер/счетчик


Timer2: 8-разрядный таймер/счетчик


2 ШИМ модуля


Последовательные интерфейсы


3-проводный SPI


I2C Master и Slave режимы


USART (с поддержкой адреса)


5 каналов 10-битного АЦП


2 аналоговых компаратора


Интегрированный программируемый источник опорного напряжения


Особенности микроконтроллера:


Сброс при включении питания (POR)


Таймер включения питания (PWRT) и таймер запуска генератора (OST)


Сброс по снижению напряжения питания (BOR)


Сторожевой таймер (WDT) с собственным встроенным RC-генератором для повышения надежности работы


Режим экономии энергии (SLEEP)


Выбор источника тактового сигнала


Программирование на плате через последовательный порт (ICSPT) (с использованием двух выводов)


Отладка на плате через последовательный порт (ICD) (с использованием двух выводов)


Возможность самопрограммирования


Программируемая защита кода


1000 циклов записи/стирания FLASH памяти программы


100 000 циклов записи/стирания памяти данных ЭСППЗУ


Период хранения данных ЭСППЗУ > 40 лет


Технология КМОП:


Экономичная, высокоскоростная технология КМОП


Полностью статическая архитектура


Широкий рабочий диапазон напряжений питания - от 2,0В до 5,5В


Промышленный и расширенный температурный диапазоны


Низкое потребление энергии


Совместимость:


Полная совместимость по выводам с семействами микроконтроллеров (только 28-выводными): PIC16CXXX; PIC16FXXX



Рисунок 2.2 – Структурная схема микроконтроллера PIC16F877A



Рисунок 2.3 – Расположение выводов микроконтроллера PIC16F877A



Рисунок 2.4 – Общий вид микроконтроллера PIC16F877A


Основные технические характеристики микроконтроллера PIC16F877A приведены в Приложении А.


2.4 Разработка функциональной схемы устройства


После выбора микроконтроллера мы можем приступить к разработке функциональной схемы (Рис. 2.5).


+ 12 В


С










Рисунок 2.5 – Функциональная схема многофункциональных астрономических часов


2.5 Разработка алгоритма управления


Основной алгоритм работы микроконтроллера представлен на рис. 2.6.



Рисунок 2.6 - Алгоритм работы многофункциональных астрономических часов


2.6 Разработка программного обеспечения микроконтроллера


Программа для микроконтроллера написана на языке ассемблера. Сделать ее можно более гибкой, даже ценой увеличения размера кода. Эту программу можно улучшать и улучшать, но, она работает и не слишком беспорядочна. Можно обновлять программу время от времени – удаляя ошибки и добавляя новые возможности.


Программа содержится в Приложении Б.


2.7 Выбор, описание и расчет элементной базы


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


Блок усилителя динамика это усилитель основанный на микросхеме LM386. Динамик любой (например, модема).


Порт PIC программатора предназначенный для перепрограммирования микроконтроллера без разборки часов. Адаптер DB25 в 6 контактный разъем.


Клавиатура от микрокалькулятора или кнопочного телефона.


Использован 16-ти символьный 2-х строчный LCD модуль фирмы Techstar с подсветкой. Эти модули довольно таки стандартны, так что почти любой 16x2 LCD модуль будет работать.


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


Спецификация элементов устройства приведена в Приложении В.


Следует немного разобраться, как управляются астрономические часы.


Дисплей часов это 2х16 LCD модуль. Первая строка всегда показывает текущий выбранный таймер. Вторая строка используется для показа либо юлианского времени, либо выбора текущего меню.



Рисунок 2.7 – Общий вид дисплея


Шестнадцать таймеров имеют имена TmA, TmB и т.д. вплоть до TmP. Здесь TmA это имя таймера, следующего за текущим временем. Вторая строка показывает то же самое время в юлианском формате (используется в астрономии и других науках). Клавиатура выглядит так (Рисунок 2.8).



Рисунок 2.8 – Клавиатура астрономических часов


Пользовательский интерфейс часов организован в виде различных меню. Нажатие кнопок [DEL] и [TKO] позволит просмотреть пункты меню. При нажатии на [ENT] будет выбран пункт (и произойдет связанное с пунктом действие – откроется другое меню, установка значения и т.д.). выход из меню делается нажатием кнопки [DEL]. Это вызовет открытие предыдущего меню. Ниже приведена диаграмма различных меню часов, с последующим детальным описанием каждого меню (Рисунок 2.9).



Рисунок 2.9 - Главное Меню – Выбор Таймера


Сразу после включения питания часов, мы попадем в меню «Выбор Таймера». В этом режиме можно просмотреть все 16 таймеров, от TmA до TmP (как и с любым меню, используйте кнопки [TKO] и [DEL] для выбора таймеров). Если вы не уверены, в каком меню вы находитесь, нажмите кнопку [ABT] несколько раз, это приведет вас в главное меню.


Установка времени [select timer, ENT]


Если вы хотите изменить что-нибудь в таймере – установить время, установить будильник и т.д., выберете данный таймер и нажмите кнопку [ENT]. Это приведет вас к следующему меню с двумя опциями (Рисунок 2.10).



Рисунок 2.10 - Меню с двумя опциями


Когда опция Adjust Timer видна, вы можете использовать кнопку [0] чтобы поставить таймер на паузу или перезапустить таймер и кнопку [4], для того, чтобы переключить направление таймера (вперед или назад). Это будет воздействовать только на текущий выбранный таймер.


Когда опция Adjust Clock видна, вы можете делать установки для часов, которые влияют на все таймеры. Нажмите кнопку [0] чтобы поставить на паузу или перезапустить часы. Нажатие кнопки [4] вызовет скачок часов вперед на 1 секунду. Таким образом вы можете задать правильное время не перезапуская каждый таймер отдельно.


Установки таймера [select timer, ENT]


Выберите таймер и нажмите кнопку [ENT] дважды (один раз чтобы получить Adjust меню и второй раз, чтобы выбрать опцию Adjust Timer). Появится меню со следующими опциями (Рисунок 2.11).




Рисунок 2.11 – Опции таймера


Если вы выберите опцию Set Timer и нажмете кнопку [ENT], вам будет показан экран, где вы можете ввести новое время. Введите время используя цифровой клавиши. Новое время будет установлено когда вы введете все шесть цифр (HH:MM:SS) или когда вы нажмете кнопку [ENT]. Нажатие кнопки [ABT] в любой момент отменит операцию и время не будет установлено.


Если вы выберите опцию Set Alarm, это позволит вам установить время будильника, звук и действие.


Чтобы настроить таймер на какой ни будь другой, отличный от стандартного земного (24 часа), временной цикл, выберите опцию Set Cycle Lengt. Более детальная информация и примеры длин циклов (например, как заставить таймер считать марсианское время), находятся в разделе How-To, пункт «Установка длинны цикла таймера». Подтвердите установку новой длинны цикла кнопкой [ENT] или отмените операцию нажав кнопку [ABT] в любой момент.


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


Чтобы установить время будильника выберите опцию Alarm Time и нажмите кнопку [ENT]. Как обычно, кнопка [ENT] подтверждает, а кнопка [ABT] отменяет операцию в любой момент.


2.8 Разработка схемы электрической принципиальной


Принципиальная схема многофункциональных астрономических часов в Accel EDA приведена на Рисунке 2.12.



Рисунок 2.12 - Принципиальная схема многофункциональных астрономических часов в Accel EDA


Принципиальная схема приведена в Приложении Д.


РАЗДЕЛ 3. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ОБЪЕКТА РАЗРАБОТКИ


В данном разделе проводится технико-экономический расчет стоимости астрономических часов.


Стоимость устройства будет состоять из стоимости разработки ПО для микроконтроллера, стоимости разработки конструкторской документации и сборки устройства.


3.1 Расчет расходов ПО для микроконтроллера, которое разрабатывается


Исходные данные для расчета стоимости разработки ПО, которое разрабатывается приведены в таблице 3.1.


Таблица 3.1 – Данные на 1.01.2010г.










































































































































№п/п Статьи затрат Усл. обозн. Ед. изм. Значения
Проектирование и разработка ПЗ
1 Часовая тарифная ставка программиста Зпр грн. 8,00
2 Коэффициент сложности программы с коэф. 1,40
3 Коэффициент коррекции программы Р коэф. 0,05
4 Коэффициент увеличения расходов труда Z коэф. 1,3
5 Коэффициент квалификации программиста k коэф. 1,0
6 Амортизационные отчисления Амт % 10,0
7 Мощность компьютера, принтера Квт/ч 0,40
8 Стоимость ПЕОМ IBM Sempron LE1150(AM2)/1GB/TFT Втз грн. 3200,00
9 Тариф на электроэнергию Це/е грн. 0,56
10 Норма дополнительной зарплаты Нд % 10,0
11 Отчисление на социальные расходы Нсоц % 37,2
12 Транспортно-заготовительные расходы Нтр % 4,0
Эксплуатация П0
13 Численность обслуживающего персонала Чо чел 1
14 Часовая тарифная ставка обслуживающего персонала Зперс грн. 6,00
15 Время обслуживания систем То час/г 150
16 Стоимость ПЕОМ Втз грн. 3200,00
17 Норма амортизационных отчислений на ПЕОМ На % 10,0
18 Норма амортизационных отчислений на ПЗ НаП % 10,0
19 Накладные расходы Рнак % 25,0
20 Отчисление на содержание и ремонт ПЕОМ и ПО Нр % 10,0
21 Стоимость работы одного часа ПЕОМ Вг грн. 6,5

Первичными исходными данными для определения себестоимости ПО является количество исходных команд (операторов) конечного программного продукта. Условное количество операторов Q в программе задания может быть оценено по формуле:


, (3.1)


где у – расчетное количество операторов в программе, что разрабатывается (единиц);


с – коэффициент сложности программы;


р – коэффициент коррекции программы в ходе ее разработки.


Рассчитанное количество операторов в разработанной программе – 500.


Коэффициент с – относительная сложность задания относительно отношения к типичной задаче, сложность которой принята более 1, лежит в границах от 1,25 до 2,0 и выбирается равным 1,30.


Коэффициент коррекции программы р – увеличение объема работ за счет внесения изменений в программу лежит в границах от 0,05 до 0,1 и выбирается равным 0,05.


Подставим выбранные значения в формулу (3.1) и определим величину Q:


Q = 200∙1,3 (1 + 0,05) = 273.


3.2 Расчет расходов на создание ПО


Расчет расходов на ПО проводится методом калькуляции расходов, в основу которого положена трудоемкость и заработная плата разработчиков. Трудоемкость разработки ПЗ рассчитывается по формуле:


(3.2)


где То – расходы труда на описание задания;


Ти – расходы труда на изучение описания задания;


Та – расходы труда на разработку алгоритма решения задания;


Тп– расходы труда на составление программы по готовой блок-схеме;


Тотл – расходы труда на отладку программы на ЭВМ;


Тд– расходы труда на подготовку документации.


Составные расходы труда, в свою очередь, можно определить по числу операторов Q для ПО, что разрабатывается. При оценке составных расходов труда используются:


- коэффициенты квалификации разработчика алгоритмов и программ – к;


– увеличение расходов труда в результате недостаточного описания задания – Z.


Коэффициент квалификации разработчика характеризует меру подготовленности исполнителя к порученной ему работе (он задается в зависимости от стажа работы), к = 1,0.


Коэффициент увеличения расходов труда в результате недостаточного описания задания характеризует качество постановки задания, выданной для разработки программы, в связи с тем, что задание требовало уточнения и некоторой доработки. Этот коэффициент принимается равным 1,3.


Все исходные данные приведенные в таблице 3.1.


а) Трудоемкость разработки П0 составляет:


Расходы труда на подготовку описания задания То
принимаются равными 5 чел/час, исходя из опыта работы.


Расходы труда на изучение описания задания Те
с учетом уточнения описания и квалификации программиста могут быть определены по формуле:


; (3.3)


Ти
= 273∙1,3/80∙1 = 5(чел/час)


Расходы труда на разработку алгоритма решения задачи рассчитываются по формуле:


; (3.4)


Та
=273/25∙1 = 11 (чел/час)


Расходы труда на составление программы по готовой блок-схеме Тп рассчитываются по формуле:


; (3.5)


(чел/час)


Расходы труда на отладку программы на ПЕОМ Тотл рассчитываются по формуле:


- при автономной отладке одного задания:


; (3.6)


(чел/час)


- при комплексной отладке задания:


; (3.7)


(чел/час)


Расходы труда на подготовку документации по заданию Тд определяются по формуле:


, (3.8)


где Тдр– расходы труда на подготовку материалов в рукописи:


; (3.9)


(чел/час)


Тдо– расходы труда на редактирование, печать и оформление документация:


.(3.10)


(чел/час)


Подставляя приобретенных значений в формулу (3.8), получим:


(чел/час)


Определим трудоемкость разработки ПО, подставив полученные значения составляющих в формулу (3.2):



Расчет трудоемкости и зарплаты приведен в таблице 3.2.


б) Расчет материальных расходов на разработку ПЗ


Материальные расходы Мз
, которые необходимы для создания ПО приведенные в таблице 3.3.


Таблица 3.2 – Трудоемкость и зарплата разработчиков ПО










































Наименование этапов


разработки


Трудоемкость


чел/часов


Почасовая тарифная ставка программиста, грн. Сумма зарплаты, грн.
Описание задания 5 8,00 40,00
Изучение задания 5 8,00 40,00
Составление алгоритма решения задачи 11 8,00 88,00
Программирование 12 8,00 96,00
Отладка программы 83 8,00 664,00
Оформление документации 25 8,00 200,00
ВСЕГО: 141 8,00 1128,00

Таблица 3.3 – Расчет материальных расходов на разработку ПО


























Материал Фактическое количество Цена за единицу, грн. Сумма, грн.

1. DVD


1 3,00 6,00

2. Бумага


500 0,10 50,00

ВМЕСТЕ:


56,00

ТЗР (4%)


2,24

ВМЕСТЕ:


57,24

в) Расходы на использование ЭВМ при разработке ПО


Расходы на использование ЭВМ при разработке ПО рассчитываются, исходя из расходов одного часа, по формуле:


, (3.12)


где Вг
– стоимость работы одного часа ЭВМ, грн.;


Тотл
– расходы труда на наладку программы на ЭВМ, чел./час.;


Тд
– расходы труда на подготовку документации, чел./час.;


Тп
– расходы труда на составление программы по готовой блок-схеме, чел./час.


(грн.)


г) Расчет технологической себестоимости создания программы


Расчет технологической себестоимости создания программы (ПО) проводится методом калькуляции расходов (таблица 3.4).


Таблица 3.4 – Калькуляция технологических расходов на создание ПО

































Наименование


Расходы, грн.


1

Материальные расходы


57,24
2

Основная зарплата


1128,00
3

Дополнительная зарплата (15,0 %)


169,20
4

Отчисление на социальные мероприятия (37,2 %)


482,56
5

Накладные расходы (25,0 %)


282,00
6

Расходы на использование ЭВМ


составлении программного обеспечения ПО


780,00
7

Себестоимость ПО микроконтроллера


2899,00

В таблице 3.4 величина материальных расходов Мз рассчитана в таблице 3.3, основная зарплата С берется из таблицы 3.2, дополнительная зарплата составляет 15% от основной зарплаты, отчисление на социальные потребности – 37,2% от основной и дополнительной зарплат (вместе), накладные расходы – 25% от основной зарплаты. Себестоимость разработанной программы СПО
рассчитывается как сумма пунктов 1 – 6.


Стоимость ПО для микроконтроллера составляет 2899,00 грн. на единицу продукции. Если организовать массовый выпуск продукции эта стоимость разделится на количество выпущенных изделий.


3.2 Расчет стоимости разработки конструкторской документации и сборки устройства


а) Трудоемкость разработки КД изделия (Т) рассчитывается по формуле:


, (3.13)


где Татз – расходы труда на анализ технического задания (ТЗ), чел./час;


Трес – расходы труда на разработку электрических схем, чел./час;


Трк – расходы труда на разработку конструкции, чел./час;


Трт – расходы труда на разработку технологии, чел./час;


Токд – расходы труда на оформление КД, чел./час;


Твидз – расходы труда на изготовление и испытание опытного образца.


Данные расчета заносятся в таблицу 3.5.


Таблица 3.5 - Расчет заработной платы на разработку КД изделия


















































Виды работ Условные обозначения Почасовая тарифная ставка - Сст,
грн.

Факт.расходы времени


чел./час;


Зарплата, грн.
1. Анализ ТЗ Татз 6,00 2 12,00
2. Разработка электрических схем Трес 6,00 4 24,00
3. Разработка конструкции Трк 6,00 4 24,00
4. Разработка технологии Трт 6,00 2 12,00
5. Оформление КД Токд 6,00 2 12,00
6. Изготовление и испытание опытного образца Твидз 6,00 8 48,00
Всего: å 6,00 22 132,00

Заработная плата на разработку КД изделия С определяется по формуле:


, (3.14)


где - почасовая тарифная ставка разработчика, грн.;


- трудоемкость разработки КД изделия.


б) Расчет материальных расходов на разработку КД


Материальные расходы Мв, которые необходимы для разработки (создании) КД, приведены в таблице 3.6.


Таблица 3.6 - Расчет материальных расходов на разработку КД





























Материал


Обозначение пометь.

Факт. кол.


чество


Цена за ед. грн.


цу, грн.


Сумма,


грн.


1. CD DVD 1 2,00 2,00
2. Бумага 500 0,07 35,00
ВСЕГО: å 37,00
ТЗР (4%) 1,48
Итого: Мв 38,48

в) Расходы на использование ЭВМ при разработке КД


Расходы, на использование ЭВМ при разработке КД, рассчитываются исходя из расходов работы одного часа ЭВМ по формуле, грн.:


, (3.15)


где Вг – стоимость работы одного часа ЭВМ, грн.


Трес – расходы труда на разработку электрических схем, чел./час;


Трк – расходы труда на разработку конструкции, чел./час;


Трт – расходы труда на разработку технологии, чел./час;


Токд – расходы труда на оформление КД, чел./час;


При этом, стоимость работы одного часа ЭВМ (других технических средств - ТС) Вг определяется по формуле, грн.:


, (3.16)


где Те/е
– расходы на электроэнергию, грн.;


Ваморт
– величина 1-ого часа амортизации ЭВМ (ТС), грн.;


Зперс
– почасовая зарплата обслуживающего персонала, грн.;


Трем
– расходы на ремонт, покупку деталей, грн.;


Стоимость одного часа амортизации Ваморт
определяется по формуле, грн.:


при 40 часовой рабочей неделе:


, (3.17)


где Втз
- стоимость технических средств, грн.


На
- норма годовой амортизации (%).


Кт
- количество недель на год (52 недели/год).


Гт
- количество рабочих часов в неделю (40 час/неделя)


Почасовая оплата обслуживающего персонала Зперс
рассчитывается по формуле, грн.:


, (3.18)


где Окл
- месячный оклад обслуживающего персонала, грн.


Крг
- количество рабочих часов в месяц (160 часов/месяц);


Нрем
- расходы на оплату труда ремонта ЭВМ (6 % Окл).


Расходы на ремонт, покупку деталей для ЭВМ Трем определяются по формуле, грн.:


, (3.19)


где Втз
- стоимость технических средств, грн.


Нрем
- процент расходов на ремонт, покупку деталей (%);


Кт
- количество недель на год (52 недели/год).


Гт
- количество рабочих часов в неделю (36 ¸ 168 час./неделя)


Расходы на использование электроэнергии ЭВМ и техническими средствами Те/е
определяются по формуле, грн.:


, (3.20)


где Ве/е
– стоимость одного кВт/час электроэнергии, грн.;


Wпот
– мощность компьютера, принтера и сканера (за 1 час), (кВт/час.).


Таким образом, стоимость одного часа работы ЭВМ при разработке КД будет составлять (см. формулу 3.16), грн.:


.


Расходы на использование ЭВМ при разработке, грн. (см. формулу 3.15):



г) Расчет технологической себестоимости создания КД


Расчет технологической себестоимости создания КД изделия проводится методом калькуляции расходов (таблица 3.7).


Таблица 3.7 - Калькуляция технологических расходов на создание КД изделия
















































п/п


Наименование статей

Условны


обозначения


Расходы (грн.)
1 2 3 4
1. Материальные расходы Мв
38,48
2. Основная зарплата Зо
132,00
3. Дополнительная зарплата Зд
19,80
4. Отчисление на социальные мероприятия 37,2%(Зо
+Зд
)
56,47
5. Общепроизводственные (накладные) расходы предприятия Ннакл
33,00
6. Расходы на использование ЭВМ при составлении программного обеспечения КД ВЕОМ
18,60
7. Себестоимость КД изделия Скд= å (1¸6) 298,35

В таблице 3.7 величина материальных расходов Мв рассчитана в таблице 3.6, основная зарплата С берется из таблицы 3.5, дополнительная зарплата 15 % от основной зарплаты, отчисление на социальные мероприятия –37,2% - от основной и дополнительной зарплаты (вместе). Общезаводские (накладные) расходы 25% от основной зарплаты. Себестоимость разработанной конструкторской документации Скд рассчитывается как сумма пунктов 1–6.


3.3 Расчет расходов на стадии производства изделия

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


Таблица 3.8 -Расчет расходов на сырье и основные материалы на одно изделие



































Материалы

Норма расходов


(единиц)


Оптовая цена грн./ед. Фактические расходы (единиц)

Сумма


грн.


1 2 3 4 5

Стеклотекстолит СФ-2-35


(лист 1,0 ГОСТ 10316 - 78), кг


0,5


24,00


0,4


9,60


Припой ПОС - 61 (ГОСТ 21930 - 76), кг 0,05 18.00 0,05 0,90
Всего: 10,50
Транспортно-заготовительные расходы (4%) 0,42
Итого: 10,92

В ходе расчета себестоимости изделия, как исходные данные, используют спецификации материалов, покупных комплектующих изделии и полуфабрикатов, которые используются сборке одного изделия (Приложение Ж).


Расчет зарплаты основных производственных рабочих проводим на основе норм трудоемкости по видам работ и почасовым ставкам рабочих (таблица 3.9).


Таблица 3.9 - Расчет основной зарплаты






































































Наименование операции Почасовая тарифная ставка, грн.

Норма времени


чел./час.


Сдельная зарплата, грн.
1 2 3 4
Заготовительная 5,67 0,5 2,84
Фрезерная 6,08 0,8 4,86
Слесарная 6,08 1,0 6,08
Гравировка 5,67 0,5 2,84
Фотохимпечать 5,67 1,2 6,80
Гальваническая 6,08 2,0 12,16
Маркировочная 5,67 0,1 0,57
Сборка 5,67 1,2 6,80
Монтаж 5,67 0,5 2,84
Настройка 6,08 0,7 4,26
Другие - - -
Всего: 50,05

Калькуляция себестоимости и определения цены выполняется в таблице 3.10.


Таблица 3.10 -
Калькуляция себестоимости и определения цены изделия































Наименование статей расходов Расходы грн.
Прямые расходы
Сырье и материалы 10,92
Покупные комплектующие изделия 69,54
Основная зарплата рабочих 50,05
Дополнительная зарплата (15%) 7,50
Отчисление на социальные мероприятия (37,2%) 21,41
Накладные расходы (25% по данным предприятия) 12,51
Производственная себестоимость 298,35
Общая стоимость базового блока 470,28

Общая стоимость изделия будет составлять:


Собщ.
= С прог.
+ С баз. Бл.
(3.21)


где С прог.
– себестоимость составления программы для микроконтроллера;


С баз. Бл
– себестоимость подготовки КД и сборки устройства.


При единичном изготовлении


Собщ.
= 2899,00+ 470,28 = 3369,28 (грн.).


Если же поступит заказ на изготовление 1000 астрономических часов, себестоимость устройства будет:


Собщ.1000
= 2899,00/1000 + 298,35/1000 + 171,93 = 175,21 (грн.)


Вывод: чем больше производится устройств, тем меньше их стоимость (не учитывалась стоимость оптовой закупки комплектующих).


Данное устройство может быть предложено для повторения радиолюбителями, потому что оно не найдет массового применения, ввиду того, что промышленностью массово выпускаются электронные часы, которые намного дешевле астрономических часов и выполняют множество полезных «земных» функций.


РАЗДЕЛ 4 ОХРАНА ТРУДА


Научно-технический прогресс внес серьезные изменения в условия производственной деятельности работников умственного труда. Их труд стал более интенсивным, напряженным, требующим значительных затрат умственной, эмоциональной и физической энергии. Это потребовало комплексного решения проблем эргономики, гигиены и организации труда, регламентации режимов труда и отдыха.


В настоящее время компьютерная техника широко применяется во всех областях деятельности человека. При работе с компьютером человек подвергается воздействию ряда опасных и вредных производственных факторов: электромагнитных полей (диапазон радиочастот: ВЧ, УВЧ и СВЧ), инфракрасного и ионизирующего излучений, шума и вибрации, статического электричества и др..


Работа с компьютером характеризуется значительным умственным напряжением и нервно-эмоциональной нагрузкой операторов, высокой напряженностью зрительной работы и достаточно большой нагрузкой на мышцы рук при работе с клавиатурой ЭВМ. Большое значение имеет рациональная конструкция и расположение элементов рабочего места, что важно для поддержания оптимальной рабочей позы человека-оператора.


В процессе работы с компьютером необходимо соблюдать правильный режим труда и отдыха. В противном случае у персонала отмечаются значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи и руках.


4.1 Требования к производственным помещениям


4.1.1 Окраска и коэффициенты отражения


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


Источники света, такие как светильники и окна, которые дают отражение от поверхности экрана, значительно ухудшают точность знаков и влекут за собой помехи физиологического характера, которые могут выразиться в значительном напряжении, особенно при продолжительной работе. Отражение, включая отражения от вторичных источников света, должно быть сведено к минимуму.


Для защиты от избыточной яркости окон могут быть применены шторы и экраны.


В зависимости от ориентации окон рекомендуется следующая окраска стен и пола:


окна ориентированы на юг: - стены зеленовато-голубого или светло-голубого цвета; пол - зеленый;


окна ориентированы на север: - стены светло-оранжевого или оранжево-желтого цвета; пол - красновато-оранжевый;


окна ориентированы на восток: - стены желто-зеленого цвета; пол зеленый или красновато-оранжевый;


окна ориентированы на запад: - стены желто-зеленого или голубовато-зеленого цвета; пол зеленый или красновато-оранжевый.


В помещениях, где находится компьютер, необходимо обеспечить следующие величины коэффициента отражения: для потолка: 60-70%, для стен: 40-50%, для пола: около 30%. Для других поверхностей и рабочей мебели: 30-40%.


4.1.2 Освещение


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


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


Неправильное направление света на рабочем месте может создавать резкие тени, блики, дезориентировать работающего. Все эти причины могут привести к несчастному случаю или профзаболеваниям, поэтому столь важен правильный расчет освещенности.


Существует три вида освещения - естественное, искусственное и совмещенное (естественное и искусственное вместе).


Естественное освещение - освещение помещений дневным светом, проникающим через световые проемы в наружных ограждающих конструкциях помещений.


Естественное освещение характеризуется тем, что меняется в широких пределах в зависимости от времени дня, времени года, характера области и ряда других факторов.


Искусственное освещение применяется при работе в темное время суток и днем, когда не удается обеспечить нормированные значения коэффициента естественного освещения (пасмурная погода, короткий световой день).


Освещение, при котором недостаточное по нормам естественное освещение дополняется искусственным, называется совмещенным освещением.


Искусственное освещение подразделяется на рабочее, аварийное, эвакуационное, охранное. Рабочее освещение, в свою очередь, может быть общим или комбинированным. Общее - освещение, при котором светильники размещаются в верхней зоне помещения равномерно или применительно к расположению оборудования. Комбинированное - освещение, при котором к общему добавляется местное освещение.


Согласно СНиП II-4-79 в помещений вычислительных центров необходимо применить систему комбинированного освещения.


При выполнении работ категории высокой зрительной точности (наименьший размер объекта различения 0,3…0,5мм) величина коэффициента естественного освещения (КЕО) должна быть не ниже 1,5%, а при зрительной работе средней точности (наименьший размер объекта различения 0,5…1,0 мм) КЕО должен быть не ниже 1,0%. В качестве источников искусственного освещения обычно используются люминесцентные лампы типа ЛБ или ДРЛ, которые попарно объединяются в светильники, которые должны располагаться над рабочими поверхностями равномерно.


Требования к освещенности в помещениях, где установлены компьютеры, следующие: при выполнении зрительных работ высокой точности общая освещенность должна составлять 300лк, а комбинированная - 750лк; аналогичные требования при выполнении работ средней точности - 200 и 300лк соответственно.


Кроме того все поле зрения должно быть освещено достаточно равномерно – это основное гигиеническое требование. Иными словами, степень освещения помещения и яркость экрана компьютера должны быть примерно одинаковыми, т.к. яркий свет в районе периферийного зрения значительно увеличивает напряженность глаз и, как следствие, приводит к их быстрой утомляемости.


4.1.3 Параметры микроклимата


Параметры микроклимата могут меняться в широких пределах, в то время как необходимым условием жизнедеятельности человека является поддержание постоянства температуры тела благодаря терморегуляции, т.е. способности организма регулировать отдачу тепла в окружающую среду. Принцип нормирования микроклимата – создание оптимальных условий для теплообмена тела человека с окружающей средой.


Вычислительная техника является источником существенных тепловыделений, что может привести к повышению температуры и снижению относительной влажности в помещении. В помещениях, где установлены компьютеры, должны соблюдаться определенные параметры микроклимата. В санитарных нормах СН-245-71 установлены величины параметров микроклимата, создающие комфортные условия. Эти нормы устанавливаются в зависимости от времени года, характера трудового процесса и характера производственного помещения (см. табл. 4.1)


Объем помещений, в которых размещены работники вычислительных центров, не должен быть меньше 19,5м3
/человека с учетом максимального числа одновременно работающих в смену. Нормы подачи свежего воздуха в помещения, где расположены компьютеры, приведены в табл. 4.2.


Для обеспечения комфортных условий используются как организационные методы (рациональная организация проведения работ в зависимости от времени года и суток, чередование труда и отдыха), так и технические средства (вентиляция, кондиционирование воздуха, отопительная система).


Таблица 4.1- Параметры микроклимата для помещений, где установлены компьютеры


























Период года Параметр микроклимата Величина
Холодный Температура воздуха в помещении 22…24°С
Относительная влажность 40…60%
Скорость движения воздуха до 0,1м/с
Теплый Температура воздуха в помещении 23…25°С
Относительная влажность 40…60%
Скорость движения воздуха 0,1…0,2м/с

Таблица 4.2 - Нормы подачи свежего воздуха в помещения, где расположены компьютеры














Характеристика помещения Объемный расход подаваемого в помещение свежего воздуха, м3
/на одного человека в час
Объем до 20м3
на человека
Не менее 30
20…40м3
на человека
Не менее 20
Более 40м3
на человека
Естественная вентиляция

4.1.4 Шум и вибрация


Шум ухудшает условия труда оказывая вредное действие на организм человека. Работающие в условиях длительного шумового воздействия испытывают раздражительность, головные боли, головокружение, снижение памяти, повышенную утомляемость, понижение аппетита, боли в ушах и т. д. Такие нарушения в работе ряда органов и систем организма человека могут вызвать негативные изменения в эмоциональном состоянии человека вплоть до стрессовых. Под воздействием шума снижается концентрация внимания, нарушаются физиологические функции, появляется усталость в связи с повышенными энергетическими затратами и нервно-психическим напряжением, ухудшается речевая коммутация. Все это снижает работоспособность человека и его производительность, качество и безопасность труда. Длительное воздействие интенсивного шума [выше 80 дБ(А)] на слух человека приводит к его частичной или полной потере.


В табл. 4.3 указаны предельные уровни звука в зависимости от категории тяжести и напряженности труда, являющиеся безопасными в отношении сохранения здоровья и работоспособности.


Таблица 4.3 - Предельные уровни звука, дБ, на рабочих местах


































Категория напряженности труда Категория тяжести труда
Легкая Средняя Тяжелая Очень тяжелая
I. Мало напряженный 80 80 75 75
II. Умеренно напряженный 70 70 65 65
III. Напряженный 60 60 - -
IV. Очень напряженный 50 50 - -

Уровень шума на рабочем месте математиков-программистов и операторов видеоматериалов не должен превышать 50дБА, а в залах обработки информации на вычислительных машинах - 65дБА. Для снижения уровня шума стены и потолок помещений, где установлены компьютеры, могут быть облицованы звукопоглощающими материалами. Уровень вибрации в помещениях вычислительных центров может быть снижен путем установки оборудования на специальные виброизоляторы.


4.1.5 Электромагнитное и ионизирующее излучения


Большинство ученых считают, что как кратковременное, так и длительное воздействие всех видов излучения от экрана монитора не опасно для здоровья персонала, обслуживающего компьютеры. Однако исчерпывающих данных относительно опасности воздействия излучения от мониторов на работающих с компьютерами не существует и исследования в этом направлении продолжаются.


Допустимые значения параметров неионизирующих электромагнитных излучений от монитора компьютера представлены в табл. 4.4.


Максимальный уровень рентгеновского излучения на рабочем месте оператора компьютера обычно не превышает 10мкбэр/ч, а интенсивность ультрафиолетового и инфракрасного излучений от экрана монитора лежит в пределах 10-100мВт/м2
.


Таблица 4.4 - Допустимые значения параметров неионизирующих электромагнитных излучений (в соответствии с СанПиН 2.2.2.542-96)














Наименование параметра Допустимые значения
Напряженность электрической составляющей электромагнитного поля на расстоянии 50см от поверхности видеомонитора

10В/м


Напряженность магнитной составляющей электромагнитного


поля на расстоянии 50см от поверхности видеомонитора


0,3А/м


Напряженность электростатического поля не должна превышать:


для взрослых пользователей


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


20кВ/м


15кВ/м



Для снижения воздействия этих видов излучения рекомендуется применять мониторы с пониженным уровнем излучения (MPR-II, TCO-92, TCO-99), устанавливать защитные экраны, а также соблюдать регламентированные режимы труда и отдыха.


4.2 Эргономические требования к рабочему месту


Проектирование рабочих мест, снабженных видеотерминалами, относится к числу важных проблем эргономического проектирования в области вычислительной техники.


Рабочее место и взаимное расположение всех его элементов должно соответствовать антропометрическим, физическим и психологическим требованиям. Большое значение имеет также характер работы. В частности, при организации рабочего места программиста должны быть соблюдены следующие основные условия: оптимальное размещение оборудования, входящего в состав рабочего места и достаточное рабочее пространство, позволяющее осуществлять все необходимые движения и перемещения.


Эргономическими аспектами проектирования видеотерминальных рабочих мест, в частности, являются: высота рабочей поверхности, размеры пространства для ног, требования к расположению документов на рабочем месте (наличие и размеры подставки для документов, возможность различного размещения документов, расстояние от глаз пользователя до экрана, документа, клавиатуры и т.д.), характеристики рабочего кресла, требования к поверхности рабочего стола, регулируемость элементов рабочего места.


Главными элементами рабочего места программиста являются стол и кресло.


Основным рабочим положением является положение сидя.


Рабочая поза сидя вызывает минимальное утомление программиста.


Рациональная планировка рабочего места предусматривает четкий порядок и постоянство размещения предметов, средств труда и документации. То, что требуется для выполнения работ чаще, расположено в зоне легкой досягаемости рабочего пространства.


Моторное поле - пространство рабочего места, в котором могут осуществляться двигательные действия человека.


Максимальная зона досягаемости рук - это часть моторного поля рабочего места, ограниченного дугами, описываемыми максимально вытянутыми руками при движении их в плечевом суставе.


Оптимальная зона - часть моторного поля рабочего места, ограниченного дугами, описываемыми предплечьями при движении в локтевых суставах с опорой в точке локтя и с относительно неподвижным плечом.


На рис. 4.1 показан пример размещения основных и периферийных составляющих ПК на рабочем столе программиста.


Для комфортной работы стол должен удовлетворять следующим условиям :


- высота стола должна быть выбрана с учетом возможности сидеть свободно, в удобной позе, при необходимости опираясь на подлокотники;


- нижняя часть стола должна быть сконструирована так, чтобы программист мог удобно сидеть, не был вынужден поджимать ноги;


- поверхность стола должна обладать свойствами, исключающими появление бликов в поле зрения программиста;


- конструкция стола должна предусматривать наличие выдвижных ящиков (не менее 3 для хранения документации, листингов, канцелярских принадлежностей);


- высота рабочей поверхности рекомендуется в пределах 680-760мм;


- высота поверхности, на которую устанавливается клавиатура, должна быть около 650мм.


Большое значение придается характеристикам рабочего кресла. Так, рекомендуемая высота сиденья над уровнем пола находится в пределах 420-


550мм. Поверхность сиденья мягкая, передний край закругленный, а угол наклона спинки - регулируемый.



Рисунок 4.1- Размещения основных и периферийных составляющих ПК на рабочем столе программиста: 1 – сканер, 2 – монитор, 3 – принтер, 4 – поверхность рабочего стола, 5 – клавиатура, 6 – манипулятор типа «мышь».


Необходимо предусматривать при проектировании возможность различного размещения документов: сбоку от видеотерминала, между монитором и клавиатурой и т.п. Кроме того, в случаях, когда видеотерминал имеет низкое качество изображения, например заметны мелькания, расстояние от глаз до экрана делают больше (около 700мм), чем расстояние от глаза до документа (300-450мм). Вообще при высоком качестве изображения на видеотерминале расстояние от глаз пользователя до экрана, документа и клавиатуры может быть равным.


Положение экрана определяется:


- расстоянием считывания (0,6 - 0,7м);


- углом считывания, направлением взгляда на 20˚ ниже горизонтали к центру экрана, причем экран перпендикулярен этому направлению.


Должна также предусматриваться возможность регулирования экрана:


- по высоте +3 см;


- по наклону от -10˚ до +20˚ относительно вертикали;


- в левом и правом направлениях.


Большое значение также придается правильной рабочей позе пользователя.


При неудобной рабочей позе могут появиться боли в мышцах, суставах и сухожилиях. Требования к рабочей позе пользователя видеотерминала следующие:


- голова не должна быть наклонена более чем на 20˚,


- плечи должны быть расслаблены,


- локти - под углом 80˚-100˚,


- предплечья и кисти рук - в горизонтальном положении.


Причина неправильной позы пользователей обусловлена следующими факторами: нет хорошей подставки для документов, клавиатура находится слишком высоко, а документы - низко, некуда положить руки и кисти, недостаточно пространство для ног.


В целях преодоления указанных недостатков даются общие рекомендации: лучше передвижная клавиатура; должны быть предусмотрены специальные приспособления для регулирования высоты стола, клавиатуры и экрана, а также подставка для рук.


Существенное значение для производительной и качественной работы на компьютере имеют размеры знаков, плотность их размещения, контраст и соотношение яркостей символов и фона экрана. Если расстояние от глаз оператора до экрана дисплея составляет 60-80 см, то высота знака должна быть не менее 3мм, оптимальное соотношение ширины и высоты знака составляет


3:4, а расстояние между знаками – 15-20% их высоты. Соотношение яркости фона экрана и символов - от 1:2 до 1:15.


Во время пользования компьютером медики советуют устанавливать монитор на расстоянии 50-60 см от глаз. Специалисты также считают, что верхняя часть видеодисплея должна быть на уровне глаз или чуть ниже. Когда человек смотрит прямо перед собой, его глаза открываются шире, чем когда он смотрит вниз. За счет этого площадь обзора значительно увеличивается, вызывая обезвоживание глаз. К тому же если экран установлен высоко, а глаза широко открыты, нарушается функция моргания. Это значит, что глаза не закрываются полностью, не омываются слезной жидкостью, не получают достаточного увлажнения, что приводит к их быстрой утомляемости.


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


4.3 Режим труда


Как уже было неоднократно отмечено, при работе с персональным компьютером очень важную роль играет соблюдение правильного режима труда и отдыха. В противном случае у персонала отмечаются значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи и руках.


В табл. 4.5 представлены сведения о регламен

тированных перерывах, которые необходимо делать при работе на компьютере, в зависимости от продолжительности рабочей смены, видов и категорий трудовой деятельности с ВДТ (видеодисплейный терминал) и ПЭВМ (в соответствии с САнНиП 2.2.2 542-96 «Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работ»).


Таблица 4.5 - Время регламентированных перерывов при работе на компьютере
























Категория работы с ВДТ или ПЭВМ Уровень нагрузки за рабочую смену при видах работы с ВДТ, количество знаков Суммарное время регламентированных перерывов, мин
При 8-часовой смене При 12-часовой смене
Группа А до 20000 30 70
Группа Б до 40000 50 90
Группа В до 60000 70 120

Примечание. Время перерывов дано при соблюдении указанных Санитарных правил и норм. При несоответствии фактических условий труда требованиям Санитарных правил и норм время регламентированных перерывов следует увеличить на 30%.


В соответствии со САнНиП 2.2.2 546-96 все виды трудовой деятельности, связанные с использованием компьютера, разделяются на три группы: группа А: работа по считыванию информации с экрана ВДТ или ПЭВМ с предварительным запросом; группа Б: работа по вводу информации; группа В: творческая работа в режиме диалога с ЭВМ.


Эффективность перерывов повышается при сочетании с производственной гимнастикой или организации специального помещения для отдыха персонала с удобной мягкой мебелью, аквариумом, зеленой зоной и т.п.


4.4 Расчет освещенности


Расчет освещенности рабочего места сводится к выбору системы освещения, определению необходимого числа светильников, их типа и размещения. Исходя из этого, рассчитаем параметры искусственного освещения.


Обычно искусственное освещение выполняется посредством электрических источников света двух видов: ламп накаливания и люминесцентных ламп. Будем использовать люминесцентные лампы, которые по сравнению с лампами накаливания имеют ряд существенных преимуществ:


- по спектральному составу света они близки к дневному, естественному свету;


- обладают более высоким КПД (в 1,5-2 раза выше, чем КПД ламп накаливания);


- обладают повышенной светоотдачей (в 3-4 раза выше, чем у ламп накаливания);


- более длительный срок службы.


Расчет освещения производится для комнаты площадью 15м2
, ширина которой - 5м, высота - 3 м. Воспользуемся методом светового потока.


Для определения количества светильников определим световой поток, падающий на поверхность по формуле:


F = E∙S∙Z∙К / n , (4.1)


Где F - рассчитываемый световой поток, Лм;


Е - нормированная минимальная освещенность, Лк (определяется по таблице). Работу программиста, в соответствии с этой таблицей, можно отнести к разряду точных работ, следовательно, минимальная освещенность будет Е = 300Лк;


S - площадь освещаемого помещения (в нашем случае S = 15м2
);


Z - отношение средней освещенности к минимальной (обычно принимается равным 1,1-1,15 , пусть Z = 1,1);


К - коэффициент запаса, учитывающий уменьшение светового потока лампы в результате загрязнения светильников в процессе эксплуатации (его значение зависит от типа помещения и характера проводимых в нем работ и в нашем случае К = 1,5);


n - коэффициент использования, (выражается отношением светового потока, падающего на расчетную поверхность, к суммарному потоку всех ламп и исчисляется в долях единицы; зависит от характеристик светильника, размеров помещения, окраски стен и потолка, характеризуемых коэффициентами отражения от стен (РС) и потолка (РП)), значение коэффициентов РС и РП были указаны выше: РС=40%, РП=60%. Значение n определим по таблице коэффициентов использования различных светильников.


Для этого вычислим индекс помещения по формуле:


I = A∙B / h (A+B), (4.2)


где h - расчетная высота подвеса, h = 2,92 м;


A - ширина помещения, А = 3 м;


В - длина помещения, В = 5 м.


Подставив значения получим:


I= 0,642.


Зная индекс помещения I, по таблице 7 [23] находим n = 0,22.


Подставим все значения в формулу (4.1) для определения светового потока F, получаем F = 33750 Лм.


Для освещения выбираем люминесцентные лампы типа ЛБ40-1, световой поток которых Fл
= 4320 Лк.


Рассчитаем необходимое количество ламп по формуле:


N = F / Fл
, (4.3)


где N - определяемое число ламп;


F - световой поток, F = 33750 Лм;



- световой поток лампы, Fл
= 4320 Лм.


N = 8 ламп.


При выборе осветительных приборов используем светильники типа ОД. Каждый светильник комплектуется двумя лампами.


Значит требуется для помещения площадью S = 15 м2
четыре светильника типа ОД.


Расчет естественного освещения помещений


Организация правильного освещения рабочих мест, зон обработки и производственных помещений имеет большое санитарно-гигиеническое значение, способствует повышению продуктивности работы, снижения травматизма, улучшения качества продукции. И наоборот, недостаточное освещение усложняет исполнения технологического процесса и может быть причиной несчастного случая и заболевания органов зрения.


Освещение должно удовлетворять такие основные требования:


- быть равномерным и довольно сильным;


- не создавать различных теней на местах работы, контрастов между освещенным рабочем местом и окружающей обстановкой;


- не создавать ненужной яркости и блеска в поле взора работников;


- давать правильное направление светового потока;


Все производственные помещения необходимо иметь светлопрорезы, которые дают достаточное природное освещение. Без природного освещения могут быть конференц-залы заседаний, выставочные залы, раздевалки, санитарно-бытовые помещения, помещения ожидания медицинских учреждений, помещений личной гигиены, коридоры и проходы.


Коэфициент естественного освещения в соответствии с ДНБ В 25.28.2006, для нашого III пояса светового климата составляет 1,5.


Исходя из этого произведем расчет необходимой площади оконных проемов.


Расчет площади окон при боковом освещении определяется, по формуле:



= (Ln
*Кз.
*N0
*Sn
*Кзд.
)/(100 *T0
*r1) (4.4)


где:Ln
– нормированное значение КЕО


Кз
– коэффициент запаса (равен 1,2)


N0
– световая характеристика окон


Sn
– площадь достаточного естественного освещения


Кзд.
– коэффициент, учитывающий затенение окон противостоящими зданиями


r1 – коэффициент, учитывающий повышение КЕО при боковом освещении


T0
– общий коэффициент светопропускания, который рассчитывается по формуле:


T0
= T1
* T2
* T3
* T4
* T5,
(4.5)


где T1
– коэффициент светопропускания материала;


T2
– коэффициент, учитывающий потери света в переплетах светопроема;


T3
– коэффициент, учитывающий потери света в несущих конструкциях;


T4
– коэффициент, учитывающий потери света в солнцезащитный устройствах;


T5
– коэффициент, учитывающий потери света в защитной сетке, устанавливаемой под фонарями, принимается равным 1;


Теперь следует рассчитать боковое освещение для зоны, примыкающей к наружной стене. По разряду зрительной работы нужно определить значение КЕО. КЕО = 1,5 нормированное значение КЕО с учетом светового климата необходимо вычислить по формуле:


Ln
=l*m*c, (4.6)


где l – значение КЕО (l=1.5);


m – коэффициент светового климата (m=1);


c – коэффициент солнечности климата (c=1)


Ln
=1,5


Теперь следует определить отношение длины помещения Ln
к глубине помещения B:


Ln
/B=3/5 =0,6;


Отношение глубины помещения В к высоте от уровня условной рабочей поверхности до верха окна h1
(в данном случае h1
=1,8) :


B/h1
=5/1,8 = 2,77.


Световая характеристика световых проемов N0
=9.


Кзд
=1


Значение T0
=0,8*0,7*1*1*1=0,56.


Ln
для 4 разряда зрительных работ равен 1,5 при мытье окон два раза в год.


Определяем r1, r1=1,5.


Кз.
=1,2.


Теперь следует определить значение Sп
:


Sп
=Ln
*В=3*10=30 м2
.


Кзд.
=1.


На данном этапе следует рассчитать необходимую площадь оконных проемов:


(Ln
* Кз.
*N0
*Sn
*Кзд.
) / (100*T0
*r1)



= (1,5*1,2*9*30*1)/(100*0,56*1,5)=486/84= 5,78 м2
;


Принимаем количество окон 1 штука:


S1
=5,78 м2
площадь одного окна


Высота одного окна составляет – 2,5 м, ширина 2,3 м.


4.5 Расчет вентиляции


В зависимости от способа перемещения воздуха вентиляция бывает естественная и принудительная.


Параметры воздуха, поступающего в приемные отверстия и проемы местных отсосов технологических и других устройств, которые расположены в рабочей зоне, следует принимать в соответствии с ГОСТ 12.1.005-76. При размерах помещения 3 на 5 метров и высоте 3 метра, его объем 45 куб.м. Следовательно, вентиляция должна обеспечивать расход воздуха в 90 куб.м/час. В летнее время следует предусмотреть установку кондиционера с целью избежания превышения температуры в помещении для устойчивой работы оборудования. Необходимо уделить должное внимание количеству пыли в воздухе, так как это непосредственно влияет на надежность и ресурс эксплуатации ЭВМ.


Мощность (точнее мощность охлаждения) кондиционера является главной его характеристикой, от неё зависит на какой объем помещения он рассчитан. Для ориентировочных расчетов берется 1 кВт на 10 м2
при высоте потолков 2,8 – 3 м (в соответствии со СНиП 2.04.05-86 "Отопление, вентиляция и кондиционирование").


Для расчета теплопритоков данного помещения использована упрощенная методика:


Q=S·h·q (4.8)


где:Q – Теплопритоки


S – Площадь помещения


h – Высота помещения


q – Коэффициент равный 30-40 вт/м3
(в данном случае 35 вт/м3
)


Для помещения 15 м2
и высотой 3 м теплопритоки будут составлять:


Q=15·3·35=1575 вт


Кроме этого следует учитывать тепловыделение от оргтехники и людей, считается (в соответствии со СНиП 2.04.05-86 "Отопление, вентиляция и кондиционирование") что в спокойном состоянии человек выделяет 0,1 кВт тепла, компьютер или копировальный аппарат 0,3 кВт, прибавив эти значения к общим теплопритокам можно получить необходимую мощность охлаждения.


Qдоп
=(H·Sопер
)+(С·Sкомп
)+(P·Sпринт
) (4.9)


где:Qдоп
– Сумма дополнительных теплопритоков


C – Тепловыделение компьютера


H – Тепловыделение оператора


D – Тепловыделение принтера


Sкомп
– Количество рабочих станций


Sпринт
– Количество принтеров


Sопер
– Количество операторов


Дополнительные теплопритоки помещения составят:


Qдоп1
=(0,1·2)+(0,3·2)+(0,3·1)=1,1(кВт)


Итого сумма теплопритоков равна:


Qобщ1
=1575+1100=2675 (Вт)


В соответствии с данными расчетами необходимо выбрать целесообразную мощность и количество кондиционеров.


Для помещения, для которого ведется расчет, следует использовать кондиционеры с номинальной мощностью 3,0 кВт.


4.6 Расчет уровня шума


Одним из неблагоприятных факторов производственной среды в ИВЦ является высокий уровень шума, создаваемый печатными устройствами, оборудованием для кондиционирования воздуха, вентиляторами систем охлаждения в самих ЭВМ.


Для решения вопросов о необходимости и целесообразности снижения шума необходимо знать уровни шума на рабочем месте оператора.


Уровень шума, возникающий от нескольких некогерентных источников, работающих одновременно, подсчитывается на основании принципа энергетического суммирования излучений отдельных источников:


∑L = 10·lg (Li∙n), (4.10)


где Li – уровень звукового давления i-го источника шума;


n – количество источников шума.


Полученные результаты расчета сравнивается с допустимым значением уровня шума для данного рабочего места. Если результаты расчета выше допустимого значения уровня шума, то необходимы специальные меры по снижению шума. К ним относятся: облицовка стен и потолка зала звукопоглощающими материалами, снижение шума в источнике, правильная планировка оборудования и рациональная организация рабочего места оператора.


Уровни звукового давления источников шума, действующих на оператора на его рабочем месте представлены в табл. 4.6.


Таблица 4.6 - Уровни звукового давления различных источников























Источник шума Уровень шума, дБ
Жесткий диск 40
Вентилятор 45
Монитор 17
Клавиатура 10
Принтер 45
Сканер 42

Обычно рабочее место оператора оснащено следующим оборудованием: винчестер в системном блоке, вентилятор(ы) систем охлаждения ПК, монитор, клавиатура, принтер и сканер.


Подставив значения уровня звукового давления для каждого вида оборудования в формулу (4.4) , получим:


∑L=10·lg(104+104,5+101,7+101+104,5+104,2)=49,5 дБ


Полученное значение не превышает допустимый уровень шума для рабочего места оператора, равный 65 дБ (ГОСТ 12.1.003-83). И если учесть, что вряд ли такие периферийные устройства как сканер и принтер будут использоваться одновременно, то эта цифра будет еще ниже. Кроме того при работе принтера непосредственное присутствие оператора необязательно, т.к. принтер снабжен механизмом автоподачи листов.


ВЫВОДЫ


В данном дипломном проекте рассмотрены вопросы проектирования многофункциональных астрономических часов, которые еще не выпускаются промышленностью.


В проекте рассмотрены теоретические вопросы создания устройств на микроконтроллера: этапы выполнения работ, разработка программного обеспечения, внедрения в производство.


В проекте осуществлена практическая разработка многофункциональных астрономических часов, которые показываю различное время (марсианское, юлианское, лунное и др.), произведен выбор микроконтроллера для осуществления всех поставленных задач, разработаны структурная и функциональные схемы, разработана принципиальная схема, которая отличается своеобразной новизной.


В экономической части проекта произведен расчет себестоимости многофункциональных астрономических часов. Часы широкого применения не найдут, но могут будут использованы, как сувенирные часы. Правда в этих часах можно использовать функцию «Земные часы», использовать функции «Таймер», который выполняет и обратный отсчет времени. Стоимость часов при массовом производстве уменьшиться, т.к. стоимость на разработку устройства и программного обеспечения распределится на количество изготовленных устройств.


В разделе охрана труда мы произвели расчет естественного и искусственного освещения, системы кондиционирования, уровня шума на рабочем месте инженера-программиста и сопоставили с нормативными значениями. В процессе разработки устройства были рассмотрены и изучены множество источников информации, информация сети Интернет, осуществлен поиск устройств-аналогов, использованы цены на комплектующие Интернет-магазинов.


ПЕРЕЧЕНЬ ССЫЛОК


1. "Dimmable Fluorescent Ballast" – User Guide, 10/07, Atmel Corporation, http://www.atmel.com/dyn/resources/prod_documents/doc7597.pdf


2. ГОСТ13109-97. Нормы качества электрической энергии в системах электроснабжения общего назначения.


3. G. Howell "Five questions about resistors" // EDN, 9/28/2006, http://www.edn.com/contents/images/6372835.pdf


4. П. Хоровиц, У. Хилл "Искусство схемотехники" – Изд. 6-е, М.: Мир, 2003.


5. C. Hillman "Common mistakes in electronic design" // EDN, 12/14/2007 http://www.edn.com/contents/images/6512156.pdf


6."Frequently asked questions about dimmers" // http://www .lutron.com/product_technical/faq.asp


7. Л. Н. Кечиев, Е. Д. Пожидаев "Защита электронных средств от воздействия статического электричества" – М.: ИД "Технологии", 2005.


8. Жидецкий В.Ц., Джигирей В.С., Мельников А.В. Основы охраны труда: Учебник – Львов, Афиша, 2008 – 351с.


9. Денисенко Г.Ф. Охрана труда: Учебн.пособие – М., Высшая школа, 1989 – 319с.


10. Самгин Э.Б. Освещение рабочих мест. – М.: МИРЭА, 1989. – 186с.


11. Справочная книга для проектирования электрического освещения. / Под ред. Г.Б. Кнорринга. – Л.: Энергия, 1976.


12. Борьба с шумом на производстве: Справочник / Е.Я. Юдин, Л.А. Борисов;


Под общ. ред. Е.Я. Юдина – М.: Машиностроение, 1985. – 400с., ил.


13. Зинченко В.П. Основы эргономики. – М.: МГУ, 1979. – 179с.


14.Методичні вказівки до виконання дипломної роботи для учнів спеціальності «Оператор комп’ютерного набору; оператор комп’ютерної верстки»/ Упоряд.: Д.О. Дяченко, К.О. Ізмалкова, О.Г. Меркулова. – Сєверодонецьк: СВПУ, 2007. – 40 с.


15.Н. Заец. Многофункциональные часы. — Схемотехника, 2006, № 2,с. 41,42.


16.Н. Заец. Термометр - часы с датчиками фирмы Dallas Semiconductor. — Схемотехника, 2005, № 5, с. 52 - 55.


17.Н. Заец. Радиолюбительские конструкции на Р1С-микроконтроллерах. Книга 3. — М.: СОЛОН-Пресс, 2005, с. 248.


18.Н. Заец. Отечественные жидкокристаллические индикаторы TIC9162 с драйверами по технологии COG. - Схемотехника, 2005, №9, с. 9-11.


19. Н. Заец. Таймеры десятичного счета. — Электрик, 2006, № 7-8, с. 36 -39.


20.Мощные полевые переключательные транзисторы фирмы International Rectifier. — Радио, 2001, № 5, с. 45.


21.А. Долгий. Разработка и отладка устройств на микроконтроллерах. — Радио, 2001 ,№ 5-12, 2002, № 1.


22.А. Долгий. Программаторы и программирование микроконтроллеров. — Радио, 2004, № 1-12.


23.Н. Заец. Универсальный таймер. — Схемотехника, 2003, № 1, с. 53.


24.Н. Заец. Электронные самоделки для быта, отдыха и
здоровья.— М.: СОЛОН-Пресс, 2009, 423 с.


ПРИЛОЖЕНИЯ


Приложение А


Таблица А.1 – Основные параметры микроконтроллера PIC16F877A






























































Основные параметры Ядро PIC16
F,МГц от 0 до 20
Память: Flash,кБ 8
Память: RAM,кБ 0.365
Память: EEPROM,кБ 0.25
I/O (макс.),шт. 33
Таймеры: 8-бит,шт 2
Таймеры: 16-бит,шт 1
Таймеры: Каналов ШИМ,шт 2
Таймеры: RTC Нет
Интерфейсы: UART,шт 1
Интерфейсы: SPI,шт 1
Интерфейсы: I2C,шт 1
Аналоговые входы: Разрядов АЦП,бит 10
Аналоговые входы: Каналов АЦП,шт 8
Аналоговые входы: Аналоговый компаратор,шт 2
VCC,В от 2 до 5.5
ICC,мА 25
TA,°C от -40 до 125
Корпус PLCC-44 DIP-40 QFN-44 TQFP-44

Приложение Б


Программа для микроконтроллера многофункциональных астрономических часов


; ВЕРСИЯ 1.3


; V.1.1


; - Исправил сигнальную проблему установки


; V.1.2


; - Исправленный дефект с смятением иногда снова установка или остановка неправильного таймера


; - Приспособление за 1/4 второго утратят, когда таймер был reset смятением


; V.1.3


; - Некоторые таймеры блокировали, когда установка смятения были скорректированы


#include <p16F877A.inc>


__config _HS_OSC & _WDT_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON ;& _CP_OFF


#include "LCD.h"


#include "KBD.h"


; Определения байта состояния


#define TMR_ON 7 ; 0 = от, 1 = на


#define TMR_DIR 6 ; 0 = inc, 1 = dec


#define TMR_ON_ALARM_RESET 4 ; 1 = на смятении, снова установленном таймере


#define TMR_ON_ALARM_STOP 3 ; 1 = на смятении, таймере остановки


; куски 0-1: сигнальный звук


; Корректировки Нормы


#define TMR_STD_LO 0xC5


#define TMR_STD_HI 0x66


#define TMR_XTR_LO 0x18


#define TMR_XTR_HI 0x80


#define PULSES_PER_TICK 0x20


#define F_TICK 0 ; флаг тикания


#define F_BTNDOWN 1 ; 1, если кнопка была вниз от предыдущей петли, 0 иначе


#define F_TMR_LABEL_DIRTY 2 ; набор, если этикетке таймера придется обновляться на показе


#define F_VAL_DISPLAY_DIRTY 3 ; набор, если этикетке значения придется обновляться на показе


#define F_CLOCK_STOPPED 4 ; набор, если главный отмечает время остановлен


#define F_CURSOR_DIRTY 5 ; набор, если местоположению курсора нужно обновляться или reset


#define F_VALUE_ENTERED 6 ; набор, если новое значение только введено


#define MSG_ID_Clear 0xFF


ТОЧНОСТЬ #define 7


#define KBD_SCAN_DELAY 3


#define D_SEL_TIMER 0x01 ; Место назначения - отобранный таймер


#define D_SEL_TIMER_LENGTH 0x02 ; Место назначения - отобранная длина таймера


#define D_SEL_TIMER_ALARM 0x03 ; Место назначения - отобранное сигнальное время таймера


#define D_SEL_TIMER_COPY 0x04 ; Место назначения - отобранный таймер; потребительная стоимость как таймер ID к значению таймера lookup


#define B_LED 0 ; RA0


#define B_SPK 1 ; RA1


#define SND_SILENT 0x00 ; не нет звука


#define SND_PIP 0x01 ; звук: "косточка"


#define SND_PEEP 0x02 ; звук: "чирикание"


#define SND_WHIP 0x03 ; звук: "кнут"


; макрокоманда math


Макрокоманда M_StorStatus, ГДЕ


movf STATUS,w


movwf , ГДЕ


endm


Макрокоманда M_RetrStatus, ГДЕ


movf WHERE,w


СТАТУС movwf


endm


; макрокоманда государственного аппарата


Макрокоманда IfJump BTN,ADDR


movlw BTN


subwf BTN_ID,w


btfsc STATUS,Z


goto ADDR


ENDM


; макрокоманда государственного аппарата


Макрокоманда AnyBtnJump ADDR


btfss BTN_ID,7


goto ADDR


ENDM


Макрокоманда IfState BTN,STATE


movlw BTN


subwf BTN_ID,w


btfss STATUS,Z


goto $+5


высокий ШТАТ movlw


movwf STATE_HI


низкий ШТАТ movlw


movwf STATE_LO


ENDM ; goto здесь


ШТАТ макрокоманды AnyBtnState


btfsc BTN_ID,7


goto $+5


высокий ШТАТ movlw


movwf STATE_HI


низкий ШТАТ movlw


movwf STATE_LO


ENDM ; goto здесь


ШТАТ макрокоманды GoToState


высокий ШТАТ movlw


movwf STATE_HI


низкий ШТАТ movlw


movwf STATE_LO


ENDM


Макрокоманда SetMsg NEW_MSG_ID


movlw NEW_MSG_ID


movwf MSG_ID


ENDM


cblock 0x20


; главные записи таймеров


LOOP_TIMER


ФЛАГИ


EE_ADDR


EE_DATA


CTR1


CTR2


TMP


TMP1


TMP2


TMP3


РЕДЖ


; отобранный таймер


SEL_TMR


SEL_TMR_SETTINGS


SEL_TMR_LEN:4


; сигнальные переменные


СМЯТЕНИЕ; 0, если смятение есть, сигнальный ID иначе


ALARM_TIMER; пересчитывает untill тиканий сигнальные переключатели от


; данные кнопочного пресса


BTN_ID


BTN_DOWN


; записи государственного аппарата


STATE_LO


STATE_HI


; записи показа


LCD_CURSOR_POSITION ; местоположение (куски 0-6) курсора и статус (кусок 7: 1=on; 0=off)


DISP:6


MSGL


MSGH


MSGDAT


MSG_ID; ID сообщения, которое должно показываться на втором ряду


MSG_ID_CURRENT; ID сообщения, в настоящий момент показанного на втором ряду


; записи math


REG_X:PRECISION


REG_Y:PRECISION


REG_Z:PRECISION


REG_COUNTER


REG_STATUS


REG_T1


REG_T2


REG_ROT_COUNTER


; записи ввода значения


VAL_STAT; статус - место назначения значения, которое введено (позже может использоваться, чтобы запомнить также формат в верхнем откусывании)


VAL_IND; индекс - индекс в настоящий момент введенного существования цифры


VAL_DIGIT; место, чтобы запомнить единую цифру, пока другие действия выполняются


VAL:6; значение непосредственно (может находиться в десятичном представлении или непосредственно в шестнадцатиричном)


endc


; прерывание отмечается в разделенном пространстве


cblock 0x78


INT_W


INT_STATUS


INT_PCLATH


INT_FSR


INT_PULSECTR


INT_TIMER


endc


cblock 0xA0


ТИМ:16*4


endc


cblock 0x120


LEN:16*4


endc


cblock 0x1A0


ALM:16*4


endc


cblock 0x1E0


TMR_SETTINGS:16*1


endc


org 0x00


Запуск goto


org 0x04


nop ; код прерывания следует - избегать потенциальных страниц проблем нумерации


Прерывание


movwf INT_W


swapf STATUS,W


СТАТУС clrf


movwf INT_STATUS


movf PCLATH,w


movwf INT_PCLATH


clrf PCLATH


movf FSR,w


movwf INT_FSR


;banksel T1CON; таймер остановки


bcf T1CON,TMR1ON


banksel TMR1H ; установленный TMR1 counter


decf INT_PULSECTR,f


btfss STATUS,Z


goto Interrupt_std_len


movlw TMR_XTR_LO


movwf TMR1L


movlw TMR_XTR_H


movwf TMR1H


movlw PULSES_PER_TICK


movwf INT_PULSECTR


incf INT_TIMER,f


goto Interrupt_continue


Interrupt_std_len


movlw TMR_STD_LO


movwf TMR1L


movlw TMR_STD_HI


movwf TMR1H


Interrupt_continue


banksel PIR1 ; очистите кусок избытка TMR1


bcf PIR1,TMR1IF


banksel PIE1 ; разрешите прерывание TMR1


bsf PIE1,TMR1IE


banksel T1CON ; стартовый таймер


bsf T1CON,TMR1ON


banksel PORTC


;movf INT_FSR,w


movwf FSR


movf INT_PCLATH,w


movwf PCLATH


swapf INT_STATUS,w


СТАТУС movwf


swapf INT_W,F


swapf INT_W,W


retfie


TMR_Init


banksel INTCON


bsf INTCON,PEIE


bsf INTCON,GIE


banksel T1CON


movlw b'00000000'


banksel PORTC


movlw PULSES_PER_TICK


movwf INT_PULSECTR


banksel PIR1 ; очистите кусок избытка TMR1


bcf PIR1,TMR1IF


banksel PIE1 ; разрешите прерывание TMR1


bsf PIE1,TMR1IE


banksel T1CON ; стартовый таймер


bsf T1CON,TMR1ON


banksel PORTC


возврат


SM_Init


movlw низкий S00_TimerSelectLoop


movwf STATE_LO


movlw высокий S00_TimerSelectLoop


movwf STATE_HI


возврат


Запуск


ФЛАГИ clrf


clrf INT_TIMER


clrf LOOP_TIMER


clrf LCD_CURSOR_POSITION


вызовите EEPROM_CheckInit


вызовите PORTS_Init


вызовите LCD_Init


вызовите SM_Init


вызовите ReadTimerDataFromEEPROM


clrf SEL_TMR


вызовите LCD_UpdateTimerLabel


вызовите TMR_Init


вызовите SPK_Whip


MainLoop


вызовите IfPlaySound


btfsc FLAGS,F_VALUE_ENTERED


вызовите ProcessEnteredValue


btfsc FLAGS,F_TMR_LABEL_DIRTY


вызовите LCD_UpdateTimerLabel


movf MSG_ID,w


subwf MSG_ID_CURRENT,w


btfss STATUS,Z


вызовите LCD_UpdateSecondRowMessage


btfsc FLAGS,F_VAL_DISPLAY_DIRTY


вызовите LCD_UpdateValDisplay


вызовите IfTick


вызовите KBD_Scan


movf STATE_HI,w


movwf PCLATH


movf STATE_LO,w


movwf PCL; идите к государственному аппарату


SM_Rtn; возвратная точка государственного аппарата


movlw высокий SM_Rtn


movwf PCLATH


movlw 0xFF


movwf BTN_ID


btfsc FLAGS,F_CURSOR_DIRTY


вызовите LCD_UpdateCursor


btfsc FLAGS,F_TICK


goto MainLoop_Tick


clrf TMP


MainLoop_Delay ; клавиатура debounce


decf TMP,f


nop


nop


btfss STATUS,Z


goto MainLoop_Delay


goto MainLoop


MainLoop_Tick


movf SEL_TMR,w


movwf CTR1


вызовите LoadSelTmrSettingsAndLen


вызовите MC_Normalize


вызовите MC_NormalizedTo86400


вызовите MC_86400toHMS


вызовите LCD_UpdateTimer


movf MSG_ID,w


sublw MSG_ID_Clear


btfss STATUS,Z


goto MainLoop


movf SEL_TMR,w


movwf CTR1


вызовите LoadSelTmrSettingsAndLen


вызовите MC_Normalize


вызовите MC_NormalizedToJulianNormalized


вызовите MC_NormalizedToDecimal


вызовите LCD_UpdateTimerDecimalPt


bcf FLAGS,F_TICK


goto MainLoop


ProcessEnteredValue


bcf FLAGS,F_VALUE_ENTERED


movf VAL_STAT,w


sublw D_SEL_TIMER_LENGTH


btfsc STATUS,Z


goto ProcessEnteredValue_STLEN


movf VAL_STAT,w


sublw D_SEL_TIMER


btfsc STATUS,Z


goto ProcessEnteredValue_ST


movf VAL_STAT,w


sublw D_SEL_TIMER_ALARM


btfsc STATUS,Z


goto ProcessEnteredValue_STALM


sublw D_SEL_TIMER_COPY


btfsc STATUS,Z


goto ProcessEnteredValue_COPY


возврат


ProcessEnteredValue_STALM


bsf STATUS,IRP; копируйте VAL в смятение


ProcessEnteredValue_ST


movf REG,w; копируйте VAL в таймер (или смятение, если STATUS,IRP является набором)


movwf FSR


movf VAL,w


movwf INDF


incf FSR,f


movf VAL+1,w


movwf INDF


incf FSR,f


movf VAL+2,w


movwf INDF


incf FSR,f


movf VAL+3,w


movwf INDF


bcf STATUS,IRP


возврат


ProcessEnteredValue_COPY


; НЕ ВЫПОЛНЯЮТ В ЭТОЙ ВЕРСИИ


; - получить таймер ID от данных часа


; - значение таймера груза


; - нормализировать значение


; - de-нормализировать отобранный ряд таймера значения


; - значение таймера копии к отобранному таймеру


возврат


ProcessEnteredValue_STLEN ; копируйте VAL в отобранную длину таймера


movf SEL_TMR,w


movwf CTR1


вызовите CalculateEEPROMAddressFromCTR1


incf EE_ADDR,f


вызовите CalculateFileAddressFromCTR1


clrf TMP


ProcessEnteredValue_STLEN_1


movf TMP,w


addlw VAL


movwf FSR


movf INDF,w


movwf VAL_DIGIT


bsf STATUS,IRP


movf REG,w


andlw 0x7F


addwf TMP,w


movwf FSR


movf VAL_DIGIT,w


movwf INDF


bcf STATUS,IRP


movwf EE_DATA


вызовите EEPROM_Write


incf EE_ADDR,f


incf TMP,f


movf TMP,w


sublw 0x04


btfss STATUS,Z


goto ProcessEnteredValue_STLEN_1


вызовите LoadSelTmrSettingsAndLen


возврат


PORTS_Init


banksel PORTA


clrf PORTA


clrf PORTB


clrf PORTC


clrf PORTD


clrf PORTE


banksel TRISA


movlw b'00000110'


movwf ADCON1


movlw b'11111100' ; RA0=LED, RA1=SPK


movwf TRISA


movlw b'11110000' ; KBD


movwf TRISB


bcf OPTION_REG,7; ; разрешите слабые натяжения PORTB


clrf TRISC ; LCD: DB0-DB7


movlw 0xFF


movwf TRISD ; не используют - все входы


movlw b'0000000' ; LCD: RE0=RS, RE1=R/W; RE2=E


movwf TRISE


movlw b'11000000' ; разрешите прерывания


movwf INTCON


banksel PORTA


возврат


CalculateEEPROMAddressFromCTR1


; Высчитайте адрес данных таймера в EEPROM


movf CTR1,w


movwf EE_ADDR


bcf STATUS,C


rlf EE_ADDR,f


rlf EE_ADDR,f


rlf EE_ADDR,f


addwf EE_ADDR,f


возврат


CalculateFileAddressFromCTR1


; Адрес offsett таймера в РЕДЖЕ


movf CTR1,w


РЕДЖ movwf


bcf STATUS,C


rlf REG,f


rlf REG,f


ТИМ movlw


addwf REG,f


возврат


ReadTimerDataFromEEPROM


clrf CTR1


ReadTimerDataFromEEPROM_loop


вызовите CalculateEEPROMAddressFromCTR1


вызовите CalculateFileAddressFromCTR1


; Установки таймера груза


movf CTR1,w


addlw низкий TMR_SETTINGS


movwf FSR


bsf STATUS,IRP


вызовите EEPROM_Read


movwf INDF


; Длины груза


incf EE_ADDR,f


movf REG,w


andlw 0x7F


movwf FSR


вызовите EEPROM_Read


movwf INDF


incf EE_ADDR,f


incf FSR,f


вызовите EEPROM_Read


movwf INDF


incf EE_ADDR,f


incf FSR,f


вызовите EEPROM_Read


movwf INDF


incf EE_ADDR,f


incf FSR,f


вызовите EEPROM_Read


movwf INDF


bcf STATUS,IRP


; Offsetts груза (начальные значения)


incf EE_ADDR,f


movf REG,w


movwf FSR


вызовите EEPROM_Read


movwf INDF


incf EE_ADDR,f


incf FSR,f


вызовите EEPROM_Read


movwf INDF


incf EE_ADDR,f


incf FSR,f


вызовите EEPROM_Read


movwf INDF


incf EE_ADDR,f


incf FSR,f


вызовите EEPROM_Read


movwf INDF


incf CTR1,f


movf CTR1,w


sublw 0x10


btfss STATUS,Z


goto ReadTimerDataFromEEPROM_loop


возврат


EEPROM_CheckInit


movlw 0xFE


movwf EE_ADDR


вызовите EEPROM_Read


movlw 0xA5


subwf EE_DATA,w


btfss STATUS,Z


goto InitEEPROM


incf EE_ADDR,f


вызовите EEPROM_Read


movlw 0x5A


subwf EE_DATA,w


btfsc STATUS,Z


возврат


InitEEPROM


clrf EE_ADDR


clrf CTR1


clrf CTR2


InitEEPROM_loop


movf CTR2,w


lcall LOOKUP_StdTmr


movwf EE_DATA


movlw высокий InitEEPROM_loop


movwf PCLATH


вызовите EEPROM_Write


incf EE_ADDR,f


incf CTR2,f


movf CTR2,w


sublw 0x09


btfss STATUS,Z


goto InitEEPROM_loop


clrf CTR2


incf CTR1,f


movf CTR1,w


sublw 0x10


btfss STATUS,Z


goto InitEEPROM_loop


movlw 0xFE


movwf EE_ADDR


movlw 0xA5


movwf EE_DATA


вызовите EEPROM_Write


incf EE_ADDR,f


movlw 0x5A


movwf EE_DATA


вызовите EEPROM_Write


возврат


EEPROM_Read


banksel EE_ADDR


movf EE_ADDR,w


banksel EEADR


movwf EEADR


banksel EECON1


bcf EECON1, EEPGD


bsf EECON1, RD


banksel EEDATA


movf EEDATA,w


banksel EE_DATA


movwf EE_DATA


возврат EEPROM_Write


banksel EE_ADDR


movf EE_ADDR,w


banksel EEADR


movwf EEADR


banksel EE_DATA


movf EE_DATA,w


banksel EEDATA


movwf EEDATA


banksel EECON1


bcf EECON1, EEPGD


bsf EECON1, WREN


bcf INTCON, GIE


movlw 0x55


movwf EECON2


movlw 0xAA


movwf EECON2


bsf EECON1, WR


bsf INTCON, GIE


EEPROM_Write_WaitForConfirmation


btfsc EECON1, WR


goto EEPROM_Write_WaitForConfirmation


bcf EECON1, WREN


banksel EE_ADDR


возврат


IfTick


movf INT_TIMER,w


btfss FLAGS,F_CLOCK_STOPPED


goto IfTick_Continue


movwf LOOP_TIMER


возврат


IfTick_Continue


subwf LOOP_TIMER,w


btfsc STATUS,Z


возврат


Тикание; вызванные 4 раза за вторые


incf LOOP_TIMER,f


movlw 0x01


xorwf PORTA,f


clrf CTR1


Tick_next_ctr


вызовите LoadSelTmrSettingsAndLen


btfss SEL_TMR_SETTINGS,TMR_ON


goto Tick_continue


btfss SEL_TMR_SETTINGS,TMR_DIR


goto Tick_increase


; Tick_decrease


вызовите DecTimer


goto Tick_checkAlarm


Tick_increase


вызовите IncTimer


Tick_checkAlarm


вызовите CheckTimerAlarm


Tick_continue


incf CTR1,f


movlw 0x10


subwf CTR1,w


btfss STATUS,Z


goto Tick_next_ctr


bsf FLAGS,F_TICK


возврат LoadSelTmrSettingsAndLen ; грузы выбрали установки таймера и длину к SEL_TMR_SETTINGS и SEL_TMR_LEN


; установки груза


movf CTR1,w


addlw низкий TMR_SETTINGS


movwf FSR


bsf STATUS,IRP


movf INDF,w


movwf SEL_TMR_SETTINGS


; длина груза


вызовите CalculateFileAddressFromCTR1


movf REG,w


andlw 0x7F


movwf FSR


movf INDF,w


movwf SEL_TMR_LEN


incf FSR,f


movf INDF,w


movwf SEL_TMR_LEN+1


incf FSR,f


movf INDF,w


movwf SEL_TMR_LEN+2


incf FSR,f


movf INDF,w


movwf SEL_TMR_LEN+3


bcf STATUS,IRP


возврат


IncTimer; приращение таймер; убедитесь, что LoadSelTmrLen вызван перед movf REG,w


movwf FSR


incf INDF,f


btfss STATUS,Z


goto IncTimer_check


incf FSR,f


incf INDF,f


btfss STATUS,Z


goto IncTimer_check


incf FSR,f


incf INDF,f


btfss STATUS,Z


goto IncTimer_check


incf FSR,f


incf INDF,f


IncTimer_check


movf REG,w


movwf FSR


movf INDF,w


subwf SEL_TMR_LEN,w


btfss STATUS,Z


возврат


incf FSR,f


movf INDF,w


subwf SEL_TMR_LEN+1,w


btfss STATUS,Z


возврат


incf FSR,f


movf INDF,w


subwf SEL_TMR_LEN+2,w


btfss STATUS,Z


возврат


incf FSR,f


movf INDF,w


subwf SEL_TMR_LEN+3,w


btfss STATUS,Z


возврат


clrf INDF


decf FSR,f


clrf INDF


decf FSR,f


clrf INDF


decf FSR,f


clrf INDF


возврат


DecTimer ; уменьшение таймер; убедитесь, что LoadSelTmrLen вызван перед


movf REG,w


movwf FSR


movf INDF,f


btfss STATUS,Z


goto DecTimer_continue


incf FSR,f


movf INDF,f


btfss STATUS,Z


goto DecTimer_continue


incf FSR,f


movf INDF,f


btfss STATUS,Z


goto DecTimer_continue


incf FSR,f


movf INDF,f


btfss STATUS,Z


goto DecTimer_continue


movf SEL_TMR_LEN+3,w


movwf INDF


decf FSR,f


movf SEL_TMR_LEN+2,w


movwf INDF


decf FSR,f


movf SEL_TMR_LEN+1,w


movwf INDF


decf FSR,f


movf SEL_TMR_LEN,w


movwf INDF


DecTimer_continue


movf REG,w


movwf FSR


decf INDF,f


movlw 0xFF


subwf INDF,w


btfss STATUS,Z


возврат


incf FSR,f


decf INDF,f


movlw 0xFF


subwf INDF,w


btfss STATUS,Z


возврат


incf FSR,f


decf INDF,f


movlw 0xFF


subwf INDF,w


btfss STATUS,Z


возврат


incf FSR,f


decf INDF,f


возврат


CheckTimerAlarm


movlw 0x04


movwf TMP


movf REG,w


movwf FSR


CheckTimerAlarm_0


bsf STATUS,IRP


movf INDF,w


bcf STATUS,IRP


subwf INDF,w


btfss STATUS,Z


возврат ; не нет смятения


incf FSR,f


decf TMP,f


btfss STATUS,Z


goto CheckTimerAlarm_0


movf SEL_TMR_SETTINGS,w


andlw 0x03


СМЯТЕНИЕ movwf


clrf ALARM_TIMER


btfss SEL_TMR_SETTINGS,TMR_ON_ALARM_STOP


goto CheckTimerAlarm_1


; Таймер остановки на смятении


;movlw 0x01<<TMR_ON


;lcall ToggleTimerSettings


movf CTR1,w


addlw низкий TMR_SETTINGS


movwf FSR


bsf STATUS,IRP


movlw 0x01<<TMR_ON


xorwf INDF,f


bcf STATUS,IRP


CheckTimerAlarm_1


btfss SEL_TMR_SETTINGS,TMR_ON_ALARM_RESET


возврат


; Снова установленный таймер на смятении


;movf SEL_TMR,w


;movwf CTR1


вызовите CalculateFileAddressFromCTR1


movf REG,w


movwf FSR


movlw 0x01


movwf INDF


incf FSR,f


clrf INDF


incf FSR,f


clrf INDF


incf FSR,f


clrf INDF


возврат


IfPlaySound


movlw SND_PIP


subwf ALARM,w


btfsc STATUS,Z


goto PlayPip


movlw SND_PEEP


subwf ALARM,w


btfsc STATUS,Z


goto PlayPeep


movlw SND_WHIP


subwf ALARM,w


btfsc STATUS,Z


goto PlayWhip


PlayContinue


СМЯТЕНИЕ clrf


возврат


PlayPip


lcall SPK_Pip


goto PlayContinue


PlayPeep


lcall SPK_Peep


goto PlayContinue


PlayWhip


lcall SPK_Whip


goto PlayContinue


ToggleTimerSettings ; коленчатый байт установок таймера


movwf TMP


movf SEL_TMR,w


addlw низкий TMR_SETTINGS


movwf FSR


bsf STATUS,IRP


movf TMP,w


xorwf INDF,f


bcf STATUS,IRP


возврат CopyDispToVal; копируйте в настоящий момент показанное значение таймера в VAL


movf DISP,w


movwf VAL


movf DISP+1,w


movwf VAL+1


movf DISP+2,w


movwf VAL+2


movf DISP+3,w


movwf VAL+3


movf DISP+4,w


movwf VAL+4


movf DISP+5,w


movwf VAL+5


возврат


M_CLR ; очистите запись


movwf FSR


ТОЧНОСТЬ movlw


movwf REG_COUNTER


M_CLR_loop


clrf INDF


incf FSR,f


decf REG_COUNTER,f


btfss STATUS,Z


goto M_CLR_loop


возврат


M_ROL ; вращайтесь запись влево


movwf FSR


M_StorStatus REG_STATUS


clrf REG_COUNTER


M_ROL_loop


M_RetrStatus REG_STATUS


rlf INDF,f


M_StorStatus REG_STATUS


incf FSR,f


incf REG_COUNTER,f


ТОЧНОСТЬ movlw


subwf REG_COUNTER,w


btfss STATUS,Z


goto M_ROL_loop


возврат


M_ROR ; вращается запись вправо


movwf FSR


ТОЧНОСТЬ-1 movlw


addwf FSR,f


M_StorStatus REG_STATUS


clrf REG_COUNTER


M_ROR_loop


M_RetrStatus REG_STATUS


rrf INDF,f


M_StorStatus REG_STATUS


decf FSR,f


incf REG_COUNTER,f


ТОЧНОСТЬ movlw


subwf REG_COUNTER,w


btfss STATUS,Z


goto M_ROR_loop


возврат


M_CMP ; Z <=> X СТАТУСА(C,Z)->


; Набор STATUS,C, если Z => X;


; Набор STATUS,Z, если Z == X


clrf REG_COUNTER


M_CMP_loop


movf REG_COUNTER,w


sublw REG_Z+PRECISION-1


movwf FSR


movf INDF,w


movwf REG_T1


movf REG_COUNTER,w


sublw REG_X+PRECISION-1


movwf FSR


movf INDF,w


subwf REG_T1,f


btfss STATUS,Z


возврат


incf REG_COUNTER,f


ТОЧНОСТЬ movlw


subwf REG_COUNTER,w


btfss STATUS,Z


goto M_CMP_loop


возврат


M_INC ; приращение запись


movwf FSR


ТОЧНОСТЬ movlw


movwf REG_COUNTER


M_INC_loop


incf INDF,f


btfss STATUS,Z


возврат


incf FSR,f


decf REG_COUNTER,f


btfss STATUS,Z


goto M_INC_loop


возврат


M_ADD ; Z + X -> Z


bcf STATUS,C


clrf REG_STATUS


clrf REG_COUNTER


M_ADD_loop


clrf REG_T1


btfsc REG_STATUS,C


incf REG_T1,f


clrf REG_STATUS


movlw REG_X


addwf REG_COUNTER,w


movwf FSR


movf INDF,w


addwf REG_T1,f


btfsc STATUS,C


bsf REG_STATUS,C


movlw REG_Z


addwf REG_COUNTER,w


movwf FSR


movf INDF,w


addwf REG_T1,f


btfsc STATUS,C


bsf REG_STATUS,C


movf REG_T1,w


movwf INDF


incf REG_COUNTER,f


ТОЧНОСТЬ movlw


subwf REG_COUNTER,w


btfss STATUS,Z


goto M_ADD_loop


возврат


M_SUB ; Z - X -> Z


clrf REG_COUNTER


bsf REG_STATUS,C


M_SUB_loop


bsf REG_T2,C


movlw REG_Z


addwf REG_COUNTER,w


movwf FSR


movf INDF,w


movwf REG_T1


movlw REG_X


addwf REG_COUNTER,w


movwf FSR


movf INDF,w


subwf REG_T1,f


btfss STATUS,C


bcf REG_T2,C


btfsc REG_STATUS,C


goto M_SUB_no_carry


movlw 0x01


subwf REG_T1,f


btfss STATUS,C


bcf REG_T2,C


M_SUB_no_carry


movlw REG_Z


addwf REG_COUNTER,w


movwf FSR


movf REG_T1,w


movwf INDF


bsf REG_STATUS,C


btfss REG_T2,C


bcf REG_STATUS,C


incf REG_COUNTER,f


ТОЧНОСТЬ movlw


subwf REG_COUNTER,w


btfss STATUS,Z


goto M_SUB_loop


btfss REG_STATUS,C


bcf STATUS,C


возврат


M_MUL ; X * Y -> Z


movlw REG_Z


вызовите M_CLR


movlw PRECISION*8+1


movwf REG_ROT_COUNTER


LCD_Init


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


movlw 0x00


movwf PORTE


movlw b'00110000'


movwf PORTC


вызовите LCD_PulseZ


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


movlw b'00111000'


movwf PORTC


вызовите LCD_PulseZ


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


movlw b'00111000'


movwf PORTC


вызовите LCD_PulseZ


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


вызовите LCD_Wait


movlw b'00111000'


movwf PORTC


вызовите LCD_PulseZ


movlw b'00001000'


movwf PORTC


вызовите LCD_PulseZ


movlw b'00000001'


movwf PORTC


вызовите LCD_PulseZ


movlw b'00000110'


movwf PORTC


вызовите LCD_PulseZ


movlw b'00001000'


movwf PORTC


вызовите LCD_PulseZ


movlw b'00000010'


movwf PORTC


вызовите LCD_PulseZ


;movlw b'10000000'


;movwf PORTC


;call LCD_PulseZ


;movlw b'00010100'


;movwf PORTC


;call LCD_PulseZ


;movlw b'10000000'


;movwf PORTC


;call LCD_PulseZ


bsf PORTE,0


movlw b'00001100'


вызовите LCD_SendCMD


movlw MSG_ID_Clear


movwf MSG_ID


movwf MSG_ID_CURRENT


возврат


LCD_SendDAT


movwf PORTC


bsf PORTE,0


вызовите LCD_PulseZ


возврат


LCD_SendCMD


movwf PORTC


bcf PORTE,0


вызовите LCD_PulseZ


bsf PORTE,0


возврат


MSG_NextChar_second


banksel EEDATA


movf EEDATA,w


banksel MSGDAT


movwf MSGDAT


bcf MSGDAT,7


incf MSGL,f


btfsc STATUS,Z


incf MSGH,f


bcf MSGH,7


movf MSGDAT,w


возврат


SPK_Delay


movlw 0x0F


movwf TMP


decf TMP,f


btfss STATUS,Z


goto $-2


возврат


SPK_Pip


movlw 0xFF


movwf TMP2


SPK_Pip_0


movlw 0x20


movwf TMP1


SPK_Pip_1


lcall SPK_Delay


decf TMP1,f


btfss STATUS,Z


goto SPK_Pip_1


movlw 0x01<<B_SPK


xorwf PORTA,f


decf TMP2,f


btfss STATUS,Z


goto SPK_Pip_


bcf PORTA,B_SPK


возврат


SPK_Peep


movlw 0x10


movwf TMP3


SPK_Peep_0


вызовите SPK_Pip


decf TMP3,f


btfss STATUS,Z


goto SPK_Peep_0


возврат


SPK_Whip


clrf TMP2


movlw 0xC0


SPK_Whip_0


movf TMP2,w


addlw 0x38


movwf TMP1


SPK_Whip_1


lcall SPK_Delay


decf TMP1,f


btfss STATUS,Z


goto SPK_Whip_1


movlw 0x01<<B_SPK


xorwf PORTA,f


decf TMP2,f


btfss STATUS,Z


goto SPK_Whip_0


возврат


org 0x1000


S00_TimerSelectLoop


clrf LCD_CURSOR_POSITION


SetMsg MSG_ID_Clear


IfJump VK_MENU_NEXT,S00_NextTmr


IfJump VK_MENU_PREV,S00_PrevTmr


IfState VK_MENU_ENTER,S10_AdjustTimer


lgoto SM_Rtn


S00_NextTmr


incf SEL_TMR,f


movlw 0x0F


andwf SEL_TMR,f


bsf FLAGS,F_TMR_LABEL_DIRTY


bsf FLAGS,F_TICK


lgoto SM_Rtn


S00_PrevTmr


decf SEL_TMR,f


movlw 0x0F


andwf SEL_TMR,f


bsf FLAGS,F_TMR_LABEL_DIRTY


bsf FLAGS,F_TICK


lgoto SM_Rtn


S10_AdjustTimer


clrf LCD_CURSOR_POSITION


SetMsg 0x00


IfState VK_MENU_EXIT,S00_TimerSelectLoop


IfState VK_MENU_NEXT,S20_AdjustClock


IfState VK_MENU_PREV,S20_AdjustClock


;IfState VK_MENU_PREV,S30_ThermometerSetup


IfState VK_MENU_ENTER,S11_SetTimer


IfJump VK_START_STOP,S10_StartStopTimer


IfJump VK_DIRECTION,S10_ToggleTimerDirection


lgoto SM_Rtn


S10_StartStopTimer


movlw 0x01<<TMR_ON


lcall ToggleTimerSettings


lgoto SM_Rtn


S10_ToggleTimerDirection


movlw 0x01<<TMR_DIR


lcall ToggleTimerSettings


lgoto SM_Rtn


S11_SetTimer


SetMsg 0x01 ; MSG_SetTimer


IfState VK_MENU_EXIT,S10_AdjustTimer


IfState VK_MENU_NEXT,S12_SetAlarm


IfState VK_MENU_PREV,S13_SetLength


IfState VK_MENU_ENTER,S15_SetTimerValue


lgoto SM_Rtn


S12_SetAlarm


SetMsg 0x07


IfState VK_MENU_EXIT,S10_AdjustTimer


IfState VK_MENU_NEXT,S13_SetLength


IfState VK_MENU_PREV,S11_SetTimer


IfState VK_MENU_ENTER,S21_SetAlarmTime


lgoto SM_Rtn


S13_SetLength


SetMsg 0x04 ; MSG_SetLength


IfState VK_MENU_EXIT,S10_AdjustTimer


IfState VK_MENU_NEXT,S11_SetTimer


IfState VK_MENU_PREV,S12_SetAlarm


IfState VK_MENU_ENTER,S16_SetLengthValue


lgoto SM_Rtn


S15_SetTimerValue


SetMsg 0x06 ; MSG_Set


movlw D_SEL_TIMER


movwf VAL_STAT


GoToState S_EnterValueHMS


lgoto SM_Rtn


S16_SetLengthValue


SetMsg 0x06 ; MSG_Set


movlw D_SEL_TIMER_LENGTH


movwf VAL_STAT


GoToState S_EnterLongValue


lgoto SM_Rtn


S20_AdjustClock


SetMsg 0x02


IfState VK_MENU_EXIT,S00_TimerSelectLoop


IfState VK_MENU_NEXT,S10_AdjustTimer


;IfState VK_MENU_NEXT,S30_ThermometerSetup


IfState VK_MENU_PREV,S10_AdjustTimer


IfJump VK_START_STOP,S20_StartStopClock


IfJump VK_SKIP_FORWARD,S20_StartStopClock


lgoto SM_Rtn


S20_StartStopClock


movlw 0x01<<F_CLOCK_STOPPED


xorwf FLAGS,f


lgoto SM_Rtn


S20_SkipForward


movlw (0x01<<F_CLOCK_STOPPED) % 0xFF


andwf FLAGS,f


incf INT_PULSECTR,f


incf INT_PULSECTR,f


incf INT_PULSECTR,f


incf INT_PULSECTR,f


lgoto SM_Rtn


;S30_ThermometerSetup


; SetMsg 0x03


; IfState VK_MENU_EXIT,S00_TimerSelectLoop


; IfState VK_MENU_NEXT,S10_AdjustTimer


; IfState VK_MENU_PREV,S20_AdjustClock


; lgoto SM_Rtn


S21_SetAlarmTime


SetMsg 0x08


IfState VK_MENU_EXIT,S12_SetAlarm


IfState VK_MENU_NEXT,S22_SetSound


IfState VK_MENU_PREV,S23_AlarmAction


IfState VK_MENU_ENTER,S21_EnterAlarmValue


lgoto SM_Rtn


S21_EnterAlarmValue


SetMsg 0x06 ; MSG_Set


movlw D_SEL_TIMER_ALARM


movwf VAL_STAT


movf SEL_TMR,w


movwf CTR1


lcall LoadSelTmrSettingsAndLen


movlw REG_Z


lcall M_CLR


movlw REG_X


lcall M_CLR


bsf STATUS,IRP ; TUK E PROBLEMAT!!!


lcall MC_Normalize_NO_CLR


bcf STATUS,IRP


lcall MC_NormalizedTo86400


lcall MC_86400toHMS


GoToState S_EnterValueHMS


lgoto SM_Rtn


S22_SetSound


SetMsg 0x09


IfState VK_MENU_EXIT,S12_SetAlarm


IfState VK_MENU_NEXT,S23_AlarmAction


IfState VK_MENU_PREV,S21_SetAlarmTime


IfState VK_MENU_ENTER,S40_SoundSelect


lgoto SM_Rtn


S23_AlarmAction


SetMsg 0x0A


IfState VK_MENU_EXIT,S12_SetAlarm


IfState VK_MENU_NEXT,S21_SetAlarmTime


IfState VK_MENU_PREV,S22_SetSound


IfState VK_MENU_ENTER,S51_SelectAction


lgoto SM_Rtn


S40_SoundSelect


movlw 0x03


andwf SEL_TMR_SETTINGS,w


movwf TMP


btfss STATUS,Z


goto S40_SoundSelect_0


; звук Безмолвен


GoToState S44_SoundSilent


lgoto SM_Rtn


S40_SoundSelect_0


movlw SND_PIP


subwf TMP,w


btfss STATUS,Z


goto S40_SoundSelect_1


; звук - это Косточка


GoToState S41_SoundPip


lgoto SM_Rtn


S40_SoundSelect_1


movlw SND_PEEP


subwf TMP,w


btfss STATUS,Z


goto S40_SoundSelect_2


; звук - это Чирикание


GoToState S42_SoundPeep


lgoto SM_Rtn


S40_SoundSelect_2


; звук - это Кнут


GoToState S43_SoundWhip


lgoto SM_Rtn


lgoto SM_Rtn


S41_SoundPip


SetMsg 0x0B


movlw SND_PIP


вызовите SetSound


IfState VK_MENU_ENTER,S22_SetSound


IfState VK_MENU_EXIT,S22_SetSound


IfState VK_MENU_NEXT,S42_SoundPeep


IfState VK_MENU_PREV,S44_SoundSilent


lgoto SM_Rtn


S42_SoundPeep


SetMsg 0x0C


movlw SND_PEEP


вызовите SetSound


IfState VK_MENU_ENTER,S22_SetSound


IfState VK_MENU_EXIT,S22_SetSound


IfState VK_MENU_NEXT,S43_SoundWhip


IfState VK_MENU_PREV,S41_SoundPip


lgoto SM_Rtn


S43_SoundWhip


SetMsg 0x0D


movlw SND_WHIP


вызовите SetSound


IfState VK_MENU_ENTER,S22_SetSound


IfState VK_MENU_EXIT,S22_SetSound


IfState VK_MENU_NEXT,S44_SoundSilent


IfState VK_MENU_PREV,S42_SoundPeep


lgoto SM_Rtn


S44_SoundSilent


SetMsg 0x0E


movlw SND_SILENT


вызовите SetSound


IfState VK_MENU_ENTER,S22_SetSound


IfState VK_MENU_EXIT,S22_SetSound


IfState VK_MENU_NEXT,S41_SoundPip


IfState VK_MENU_PREV,S43_SoundWhip


lgoto SM_Rtn


Action_SetAddress ; ПРЕДУПРЕЖДЕНИЕ: Это наборы STATUS,IRP! Очистите это после сделанного с INDF


movf SEL_TMR,w


addlw низкий TMR_SETTINGS


movwf FSR


bsf STATUS,IRP


bcf INDF,TMR_ON_ALARM_STOP


bcf INDF,TMR_ON_ALARM_RESET


возврат


S51_SelectAction


btfss SEL_TMR_SETTINGS,TMR_ON_ALARM_RESET


goto S51_SelectAction_ResetOff


S51_SelectAction_ResetOn


btfss SEL_TMR_SETTINGS,TMR_ON_ALARM_STOP


goto S51_SelectAction_GoToReset


S51_SelectAction_GoToBoth


GoToState S54_ActionBoth


lgoto SM_Rtn


S51_SelectAction_GoToReset


GoToState S52_ActionReset


lgoto SM_Rtn


S51_SelectAction_ResetOff


btfss SEL_TMR_SETTINGS,TMR_ON_ALARM_STOP


goto S51_SelectAction_GoToNone


S51_SelectAction_GoToStop


GoToState S53_ActionStop


lgoto SM_Rtn


S51_SelectAction_GoToNone


GoToState S51_ActionNone


lgoto SM_Rtn


S51_ActionNone


SetMsg 0x0F


movf SEL_TMR,w


вызовите Action_SetAddress


movf INDF,w


bcf STATUS,IRP


movwf SEL_TMR_SETTINGS


IfState VK_MENU_ENTER,S23_AlarmAction


IfState VK_MENU_EXIT,S23_AlarmAction


IfState VK_MENU_NEXT,S52_ActionReset


IfState VK_MENU_PREV,S54_ActionBoth


lgoto SM_Rtn


S52_ActionReset


SetMsg 0x10


вызовите Action_SetAddress


bsf INDF,TMR_ON_ALARM_RESET


movf INDF,w


bcf STATUS,IRP


movwf SEL_TMR_SETTINGS


IfState VK_MENU_ENTER,S23_AlarmAction


IfState VK_MENU_EXIT,S23_AlarmAction


IfState VK_MENU_NEXT,S53_ActionStop


IfState VK_MENU_PREV,S51_ActionNone


lgoto SM_Rtn


S53_ActionStop


SetMsg 0x11


вызовите Action_SetAddress


bsf INDF,TMR_ON_ALARM_STOP


movf INDF,w


bcf STATUS,IRP


movwf SEL_TMR_SETTINGS


IfState VK_MENU_ENTER,S23_AlarmAction


IfState VK_MENU_EXIT,S23_AlarmAction


IfState VK_MENU_NEXT,S54_ActionBoth


IfState VK_MENU_PREV,S52_ActionReset


lgoto SM_Rtn


S54_ActionBoth


SetMsg 0x12


вызовите Action_SetAddress


bsf INDF,TMR_ON_ALARM_STOP


bsf INDF,TMR_ON_ALARM_RESET


movf INDF,w


bcf STATUS,IRP


movwf SEL_TMR_SETTINGS


IfState VK_MENU_ENTER,S23_AlarmAction


IfState VK_MENU_EXIT,S23_AlarmAction


IfState VK_MENU_NEXT,S51_ActionNone


IfState VK_MENU_PREV,S53_ActionStop


lgoto SM_Rtn


SetSound


movwf TMP


movlw низкий TMR_SETTINGS


movwf FSR


movf SEL_TMR,w


addwf FSR,f


bsf STATUS,IRP


movlw 0xFC


andwf INDF,f


movf TMP,w


iorwf INDF,f


bcf STATUS,IRP


возврат


S_CopyFromTimer


movlw D_SEL_TIMER_COPY


movwf VAL_STAT


GoToState S_EnterLongValue


lgoto SM_Rtn


S_EnterLongValue ; введите длинное значение


movlw REG_Z


lcall M_CLR


lcall M_MOV_Z_TO_VAL


clrf VAL_IND


addlw 0x80 | 0x44


movwf LCD_CURSOR_POSITION


bsf FLAGS,F_CURSOR_DIRTY


bcf FLAGS,F_VAL_DISPLAY_DIRTY ; НЕ обновите показ VAL - это не используется здесь


GoToState S_EnterLongValue_Digit


lgoto SM_Rtn


S_EnterLongValue_Digit


pagesel $


IfState VK_MENU_EXIT,S_EnterLongValue_End


IfState VK_MENU_ENTER,S_EnterLongValue_Accept


pagesel $


btfsc BTN_ID,7


goto S_EnterLongValue_DigitRTN


movf BTN_ID,w


andlw 0x0F


lcall LOOKUP_DigitFromKeyID


movwf VAL_DIGIT


pagesel $


btfss VAL_DIGIT,7


goto S_EnterLongValue_Digit_1


lgoto SM_Rtn


S_EnterLongValue_Digit_1


movlw REG_Y


lcall M_CLR


movlw .10


movwf REG_Y


lcall M_MOV_VAL_TO_X


lcall M_MUL


movlw REG_X


lcall M_CLR


movf VAL_DIGIT,w


movwf REG_X


lcall M_ADD


lcall M_MOV_Z_TO_VAL


movf VAL_IND,w


addlw LCDCMD_SET_DD_RAM | 0x44


lcall LCD_SendCMD


movf VAL_DIGIT,w


addlw LCD_0


lcall LCD_SendDAT


incf VAL_IND,f


movf VAL_IND,w


addlw 0x80 | 0x44


movwf LCD_CURSOR_POSITION


bsf FLAGS,F_CURSOR_DIRTY


pagesel $


movf VAL_IND,w


sublw .10


btfsc STATUS,Z


decf VAL_IND,f


S_EnterLongValue_DigitRTN


lgoto SM_Rtn


S_EnterLongValue_Accept


bsf FLAGS,F_VALUE_ENTERED


S_EnterLongValue_End


clrf LCD_CURSOR_POSITION


bsf FLAGS,F_CURSOR_DIRTY


GoToState S13_SetLength


lgoto SM_Rtn


org 0x1800


da MSG_AdjustTimer ; 0x00


da MSG_SetTimer ; 0x01


da MSG_AdjustClock ; 0x02


da MSG_ThermometerSetup ; 0x03 - не используют в этой версии


da MSG_SetLength ; 0x04


da MSG_SetFormat ; 0x05


da MSG_Set ; 0x06


da MSG_SetAlarm ; 0x07


da MSG_SetAlarmTime ; 0x08


da MSG_SetSound ; 0x09


da MSG_AlarmAction ; 0x0A


da MSG_SoundPip ; 0x0B


da MSG_SoundPeep ; 0x0C


da MSG_SoundWhip ; 0x0D


da MSG_SoundSilent ; 0x0E


da MSG_ActionNone ; 0x0F


da MSG_ActionReset ; 0x10


da MSG_ActionStop ; 0x11


da MSG_ActionBoth ; 0x12


MSG_AdjustTimer


da "Приспособить Таймер",0


MSG_SetTimer


da "Установленный Таймер",0


MSG_AdjustClock


da "Приспособить Отмечает время",0


MSG_ThermometerSetup


"Терм da . Setup",0 ; не используют в этой версии


MSG_SetLength


da "Установленная Длина Цикла",0


MSG_SetFormat


da "Установленный Формат",0


MSG_Set


da "Set",0


MSG_SetAlarm


da "Установленное Смятение",0


MSG_SetAlarmTime


da "Сигнальное Время",0


MSG_SetSound


da "Сигнальный Звук",0


MSG_AlarmAction


da "Сигнальное Действие",0


MSG_SoundPip


da "Установил: Pip",0


MSG_SoundPeep


da "Установил: Peep",0


MSG_SoundWhip


da "Установил: Whip",0


MSG_SoundSilent


da "Установил: Silent",0


MSG_ActionNone


"Действие da : None",0


MSG_ActionReset


"Действие da : Reset",0


MSG_ActionStop


"Действие da : Stop",0


MSG_ActionBoth


"Действие da : Stop+Rst",0


org 0x1F80


LOOKUP_StdTmr


movwf TMP


movlw высоко $


movwf PCLATH


movf TMP,w


addwf PCL,f


; установки


retlw b'10000000'


; длина


retlw 0x00


retlw 0x46


retlw 0x05


retlw 0x00


; стартовый offsett


LOOKUP_DigitFromKeyID


movwf TMP


movlw высоко $


movwf PCLATH


LOOKUP_CursorPosHMS


movwf TMP


movlw высоко $


movwf PCLATH


movf TMP,w


addwf PCL,f


retlw 0xC4


retlw 0xC5


retlw 0xC7


retlw 0xC8


retlw 0xCA


retlw 0xCB


retlw 0xCC


КОНЕЦ


Приложение Д


Схема электрическая принципиальная многофункциональных астрономических часов



Приложение Ж


КАЛЬКУЛЯЦИЯ КОМПЛЕКТУЮЩИХ АСТРОНОМИЧЕСКИХ ЧАСОВ


Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Разработка многофункциональных астрономических часов

Слов:13431
Символов:146065
Размер:285.28 Кб.