РефератыИнформатикаОсОсобенности разработки микропроцессорной системы и устройства для чтения электронных книг

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

Содержание


Перечень условных обозначений, символов, единиц, сокращений и терминов


Введение


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- Основные этапы разработки контроллера


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


После разработки структуры аппаратных и программных средств дальнейшая работа над контроллером может быть распараллелена. Разработка аппаратных средств включает в себя разработку общей принципиальной схемы, разводку топологии плат, монтаж макета и его автономную отладку. На этапе ввода принципиальной схемы и разработки топологии используются, как правило, распространенные системы проектирования типа "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 изображены функциональные узлы:


УВИ – устройство ввода информации;


БУ – блок управления;


КР – кварцевый резонатор;


МК – микроконтроллер;


РС- регистр сдвига;


ПУ – преобразователь уровней;


РСЧ – регулятор скорости чтения;


ЖКИ- жидкокристаллические индикаторы буквенно-цифровые.


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


Входы


а. 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), то есть принципиально не может встретиться в текстовых файлах.


Файлы программ находятся в приложениях А-З:


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 Мощность компьютера, принтера Квт/ч 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.


Коэффициент коррекции программы р – увеличение объема работ за счет внесения изменений в программу лежит в границах от 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 – Калькуляция технологических расходов на создание ПО

































Наименование Расходы, грн.
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 недели/год).


Гт - количество рабочих часов в неделю (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)


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


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


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


Собщ. = 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 - Нормы подачи свежего воздуха в помещения, где расположены компьютеры














Характеристика помещения Объемный расход подаваемого в помещение свежего воздуха, м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 «Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работ»).


Таблица 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


Значение 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, http://www.atmel.com/dyn/resources/prod_documents/doc7597.pdf


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


Приложение А


Файл 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 FilesAtmelAVR StudioAppnotes8515def.inc"


.include "d:seagullDepotAVRreaderrus.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


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


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


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


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


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))


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


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


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:


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))


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


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-му биту


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


: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


: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 <stdio.h>


#include <conio.h>


#include <string.h>


#include <time.h>


#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,"%sn",param);


}while(strcmp(param,"[PORT]")!=0);


fscanf(file1,"%sn",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,"%sn",param);


}while(strcmp(param,"[CODE]")!=0);


fscanf(file1,"%sn",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<2)


{


Help();


return;


}


switch(*argv[1])


{


case 'e':


Erase();


break;


case 'w':


Write(argv[2]);


break;


default:


Help();


break;


}


}


void Help()


{


printf ("nUse "reader.exe e" for erase books, "reader.exe w <file>" for write <file>");


}


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<=256;i++)


putchar(fgetc(file1));


printf(" ...(etc)");


fsetpos(file1,0);


o_sym (0x30);


printf("nEnter author's namen");


gets(author);


printf("Enter titlen");


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);


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


Приложение Д


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



Приложение Е


Расчет стоимости комплектующих устройства для чтения электронных книг


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

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

Слов:13819
Символов:161804
Размер:316.02 Кб.