Содержание
Перечень условных обозначений, символов, единиц, сокращений и терминов
Введение
1. Теоретические основы разработки
1.1 Разработка микропроцессорной системы на основе микроконтроллера
1.2 Устройства для чтения электронных книг
2. Разработка устройства для чтения электронных книг
2.1 Постановка задачи
2.2 Разработка структурной схемы устройства и функциональной
спецификации
2.3 Аппаратные средства микроконтроллеров серии AT90S8515
2.4 Разработка функциональной схемы устройства
2.5 Разработка программного обеспечения микроконтроллера
2.6 Выбор элементной базы
2.7 Разработка схемы электрической принципиальной
3. Технико-экономическое обоснование объекта разработки
3.1 Расчет расходов на ПО, которое разрабатывается
3.2 Расчет расходов на создание ПО
3.3 Расчет стоимости разработки конструкторской документации и сборки устройства
3.4 Расчет расходов на стадии производства изделия
3.5 Анализ устройств-аналогов
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 Расчет вентиляции
4.7 Расчет уровня шума
Выводы
Перечень ссылок
Перечень условных обозначений, символов, единиц, сокращений и терминов
АЛУ — арифметико — логическое устройство;
АЦП – аналого-цифровой преобразователь;
ВДТ — видеодисплейный терминал;
ЖКИ- дисплей – жидкокристаллический дисплей;
КПК – карманный персональный компьютер;
МПС – микропроцессорная система;
ОЗУ — оперативно-запоминающее устройство;
ОМК – однокристальные микроконтроллеры;
ПЗУ – программно-запоминающее устройство;
ПО – программное обеспечение;
РС – регистр сдвига.
Введение
Микропроцессоры и производные от них — микроконтроллеры — являются широко распространенным и при этом незаметным элементом инфраструктуры современного общества, основанного на электронике и коммуникациях. Исследования, проведенные в 2008 году, показали, что в каждом доме незаметно для нас «живет» около 100 микроконтроллеров и микропроцессоров. Они присутствуют буквально всюду: в звуковых открытках, стиральных машинах, микроволновых печах, телевизорах, телефонах, персональных компьютерах и разных других устройствах. Даже в самом обыкновенном автомобиле скрывается более двадцати таких элементов, где они, в частности, контролируют состояние беспроводных датчиков давления в шинах и отображают критичные данные.
Каждый год продается около четырех миллиардов подобных изделий, предназначенных для реализации «мозгов» разнообразных «умных» устройств, начиная от интеллектуальных таймеров для яйцеварок и заканчивая системами управления самолетом. Эволюция микропроцессоров, первые из которых были выпущены компанией Intel в далеком 1971 году, привела к коренному изменению структуры общества, спровоцировав в начале XXI века вторую промышленную революцию. Несмотря на то что микропроцессоры, являясь основным компонентом вездесущих ПК, известны лучше, объем продаж различных микропроцессоров, таких как Intel Pentium, составляет всего около 2% от общего объема продаж подобных устройств. Подавляющее же большинство продаж приходится на дешевые микроконтроллеры, встраиваемые в специализированные электронные устройства, такие как смарт-карты. Причем если основной задачей микропроцессоров является обеспечение собственно вычислительной мощности, то во втором случае акцент смещается в сторону объединения на одном кристалле центрального процессора, памяти и устройств ввода/вывода. Такая интегрированная вычислительная система называется микроконтроллером.
Появление микроконтроллеров повлекло за собой создание миниатюрных электронных устройств, выполняющих различные функции, а появление электронных книг повлекло за собой тенденции конструирования специальных устройств, книгочеев, которые можно было бы брать с собой вместо обычной книги. Развитие микроконтроллерных технологий приводит к созданию КПК умеющих читать книги, мобильных телефонов с встроенными программами и так далее. Но все это дорогое удовольствие.
Тема дипломной работы – «Разработка устройства для чтения книг», которая и является предметом исследования.
Цель работы – разработать электронное устройство, на базе микроконтроллера, для чтения электронных книг, которое бы отличалось от существующих своей простотой, новизной и относительно малой ценой.
Актуальность данной темы велика, так как популярность данных устройств неуклонно растет, в связи с появлением нового поколения устройств для чтения книг, которые не только выводят содержание книги на жидкокристаллический экран, но и могут воспроизводить содержание электронной книги при помощи связанной речи. А это огромное подспорье для людей с плохим зрением и для людей, которые страдают нехваткой времени для чтения книг.
Основные этапы исследования:
— ознакомление с теорией разработки электронных устройств на микроконтроллерах;
— разработка устройства для чтения книг;
— анализ технико-экономических показателей разработанного устройства и сравнение с показателями аналогичных существующих устройств.
1. Теоретические основы разработки
1.1 Разработка микропроцессорной системы на основе микроконтроллера
МПС на основе МК используются чаще всего в качестве встроенных систем для решения задач управления некоторым объектом. Важной особенностью данного применения является работа в реальном времени, т.е. обеспечение реакции на внешние события в течение определенного временного интервала. Такие устройства получили название контроллеров.
Перед разработчиком МПС стоит задача реализации полного цикла проектирования, начиная от разработки алгоритма функционирования и заканчивая комплексными испытаниями в составе изделия, а, возможно, и сопровождением при производстве. Сложившаяся к настоящему времени методология проектирования контроллеров может быть представлена так, как показано на рисунке 1.1.
В техническом задании формулируются требования к контроллеру с точки зрения реализации определенной функции управления. Техническое задание включает в себя набор требований, который определяет, что пользователь хочет от контроллера и что разрабатываемый прибор должен делать. Техническое задание может иметь вид текстового описания, не свободного в общем случае от внутренних противоречий.
На основании требований пользователя составляется функциональная спецификация, которая определяет функции, выполняемые контроллером для пользователя после завершения проектирования, уточняя тем самым, насколько устройство соответствует предъявляемым требованиям. Она включает в себя описания форматов данных, как на входе, так и на выходе, а также внешние условия, управляющие действиями контроллера.
/>
Рисунок 1.1- Основные этапы разработки контроллера
Этап разработки алгоритма управления является наиболее ответственным, поскольку ошибки данного этапа обычно обнаруживаются только при испытаниях законченного изделия и приводят к необходимости дорогостоящей переработки всего устройства. Разработка алгоритма обычно сводится к выбору одного из нескольких возможных вариантов алгоритмов, отличающихся соотношением объема программного обеспечения и аппаратных средств.
При этом необходимо исходить из того, что максимальное использование аппаратных средств упрощает разработку и обеспечивает высокое быстродействие контроллера в целом, но сопровождается, как правило, увеличением стоимости и потребляемой мощности. При выборе типа МК учитываются следующие основные характеристики:
— разрядность;
— быстродействие;
— набор команд и способов адресации;
— требования к источнику питания и потребляемая мощность в различных режимах;
— объем ПЗУ программ и ОЗУ данных;
— возможности расширения памяти программ и данных;
— наличие и возможности периферийных устройств, включая средства поддержки работы в реальном времени (таймеры, процессоры событий и т.п.);
— возможность перепрограммирования в составе устройства;
— наличие и надежность средств защиты внутренней информации;
— возможность поставки в различных вариантах конструктивного исполнения;
— стоимость в различных вариантах исполнения;
— наличие полной документации;
— наличие и доступность эффективных средств программирования и отладки МК;
— количество и доступность каналов поставки, возможность замены изделиями других фирм.
Список этот не является исчерпывающим, поскольку специфика проектируемого устройства может перенести акцент требований на другие параметры МК.--PAGE_BREAK--
Номенклатура выпускаемых в настоящее время МК исчисляется тысячами типов изделий различных фирм. Современная стратегия модульного проектирования обеспечивает потребителя разнообразием моделей МК с одним и тем же процессорным ядром. Такое структурное разнообразие открывает перед разработчиком возможность выбора оптимального МК, не имеющего функциональной избыточности, что минимизирует стоимость комплектующих элементов.
Однако для реализации на практике возможности выбора оптимального МК необходима достаточно глубокая проработка алгоритма управления, оценка объема исполняемой программы и числа линий сопряжения с объектом на этапе выбора МК. Допущенные на данном этапе просчеты могут впоследствии привести к необходимости смены модели МК и повторной разводки печатной платы макета контроллера. В таких условиях целесообразно выполнять предварительное моделирование основных элементов прикладной программы с использованием программно-логической модели выбранного МК.
На этапе разработки структуры контроллера окончательно определяется состав имеющихся и подлежащих разработке аппаратных модулей, протоколы обмена между модулями, типы разъемов. Выполняется предварительная проработка конструкции контроллера. В части программного обеспечения определяются состав и связи программных модулей, язык программирования. На этом же этапе осуществляется выбор средств проектирования и отладки.
После разработки структуры аппаратных и программных средств дальнейшая работа над контроллером может быть распараллелена. Разработка аппаратных средств включает в себя разработку общей принципиальной схемы, разводку топологии плат, монтаж макета и его автономную отладку. На этапе ввода принципиальной схемы и разработки топологии используются, как правило, распространенные системы проектирования типа «ACCEL EDA» или «OrCad».
Содержание этапов разработки программного обеспечения, его трансляции и отладки на моделях существенно зависит от используемых системных средств. В настоящее время ресурсы 8-разрядных МК достаточны для поддержки программирования на языках высокого уровня. Это позволяет использовать все преимущества структурного программирования, разрабатывать программное обеспечение с использованием раздельно транслируемых модулей. Одновременно продолжают широко использоваться языки низкого уровня типа ассемблера, особенно при необходимости обеспечения контролируемых интервалов времени. Задачи предварительной обработки данных часто требуют использования вычислений с плавающей точкой, трансцендентных функций.
В настоящее время самым мощным средством разработки программного обеспечения для МК являются интегрированные среды разработки, имеющие в своем составе менеджер проектов, текстовый редактор и симулятор, а также допускающие подключение компиляторов языков высокого уровня типа Паскаль или Си. При этом необходимо иметь в виду, что архитектура многих 8-разрядных МК вследствие малого количества ресурсов, страничного распределения памяти, неудобной индексной адресации и некоторых других архитектурных ограничений не обеспечивает компилятору возможности генерировать эффективный код.
Этап совместной отладки аппаратных и программных средств в реальном масштабе времени завершается, когда аппаратура и программное обеспечение совместно обеспечивают выполнение всех шагов алгоритма работы системы. В конце этапа отлаженная программа заносится с помощью программатора в энергонезависимую память МК, и проверяется работа контроллера без эмулятора.
1.2 Устройства для чтения электронных книг
Википедия определяет понятие электронной книги (е-книги, ebook и пр.) как двуединство, состоящее из электронного документа (вида цифрового контента) и электронного читающего устройства (его также называют электронной книгой и е-книгой).
Книга в машиночитаемом формате (электронная книга) в СССР появилась еще в 70-е гг. прошлого века. Тогда она была ответом технической интеллигенции на тотальный дефицит издаваемой (и технической, и художественной) литературы, а также являлась одной из форм самиздата.
Из-за дефицита машинного времени читать такие книги на компьютерах (даже имеющих дисплеи) было сложно. Главной задачей электронных текстов в тот период было обеспечение безболезненной малозатратной (по сравнению с перепечаткой или дублированием различными множительными устройствами) передачи книг максимальному количеству пользователей.
Из-за дефицита машинного времени и отсутствия в то время персональных компьютеров на работе и дома, чтобы иметь возможность прочесть электронные книги, их приходилось сначала распечатывать. В условиях повсеместного дефицита книг такие распечатки пользовались популярностью, несмотря на то, что большинство компьютеров и принтеров в ту пору имели проблемы с кириллизацией.
С появлением и укоренением персональных компьютеров (ПК), исчезновением (минимизацией) дефицита машинного времени, улучшением качества дисплеев, утверждением полноценной кириллизации и возможностей шрифтового форматирования улучшилось (приблизилось к качеству печатной продукции) качество машиночитаемых текстов, увеличилось их количество. Чтение на ПК художественной и особенно специальной литературы стало понемногу заметным и общепринятым явлением.
Машиночитаемые документы становятся всё более типичным способом передачи документации от разработчика (производителя) оборудования к потребителю (пользователю). Эта тенденция усилилась, когда появилась возможность скачивать документацию из Интернета. Тем не менее время, когда чтение машиночитаемых документов начало вытеснять чтение бумажной документации, тогда еще не наступило.
Создание и распространение машиночитаемой документации превратилось в один из наиболее эффективных (и повсеместно распространенных) способов технической поддержки. Чтение машиночитаемой документации уже конкурировало с чтением печатной документации, но не заменяло его.
Однако пока ПК были стационарными, преимущество печатной книги перед её машиночитаемым аналогом состояло в возможности мобильного чтения — в транспорте, на даче, «на диване» и т.п. С другой стороны, преимущество электронной книги перед печатной книгой — возможность быстрого, безболезненного и практически бесплатного копирования в условиях дефицита печатной литературы — вскоре привело к широкому спросу на электронные книги, хотя технически «подкованные» пользователи ПК хорошо осознавали ограниченность их в плане мобильного чтения.
Дорогостоящие профессиональные сканеры использовались прежде всего для подготовки электронной документации. Появление недорогих офисных и бытовых сканеров и программ распознавания текста в сочетании со ставшими и в Украине (в конце прошлого тысячелетия) достаточно широко доступными возможностями Интернета, привели к повсеместному распространению электронных книг и обеспечили их значительный ассортимент. Были созданы общедоступные Интернет-библиотеки. Если на Западе эта работа активно финансировалась и финансируется (общеевропейский проект «Гуттенберг», проект Gallica Национальной библиотеки Франции, Google Book Search; многоязычная электронная-библиотека в США, некоммерческий проект Archive.org и др.), то в Украине работа в основном велась (и по сей день ведется) на энтузиазме.
Первые ноутбуки появились в Украине, в основном, у начальников, а не у мобильного, разъездного персонала, как на Западе. Нужны они были для престижа и мало применялись для чтения книг (далеко не все имевшие на столе ноутбук начальники могли с его помощью прочитать и тем более поправить и распечатать даже офисные документы, переданные подчиненными по электронной почте или на дискете). К тому моменту, когда ноутбуки в Украине оказались доступны тем, для кого их разрабатывали, у них, с точки зрения пригодности для мобильного чтения, возникли серьезные конкуренты.
Появление и широкое распространение удобных (как по цене, так и по уровню необходимой для уверенного пользования первичной подготовки), гораздо более легких и значительно более малогабаритных субноутбуков, планшетных ПК, карманных ПК, коммуникаторов и смартфонов, а также «продвинутых» мобильных телефонов (с поддержкой Java), практически идеально подходивших для мобильного чтения электронных книг, свело на нет преимущество печатных книг по мобильности чтения.
Важным фактором, способствовавшим продвижению электронных книг в Украине, явились сложности распространения печатной продукции. В связи с падением покупательной способности населения многих регионов сеть распространения печатной продукции «съёжилась» до минимума и стала пропускать только книги с гарантированной, по мнению продавцов, реализацией.
Первые специализированные устройства для чтения е-книг не выдержали конкуренции с КПК.
Феномен е-чтения (чтения на электронных устройствах е-книг — книг в машиночитаемых форматах) получил достаточно широкое распространение и на Западе. Там уже в прошлом тысячелетии наряду с программами-«читалками» е-книг для универсальных вычислительных устройств появляются не только прототипы, но и реально имеющиеся в продаже специализированные устройства для чтения е-книг.
По удобству чтения специализированные машины превосходили универсальные. Благодаря большому монохромному экрану увеличивалось, по сравнению с КПК, время автономной работы и делался больше размер видимой страницы. Продуманный эргономичный интерфейс, близкий к привычным метафорам бумажного чтения, обеспечивал большую комфортность чтения, чем маленькие цветные («бликующие» на солнце) экранчики КПК, коммуникаторы, смартофоны и продвинутые телефоны (с поддержкой Java).
Сдерживается сегодня данное направление тем, что экраны у телефонов пока не слишком велики (что неудобно для чтения), и тем, что телефоны при чтении «съедают» слишком много энергии.
Вот такой была первая аппаратная е-книга, сравнимая по удобству чтения с бумажной книгой (Rocket eBook). Большой монохромный жидкокристаллический экран, обеспечивающий как максимальное время работы, так и максимальную комфортность при чтении. Это устройство заметно опередило свое время. Из-за довольно высокой стоимости и отсутствия контентной составляющей большого количества устройств продать не удалось. Тем не менее, устройство до сих пор пользуется устойчивым спросом. Примененные при его создании интерфейсные приемы, имитирующие работу с бумажной книгой (в т.ч. «листание страниц»), стали промышленным стандартом.
2. Разработка устройства для чтения электронных книг
2.1 Постановка задачи
Разработать устройство для чтения книг на микроконтроллере, которое бы удовлетворяло следующим требованиям:
— простота схемы (минимальное количество компонентов);
— вывод информации на жидкокристаллический индикатор;
— долговечность;
— новизна конструкции;
— низкое энергопотребление.
Разработка этого устройства была вызвана желанием читать книги в электронном виде не только дома, с помощью настольного компьютера, но и в прочих местах — там же, где можно прочитать и обычную бумажную книгу.
2.2 Разработка структурной схемы устройства и функциональной спецификации
Структурная схема устройства для чтения электронных книг приведена на рисунке 2.1.
/>
Рисунок 2.1 – Структурная схема устройства для чтения электронных книг
На рисунке 2.1 изображены функциональные узлы:
УВИ – устройство ввода информации;
БУ – блок управления;
КР – кварцевый резонатор;
МК – микроконтроллер;
РС- регистр сдвига;
ПУ – преобразователь уровней;
РСЧ – регулятор скорости чтения; продолжение
--PAGE_BREAK--
ЖКИ- жидкокристаллические индикаторы буквенно-цифровые.
Функциональная спецификация:
Входы
а. 3 кнопки управления (БУ) – закладка страницы, «перелистывание» страниц, вперед и назад ;
b. устройство ввода информации, записанной по COM-порту во flash-память;
с. регулятор скорости чтения (РС);
d. кварцевый резонатор – стабильность частоты генератора (КР).
Выходы
а. регистр — для защёлкивания младших 8 бит адреса (РС);
b. преобразование уровней (ПУ).
Функции:
а. запись на COM-порт во flash-память записанную книгу;
предусмотрена возможность «пролистывания» книги — на случай, если закладка не была положена, а питание устройства было отключено;
выбор функций и чтение происходит по нажатию трёх клавиш: выбор, вверх и вниз (БУ);
«сердцем» устройства является микроконтроллер (МК), управляющий шинами адреса-данных, принимающий команды от компьютера и выводящий на индикатор;
для защёлкивания младших 8 бит адреса служит регистр (РС);
преобразование уровней (ПУ);
вывод текста книги на алфавитно-цифровой индикатор с русифицированным знакогенератором (ЖКИ);
регулировка скорости чтения (РС).
2.3 Аппаратные средства микроконтроллеров серии AT90S8515
Для разработки устройства для чтения электронных книг выберем микроконтроллер серии AT90S8515.
AT90S8515 8-ми разрядный AVR® микроконтроллер с 8 Кбайт Flash памятью с поддержкой внутрисистемного программирования
Отличительные особенности:
AVR® — высокая производительность и RISC архитектура с низким энергопотреблением
118 мощных инструкций — большинство из них выполняются за один такт
8 Кбайт Flash- памяти с поддержкой внутрисистемного программирования:
— SPI последовательный интерфейс для загрузки программного обеспечения
Ресурс: 1000 циклов записи/ стирания
512 байт EEPROM
Ресурс: 100 000 циклов записи/ стирания
512 байт внутренней SRAM
32 х 8 рабочих регистров общего назначения
32 программируемые шины I/O
Программируемый последовательный UART
SPI последовательный интерфейс
Напряжение VCC: от 2.7В до 6.0 В
Полностью статический режим работы
От 0 до 8 МГц (от 4.0 В до 6.0 В)
От 0 до 4 МГц (от 2.7 В до 4.0 В)
Производительность, вплоть до 8 MIPS при 8 МГц
Один 16-ти разрядный таймер/ счетчик с отдельным предварительным делителем частоты с режимами сравнения, захвата
Сдвоенный ШИМ
Внешние и внутренние источники прерывания
Программируемый следящий таймер с встроенным тактовым генератором
Встроенный аналоговый компаратор
Режимы пониженного энергопотребления:
Покоя (Idle)
Отключения (Power Down)
Программируемая блокировка для безопасности программного обеспечения
Блок- схема AT90S8515 (Рисунок 2.2).
/>
Рисунок 2.2 — Блок- схема AT90S8515
Расположение выводов микроконтроллера AT90S8515 (Рисунок 2.3).
/>
Рисунок 2.2 – Расположение выводов микроконтроллера AT90S8515
Описание:
AT90S8515 является 8-ми разрядным CMOS микроконтроллером с низким уровнем энергопотребления, основанным на усовершенствованной AVR RISC архитектуре. Благодаря выполнению высокопроизводительных инструкций за один период тактового сигнала, AT90S8515 достигает производительности, приближающейся к уровню 1 MIPS на МГц, обеспечивая разработчику возможность оптимизировать уровень энергопотребления в соответствии с необходимой вычислительной производительностью.
Ядро AVR содержит мощный набор инструкций и 32 рабочих регистра общего назначения. Все 32 регистра напрямую подключены к арифметико — логическому устройству (АЛУ), что обеспечивает доступ к двум независимым регистрам при выполнении одной инструкции за один такт. В результате, данная архитектура имеет более высокую эффективность кода, при повышении пропускной способности, вплоть до 10 раз, по сравнению со стандартными микроконтроллерами CISC.
AT90S8515 имеет: 8 Кбайт Flash — памяти с поддержкой внутрисистемного программирования, 512 байт EEPROM, 512 байт SRAM, 32 линий I/O общего назначения, 32 рабочих регистра общего назначения, универсальные таймеры/ счетчики с режимами сравнения, внутренние и внешние прерывания, программируемый UART последовательного типа, программируемый следящий таймер с встроенным тактовым генератором и программируемый последовательный порт SPI, а также, два программно выбираемых режима экономии энергопотребления. Режим ожидания «Idle Mode» останавливает CPU, но позволяет функционировать SRAM, таймеру/ счетчикам, SPI порту и системе прерываний. Режим экономии энергопотребления «Power Down» сохраняет значения регистров, но останавливает тактовый генератор, отключая все остальные функции микроконтроллера, вплоть до следующего внешнего прерывания, или до аппаратной инициализации.
Устройство производится с применением технологи энергонезависимой памяти с высокой плотностью размещения, разработанной в корпорации Atmel. Встроенная Flash — память с поддержкой внутрисистемного программирования обеспечивает возможность перепрограммирования программного кода в составе системы, посредством SPI последовательного интерфейса, или с помощью стандартного программатора энергонезависимой памяти. Благодаря совмещению усовершенствованного 8-ми разрядного RISC CPU с Flash- памятью с поддержкой внутрисистемного программирования на одном кристалле получился высокопроизводительный микроконтроллер AT90S8515, обеспечивающий гибкое и экономически- высокоэффективное решение для многих приложений встраиваемых систем управления.
AVR AT90S8515 поддерживается полным набором программ и пакетов для разработки, включая: компиляторы С, макроассемблеры, отладчики/ симуляторы программ, внутрисхемные эмуляторы и наборы для макетирования.
2.4 Разработка функциональной схемы устройства
Теперь, когда мы составили структурную схему разрабатываемого устройства, зная тип микроконтроллера, мы можем приступить к построению функциональной схемы устройства для чтения электронных книг (Рисунок 2.3).
/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>
/>
/>/>
/>
/>С COM-порта во flash-память
/>/>/>
Рисунок 2.3 – Функциональная схема устройства для чтения электронных книг
2.5 Разработка программного обеспечения микроконтроллера
Несвязанное с компьютером устройство может только считывать записанную в него книгу. Для стирания памяти либо записи в неё надо выбрать пункт меню: «Связь с ЭВМ», непосредственно затем послать либо число 0x5e, либо 0xe5. В первом случае устройсво перейдёт в командный режим, во втором — в отладочный, когда принимаемый от компьютера символ будет просто отображаться на экране.
Команды, подаваемые на устройство, таковы:
10 — стереть первую МС памяти,
20 — стереть вторую МС памяти,
30 — записать в память данные,
40 — считать из памяти начиная с текущего адреса,
50 — выставить текущий адрес.
Последние две команды являются также отладочными и не используются в обычном нормальном функционировании устройства. Первые две не требуют никаких дальнейших действий кроме ожидания сообщения на экране устройства, что память стёрта. Команда записи в память потребует сначала ввести заголовок данной книги (то есть автора и название, это нужно для дальнейшей идентификации текста при использовании устройства), завершив его посылкой символа 0x07, а затем передать массив текста. После окончания цикла записи символа в память устройство подтверждает приём, посылая этот же символ в компьютер, что позволяет контролировать скорость передачи данных, и не потерять данные при записи. Передача текста также финишируется посылкой кода 0x07. Этот код был выбран потому, что является управляющим и обозначает звонок, писк на динамике компьютера (bell), то есть принципиально не может встретиться в текстовых файлах. продолжение
--PAGE_BREAK--
Файлы программ находятся в приложениях А-З:
reader.asm – Приложение А;
rus.inc – Приложение Б;
reader.hex – Приложение В;
reader.cpp – Приложение Д;
reader.exe – Приложение Ж;
reader.ini – Приложение З.
Первый файл, reader.asm (Приложение А), содержит собственно код для AT90S8515, следующий файл содержит эквиваленты русских букв (AVR Studio традиционно некорректно работает с неанглийскими символами, причём проблема эта прекрасно известна программистам Atmel), reader.hex (Приложение В) — откомпилированный код, прошивка того, что получилось. Далее содержится пример программы для компьютера, написанной на языке Си под DOS, позволяющей записывать текстовые файлы — reader.cpp (Приложение Д), reader.exe (Приложение Ж) — это соответственно откомпилированный reader.cpp, а reader.ini (Приложение З) — файл настроек для программы. Настроек, собственно, две: это на какой порт подключено устройство (в примере поддерживаются только COM1 и COM2, впрочем, легко добавить в исходник программы и остальные порты) и кодировка записываемого текста (WIN или DOS). Само устройство отображает текст, который записан в него только в кодировке WIN, но поскольку очень много текстов в Интернете, доставшихся в наследство ещё от FIDO, имеют кодировку DOS, то программа позволяет перекодировать при записи, на лету, освобождая пользователя от этой предварительной процедуры. Также программа отфильтровывает «лишние» пробелы, получившиеся при форматировании текста, убирает переносы, оставляя нетонутыми дефисы и тире перед фразами речи. Для программы при запуске существуют два возожных параметра — либо «reader.exe e», означающий стирание памяти, либо «reader.exe w », позволяющее записать файл. При записи программа попросит ввести имя автора и название книги.
2.6 Выбор элементной базы
Устройство предназначено для прочтения текстовой информации, записанной по COM-порту во flash-память AT49F040, на алфавитно-цифровом индикаторе с контроллером HD44780 фирмы Hitachi и русифицированным знакогенератором. Размер памяти 1 Мбайт, всего возможно записать 8 книг, с возможностью оставить закладку на каждую книгу. Размер дисплея 40х2 строчки, что, как показала практика, вполне достаточно для восприятия смысла написанного.
«Сердцем» устройства является микроконтроллер AT90S8515, управляющий шинами адреса-данных, принимающий команды от компьютера и выводящий на индикатор. Для защёлкивания младших 8 бит адреса служит регистр КР1533ИР33 (аналог 74ALS573). Для преобразования уровней RS-232C служит также хорошо известная микросхема ADM202 фирмы Analog Devices.
Особых приоритетов в выборе элементной базы нет, поэтому выбираем наиболее подходящие комплектующие, которые будут соответствовать критериам:
— минимизация размера;
— минимизация стоимости;
— надежность работы.
Единственно на что требуется обратить внимание – кнопки. Для эстетики можно поставить красивые и миниатюрные кнопки, но они не выдержат интенисивного нажимания (всё-таки двустрочный дисплей, нажимать прийдется где-то раз в секунду), поэтому прийдется поставить произведение отечественной «оборонки» — кнопки на основе концевиков — КМ1-1.
Спецификация элементов приведена в Приложении К.
2.7 Разработка схемы электрической принципиальной
Разрабатываем в Accel EDA схему электрическую принципиальную устройства для чтения электронных книг (Рисунок 2.4).
/>
Рисунок 2.4 — Принципиальная схема устройства для чтения электронных книг в Accel EDA
Электрическая принципиальная схема устройства для чтения электронных книг приведена в Приложении Л.
3. Технико-экономическое обоснование объекта разработки
В данном разделе проводится технико-экономический расчет стоимости устройства для чтения электронных книг.
Стоимость устройства будет состоять из стоимости разработки ПО для микроконтроллера, стоимости разработки конструкторской документации (КД) и стоимости сборки и испытания устройства.
3.1 Расчет расходов на ПО, которое разрабатывается
Исходные данные для расчета стоимости разработки ПО, которое разрабатывается приведены в таблице 3.1.
Таблица 3.1 – Исходные данные по предприятию
№п/п
Статьи затрат
Усл. обоз.
Ед. изм.
Значения
Проектирование и разработка ПО
1
Часовая тарифная ставка программиста
Зпр
грн.
8,00
2
Коэффициент сложности программы
с
коэф.
1,40
3
Коэффициент коррекции программы
Р
коэф.
0,05
4
Коэффициент увеличения расходов труда
Z
коэф.
1,3
5
Коэффициент квалификации программиста
k
коэф.
1,0
6
Амортизационные отчисления
Амт
%
10,0
7
Мощность компьютера, принтера
WМ
Квт/ч
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 в программе задания может быть оценено по формуле:
/>
где у – расчетное количество операторов в программе, что разрабатывается (единиц);
с – коэффициент сложности программы;
р – коэффициент коррекции программы в ходе ее разработки.
Рассчитанное количество операторов в разработанной программе – 200.
Коэффициент с – относительная сложность задания относительно отношения к типичной задаче, сложность которой принята более 1, лежит в границах от 1,25 до 2,0 и выбирается равным 1,30. продолжение
--PAGE_BREAK--
Коэффициент коррекции программы р – увеличение объема работ за счет внесения изменений в программу лежит в границах от 0,05 до 0,1 и выбирается равным 0,05.
Подставим выбранные значения в формулу (3.1) и определим величину Q:
Q = 200∙1,3 (1 + 0,05) = 273.
3.2 Расчет расходов на создание ПО
Расчет расходов на ПО проводится методом калькуляции расходов, в основу которого положена трудоемкость и заработная плата разработчиков. Трудоемкость разработки ПО рассчитывается по формуле:
/>
где То – расходы труда на описание задания;
Ти – расходы труда на изучение описания задания;
Та – расходы труда на разработку алгоритма решения задания;
Тп – расходы труда на составление программы по готовой блок-схеме;
Тотл – расходы труда на отладку программы на ЭВМ;
Тд – расходы труда на подготовку документации.
Составные расходы труда, в свою очередь, можно определить по числу операторов Q для ПО, которое разрабатывается. При оценке расходов труда используются:
— коэффициенты квалификации разработчика алгоритмов и программ – k;
– увеличение расходов труда в результате недостаточного описания задания – Z.
Коэффициент квалификации разработчика характеризует меру подготовленности исполнителя к порученной ему работе (он задается в зависимости от стажа работы), k = 1,0.
Коэффициент увеличения расходов труда в результате недостаточного описания задания характеризует качество постановки задания, выданного для разработки программы, в связи с тем, что задание требовало уточнения и некоторой доработки. Этот коэффициент принимается равным 1,3.
Все исходные данные приведенные в таблице 3.1.
а) Трудоемкость разработки П0 составляет:
Расходы труда на подготовку описания задания То принимаются равными 5 чел/час, исходя из опыта работы.
Расходы труда на изучение описания задания Те с учетом уточнения описания и квалификации программиста могут быть определены по формуле:
/>;
Ти = 273∙1,3/80∙1 = 5(чел/час)
Расходы труда на разработку алгоритма решения задачи рассчитываются по формуле:
/>;
Та=273/25∙1 = 11 (чел/час)
Расходы труда на составление программы по готовой блок-схеме Тп рассчитываются по формуле:
/>;
/>(чел/час)
Расходы труда на отладку программы на ПЕОМ Тотл рассчитываются по формуле:
при автономной отладке одного задания:
/>;
/>(чел/час)
при комплексной отладке задания:
/>;
/>(чел/час)
Расходы труда на подготовку документации по заданию Тд определяются по формуле:
/>,
где Тдр – расходы труда на подготовку материалов в рукописи:
/>;
/>(чел/час)
Тдо – расходы труда на редактирование, печать и оформление документация:
/>.
/>(чел/час)
Подставляя приобретенных значений в формулу (3.8), получим:
/>(чел/час)
Определим трудоемкость разработки ПО, подставив полученные значения составляющих в формулу (3.2):
/>
Расчет трудоемкости и зарплаты приведен в таблице 3.2.
Таблица 3.2 – Трудоемкость и зарплата разработчиков ПО
Наименование этапов разработки
Трудоемкость чел/часов
Почасовая тарифная ставка программиста, грн.
Сумма зарплаты, грн.
Описание задания
5
8,00
40,00
Изучение задания
5
8,00
40,00
Составление алгоритма решения задачи
11
8,00
88,00
Программирование
13
8,00
104,00
Отладка программы
55
8,00
440,00
Оформление документации
25
8,00
200,00
ВСЕГО:
114
8,00
912,00
б) Расчет материальных расходов на разработку ПО
Материальные расходы Мз, которые необходимы для создания ПО приведены в таблице 3.3.
Таблица 3.3 – Расчет материальных расходов на разработку ПО
Материал
Фактическое количество
Цена за единицу, грн.
Сумма, грн.
1. DVD
2
3,00
6,00
2. Бумага
500
0,10
50,00
ВСЕГО:
56,00
ТЗР (4%)
2,24
ИТОГО:
57,24
в) Расходы на использование ЭВМ при разработке ПО
Расходы на использование ЭВМ при разработке ПО рассчитываются, исходя расходов одного часа, по формуле:
/>
где Вг – стоимость работы одного часа ЭВМ, грн.;
Тотл – расходы труда на наладку программы на ЭВМ, чел./час.;
Тд– расходы труда на подготовку документации, чел./час.; Тп – расходы труда на составление программы по готовой блок-схеме, чел./час.
/>(грн.)
г) Расчет технологической себестоимости создания программы
Расчет технологической себестоимости создания программы проводится методом калькуляции расходов (таблица 3.4).
Таблица 3.4 – Калькуляция технологических расходов на создание ПО продолжение
--PAGE_BREAK--
Наименование
Расходы, грн.
1
Материальные расходы
57,24
2
Основная зарплата
912,00
3
Дополнительная зарплата (15,0 %)
136,80
4
Отчисление на социальные мероприятия (37,2 %)
390,15
5
Накладные расходы (25,0 %)
228,00
6
Расходы на использование ЭВМсоставлении программного обеспечения ПО
604,50
7
Себестоимость ПО микроконтроллера
2328,69
В таблице 3.4 величина материальных расходов Мз рассчитана в таблице 3.3, основная зарплата Со берется из таблицы 3.2, дополнительная зарплата составляет 15% от основной зарплаты, отчисление на социальные потребности – 37,2% от основной и дополнительной зарплат (вместе), накладные расходы – 25% от основной зарплаты. Себестоимость разработанной программы СПО рассчитывается как сумма пунктов 1 – 6.
Стоимость ПО для микроконтроллера составляет 2328,69 грн. на единицу продукции.
3.3 Расчет стоимости разработки конструкторской документации и сборки устройства
а) Трудоемкость разработки КД изделия (Т) рассчитывается по формуле:
/>
где Татз – расходы труда на анализ технического задания (ТЗ), чел./час;
Трес – расходы труда на разработку электрических схем, чел./час;
Трк – расходы труда на разработку конструкции, чел./час;
Трт – расходы труда на разработку технологии, чел./час;
Токд – расходы труда на оформление КД, чел./час;
Твидз – расходы труда на изготовление и испытание опытного образца, чел./час.
Данные расчета заносятся в таблицу 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.6.
Таблица 3.6 — Расчет материальных расходов на разработку КД
Материал
Обозначение пометь.
Факт. кол.чество
Цена за ед. грн.цу, грн.
Сумма, грн.
1. CD DVD
2
3,00
6,00
2. Бумага
500
0,07
35,00
ВСЕГО:
å
41,00
ТЗР (4%)
1,64
Итого:
Мв
42,64
в) Расходы на использование ЭВМ при разработке КД
Расходы, на использование ЭВМ при разработке КД, рассчитываются исходя из расходов работы одного часа ЭВМ по формуле, грн.:
/>
где Вг – стоимость работы одного часа ЭВМ, грн.
Трес – расходы труда на разработку электрических схем, чел./час;
Трк – расходы труда на разработку конструкции, чел./час;
Трт – расходы труда на разработку технологии, чел./час;
Токд – расходы труда на оформление КД, чел./час;
При этом, стоимость работы одного часа ЭВМ (других технических средств — ТС) Вг определяется по формуле, грн.:
/>
где Те/е – расходы на электроэнергию, грн.;
Ваморт – величина 1-ого часа амортизации ЭВМ (ТС), грн.;
Зперс – почасовая зарплата обслуживающего персонала, грн.;
Трем – расходы на ремонт, покупку деталей, грн.;
Стоимость одного часа амортизации Ваморт определяется по формуле, грн.: (при 40 часовой рабочей неделе)
/>
где Втз — стоимость технических средств, грн.
На — норма годовой амортизации (%).
Кт — количество недель на год (52 недели/год).
Гт — количество рабочих часов в неделю (40 час/неделя)
Почасовая оплата обслуживающего персонала Зперс рассчитывается по формуле, грн.:
/>
где Окл — месячный оклад обслуживающего персонала, грн.
Крг — количество рабочих часов в месяц (160 часов/месяц);
Нрем — расходы на оплату труда ремонта ЭВМ (6 % Окл).
Расходы на ремонт, покупку деталей для ЭВМ Трем определяются по формуле, грн.:
/>
где Втз — стоимость технических средств, грн.
Нрем — процент расходов на ремонт, покупку деталей (%);
Кт — количество недель на год (52 недели/год). продолжение
--PAGE_BREAK--
Гт — количество рабочих часов в неделю (36 ¸ 168 час./неделя)
Расходы на использование электроэнергии ЭВМ и техническими средствами Те/е определяются по формуле, грн.:
/>
где Ве/е – стоимость одного кВт/час электроэнергии, грн.;
Wпот – мощность компьютера, принтера и сканера (за 1 час), (кВт/час.).
Таким образом, стоимость одного часа работы ЭВМ при разработке КД будет составлять (см. формулу 3.16), грн.:
/>.
Расходы на использование ЭВМ при разработке, грн. (см. формулу 3.15):
/>
г) Расчет технологической себестоимости создания КД
Расчет технологической себестоимости создания КД изделия проводится методом калькуляции расходов (таблица 3.7).
В таблице 3.7 величина материальных расходов Мв рассчитана в таблице 3.6, основная зарплата Со берется из таблицы 3.5, дополнительная зарплата 15 % от основной зарплаты, отчисление на социальные мероприятия –37,2% — от основной и дополнительной зарплаты (вместе). Накладные расходы 25% от основной зарплаты. Себестоимость разработанной конструкторской документации Скд рассчитывается как сумма пунктов 1–6.
Таблица 3.7 — Калькуляция технологических расходов на создание КД изделия
№ п/п
Наименование статей
Условные обозначения
Расходы (грн.)
1
2
3
4
1.
Материальные расходы
Мв
42,64
2.
Основная зарплата
Зо
132,00
3.
Дополнительная зарплата
Зд
19,80
4.
Отчисление на социальные мероприятия
Нсоц
56,47
5.
Общепроизводственные (накладные) расходы предприятия
Ннакл
33,00
6.
Расходы на использование ЭВМ при составлении программного обеспечения КД
ВЕОМ
26,60
7.
Себестоимость КД изделия
Скд = å (1¸6)
310,51
3.4 Расчет расходов на стадии производства изделия
Себестоимость изделия которое разрабатывается рассчитывается на основе норм материальных и трудовых расходов. Среди исходных данных, которые используются для расчета себестоимости изделия, выделяют нормы расходов сырья и основных материалов на одно изделие.
Таблица 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
1
5,67
Фрезерная
5,67
1
5,67
Слесарная
5,67
1
5,67
Гравировка
5,67
1
5,67
Фотохимпечать
5,67
2
11,34
Гальваническая
5,67
2
11,34
Маркировочная
5,67
1
5,67
Сборка
5,67
2
11,34
Монтаж
5,67
1
5,67
Настройка
5,67
2
11,34
Другие
-
-
-
Всего:
14
62,37
Калькуляция себестоимости и определения цены выполняется в таблице 3.10.
Таблица 3.10 — Калькуляция себестоимости и определения цены изделия
Наименование статей расходов
Расходы грн.
1
2
Сырье и материалы
10,92
Покупные комплектующие изделия
99,74
Основная зарплата рабочих
62,37
Дополнительная зарплата (15%)
9,36
Отчисление на социальные мероприятия (37,2%)
26,68
Накладные расходы (25% )
15,59
Стоимость КД
310,51
Общая стоимость изделия
535,17
Общая стоимость изделия будет составлять:
Собщ. = С прог. + С баз. Бл. (3.21)
где С прог. – себестоимость составления программы для микроконтроллера; продолжение
--PAGE_BREAK--
С баз. Бл – себестоимость подготовки КД и сборки устройства.
При единичном изготовлении:
Собщ. = 2328,69+ 535,17= 2863,86 (грн.).
При производстве 100 единиц продукции:
Собщ.100 = 251,06 грн.
При производстве 1000 изделий:
Собщ.1000 = 227,30 грн.
При расчете не учитывалось снижение цены на покупные комплектующие изделия и полуфабрикаты, т.к. эта величина при оптовой закупке будет зависеть от величины партии.
3.5 Анализ устройств-аналогов
Ниже приводятся цены на аналогичные устройства для чтения электронных книг (Таблица 3.11).
Таблица 3.11 – Анализ стоимости устройств для чтения электронных книг (данные market.yandex.ru)
Наименование
Цена, грн.
Sony PRS-300 Reader
2 499,00
FR Book e251
1 774,00
PocketBook 360 ABBYY Lingvo
2 715,00
M-Book Deluxe
6000,00
Наше устройство (при единичном изготовлении)
2863,86
Из полученных данных видим, что наше устройство намного проще, надежней и дешевле, может создать конкуренцию на рынке.
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 — Нормы подачи свежего воздуха в помещения, где расположены компьютеры
Характеристика помещения продолжение
--PAGE_BREAK--
Объемный расход подаваемого в помещение свежего воздуха, м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) базируется на данных о средней зоне охвата рук человека — 35-40 см. Ближней зоне соответствует область, охватываемая рукой с прижатым к туловищу локтем, дальней зоне — область вытянутой руки. Тонкой линией изображено фактическое положение монитора на рабочем столе сотрудника – на углу стола с левой стороны. Это приводит к значительному неудобству при работе. При работе с компьютером приходится постоянно поворачивать голову влево, что ведет к усталости шейных мышц.
Значимым фактором является пространство под столешницей. Высота столов, использующихся на предприятии соответствует общепринятым стандартам, и составляет 74 см. Конструкция столов обеспечивает требования СанПин 2.2.2.542-96 по ширине и высоте необходимого пространства для ног.
Взаимное расположение предметов на рабочем месте :
a1 — угол обзора по вертикали, 35°
a2 — угол наклона клавиатуры, 10°
h1 — высота рабочей поверхности, 79 см
h2 — высота сиденья стула, регулируется под конкретного человека
h3 — расстояние от края стола до клавиатуры, 10 см
h4 — расстояние от органов зрения оператора до экрана, 65 см
Взгляд человека направлен перпендикулярно центру экрана монитора.
При компоновке рабочего места не следует забывать о том, что наиболее важные из орудий труда следует располагать спереди и справа от человека.
Клавиатура, как наиболее часто используемое устройство ввода. Параметры этой зоны: угол — 70°, глубина — 30-40 см.
Остальные устройства — угол — 130 градусов, глубина 70-80 см.
С учетом выше приведенных данных об углах обзора, а так же зная максимальный размер зоны досягаемости правой руки (70-100 см), можно считать, что расположение рабочих предметов в моторном поле правильное.
4.3 Электропожаробезопасность
Для обеспечения электробезопасности в помещении должны проверены следующие показатели:
— соответствие напряжения в сети тому на которое рассчитан ПК;
— наличие защитного заземления;
— меры защиты от перепадов в сети.
Приборы, находящиеся в помещении работают от номинального напряжения 220 В. В нашем случае применим заземление с изолированной нейтралью. Заземление выведено на заземляющий контур с сопротивлением 4 Ома. Заземление дисплеев осуществляется через системный блок ЭВМ.
Соединение ПК с сетью выполнено с помощью трехжильного медного силового кабеля с вилкой, имеющей клеммы заземления. Все провода в рабочем помещении имеют характеристики, соответствующие токам и напряжениям в сети.
При эксплуатации ЭВМ возможны возникновения следующих аварийных ситуаций:
— короткие замыкания;
— перегрузки;
— повышение переходных сопротивлений в электрических контактах;
— перенапряжение;
— возникновение токов утечки.
Обязательно наличие порошкового огнетушителя в помещении серверной станции.
4.4 Режим труда
Как уже было неоднократно отмечено, при работе с персональным компьютером очень важную роль играет соблюдение правильного режима труда и отдыха. В противном случае у персонала отмечаются значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи и руках.
В табл. 4.5 представлены сведения о регламентированных перерывах, которые необходимо делать при работе на компьютере, в зависимости от продолжительности рабочей смены, видов и категорий трудовой деятельности с ВДТ (видеодисплейный терминал) и ПЭВМ (в соответствии с САнНиП 2.2.2 542-96 «Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работ»). продолжение
--PAGE_BREAK--
Таблица 4.5 — Время регламентированных перерывов при работе на компьютере
Категория работы с ВДТ или ПЭВМ
Уровень нагрузки за рабочую смену при видах работы с ВДТ, количество знаков
Суммарное время регламентированных перерывов, мин
При 8-часовой смене
При 12-часовой смене
Группа А
до 20000
30
70
Группа Б
до 40000
50
90
Группа В
до 60000
70
120
Примечание. Время перерывов дано при соблюдении указанных Санитарных правил и норм. При несоответствии фактических условий труда требованиям Санитарных правил и норм время регламентированных перерывов следует увеличить на 30%.
В соответствии со САнНиП 2.2.2 546-96 все виды трудовой деятельности, связанные с использованием компьютера, разделяются на три группы: группа А: работа по считыванию информации с экрана ВДТ или ПЭВМ с предварительным запросом; группа Б: работа по вводу информации; группа В: творческая работа в режиме диалога с ЭВМ.
Эффективность перерывов повышается при сочетании с производственной гимнастикой или организации специального помещения для отдыха персонала с удобной мягкой мебелью, аквариумом, зеленой зоной и т.п.
4.5 Расчет освещенности
Расчет освещенности рабочего места сводится к выбору системы освещения, определению необходимого числа светильников, их типа и размещения. Исходя из этого, рассчитаем параметры искусственного освещения.
Обычно искусственное освещение выполняется посредством электрических источников света двух видов: ламп накаливания и люминесцентных ламп. Будем использовать люминесцентные лампы, которые по сравнению с лампами накаливания имеют ряд существенных преимуществ:
— по спектральному составу света они близки к дневному, естественному свету;
— обладают более высоким КПД (в 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л- световой поток лампы, Fл = 4320 Лм.
N = 8 ламп.
При выборе осветительных приборов используем светильники типа ОД. Каждый светильник комплектуется двумя лампами.
Значит требуется для помещения площадью S = 15 м2 четыре светильника типа ОД.
Расчет естественного освещения помещений
Организация правильного освещения рабочих мест, зон обработки и производственных помещений имеет большое санитарно-гигиеническое значение, способствует повышению продуктивности работы, снижения травматизма, улучшения качества продукции. И наоборот, недостаточное освещение усложняет исполнения технологического процесса и может быть причиной несчастного случая и заболевания органов зрения.
Освещение должно удовлетворять такие основные требования:
— быть равномерным и довольно сильным;
— не создавать различных теней на местах работы, контрастов между освещенным рабочем местом и окружающей обстановкой;
— не создавать ненужной яркости и блеска в поле взора работников;
— давать правильное направление светового потока;
Все производственные помещения необходимо иметь светлопрорезы, которые дают достаточное природное освещение. Без природного освещения могут быть конференц-залы заседаний, выставочные залы, раздевалки, санитарно-бытовые помещения, помещения ожидания медицинских учреждений, помещений личной гигиены, коридоры и проходы.
Коэфициент естественного освещения в соответствии с ДНБ В 25.28.2006, для нашого III пояса светового климата составляет 1,5.
Исходя из этого произведем расчет необходимой площади оконных проемов.
Расчет площади окон при боковом освещении определяется, по формуле:
Sо = (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 продолжение
--PAGE_BREAK--
Значение 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)
Sо = (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.6 Расчет вентиляции
В зависимости от способа перемещения воздуха вентиляция бывает естественная и принудительная.
Параметры воздуха, поступающего в приемные отверстия и проемы местных отсосов технологических и других устройств, которые расположены в рабочей зоне, следует принимать в соответствии с ГОСТ 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.7 Расчет уровня шума
Одним из неблагоприятных факторов производственной среды в ИВЦ является высокий уровень шума, создаваемый печатными устройствами, оборудованием для кондиционирования воздуха, вентиляторами систем охлаждения в самих ЭВМ.
Для решения вопросов о необходимости и целесообразности снижения шума необходимо знать уровни шума на рабочем месте оператора.
Уровень шума, возникающий от нескольких некогерентных источников, работающих одновременно, подсчитывается на основании принципа энергетического суммирования излучений отдельных источников:
∑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, www.atmel.com/dyn/resources/prod_documents/doc7597.pdf
2. ГОСТ13109-97. Нормы качества электрической энергии в системах электроснабжения общего назначения.
3. G. Howell «Five questions about resistors» // EDN, 9/28/2006, www.edn.com/contents/images/6372835.pdf
4. П. Хоровиц, У. Хилл «Искусство схемотехники» – Изд. 6-е, М.: Мир, 2003.
5. C. Hillman «Common mistakes in electronic design» // EDN, 12/14/2007 www.edn.com/contents/images/6512156.pdf
6.«Frequently asked questions about dimmers» // www.lutron.com/product_technical/faq.asp
7. Л. Н. Кечиев, Е. Д. Пожидаев «Защита электронных средств от воздействия статического электричества» – М.: ИД «Технологии», 2005.
8. Жидецкий В.Ц., Джигирей В.С., Мельников А.В. Основы охраны труда: Учебник – Львов, Афиша, 2008 – 351с.
9. Денисенко Г.Ф. Охрана труда: Учебн.пособие – М., Высшая школа, 1989 – 319с.
10. Самгин Э.Б. Освещение рабочих мест. – М.: МИРЭА, 1989. – 186с.
11. Справочная книга для проектирования электрического освещения. / Под ред. Г.Б. Кнорринга. – Л.: Энергия, 1976. продолжение
--PAGE_BREAK--
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 с.
Приложение А
Файл reader.asm
; Описание и распиновка.
; Порт B это данные индикатора и памяти.
;D0 -RxD, D1 — TxD, D6 — RS, D5 — R/W, D4 — E, D2 — adr. latch,
;D3 — общий #OE,D7 — общий #WE
; Порт С — адресный порт
; Порт А: А0-А2 — старшие линии адреса, А3 — #СЕ1, А4 — #СЕ2
; А5 — красная кнопка, А6 — зелёная кнопка «вниз», А7 — зелёная кнопка «вверх»
;-----------------------------------------------------------------------
.include «d:\Program Files\Atmel\AVR Studio\Appnotes\8515def.inc»
.include «d:\seagull\Depot\AVR\reader\rus.inc»
;-----------------------------------------------------------------------
.def rsym=r0
.def storel=r1
.def storeh=r2
.def book=r3
.def storead0=r4
.def storead1=r5
.def all_book=r6
.def rus=r14
.def store=r15
.def work=r16
.def data=r17
.def char=r18
.def pauseh=r19
.def pausel=r20
.def count=r21
.def address0=r22
.def address1=r23
.def address2=r24
.def flag=r25
.def key=r26
.def loz=r30
.def hiz=r31
;-----------------------------------------------------------------------
;flag: бит0 = 1-переполнение адреса; бит1 =1-команда ко 2-й памяти; бит2 =1 -питание только подано
; бит3 = 1-нужен pop
;-----------------------------------------------------------------------
.set E=4
.set RW=5
.set RS=6
.set C = 2
.set WE=7
.set OE=3
.set CE1=3
.set CE2=4
.equ TSYM=80; Всего символов на экране
;-----------------------------------------------------------------------
.org 0x000
;.org 0x007
;rjmp RXcomplete
.org 0x010
main:
bclr 7; неразрешение прерываний
ldi work, 0x5f; загрузка адреса стека
out spl,work
ldi work, 0x02; загрузка старшего адреса стека
out sph,work
ldi work,0b11111110
out ddrd, work
ldi work,0b10001011
out portd, work
ser work
out ddrb, work;выходыиндикатора
ldi work, 0b00011000;8-битный режим, приём/передача, RX-~прерывание
out ucr, work
ldi work, 4
out ubrr, work;115200 прикварце9,216 МГц
ser work
out ddrc, work;выходыпортаС
ldi work, 0b00011111
out ddra, work;выходыпортаA
clr work
out portc,work
ldi work, 0b11111000
out porta,work
clr address0
clr address1
clr address2
ser count
ldi flag,0b00000100
clr book
;-----------------------------------------------------------------------
; модуль инициализации индикатора
;rjmp tst_loop
rcall precharge
ldi char, 0b00111000;8-разр. шина,2 строки,5х8
rcall write_cmd
ldi char, 0b00001100;вкл. изобр., курсор-подчерк. выкл, курсор-блоквыкл
rcall write_cmd
ldi char, 0b00000110;сдвигкурсоравправо.
rcall write_cmd продолжение
--PAGE_BREAK--
ldi char, 0b00000001
rcall write_cmd
in char,udr
in char,udr
in char,udr
;-----------------------------------------------------------------------
; Тестовый участок
tst_loop:
;ldi char,0x55
;out eedr,work
;clr work
;out eearl,work
;rcall write_flash
;rcall module_write
;rcall inc_addr
;rcall wait_busy
;rjmp read_begin
;rjmp tst_loop
;rjmp command
;----------------------------------------------------------------------
ldi hiz,(high(hello*2))
ldi loz,(low(hello*2))
rcall message
rcall push_button
main_menu:
rcall menu; Ответ: 0-начать читать, 1- закладку, 2- связь с компом, 3- кто сделал
cpi count,0
breq read_begin
cpi count,1
breq pre_goto_bookmark
cpi count,2
breq pre_comp_mes
ldi hiz,(high(about_develop*2))
ldi loz,(low(about_develop*2))
rcall message
rcall push_button
rjmp main_menu
pre_goto_bookmark:
rjmp goto_bookmark
read_begin:
cbr flag,0x04
rcall choose_text
rcall get_address_text_begin
continue_read:
rcall blank_screen
rcall show_to_screen
menu_2:
rcall menu
rcall sub_string
cpi count,0
breq continue_read
cpi count,1
breq pre_goto_bookmark
cpi count,2
breq set_bookmark
listing_subreturn:
rcall listing
push_list_page:
push count
list_page:
rcall blank_screen
ser count
read_page:
rcall read_flash
mov rus,data
mov char,data
rcall write_char
rcall inc_addr
cpi count,TSYM-1
brne read_page
pop count
rcall push_button
cpi key,3
breq sub_page
cpi key,2
breq add_page
rjmp menu_2
add_page:
push count
lsl count
lsl count
add address1,count
brcc no_add_adr2
inc address2
cpi address2,0x10
brlo no_add_adr2
ser address0
ser address1
ldi address2,0x0f
no_add_adr2:
pop count
rjmp push_list_page
pre_comp_mes:
rjmp comp_mes
sub_page:
push count
lsl count
lsl count
sub address1,count
brsh no_sub_adr2
dec address2
brpl no_sub_adr2
clr address2
clr address1
clr address0
no_sub_adr2:
pop count
rjmp push_list_page
read_current:
rcall show_to_screen
rjmp read_current
set_bookmark:
push work
write_current:
clr work
out eearh,work
rcall wait_write_internal_eeprom
mov work,book
lsl work продолжение
--PAGE_BREAK--
lsl work
inc work
out eearl,work
out eedr,address2
rcall write_internal_eeprom
rcall wait_write_internal_eeprom
inc work
out eearl,work
out eedr,address1
rcall write_internal_eeprom
rcall wait_write_internal_eeprom
inc work
out eearl,work
out eedr,address0
rcall write_internal_eeprom
pop work
rjmp continue_read
goto_bookmark:
sbrc flag,2
rcall choose_text
push work
clr work
out eearh,work
mov work,book
lsl work
lsl work
inc work
out eearl,work
rcall read_internal_eeprom
push work
in work,eedr
cpi work,0xff
brne no_return_from_gtb
ldi hiz,(high(no_bookmark*2))
ldi loz,(low(no_bookmark*2))
rcall message
rcall push_button
pop work
pop work
sbrc flag,0x02
rjmp main_menu
rjmp continue_read
no_return_from_gtb:
mov address2,work
pop work
inc work
out eearl,work
rcall read_internal_eeprom
in address1,eedr
inc work
out eearl,work
rcall read_internal_eeprom
in address0,eedr
pop work
cbr flag,0x04
rjmp continue_read
;-----------------------------------------------------------------------
read_internal_eeprom:
sbic eecr,eewe;Жду, поканезакончитсяциклзаписи
rjmp read_internal_eeprom
sbi eecr,eere
ret
wait_write_internal_eeprom:
sbic eecr,eewe
rjmp wait_write_internal_eeprom
ret
write_internal_eeprom:
sbi eecr,eemwe
sbi eecr,eewe
ret
;-----------------------------------------------------------------------
comp_mes:
ldi hiz,(high(i_love_my_computer*2))
ldi loz,(low(i_love_my_computer*2))
rcall message
loop:
sbis usr,rxc
rjmp loop
rcall blank_screen
rcall RXcomplete
cpi data,0xe5
breq loop_ex
cpi data,0x5e
breq command
rjmp loop
;-----------------------------------------------------------------------
loop_ex:
sbis usr,rxc
rjmp loop_ex
rcall RXcomplete
rcall write_char
rcall confirm
rjmp loop_ex;зацикливание
;-----------------------------------------------------------------------
write_char:
push work
inc count
cpi count,TSYM/2
breq next_row
cpi count,TSYM
breq new_screen
send:
sbrc char,7
rcall decode
rcall write_data
pop work
ret
next_row:
mov store,char
ldi char, 0b11000000
rcall write_cmd
mov char,store
rjmp send
new_screen:
clr count
mov store,char
ldi char, 0b00000001 продолжение
--PAGE_BREAK--
rcall write_cmd
mov char,store
rjmp send
recognize:
;inc count
;cpi char,0xa
;brge nodig
;ldi work,0x30
;add char,work
;rcall write_char
;ret
nodig:
;ldi work,0x37
;add char,work
;rcall write_char
;ret
;-----------------------------------------------------------------------
command:
sbis usr,rxc
rjmp command
rcall RXcomplete
cpi data,0x10
breq _module_erase1
cpi data,0x20
breq _module_erase2
cpi data,0x30
breq _module_write
cpi data,0x40
breq _module_read
cpi data,0x50
breq _module_address_set
rjmp command
_module_erase1:
cbr flag,0x02
rcall module_erase
rjmp command
_module_erase2:
sbr flag,0x02
rcall module_erase
rjmp command
_module_write:
rcall module_write
rjmp command
_module_read:
rcall blank_screen
rcall module_read
rjmp command
_module_address_set:
rcall module_address_set
rjmp command
;-----------------------------------------------------------------------
; индикаторные модули чтения/записи
write_cmd:
push work
rcall wait_busy
cbi portd,RS
cbi portd,RW
out portb,char
rcall latch
pop work
ret
write_data:
push work
rcall wait_busy
sbi portd,RS
cbi portd,RW
out portb,char
rcall latch
pop work
ret
wait_busy:
push char
clr work
out ddrb, work;входы
ser work; Включил подтяжку к единице
out portb,work
cbi portd,RS
sbi portd,RW
busy:
nop
sbi portd,E
rcall nop_wait
in char,pinb
cbi portd,E
sbrc char,7
rjmp busy
ser work
out ddrb, work;выходы
cbi portd,RS
pop char
ret
latch:
rcall nop_wait
sbi portd,E
rcall nop_wait
cbi portd,E
ret
nop_wait:
ldi work, 0x1f
_wait:
dec work
brne _wait
ret
precharge:; Подпрограмма начальной предустановки
ser work
out ddrb, work;выходы
cbi portd,RS
cbi portd,RW
rcall pause
rcall pause
rcall pause
rcall pause
rcall pause
rcall ldi30
rcall pause
rcall pause
rcall ldi30
rcall pause
rcall pause
rcall ldi30
rcall pause продолжение
--PAGE_BREAK--
ldi30:
ldi work,0x30
out portb,work
rcall latch
ret
;-----------------------------------------------------------------------
pause:
clr pauseh
clr pausel
_pauseh:
rcall pause_1
dec pauseh
brne _pauseh
ret
pause_1:
dec pausel
brne pause_1
ret
;-----------------------------------------------------------------------
RXcomplete:
in char,udr
mov rus,char
mov data,char
ret
;-----------------------------------------------------------------------
decode:
cpi char,0xa8
breq yob
cpi char,0xb8
breq yol
cbr char,0xc0; два старших бита не нужны
ldi hiz,(high(rus_letters*2))
ldi loz,(low(rus_letters*2))
add loz,char
brcc read_code
inc hiz
read_code:
lpm
mov char,rsym
ret
yob:
ldi char,0xa2
ret
yol:
ldi char,0xb5
ret
.cseg
rus_letters:
;Большиебуквы
.db 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4,0xa5,0xa6,0x4b,0xa7,0x4d,0x48
.db 0x4f,0xa8,0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab,0xac,0xe2,0xad,0xae
.db 0x62,0xaf,0xb0,0xb1
; Маленькие буквы
.db 0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd
.db 0x6f,0xbe,0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0,0xc1,0xe6,0xc2,0xc3
.db 0xc4,0xc5,0xc6,0xc7
;-----------------------------------------------------------------------
confirm:
;sbi usr,txc
wait_txc:
sbis usr,udre
rjmp wait_txc
out udr,rus
ret
;-----------------------------------------------------------------------
adr_latch:
sbis portd,WE;либозапись
out portb,data
out portc,address0
sbi portd,C
nop
cbi portd,C
out portc,address1
push work
in work,porta; считали с защёлок порта А
cbr work,0x07
or work,address2
sbrc address2,3
rjmp ce2_set
sbr work,0x10;CE2
cbr work,0x08;CE1
rjmp ce1_set
ce2_set:
sbr work,0x08
cbr work,0x10
ce1_set:
out porta,work
pop work
nop
sbic portd,WE
in data,pinb;либочтение
sbi porta,CE1;операциязавершена
sbi porta,CE2
ret
;-----------------------------------------------------------------------
inc_addr:
clz
inc address0
brne ret_inc
inc address1
brne ret_inc
inc address2
cpi address2,0x10
brlo ret_inc
sbr flag,0x01
ret_inc:
ret
;-----------------------------------------------------------------------
erase_flash:
cbi portd,WE
sbi portd,OE
push work
ldi work, 0x55
mov address0,work
mov address1,work
clr address2
sbrc flag,1 продолжение
--PAGE_BREAK--
sbr address2,0x08; если стирается вторая флешь
ldi data,0xaa
rcall adr_latch
ldi work, 0xaa
mov address0,work
ldi work, 0x2a
mov address1,work
ldi data,0x55
rcall adr_latch
ldi work, 0x55
mov address0,work
mov address1,work
ldi data,0x80
rcall adr_latch
ldi work, 0x55
mov address0,work
mov address1,work
ldi data,0xaa
rcall adr_latch
ldi work, 0xaa
mov address0,work
ldi work, 0x2a
mov address1,work
ldi data,0x55
rcall adr_latch
ldi work, 0x55
mov address0,work
mov address1,work
ldi data,0x10
rcall adr_latch
sbi portd,WE
pop work
mov store,work
ldi work,10
wait_10s:; память стирается 10 секунд. Максимум, правда.
rcall wait_1s
dec work
brne wait_10s
mov work,store
sbi portd,WE
ret
;-----------------------------------------------------------------------
read_flash:
sbi portd,WE
cbi portd,OE
push work
clr work
out ddrb,work
rcall adr_latch
ser work
out ddrb,work
pop work
sbi portd,OE
ret
;-----------------------------------------------------------------------
write_flash:
mov store,address0
mov storel,address1
mov storeh,address2
cbi portd,WE
sbi portd,OE
push work
ldi work, 0x55
mov address0,work
mov address1,work
cbr address2,0xf7; если пишется во вторую флешь
ldi data,0xaa
rcall adr_latch
ldi work, 0xaa
mov address0,work
ldi work, 0x2a
mov address1,work
ldi data,0x55
rcall adr_latch
ldi work, 0x55
mov address0,work
mov address1,work
ldi data,0xa0
rcall adr_latch
mov address0,store
mov address1,storel
mov address2,storeh
mov data,char
rcall adr_latch
push char
rcall data_polling
pop char
pop work
sbi portd,WE
ret
;-----------------------------------------------------------------------
wait_1s:
push work
ldi work,0x47
pause_1s_l:
rcall pause
dec work
brne pause_1s_l
pop work
ret
;-----------------------------------------------------------------------
module_write:
clr work
clr book
clr address0
clr address1
clr address2
find_empty_slot:
rcall read_flash
cpi data,0x5e
brne empty_slot
rcall inc_addr
inc book
mov work,book
cpi work,0x08
brne find_empty_slot
ldi hiz,(high(no_slot*2))
ldi loz,(low(no_slot*2)) продолжение
--PAGE_BREAK--
rcall message
rcall push_button
ret
empty_slot:
ldi char,0x5e
rcall write_flash
ldi hiz,(high(type_header*2))
ldi loz,(low(type_header*2))
rcall message
clr address2
clr address1
ldi address0,0x0b; смещение=8 + адрес=3
mov work,book
sbrc work,0
sbr address0,0x40
sbrc work,1
sbr address0,0x80
sbrc work,2
sbr address1,0x01
ldi work,55
ret_enter_name:
sbis usr,rxc
rjmp ret_enter_name
rcall RXcomplete
rcall write_flash
rcall inc_addr
dec work
breq stop_write_header
cpi char,0x07
brne ret_enter_name
rjmp type_status_reciev
stop_write_header:
ldi char,0x07
rcall write_flash
type_status_reciev:
ldi hiz,(high(reciev_file*2))
ldi loz,(low(reciev_file*2))
rcall message
rcall get_address_text_begin
module_write_cont:
sbis usr,rxc
rjmp module_write_cont
rcall RXcomplete
cpi char,0x07
breq ret_module_write
mov data,char
rcall write_flash
rcall confirm
rcall inc_addr
sbrs flag,0; если память переполнена.
rjmp module_write_cont
ldi hiz,(high(memory_full*2))
ldi loz,(low(memory_full*2))
rcall message
rcall push_button
ret
ret_module_write:
mov char,address2
mov storead1,address1
mov storead0,address0
clr address2
clr address1
ldi address0,0x08
mov work,book
sbrc work,0
sbr address0,0x40
sbrc work,1
sbr address0,0x80
sbrc work,2
sbr address1,0x01
rcall write_flash
rcall inc_addr
mov char,storead1
rcall write_flash
rcall inc_addr
mov char,storead0
rcall write_flash
ldi hiz,(high(file_recieved*2))
ldi loz,(low(file_recieved*2))
rcall message
ret
;-----------------------------------------------------------------------
module_read:
ПРИЛОЖЕНИЕ А (Продолжение)
;clr address0
;clr address1
;clr address2
show_to_screen:
rcall read_flash
mov rus,data
mov char,data
rcall write_char
rcall inc_addr
cpi count,TSYM-1
breq branch
rjmp show_to_screen
branch:
rcall push_button
cpi key,1
breq ret_module_read
cpi key,2
breq show_to_screen
minus_tsym:
subi address0,low(TSYM*2)
sbci address1,high(TSYM*2)
brsh show_to_screen
dec address2
brpl show_to_screen
clr address0
clr address1
clr address2
rjmp show_to_screen
ret_module_read:
ret
;-----------------------------------------------------------------------
module_erase:
clr work; Вначале стираются закладки в ЭППЗУ
clr count продолжение
--PAGE_BREAK--
out eearh,work
rcall wait_write_internal_eeprom
ldi work,0x01
erase_bookmark:
out eearl,work
ser data
out eedr,data
rcall write_internal_eeprom
rcall wait_write_internal_eeprom
subi work,0xfc
inc count
cpi count,8
brne erase_bookmark
ldi hiz,(high(memory_erased_process*2))
ldi loz,(low(memory_erased_process*2))
rcall message
rcall erase_flash
ldi hiz,(high(memory_erased*2))
ldi loz,(low(memory_erased*2))
rcall message
ret
;-----------------------------------------------------------------------
;Нажатиекнопки. Возвращаемый код: 1-красная кнопка, 2-зелёная вниз, 3-зелёная вверх
push_button_no_wait:
push work
clr key
sbis pina,5
rjmp red
sbis pina,6
rjmp green_down
sbis pina,7
rjmp green_up;ЭЄюрэрыюушўэыщєўрёЄюъъюфр,
ret;Єюы№ъюсхчюцшфрэшэрцрЄшъэюяъш
push_button:
;ret
push work
clr key
wait_push_button:
clr work
sbis pina,5
rjmp red
sbis pina,6
rjmp green_down
sbis pina,7
rjmp green_up
rjmp wait_push_button;ЗрЎшъыхэю: эрцрЄ№ яЁшфёЄё
red:
dec work
nop
breq pull_red
sbis pina,5
rjmp red
rjmp wait_push_button
clr_pull_red:
clr work
pull_red:
dec work
nop
breq red_quit
sbic pina,5
rjmp pull_red
rjmp clr_pull_red
red_quit:
pop work
ldi key,1
ret
green_down:
dec work
nop
breq pull_green_down
sbis pina,6
rjmp green_down
rjmp wait_push_button
clr_pull_green_down:
clr work
pull_green_down:
dec work
nop
breq green_down_quit
sbic pina,6
rjmp pull_green_down
rjmp clr_pull_green_down
green_down_quit:
pop work
ldi key,2
ret
green_up:
dec work
nop
breq pull_green_up
sbis pina,7
rjmp green_up
rjmp wait_push_button
clr_pull_green_up:
clr work
pull_green_up:
dec work
nop
breq green_up_quit
sbic pina,7
rjmp pull_green_up
rjmp clr_pull_green_up
green_up_quit:
pop work
ldi key,3
ret
;-----------------------------------------------------------------------
blank_screen:
ser count
ldi char, 0b00000001
rcall write_cmd
ret
;-----------------------------------------------------------------------
message:
;ret
push work продолжение
--PAGE_BREAK--
sbr flag,0x08
rcall blank_screen
message_loop:
lpm
mov work,rsym
cpi work,0x0
breq go_away
cpi work,0x1
brne no_return
ldi char, 0b11000000
rcall write_cmd
rjmp message_adr_inc
no_return:
mov char,work
push loz
push hiz
rcall write_data
pop hiz
pop loz
message_adr_inc:
inc loz
brne message_loop
inc hiz
rjmp message_loop
go_away:
sbrc flag,3
pop work
cbr flag,0x08
ret
; Выводимые сообщения. AVR Studio некорректно понимает коды русских симолов, так что пришлось извратиться.
hello:
.db ' ',bS,_i,_s,_t,_e,_m,_a,' ',' ','"',bK,_n,_i,_g,_o,_ch,_e,_j,'"',0x01,' ',bV,_e,_r,_s,_i,_ya,' ','1','.','3','7',0x00
begin:
.db ' ',bN,_a,_ch,_a,_t,_q,' ',_ch,_i,_t,_a,_t,_q,' ',_k,_n,_i,_g,_u,0x01,0x00
ret_cursor:
.db 0x7e,0x00
zakladka:
.db ' ',bD,_o,_s,_t,_a,_t,_q,' ',_z,_a,_k,_l,_a,_d,_k,_u,0x01,0x00
about:
.db ' ',bR,_e,_a,_l,_i,_z,_o,_v,_a,_n,_o,'.','.','.',0x0
about_develop:
.db ' ','R','&','D',' ','7','-',_ya,' ',bZ,_a,_s,_t,_a,_v,_a,'.',' ',bS,_o,_z,_d,_a,_l,' ','S','e','a','G','u','l','l','.',0x01,' ',bE,_s,_l,_i,' ',_ch,_t,_o,',',' ',_p,_i,_sh,_i,_t,_e,' ',_n,_a,' ','"','s','e','a','g','u','l','l','@','m','a','i','l','.','r','u','"',0x00
computer:
.db ' ',bS,_v,_ya,_z,_a,_t,_q,_s,_ya,' ',_s,' ',bEE,bV,bM,0x01,0x00
i_love_my_computer:
.db ' ',bZH,_d,_u,' ',_s,_v,_ya,_z,_i,' ',_n,_a,' ','1','1','5','2','0','0',0x01,' ',bP,_o,_d,_k,_l,_yu,_ch,_i,_t,_e,' ',_p,_o,_r,_t,'.',0x00
continue:
.db ' ',bP,_r,_o,_d,_o,_l,_zh,_i,_t,_q,' ',_ch,_i,_t,_a,_t,_q,0x01,0x00
pop_zakl:
.db ' ',bP,_o,_l,_o,_zh,_i,_t,_q,' ',_z,_a,_k,_l,_a,_d,_k,_u,0x01,0x00
high_inc:
.db ' ',bL,_i,_s,_t,_a,_t,_q,0x01,0x00
memory_erased:
.db ' ',bP,_a,_m,_ya,_t,_q,' ',_s,_t,_yo,_r,_t,_a,'!',0x00
list_kb:
.db ' ',bV,_v,_e,_d,_i,_t,_e,' ',_sh,_a,_g,' ',_p,_r,_o,_l,_i,_s,_t,_y,_v,_a,_n,_i,_ya,0x01,' ','(',_v,' ',_t,_y,_s,_ya,_ch,_a,_h,' ',_s,_i,_m,_v,_o,_l,_o,_v,')',':',0x00
address_set:
.db ' ',bA,_d,_r,_e,_s,' ',_v,_y,_s,_t,_a,_v,_l,_e,_n,0x00
memory_erased_process:
.db ' ',bS,_t,_i,_r,_a,_yu,'.','.','.',0x00
reciev_file:
.db ' ',bP,_r,_i,_yo,_m,' ',_i,_n,_f,_o,_r,_m,_a,_ts,_i,_i,0x00
file_recieved:
.db ' ',bI,_n,_f,_o,_r,_m,_a,_ts,_i,_ya,' ',_p,_r,_i,_n,_ya,_t,_a,'!',0x00
no_text:
.db ' ',bK,_n,_i,_g,_i,' ',_n,_e,' ',_b,_y,_l,_i,' ',_z,_a,_p,_i,_s,_a,_n,_y,'!',0x00
no_slot:
.db ' ',bN,_e,_t,' ',_m,_e,_s,_t,_a,' ',_v,' ',_t,_a,_b,_l,_i,_ts,_e,' ',_p,_o,_d,' ',_k,_n,_i,_g,_u,'!',0x01,' ',bK,_n,_i,_g,' ',_n,_e,' ',_b,_o,_l,_q,_sh,_e,' ','8','-',_m,_i,'!',0x00
type_header:
.db ' ',bV,_s,_t,_u,_ch,_i,_t,_e,' ',_z,_a,_g,_o,_l,_O,_v,_o,_k,'.',0x00
memory_full:
.db ' ',bP,_a,_m,_ya,_t,_q,' ',_z,_a,_p,_o,_l,_n,_e,_n,_a,' ',_p,_o,_l,_n,_o,_s,_t,_q,_yu,'!',0x00
no_bookmark:
.db ' ',bZ,_a,_k,_l,_a,_d,_k,_a,' ',_d,_l,_ya,' ',_ee,_t,_o,_j,' ',_k,_n,_i,_g,_i,' ',_o,_t,_s,_u,_t,_s,_t,_v,_u,_e,_t,'!',0x00
;-----------------------------------------------------------------------
menu:
;ret
clr count
choose_menu:
sbrs flag,2
rjmp current
ring_menu:
push count
rcall blank_screen
pop count
cpi count,2
breq start_pos_1
cpi count,3
breq start_pos_2
start_pos_0:
cpi count,0
brne end_pos_01
rcall show_cur
rjmp end_pos_02
end_pos_01:
rcall show_space
end_pos_02:
ldi hiz,(high(begin*2))
ldi loz,(low(begin*2))
rcall message_loop
start_pos_1:
cpi count,1
brne end_pos_11
rcall show_cur
rjmp end_pos_12
end_pos_11:
rcall show_space
end_pos_12: продолжение
--PAGE_BREAK--
ldi hiz,(high(zakladka*2))
ldi loz,(low(zakladka*2))
rcall message_loop
cpi count,2
brlo polling
start_pos_2:
cpi count,2
brne end_pos_21
rcall show_cur
rjmp end_pos_22
end_pos_21:
rcall show_space
end_pos_22:
ldi hiz,(high(computer*2))
ldi loz,(low(computer*2))
rcall message_loop
cpi count,2
breq polling
start_pos_3:
cpi count,3
brne end_pos_31
rcall show_cur
rjmp end_pos_32
end_pos_31:
rcall show_space
end_pos_32:
ldi hiz,(high(about*2))
ldi loz,(low(about*2))
rcall message_loop
polling:
rcall push_button
cpi key,2
breq add_count
cpi key,3
breq sub_count
ret
add_count:
cpi count,3
breq choose_menu
inc count
rjmp choose_menu
sub_count:
cpi count,0
breq choose_menu
dec count
rjmp choose_menu
; Меню, вылазиющее при чтении
current:
push count
rcall blank_screen
pop count
cpi count,2
breq start_cur_1
cpi count,3
breq start_cur_2
start_cur_0:
cpi count,0
brne end_cur_01
rcall show_cur
rjmp end_cur_02
end_cur_01:
rcall show_space
end_cur_02:
ldi hiz,(high(continue*2))
ldi loz,(low(continue*2))
rcall message_loop
start_cur_1:
cpi count,1
brne end_cur_11
rcall show_cur
rjmp end_cur_12
end_cur_11:
rcall show_space
end_cur_12:
ldi hiz,(high(zakladka*2))
ldi loz,(low(zakladka*2))
rcall message_loop
cpi count,2
brlo polling
start_cur_2:
cpi count,2
brne end_cur_21
rcall show_cur
rjmp end_cur_22
end_cur_21:
rcall show_space
end_cur_22:
ldi hiz,(high(pop_zakl*2))
ldi loz,(low(pop_zakl*2))
rcall message_loop
cpi count,2
breq polling
start_cur_3:
cpi count,3
brne end_cur_31
rcall show_cur
rjmp end_cur_32
end_cur_31:
rcall show_space
end_cur_32:
ldi hiz,(high(high_inc*2))
ldi loz,(low(high_inc*2))
rcall message_loop
rjmp polling
show_cur:
ldi hiz,(high(ret_cursor*2))
ldi loz,(low(ret_cursor*2))
rcall message_loop
ret
show_space:
ldi char,' '
rcall write_data
ret
;-----------------------------------------------------------------------
listing:
push work
rcall blank_screen
ldi count,1
ldi hiz,(high(list_kb*2))
ldi loz,(low(list_kb*2)) продолжение
--PAGE_BREAK--
rcall message_loop
select_kbyte:
ldi char, 0b11010111
rcall write_cmd
cpi count,0x0a
brsh big_gid
mov work,count
rcall dec_itoa
ldi char,' '
rcall write_data
rjmp after_show
big_gid:
ldi char,'1'
push count
rcall write_data
pop count
ldi char, 0b11011000
rcall write_cmd
mov work,count
subi work,0x0a
rcall dec_itoa
after_show:
rcall push_button
cpi key,3
breq inc_kbyte
cpi key,2
breq dec_kbyte
pop work
ret
inc_kbyte:
cpi count,16
breq select_kbyte
inc count
rjmp select_kbyte
dec_kbyte:
cpi count,1
breq select_kbyte
dec count
rjmp select_kbyte
dec_itoa:
ldi char,0x30
add char,work
push count
rcall write_data
pop count
ret
;-----------------------------------------------------------------------
module_address_set:
sbis usr,rxc
rjmp module_address_set
rcall RXcomplete
mov address2,data
wait1:
sbis usr,rxc
rjmp wait1
rcall RXcomplete
mov address1,data
wait2:
sbis usr,rxc
rjmp wait2
rcall RXcomplete
mov address0,data
ldi hiz,(high(address_set*2))
ldi loz,(low(address_set*2))
rcall message
ret
;-----------------------------------------------------------------------
get_address_text_begin:
push work
mov work,book
cpi work,0
brne address_calc
clr address2
ldi address1,0x02
ldi address0,0x08
rjmp end_get_address_text_begin
address_calc:
dec work;Тоестьdec book!
clr address1
ldi address0,0x08
;mov work,book
sbrc work,0
sbr address0,0x40
sbrc work,1
sbr address0,0x80
sbrc work,2
sbr address1,0x01
rcall read_flash
mov storeh,data
rcall inc_addr
rcall read_flash
mov storel,data
rcall inc_addr
rcall read_flash
mov address0,data
mov address1,storel
mov address2,storeh
end_get_address_text_begin:
pop work
ret
;-----------------------------------------------------------------------
choose_text:
push work
clr address0
clr address1
clr address2
rcall read_flash
cpi data,0x5e
breq calk_name
ldi hiz,(high(no_text*2))
ldi loz,(low(no_text*2))
rcall message
rcall push_button
rjmp choose_text_ret
calk_name:
inc address0; гораздо быстрее, чем подпрограммой inc_addr
rcall read_flash
cpi data,0x5e
breq calk_name продолжение
--PAGE_BREAK--
dec address0
mov all_book,address0
show_name:
clr address1
ldi address0,0x0b;смещение=8 + адрес=3
mov work,book
sbrc work,0
sbr address0,0x40
sbrc work,1
sbr address0,0x80
sbrc work,2
sbr address1,0x01
rcall blank_screen
ser count
mov work,all_book
cpi work,0
breq one_book
cp work,book
breq book_down
ldi char,0xda
rcall write_data
inc count
mov work,book
cpi work,0
breq one_book
book_down:
ldi char,0xd9
rcall write_data
inc count
one_book:
ldi char,' '
rcall write_char
ldi work,55
name_loop:
rcall read_flash
cpi data,0x07
breq end_show_name_ent
push work
mov char,data
rcall write_char
rcall inc_addr
pop work
dec work
brne name_loop
end_show_name_ent:
ldi char,' '
rcall write_char
ldi char,0x7e
rcall write_char
end_show_name:
rcall push_button
cpi key,3;тоестьвминус
breq minus_text
cpi key,2; то есть в плюс
breq plus_text
rjmp choose_text_ret
minus_text:
mov work,book
cpi work,0
breq end_show_name
dec book
clr address2
clr address1
mov address0,book
rcall read_flash
cpi data,0x5e
breq ret_minus_text
inc book
ret_minus_text:
rjmp show_name
plus_text:
mov work,book
cpi work,7
breq end_show_name
inc book
clr address2
clr address1
mov address0,book
rcall read_flash
cpi data,0x5e
breq ret_plus_text
dec book
ret_plus_text:
rjmp show_name
choose_text_ret:
pop work
ret
;-----------------------------------------------------------------------
sub_string:
subi address0,low(TSYM)
sbci address1,high(TSYM)
brsh ret_sub_string
dec address2
ret_sub_string:
ret
;-----------------------------------------------------------------------
data_polling:
clr work
out ddrb,work
sbi portd,WE
sbrc address2,3
rjmp ce2_pol
sbi porta,CE2;CE2
cbi porta,CE1;CE1
rjmp repeat_dp
ce2_pol:
sbi porta,CE1
cbi porta,CE2
repeat_dp:
cbi portd,OE
nop
nop
in data,pinb
sbi portd,OE
cbr data,0x7f
cbr char,0x7f
cp data,char
brne repeat_dp; Собссно, этоиесть#data polling по7-мубиту продолжение
--PAGE_BREAK--
ser work
out ddrb,work
sbi porta,CE1
sbi porta,CE2
ret
;-----------------------------------------------------------------------
ПриложениеБ
Файлrus.inc
.set _a=0x61
.set _b=0xb2
.set _v=0xb3
.set _g=0xb4
.set _d=0xe3
.set _e=0x65
.set _yo=0xb5
.set _zh=0xb6
.set _z=0xb7
.set _i=0xb8
.set _j=0xb9
.set _k=0xba
.set _l=0xbb
.set _m=0xbc
.set _n=0xbd
.set _o=0x6f
.set _p=0xbe
.set _r=0x70
.set _s=0x63
.set _t=0xbf
.set _u=0x79
.set _f=0xe4
.set _h=0x78
.set _ts=0xe5
.set _ch=0xc0
.set _sh=0xc1
.set _tch=0xe6
;.set _q=0xc2
.set _y=0xc3
.set _q=0xc4
.set _ee=0xc5
.set _yu=0xc6
.set _ya=0xc7
.set bA=0x41
.set bB=0xa0
.set bV=0x42
.set bG=0xa1
.set bD=0xe0
.set bE=0x45
.set bYO=0xa2
.set bZH=0xa3
.set bZ=0xa4
.set bI=0xa5
.set bJ=0xa6
.set bK=0x4b
.set bL=0xa7
.set bM=0x4d
.set bN=0x48
.set bO=0x4f
.set bP=0xa8
.set bR=0x50
.set bS=0x43
.set bT=0x54
.set bU=0xa9
.set bF=0xaa
.set bH=0x58
.set bTS=0xe1
.set bCH=0xab
.set bSH=0xac
.set bTCH=0xe2
;.set b&&=0xad
.set bY=0xae
;.set b##=0xc4
.set bEE=0xaf
.set bYU=0xb0
.set bYA=0xb1
Файл reader.hex
:020000020000FC
:10002000F8940FE50DBF02E00EBF0EEF01BB0BE829
:1000300002BB0FEF07BB08E10AB904E009B90FEFF3
:1000400004BB0FE10ABB002705BB08EF0BBB66270B
:10005000772788275FEF94E033240CD128E3DED0A4
:100060002CE0DCD026E0DAD021E0D8D02CB12CB1C5
:100070002CB1F6E0E2E0ABD26CD2E6D3503051F0D6
:10008000513039F0523091F1F6E0E0E6A0D261D281
:10009000F4CF52C09B7FA1D483D495D224D2D4D3A1
:1000A000F8D45030D1F35130A1F3523071F13BD438
:1000B0005F9389D25FEF89D1E12E212F7ED04BD182
:1000C0005F34C9F75F9145D2A33089F0A23009F0BF
:1000D000E6CF5F93550F550F750F30F48395803140
:1000E00018F06FEF7FEF8FE05F91E2CF54C05F9326
:1000F000550F550F751B28F48A951AF48827772712
:1001000066275F91D5CFEFD1FECF0F9300270FBBAE
:100110003CD0032D000F000F03950EBB8DBB38D0D4
:1001200034D003950EBB7DBB33D02FD003950EBBCF
:100130006DBB2ED00F91B1CF92FD4FD40F930027FE
:100140000FBB032D000F000F03950EBB1AD00F93AA
:100150000DB30F3F49F4F8E0E2E239D2FAD10F9142
:100160000F9192FD8ACF99CF802F0F9103950EBBEF
:1001700008D07DB303950EBB04D06DB30F919B7F68
:100180008CCFE199FECFE09A0895E199FECF0895D2
:10019000E29AE19A0895F6E0ECEB19D25F9BFECF6C
:1001A00012D286D0153E19F01E35E9F0F7CF5F9BCD
:1001B000FECF7ED002D0B1D0FACF0F9353955832F4
:1001C00039F0503551F027FD77D030D00F91089598
:1001D000F22E20EC23D02F2DF6CF5527F22E21E042
:1001E0001DD02F2DF0CF5F9BFECF62D0103149F094
:1001F000103251F0103359F0103459F0103561F0CD
:10020000F2CF9D7F87D1EFCF926084D1ECCF11D117
:10021000EACFD9D168D1E7CFB3D3E5CF0F930ED0D2
:100220009698959828BB1DD00F9108950F9306D0EE
:10023000969A959828BB15D00F9108952F93002773
:1002400007BB0FEF08BB9698959A0000949A0ED0C2
:1002500026B3949827FDF9CF0FEF07BB96982F91FF
:10026000089504D0949A02D0949808950FE10A95C5 продолжение
--PAGE_BREAK--
:10027000F1F708950FEF07BB9698959810D00FD01F
:100280000ED00DD00CD007D00AD009D004D007D0A2
:1002900006D001D004D000E308BBE3DF0895332784
:1002A000442703D03A95E9F708954A95F1F7089560
:1002B0002CB1E22E122F0895283A59F0283B59F01C
:1002C0002F73F2E0EAEDE20F08F4F395C895202DC4
:1002D000089522EA089525EB089541A042A1E04542
:1002E000A3A4A5A64BA74D484FA8504354A9AA586C
:1002F000E1ABACE2ADAE62AFB0B161B2B3B4E36555
:10030000B6B7B8B9BABBBCBD6FBE7063BF79E4788D
:10031000E5C0C1E6C2C3C4C5C6C75D9BFECFECB88D
:100320000895979B18BB65BB929A0000929875BB85
:100330000F930BB3087F082B83FD03C00061077F79
:1003400002C008600F7E0BBB0F910000979916B397
:10035000DB9ADC9A08959894639531F4739521F4AF
:100360008395803108F0916008959798939A0F9340
:1003700005E5602F702F882791FD88601AEAD1DF8C
:100380000AEA602F0AE2702F15E5CBDF05E5602F42
:10039000702F10E8C6DF05E5602F702F1AEAC1DF65
:1003A0000AEA602F0AE2702F15E5BBDF05E5602F32
:1003B000702F10E1B6DF979A0F91F02E0AE032D03D
:1003C0000A95E9F70F2D979A0895979A93980F93A6
:1003D000002707BBA6DF0FEF07BB0F91939A089585
:1003E000F62E172E282E9798939A0F9305E5602FD7
:1003F000702F88701AEA95DF0AEA602F0AE2702FE0
:1004000015E58FDF05E5602F702F10EA8ADF6F2D6D
:10041000712D822D122F85DF2F9340D32F910F91B5
:10042000979A08950F9307E43ADF0A95E9F70F9139
:10043000089500273324662777278827C6DF1E35CF
:1004400051F489DF3394032D0830C1F7F7E0E8EB6E
:10045000BED07FD008952EE5C3DFF7E0EEEEB7D033
:10046000882777276BE0032D00FD606401FD60683D
:1004700002FD716007E35F9BFECF1ADFB1DF6BDF28
:100480000A9519F02730B9F702C027E0A9DFF7E095
:10049000E6E79DD085D25F9BFECF0ADF273059F07B
:1004A000122F9EDF3ADF57DF90FFF5CFF8E0E4E050
:1004B0008ED04FD00895282F572E462E8827772785
:1004C00068E0032D00FD606401FD606802FD71605D
:1004D00087DF41DF252D84DF3EDF242D81DFF7E03C
:1004E000E8E875D0089571DFE12E212F66DE33DF55
:1004F0005F3409F0F8CF2DD0A13059F0A23099F334
:10050000605A704080F78A9572F7662777278827A8
:10051000EACF0895002755270FBB37DE01E00EBB59
:100520001FEF1DBB35DE31DE0C5F53955830B9F738
:10053000F7E0EAE64CD019DFF7E0E6E148D00895AD
:100540000F93AA27CD9B0FC0CE9B1DC0CF9B2BC066
:1005500008950F93AA270027CD9B05C0CE9B13C0FB
:10056000CF9B21C0F8CF0A95000021F0CD9BFBCF97
:10057000F2CF00270A95000019F0CD99FBCFF9CFF3
:100580000F91A1E008950A95000021F0CE9BFBCFCA
:10059000E2CF00270A95000019F0CE99FBCFF9CFE2
:1005A0000F91A2E008950A95000021F0CF9BFBCFA8
:1005B000D2CF00270A95000019F0CF99FBCFF9CFD1
:1005C0000F91A3E008955FEF21E028DE08950F93D7
:1005D0009860F9DFC895002D003079F0013019F4EA
:1005E00020EC1CDE06C0202FEF93FF931FDEFF914F
:1005F000EF91E39579F7F395EDCF93FD0F91977F09
:1006000008952043B863BF65BC612020224BBDB86C
:10061000B46FC065B922012042657063B8C720314C
:100620002E333700204861C061BFC420C0B8BF610D
:10063000BFC420BABDB8B47901007E0020E06F636A
:10064000BF61BFC420B761BABB61E3BA79010000E2
:1006500020506561BBB8B76FB361BD6F2E2E2E0001
:100660002052264420372DC720A46163BF61B361A7
:100670002E20436FB7E361BB2053656147756C6CF7
:100680002E01204563BBB820C0BF6F2C20BEB8C16F
:10069000B8BF6520BD61202273656167756C6C40D1
:1006A0006D61696C2E72752200002043B3C7B7617B
:1006B000BFC463C7206320AF424D010020A3E3798C
:1006C0002063B3C7B7B820BD612031313532303037
:1006D0000120A86FE3BABBC6C0B8BF6520BE6F706B
:1006E000BF2E000020A8706FE36FBBB6B8BFC42058
:1006F000C0B8BF61BFC4010020A86FBB6FB6B8BF50
:10070000C420B761BABB61E3BA79010020A7B8631E
:10071000BF61BFC4010020A861BCC7BFC42063BFC4
:10072000B570BF6121002042B365E3B8BF6520C149
:1007300061B420BE706FBBB863BFC3B361BDB8C73F
:10074000012028B320BFC363C7C061782063B8BC51
:10075000B36FBB6FB3293A002041E370656320B3E8
:10076000C363BF61B3BB65BD00002043BFB8706108
:10077000C62E2E2E000020A870B8B5BC20B8BDE44F
:100780006F70BC61E5B8B80020A5BDE46F70BC61B6
:10079000E5B8C720BE70B8BDC7BF61210000204BBF
:1007A000BDB8B4B820BD6520B2C3BBB820B761BE28
:1007B000B86361BDC3210000204865BF20BC6563EC
:1007C000BF6120B320BF61B2BBB8E56520BE6FE357
:1007D00020BABDB8B4792101204BBDB8B420BD65A5
:1007E00020B26FBBC4C16520382DBCB821002042A7
:1007F00063BF79C0B8BF6520B761B46FBB6FB36F1B
:10080000BA2E000020A861BCC7BFC420B761BE6F6C
:10081000BBBD65BD6120BE6FBBBD6F63BFC4C621DC
:10082000000020A461BABB61E3BA6120E3BBC7202A
:10083000C5BF6FB920BABDB8B4B8206FBF6379BF68
:1008400063BFB37965BF2100552792FF39C05F931D
:10085000BADE5F91523051F0533091F0503011F4C4
:100860005BD001C05DD0F6E0E4E2B4DE513011F4BB
:1008700053D001C055D0F6E0ECE3ACDE523090F03E
:10088000523011F449D001C04BD0F6E0EAEAA2DEC2
:10089000523041F0533011F43FD001C041D0F6E066 продолжение
--PAGE_BREAK--
:1008A000E0E598DE56DEA23019F0A33029F0089575
:1008B000533059F25395C9CF503039F25A95C5CFBC
:1008C0005F9381DE5F91523051F0533091F05030A0
:1008D00011F422D001C024D0F6E0E4EE7BDE5130EA
:1008E00011F41AD001C01CD0F6E0ECE373DE5230F4
:1008F000C8F2523011F410D001C012D0F6E0E8EF87
:1009000069DE523079F2533011F406D001C008D0BC
:10091000F7E0ECE05FDEC6CFF6E0EAE35BDE0895E9
:1009200020E284DC08950F934EDE51E0F7E0E6E22A
:1009300051DE27ED73DC5A3028F4052F1BD020E25E
:1009400075DC09C021E35F9371DC5F9128ED66DC03
:10095000052F0A500FD0FDDDA33021F0A23031F079
:100960000F910895503129F35395E3CF513009F396
:100970005A95DFCF20E3200F5F9358DC5F910895F5
:100980005F9BFECF95DC812F5F9BFECF91DC712FAB
:100990005F9BFECF8DDC612FF7E0E8E518DE089560
:1009A0000F93032D003021F4882772E068E013C014
:1009B0000A95772768E000FD606401FD606802FD2C
:1009C000716003DD212EC7DC00DD112EC4DCFDDCEF
:1009D000612F712D822D0F9108950F936627772730
:1009E0008827F3DC1E3529F0F7E0EEE9F0DDB1DD14
:1009F0004EC06395EADC1E35E1F36A95662E7727D3
:100A00006BE0032D00FD606401FD606802FD716014
:100A1000DADD5FEF062D003059F0031531F02AEDD5
:100A200005DC5395032D003019F029EDFFDB5395BC
:100A300020E2C3DB07E3C9DC173039F00F93212F25
:100A4000BCDB89DC0F910A95B1F720E2B6DB2EE71B
:100A5000B4DB7FDDA33019F0A23069F018C0032D9C
:100A60000030B9F33A9488277727632DAEDC1E3522
:100A700009F03394C4CF032D073059F333948827FA
:100A80007727632DA2DC1E3509F03A94B8CF0F9179
:100A900008956055704008F48A950895002707BBB3
:100AA000979A83FD03C0DC9ADB9802C0DB9ADC983E
:100AB00093980000000016B3939A107820781217CC
:0C0AC000B9F70FEF07BBDB9ADC9A089532
:00000001FF
Приложение В
Файл reader.cpp
#include
#include
#include
#include
#define OUT_REG BASE
#define IN_REG BASE
#define CONTROL BASE+3
#define STATUS BASE+5
#define LOW_DIV BASE
#define HIGH_DIV BASE+1
#define INT_REG BASE+1
#define DIVISOR 0x80
unsigned long BASE;
FILE *file3;
int code;
void Help();
void Erase();
void Write(char *wr_file);
int o_sym(char symbol);
void Inv(char insym);
char i_sym();
void main(int argc, char *argv[])
{
FILE *file1;
char *param;
clrscr();
if ((file1 = fopen(«reader.ini», «rt»))
== NULL)
{
printf(«Cannot open file \»reader.ini\" !\n");
return;
}
do {
fscanf(file1,"%s\n",param);
}while(strcmp(param,"[PORT]")!=0);
fscanf(file1,"%s\n",param);
printf("\nConnect device to %s",param);
if(param[3]=='1')
BASE=0x3f8;
if(param[3]=='2')
BASE=0x2f8;
fsetpos(file1,0);
do {
fscanf(file1,"%s\n",param);
}while(strcmp(param,"[CODE]")!=0);
fscanf(file1,"%s\n",param);
printf("\nCode= %s",param);
if(!strcmp(param,«DOS»)) code=1;
else code=0;
fclose(file1);
//Initial COM-port block
outportb(CONTROL,DIVISOR);
outportb(LOW_DIV,1);
outportb(HIGH_DIV,0);
outportb(CONTROL,0x07);//8 bit+2stop+noparity
outportb(INT_REG,0);//Disable interrupt
inportb(IN_REG);
inportb(IN_REG);//Zeroing read
//End of initial block
o_sym (0x5e);//Switch to operation mode
if(argc
{
Help();
return;
}
switch(*argv[1])
{
case 'e':
Erase();
break;
case 'w': продолжение
--PAGE_BREAK--
Write(argv[2]);
break;
default:
Help();
break;
}
}
void Help()
{
printf ("\nUse \«reader.exe e\» for erase books, \«reader.exe w \» for write ");
}
void Erase()
{
printf ("\nAll books in the memory will be erased.\nWait message on the Readerbook's screen");
o_sym(0x10);//first IC
o_sym(0x20);//second IC
}
void Write(char *wr_file)
{
FILE *file1;
char author[40],title[40],header[81],rec_sym;
int i=0,flag;
char win[256]={
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47
,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63
,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79
,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95
,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111
,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127
,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207
,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223
,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239
,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207
,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223
,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
,168,184,242,243,244,245,246,247,248,249,250,251,252,253,254,255
};
if ((file1 = fopen(wr_file, «rt»))== NULL)
{
printf(«Cannot open file \»%s\" !\n",wr_file);
return;
}
if ((file3 = fopen(«reciev.txt», «wt»))== NULL)
{
printf(«Cannot open file \»%s\" !\n",wr_file);
return;
}
printf("\n");
for(i=0;i
putchar(fgetc(file1));
printf(" ...(etc)");
fsetpos(file1,0);
o_sym (0x30);
printf("\nEnter author's name\n");
gets(author);
printf(«Enter title\n»);
gets(title);
strcpy(header,author);
strcat(header," \"");
strcat(header,title);
strcat(header,"\"");
printf("\nHeader: %s",header);
i=0;
while(header[i]!='\0')
{
o_sym(win[(int)header[i]&0xff]);
i++;
}
o_sym(0x07);
printf("\nWriting file \"%s\"...",wr_file);
//flag: 01 — detect space
// -01 — skip symbol
while(!(feof(file1)))
{
rec_sym=fgetc(file1);
if(feof(file1)) break;
if(code==1)
rec_sym=win[(int)rec_sym&0xff];
if((rec_sym==' ')||(rec_sym=='-')||(rec_sym=='\n'))
{
if(rec_sym=='-')
{
rec_sym=fgetc(file1);
if(feof(file1)) break;
if(code==1) rec_sym=(char)win[(int)rec_sym&0xff];
if(rec_sym!='\n')
{
Inv('-');
flag=0;
}
else
flag=-1;
if(rec_sym==' ')
flag=1;
}
if(rec_sym=='\n')
rec_sym=' ';
if((flag==1)||(flag==-1))//rec_sym==' '
flag=-1;
else
flag=1;
}
else
flag=0;
if(flag!=-1)
Inv(rec_sym);
}
o_sym (0x07);
fclose(file1);fclose(file3); продолжение
--PAGE_BREAK--
printf("\nFile writing successfully complete");
}
int o_sym(char symbol)
{
long timeout;
timeout=clock();
if(timeout==-1)
printf("\nTime not available");
//printf("\nTimeout=%d",timeout);
do {
if((clock()-timeout)>1)
{
printf("\nWarning!Timeout!");
return -1;
}
}while((inportb(STATUS)&0x20)==0);
outportb(OUT_REG,symbol);
return 0;
}
char i_sym()
{
long timeout;
int errcode;
timeout=clock();
do{
if((clock()-timeout)>1000)
{
printf("\nTimeout. The symbol may be lost!");
return 0;
}
errcode=inportb(STATUS);
}while((errcode&0x01)==0);
return inportb(IN_REG);
}
void Inv(char insym)
{
char invalidate;
fputc(insym,file3);
o_sym(insym);
do
invalidate=i_sym();
while((invalidate!=insym)&&(invalidate!=0));//waiting confirm
}
ПриложениеГ
Файлreader.ini
[PORT]
COM2
[CODE]
DOS
Приложение Д
Схема электрическая принципиальная устройства для чтения электронных книг
Приложение Е
Расчет стоимости комплектующих устройства для чтения электронных книг
/>