Проектирование устройства и программного обеспечения домофона

Функционально-модульная структура программного обеспечения контроллера домофона. Электронная схема электронного замка, модуля микрофона и динамика. Выбор комбинированного источника питания. Разработка программного модуля. Программа управления домофоном.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 29.03.2017
Размер файла 484,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • 1. Функциональная спецификация
  • 2. Проектирование системы
  • 3. Проектирование аппаратной части устройства
  • 4. Проектирование программной части
  • 5. Разработка заданного программного модуля
  • 6. Руководство программиста
  • Заключение
  • Литература
  • Введение
  • Домофон - это устройство, предназначенное для связи входящего в помещение и лица находящегося в помещении. Домофон является своеобразным устройством контроля и управления входной двери. Устанавливаются они, как правило, на входе в помещение, на частную территорию. Состоит из переговорной панели (устанавливается снаружи) и переговорной трубки, (внутри). В самом простом варианте домофон передает аудиоинформацию на расстояние. Видеодомофон, передает кроме аудиоинформации - видеоизображение, от встроенной в переговорную панель видеокамеры, либо от выносной видеокамеры. При помощи домофона можно управлять электрическим замком, и соответственно дистанционно открывать дверь. В простом варианте обеспечивается связь между двумя абонентами, в более сложных - это уже возможность соединения от двух до 1000 абонентов и управление различными замками (многоквартирные домофоны).
  • 1. Функциональная спецификация
  • 1. Список функций выполняемых системой:
  • 1. Вызов квартирного абонента с помощью нажатия соответствующих клавиш на клавиатуре установленной на панели устройства.
  • 2. Обеспечить голосовую связь между посетителем и жильцом с помощью микрофона и динамика.
  • 3. Дистанционное открывание двери из квартиры жильца путем нажатия соответствующей кнопки на устройстве находящемся внутри квартиры жильца.
  • 4. Отпирание двери из нутрии подъезда путем нажатия кнопки установленной для этой цели
  • 5. Отпирание двери путем отпирания встроенного замка, использующего в качестве ключей так называемые таблетки.
  • 6. Контроль за вводом символов с помощью встроенного ЖКИ дисплея.
  • Таблица 1
  • Векторы

    Дверь открыта

    Дверь закрыта

    X1

    +

    -

    X2

    -

    +

    • 2. Описание интерфейса между системой и пользователем:

    1. Клавиатура, содержащая 12 кнопок для ввода нужного номера квартиры.

    2. ЖКИ дисплей для отображения вводимых символов.

    3. Динамик и микрофон для обеспечения голосовой связи

    4. Замок с ключом “Таблетка” для открывания двери.

    2. Проектирование системы

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

    Входы:

    1. Модуль кнопок

    2. Модуль микрофона

    3. Модуль электронного замка

    Выходы:

    1. Модуль динамика

    2. Модуль ЖКИ дисплея

    Функции:

    1. Модуль защиты от зависания контроллера (охранный таймер)

    Стандартные модули системы:

    1. Модуль контроллера

    2. Модуль сброса и синхронизации

    3. Модуль питания

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

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

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

    2. Модуль обслуживания охранного таймера. Если результат проверки одной из процедур модуля проверки указывает на то, что произошло нажатие кнопки, должна быть вызвана процедура для последовательного установления выходных состояний. Дополнительно к этим модулям необходимо добавить, так называемые, стандартные модули: главный модуль main и модуль инициализации системы. Модули, которые могут быть реализованы как аппаратным, так и программным способом:

    1. Модуль таймера, для формирования временных интервалов;

    2. Модуль подавления дребезга контактов кнопок.

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

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

    Функционально-модульная структура программной части системы приведена на рис. 2. Каждый из модулей размещается на одном из уровней нисходящей иерархии.

    Рис. 1 - Структурная схема

    Рис. 2. Функционально-модульная структура ПО контроллера домофона.

    3. Проектирование аппаратной части устройства

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

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

    Рис. 3 - Схема модуля кнопок

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

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

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

    Модуль индикатора в нашем случае это знакосентизирующий индикатор, который используется для отображения номера вводимого посетителем с помощью кнопок на передней панели устройства. Для этих целей подходит любой однострочный индикатор с количеством символов от 8 до 16. Так как для домофона наличие 2-х и более многострочных индикаторов ведет к замаграждению передней панели устройства и бесполезного их использования в виду малого количества вводимой информации.

    Для модуля микроконтроллера необходимо определить требования на его архитектуру, в соответствии с заданием и структурной схемой. Так, в нашем случае микроконтроллер должен содержать таймер, контроллер обработки внешних прерываний, желательно наличие охранного таймера (чтобы не реализовать его в виде отдельной микросхемы). Все современные микроконтроллеры имеют встроенный тактовый генератор с внешней времязадающей цепью. Использование варианта с полностью встроенным тактовым генератором также привлекательно, однако номенклатура таких устройств ограничена. На основании анализа структурной схемы получим, что количество внешних линий ввода/вывода должно быть не менее 32 (14 - управления ЖКИ, 7 - выводов управления клавиатурой, 3 - вывода управления замком, 3 - вывода управления динамиком и микрофоном, 2 - вывода под переговорное устройство).

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

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

    Модуль питания в нашем случае преобразует переменное напряжение ~220В в напряжение питания для схемы контроллера и в напряжение питание схемы электронного замка. Остановимся на комбинированном источнике питания.

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

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

    Внешняя панелька для iButton подключается к порту микроконтроллера через разъем XP2 и элементы защиты VD4, R3, VD5 и VD6. Подтягивающий резистор R4 выбран согласно спецификации однопроводной шины. Параллельно внешней панельке подключена еще и внутренняя панелька XS1, которая используется для программирования ключей. Кнопка открывания двери подключена к порту микроконтроллера через разъем XP1 и такие же элементы защиты, как и для iButton. Исполнительным устройством замка является электромагнит, подключенный через терминал XT1. Электомагнитом управляет ключ VT3, в качестве которого используется мощный МОП-транзистор типа IRF540. Диод VD7 защищает от выбросов самоиндукции. Ключом VT3 управляет транзистор VT2, который инвертирует сигнал, поступающий с порта микроконтроллера и обеспечивает управляющие уровни 0/12В на затворе VT3. Инверсия нужна для того, чтобы исполнительное устройство не срабатывало во время сброса микроконтроллера, когда на порту присутствует уровень логической единицы. 12-вольтовые управляющие уровни позволили применить обычный МОП-транзистор вместо более дефицитного низкопорогового. Для индикации открытия замка используется светодиод, который управляется тем же портом, что и электромагнит, но через транзисторный ключ VT1. Светодиод подключается через тот же разъем, что и iButton.

    Рис 4 - Электронная схема электронного замка

    В качестве модуля микрофона и динамика выберем схему, которая показана на рис. 5. Образован микрофонным усилителем на транзисторах VT10, VT11 и электронным ключом на транзисторах VT12, VT13, подключающим головку ВА2 к линии связи.

    Индикатор выберем PC 1601-L фирмы PowerTip. Данный индикатор является одно строчным , шестнадцати символьным. ЖКИ имеет 14 выводов, 8 - под данные, один для сигнала чтения/записи, сигнала разрешения, питания и др. Этот индикатор показан на рис. 6.

    На основании анализа требований, предъявляемых к микроконтроллеру, и учитывая, что в задании на разработку нет рекомендации по его выбору, остановимся на микроконтроллере AVR - АТMega32. Его характеристики: 40-выводной корпус - 32 программируемых линий ввода/вывода с выходными буферами, обеспечивающими 40-мА втекающий ток; 8-разрядный и 16-разрядный таймеры/счетчики; два внешних и четырнадцать внутренних источников сигнала прерывания; программируемый сторожевой таймер и др.

    Рис 5 - Электронная схема модуля микрофона и динамика

    Рис. 6 - PC 1601-L фирмы PowerTip

    Схема синхронизации наиболее просто реализуется путем использования внутреннего тактового генератора с подключенным внешним кварцевым резонатором. 1МГц

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

    АТmega32 имеет встроенную схему сброса по включению питания, которая вырабатывает импульс при достижении питания уровня ?2В. Соответственно, при снижении напряжения питания ниже 2В также произойдет сброс микроконтроллера. Во многих ответственных приложениях работа устройства при напряжении ниже 4,2В не гарантируется. В этих случаях используют внешние схемы сброса, порог срабатывания которых имеет требуемый порог срабатывания. Зададимся уровнем срабатывания схемы сброса в 4,4В.

    Выберем супервизор фирмы Dallas - DS 1813-5, удовлетворяющий указанным условиям. Типовая схема его включения приведена на рис. 7.

    Рис.7 - Типовая схема подключения супервизора питания.

    В качестве источника питания, как отмечалось выше, выберем комбинированный источник питания, изображенный на рис. 8. Входное напряжение равно ~220В, выходное +5В и +12В.

    Рис. 8 - Комбинированный источник питания

    Напряжение, которое должен обеспечить модуль, зависит от мощности потребления контроллера домофона. Определим приблизительно мощность потребления контроллером домофона. Так, ток потребления микросхем составляет:

    1. Атmega32 - 4,5Ма на частоте 1 МГц

    2. DS 1813-5 - 40Ма

    3. PC 1601-L - 2,5Ма

    4. Электронный замок

    5. Переговорное устройство - 40Ма

    Функциональная окончательная схема устройства представлена на рис. 9. По данной функциональной схеме построение принципиальной схемы не представляет трудностей, так как определены все ее элементы.

    Рис. 9 - Схема питания устройства

    Рис. 10 - Функциональная схема

    4. Проектирование программной части

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

    В соответствии с функционально модульной структурой процедура MAIN будет иметь вид:

    MAIN()

    {

    ИНИЦИАЛИЗАЦИЯ СИСТЕМЫ();

    РАЗРЕШЕНИЕ ОБЩЕГО ПРЕРЫВАНИЯ();

    while (1)

    {

    ПРОВЕРКА ();

    СБРОС WDT();

    }

    }

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

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

    ИНИЦИАЛИЗАЦИЯ()

    {

    Установка портов на ввод/вывод и задание выходного вектора;

    Настройка постоянного времени охранного таймера;

    Настройка системы прерывания, разрешение отдельных прерываний;

    }

    Модуль разрешения общего прерывания разрешает системе реагировать на прерывания. Для контроллера это внешнее прерывание от кнопки и внутреннее от таймера. Разрешение индивидуальных прерываний выполнено в модуле инициализация.

    Модуль проверки проверяет состояние флага занятости индикатора. Если флаг не установлен, то запускается одна из процедур в выходном модуле. Эти процедуры содержатся в выходном модуле, такие как запись команды, запись данных и вывод информации на ЖКИ.

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

    ПРОВЕРКА()

    {

    Если флаг занятости не установлен, то выполнить

    {

    ВЫХОДНОЙ (параметры);

    }

    }

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

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

    ВХОДНОЙ()

    {

    Посылка команды

    Вывод данных

    }

    Выходной модуль устанавливает выходной вектор на выходной порт микроконтроллера. Данные сигналы управляют ЖКИ т.е. выводят информацию на индикатор.

    ВЫХОДНОЙ

    (параметры)

    {

    /* начало процедуры*/

    Установка на порту выходного вектора;

    }

    /* возврат

    5. Разработка заданного программного модуля

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

    Для реализации выберем модуль ВХОДНОЙ. Представим его в графическом виде при помощи блок-схема алгоритма.

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

    Рис. 11

    Рис. 12

    6. Руководство программиста

    Программа управления домофоном, написанная на языке С. Программа содержит следующие процедуры: процедура MAIN которая описана ниже, процедуру инициализации - INIT(), процедуру ожидания готовности индикатора - WaitReady(), процедуру записи команды - WriteComm(), процедуру вывода символов на экран - WriteData(). В программе также используется охранный таймер, сброс которого осуществляется библиотечной процедурой _WDR() в теле основной программы.

    Пояснения к программе приведены в самом листинге.

    #include <io2313.h> //файл описания регистров АТ90S2313

    #include <ina90.h> //файл процедур семейства АТ90Sxxxx

    #define DispBASE 0x010000/* 1 - указание компилятору на расположение индикатора во внешней

    памяти данных, DispBASE его базовый адрес =0000 */

    #define ReadStateAddr (*(char *) (DispBASE+0x800)) /*адрес регистра состояния=0200h*/ #define WriteCommAddr (*(char *) (DispBASE+0x000)) /* адрес регистра команд =0000h*/

    #define ReadDataAddr (*(char *) (DispBASE+0xC00)) /* адрес регистра данных по чтению =0300h*/

    #define WriteDataAddr (*(char *) (DispBASE+0x400))/* адрес регистра данных по записи =0100h*/

    char DispPos; /* переменная - текущая позиция маркера*/

    /***********************************************************/

    void main(void)

    {

    INIT(); //инициализация контроллера

    _SEI(); // Общее разрешение прерываний

    // Бесконечный цикл

    while (1)

    {

    _WDR(); // Сброс охранного таймера

    }

    }

    /************************************************************/

    void INIT(void) // инициализация контроллера

    {

    TCCR1A = 0x00;

    TCCR1B = 0x14;

    TIMSK |= Bit(MskTIE1); // Таймер 1 - разрешение прерываний

    GIMSK |= Bit(MskInt0); // INT0 - разрешение прерывания

    WDTCR = 0x0F; // Настройка WATCHDOG

    // Настройка портов

    DDRА = 0xFF; //11111111 - РА0...РА7-на выход - данные на ЖКИ

    PORTD = 0x00; //все на вход и в третье состояние

    }

    /************************************************************/

    /* Ожидание готовности дисплея */

    void WaitReady(void)

    {

    while (ReadStateAddr & 0x80); /* Ожидать сброса бита занятости */

    }

    /***********************************************************/

    /* Запись команды в дисплей */

    void WriteComm(char Cmd)

    {

    WaitReady();

    WriteCommAddr = Cmd; /* Запись команды */

    }

    /*Таблица кодировки выводимых символов из таблицы */

    code const char Table[128] = (0x41,0xA0,0x42,0xA1,0xE0,0x45,0xA3,0xA4, 0xA5,0xA6,0x4B,0xA7,0x4D,0x48,0x4F,0xA8,

    0x50,0x43,0x54,0xA9,0xAA,0x58,0xE1,0xAB, 0xAC,0xE2,0xAD,0xAE,0x62,0xAF,0xB0,0xB1,

    0x61,0xB2,0xB3,0xB4,0xE3,0x65,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0x6F,0x6E,

    0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,

    0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,

    0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,

    0x70,0x63,0xBF,0x79,0xE4,0x78,0xE5,0xC0, 0xC1,0xE6,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,

    0xA2,0xB5,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,

    0xEA,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF);

    /************************************************************/

    /* Вывод символов */

    void WriteData(char Sym) /* Sym - выводимый символ в коде ASCII */

    {

    if (Sym < 0x20) /* Служебные символы */

    {

    switch (Sym)

    {

    case 0x0C: /* Очистка дисплея */

    WriteComm(0x01); /* Команда очистки дисплея */

    DispPos=0; /* Обнулить позицию курсора */

    break;

    case 0x0D: /* Возврат каретки */

    DispPos &= 0x10; /* Обнулить позицию в строке */

    WriteComm((DispPos<<2)|0x80); /* Установить курсор в начало строки */

    break;

    }

    }

    else /* Обычные символы */

    {

    if (Sym >0x7F) /* Вторая половина ASCII таблицы ? */

    Sym = Table[Sym & 0x7F]; /* Перекодировать через таблицу */

    WaitReady(); /* Ожидать готовности */

    WriteDataAddr = Sym; /* Вывести символ на экран */

    DispPos++; DispPos &= 0xF; /* Коррекция положения курсора - диапазон его

    значений 0…15, т.е. переход из 15 позиции в 0*/

    }

    else /* Цифры */

    {

    if (Sym >0x30 && Dat <0x39) /* Код символа входит в диапазон ? */

    WaitReady(); /* Ожидать готовности */

    WriteDataAddr = Sym; /* Вывести символ на экран */

    DispPos++; DispPos &= 0xF; /* Коррекция положения курсора - диапазон

    его значений 0…15, т.е. переход из 15 позиции в 0 */

    }

    }

    Заключение

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

    контроллер домофон программный

    Литература

    1. Мясников В.И. Микропроцессорные системы. Учебное пособие по курсовому проектированию.- Йошкар-Ола: МарГТУ, 2003.

    2. Предко М. Руководство по микроконтроллерам. В 2-х томах. - М.: Постмаркет, 2001.

    3. Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы “ATMEL”. М.: “Додэка-XXI” 2002 .

    Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.