Программа для автомата подачи звонков в учебном учреждении

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    883,73 Кб
  • Опубликовано:
    2014-12-08
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программа для автомата подачи звонков в учебном учреждении

Введение

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

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

Для достижения данной цели нами был разработан прибор на основе микроконтроллера AtMega8A-16PU и микросхемы часов реального времени DS1307. Прибор интуитивно прост в управлении и не прихотлив в использовании (внешний вид на рис.1.).

Разработка проекта длилась на протяжении четырех месяцев. В течение этого времени было освоено программирование микроконтроллеров семейства AVR на языке Си и закреплены навыки создания печатных плат и монтажа электронных элементов.

Рис. 1. Внешний вид устройства

Корпус устройства приобретён в магазине «Чип и Дип».

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

Описание устройства

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

Габариты блока управления, не более - 156х68х44мм;

Напряжение питания - от 9 до 12В;

Количество вариантов суточных программ (количество звонков) - 16;

Длительность звонка - 3 сек;

Календарь до 2100 года с компенсацией високосных годов;

Принципиальная схема

Рис 2. Принципиальная схема устройства

Список элементов

HG1

Lcd дисплей Мэлт 2YLG

R1

10 кOм

R2, R3

4,7 кОм

R4

330 Ом

R5, R6

470 Ом

С1

100 мкФ

С2, С3

0,1 мкФ

С4

47 нФ

С5, С6

100 нФ

VD1

1N4004

ZQ1

32 768 кГц

Т1

ВТ 139

IC1

DS1307

IC2

AtMega8A-16PU

IC3

МОС3041

VR1

LM7805


Принцип работы устройства

При разработке нашего автомата было решено применить микроконтроллер AtMega8A-16PU.

Применение микроконтроллеров AtMega8A-16PU приводит к резкому уменьшению размеров устройства потребляемой мощности и количества используемых элементов. При разработке устройств на микроконтроллерах разработчику электронной схемы необходимо выбрать частоту тактового генератора для поставленной задачи и следить за тем, чтобы максимальная нагрузка на порты ввода вывода не превышала допустимую. Кристаллы AtMega8A-16PU могут работать с четырьмя типами встроенных генераторов (1,2,4 и 8МГц). Если необходимо использовать другой генератор (не 1MГц), то в программе необходимо предусмотреть загрузку регистра OSCCAL соответствующим калибровочным байтом. Кристаллы AVR могут также тактироваться и от внешних источников (1 - 16МГц). Исходя из этих данных, для оптимальной работы микроконтроллера, нами была выбрана частота 1 МГц.

Так же для точной работы часов была использована микросхема «Часов реального времени» DS1307 (описание смотрите в приложении). Обмен данным с микроконтроллером производится по шине I2C.

Интерфейс I2CC - двухпроводный последовательный интерфейс, разработанный корпорацией Philips. В Первоначальном техническом требовании к интерфейсу максимальная скорость передачи данных составляла 100 Кбит/с. Однако позже появились стандартные более скоростные режимы работы шины I2C (400Кбит/с и 1Мбит/с). К одной шине I2C могут быть подключены устройства с различными скоростями доступа, если скорость передачи данных будет удовлетворять требованиям самого низкоскоростного устройства.

Протокол передачи данных по шине I2C разработан таким образом, чтобы гарантировать надежный качественный прием/передачу данных. При передаче данных одно устройство является "Ведущим", которое инициирует передачу данных и формирует сигналы синхронизации. Другое устройство "Ведомое", которое может начать передачу данных только по команде ведущего шины. Модуль SSP микроконтроллеров Р1С16СХХХ полностью поддерживает режим ведомого I2C, за исключением поддержки адреса общего вызова (режим ведущего реализуется программно) Модуль MSSP аппаратно поддерживает режим ведущего/ведомого I2C, адрес общего вызова и скорость обмена данными до 1Мбит/с. Скорость передачи данных 1Мбит/с используют некоторые микросхемы последовательной EEPROM памяти.

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

Ведущий передатчик - ведомый приемник.

Ведомый передатчик- ведущий приемник.

В обоих случаях ведущий формирует тактовый сигнал.поддерживает обмен данными по протоколу I2C по двухпроводной двунаправленной шине. Устройство, которое передаёт данные на шину, является передатчиком, а устройство, принимающее данные, - приёмником. Устройство, управляющее передачей данных, называется ведущим. Устройство, которым управляет ведущий, называется ведомым. Ведущее устройство генерирует синхроимпульсы (serial clock - SCL), управляет доступом к шине и генерирует условия START и STOP. DS1307 работает на шине как ведомое устройство. Типовая конфигурация шины с использованием протокола I2C показана на рис. 3.

Рис. 3. Типовая конфигурация двухпроводной шины

На рис. 4, 5 и 6 подробно показан процесс передачи данных по двухпроводной шине.

Основные принципы передачи данных по шине I2C:

) Передача данных может быть инициирована только когда шина свободна.

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

Таким образом, возможны следующие состояния шины:

Шина не занята - на линиях SDA и SCL сохраняется высокий уровень.

Начало передачи данных (условие START) - изменение состояния линии SDA с высокого на низкий, в то время как на линии SCL высокий уровень.

Окончание передачи данных (условие STOP) - изменение состояния линии SDA с низкого на высокий, в то время как на линии SCL высокий уровень.

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

Каждая передача данных инициируется условием START и завершается условием STOP. Число байтов данных, передаваемых между условиями START и STOP, не ограничено и определяется ведущим устройством. Информация передаётся побайтово, и каждый байт приёмник подтверждает девятым битом (бит подтверждения - ACK). В спецификации двухпроводного интерфейса определены обычный режим (с тактовой частотой 100 кГц) и быстрый режим (с тактовой частотой 400 кГц). DS1307 работает только в обычном режиме (100 кГц).

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

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

* - бит чтения/записи или бит направления

Рис. 4. Передача данных по двухпроводной последовательной шине

В зависимости от состояния бита возможны два типа передачи данных:

) Передача данных от ведущего передатчика ведомому приёмнику.

Первый байт, передаваемый ведущим, - это адрес ведомого. Далее следует некоторое количество байтов данных. Ведомый возвращает подтверждающий бит после каждого принятого байта. Данные передаются, начиная со старшего бита (most significant bit - MSB).

) Данные передаются от ведомого передатчика ведущему приёмнику.

Первый байт (адрес ведомого) передаётся ведущим. Ведомый возвращает подтверждающий бит. За ним следует передаваемое ведомым некоторое количество байтов данных. Ведущий возвращает подтверждающий бит после всех принимаемых байтов кроме последнего байта. В конце последнего принятого байта возвращается "неподтверждение". Ведущее устройство генерирует все последовательные синхроимпульсы, а также условия START и STOP. Передача заканчивается условием STOP или повтором условия START. Поскольку повторение условия START также является и началом следующей последовательной передачи, шина не освобождается. Данные передаются, начиная со старшего бита.может работать в следующих двух режимах:

) Режим ведомого приёмника (режим записи DS1307).

Последовательные данные принимаются по SDA и синхронизируются по SCL. После каждого принятого байта передаётся бит подтверждения. Условия START и STOP распознаются как начало и конец последовательной передачи. Распознавание адреса выполняется аппаратно после приёма адреса ведомого и бита направления (см. рис. 5).

Байт адреса - это первый байт, принятый после генерации ведущим условия начала. Он содержит 7 битов адреса DS1307, который имеет значение 1101000, и следующий за ним бит направления (), который для записи равен 0. После приёма и декодирования адресного байта DS1307 выдаёт на линию SDA подтверждение, после чего ведущий передаёт в устройство адрес регистра. Это установит регистровый указатель. Затем ведущий начинает передачу байтов данных, каждый из которых будет подтверждаться DS1307. Чтобы завершить запись данных, ведущий генерирует условие окончания.

Рис. 5. Запись данных - режим ведомого приёмника

2) Режим ведомого передатчика (режим чтения DS1307).

Первый байт принимается и обрабатывается так же, как и в режиме ведомого приёмника. Однако в этом режиме бит направления будет указывать, что направление передачи инвертировано. DS1307 передаёт последовательные данные по линии SDA пока на линию SCL поступают последовательные синхроимпульсы. Условия START и STOP распознаются в начале и в конце последовательной передачи (см. рис. 6).

Байт адреса - первый байт, принимаемый после стартового условия, генерируется ведущим. Байт адреса состоит из 7-битного адреса DS1307, который равен 1101000, и следующего за ним бита направления передачи (), который для чтения равен 1. После приёма и декодирования байта адреса, устройство выдаёт подтверждение на линию SDA. Затем DS1307 начинает передавать данные, начиная с указанного адреса, находящегося в регистровом указателе. Если перед началом чтения указатель регистра не записан, то первый читаемый адрес - это адрес, который был сохранён в нём последним. DS1307 должен принять "неподтверждение" для окончания чтения.

Рис. 6. Чтение данных - режим ведомого передатчика

Удобства применения шины I2C очевидны - малое количество соединительных линий и высокая скорость обмена, простота аппаратной реализации линии связи. Наиболее широко поддерживает шину I2C, конечно же, фирма Philips, производящая множество ИС различной сложности с управлением по I2C. В первую очередь, можно выделить микросхемы энергонезависимой памяти (EEPROM) серии 24Схх в 8-ми выводных корпусах, фактически ставшие промышленным стандартом. Из широко распространенных ИС можно выделить: микросхемы часов PCF8583, параллельный порт PCF8574, 4-х канальный 8-ми разрядный АЦП PCF8591. Существует множество модификаций этих ИС и более специализированные контроллеры.

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

Разработка, изготовление печатной платы

С помощью программы Sprint-Layout по принципиальной электрической схеме нами была разработана печатная плата автомата.

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

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

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

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

После этого производят травление платы. Травят плату обычно в растворе персульфата аммония. Нормальной концентрацией раствора можно считать 20…50%. Разводят, примерно, 500 г порошка персульфата аммония в горячей кипяченой воде до получения общего объема раствора, равного 1 л. Раствор переливается в обычную ванночку (например использовать фотографический кювет). Продолжительность травления - 10…60 мин, она зависит от температуры, концентрации раствора, толщины медной фольги. Травление проводят под вытяжкой или в хорошо проветриваемом помещении.

Промытую плату просушивают, залуживают, рассверливают отверстия под выводы радиоэлементов (при этом используются сверла диаметром 0,6…0,8мм.)

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

Рис. 7. Схема печатной платы устройства

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

Разработка блок схемы программы

По сбросу программа стартует с адреса 0000h.

Далее происходит следующее:

Происходит настройка портов ввода-вывода.

Включаются встроенные подтягивающие резисторы

Выводится приветствие

Начинается индикация текущего времени и даты.

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

Код программы автомат звонок микроконтроллер

/** Программа для автомата подачи звонков в учебном учреждении

Разработчики: Гудков Владислав, Соленов Андрей

МОГК 2012 Группа 4АСУ/09 */

#include <avr/io.h>

#include <util/delay.h>

#include "lcd.h"

#include "ds1307.h"

#define MENU (PINC&(1 << PC2))==0 && PINC&(1 << PC0) && PINC&(1 << PC1) && PINC&(1 << PC3)

#define OK (PINC&(1 << PC3))==0 && PINC&(1 << PC0) && PINC&(1 << PC1) && PINC&(1 << PC2)

#define HOUR (PINC&(1 << PC0))==0 && PINC&(1 << PC1) && PINC&(1 << PC2) && PINC&(1 << PC3)

#define MIN (PINC&(1 << PC1))==0 && PINC&(1 << PC0) && PINC&(1 << PC2) && PINC&(1 << PC3)

int main(void)

{

// Инициализация портов

_delay_ms(100);

DDRC = 0x00;= 0xFF;|=(1 << PB2);|=(0 << PB2);_init(); // Инициализация LCD

I2CInit(); // Инициализация шины I2C

// Запускаем ход часов

uint8_t temp;Read(0x00,&temp);&= ~(1 << 7); // обнуляем 7 битWrite(0x00,temp);

// Инициализация и объявление переменныхchar hour_za, minute_za, second_start, second_stop;char hour_zb, minute_zb;char hour_zc, minute_zc;char hour_zd, minute_zd;char hour_ze, minute_ze;char hour_zf, minute_zf;char hour_zj, minute_zj;char hour_zh, minute_zh;char hour_zi, minute_zi;char hour_zg, minute_zg;char hour_zk, minute_zk;char hour_zl, minute_zl;char hour_zm, minute_zm;char hour_zn, minute_zn;char hour_zo, minute_zo;char hour_zp, minute_zp;char v, i, menu, ok, k, a, c, e, zvon_vkl, f;=0;=0;=0;=0;=0;=0;=1;=1;_vkl=1;=1;_start = 0;_stop = 3;_za = 8;_za = 15;_zb = 9;_zb = 00;_zc = 9;_zc = 5;_zd = 9;_zd = 50;_ze = 10;_ze = 5;_zf = 10;_zf = 50;_zj = 10;_zj = 55;_zh = 11;_zh = 40;_zi = 12;_zi = 15;_zg = 13;_zg = 0;_zk = 13;_zk = 5;_zl = 13;_zl = 50;_zm = 14;_zm = 00;_zn = 14;_zn = 45;_zo = 14;_zo = 50;_zp = 15;_zp = 35;

// Ввывод приветствия(i=0; i<1; i++)

{_com(0x01);

_delay_ms(100);_string(0x85, "SolGud");

_delay_ms(1500);_com(0x01);

_delay_ms(100);_string(0x86, "2012");

_delay_ms(1500);_com(0x01);

_delay_ms(100);_string(0x86, "MOЎK");

_delay_ms(1500);_com(0x01);

_delay_ms(100);

}(1)

{ char hour, minute, second, day, date, month, years, temp;

// Читаем данные и преобразуем из BCD в двоичную системуRead(0x00,&temp); // Чтение регистра секунд

second = (((temp & 0xF0) >> 4)*10)+(temp & 0x0F);

DS1307Read(0x01,&temp); // Чтение регистра минут

minute = (((temp & 0xF0) >> 4)*10)+(temp & 0x0F);

DS1307Read(0x02,&temp); // Чтение регистра часов

hour = (((temp & 0xF0) >> 4)*10)+(temp & 0x0F);

DS1307Read(0x03,&temp); // Чтение регистра дней

day = (temp & 0x0F);Read(0x04,&temp); // Чтение регистра даты= (((temp & 0xF0) >> 4)*10)+(temp & 0x0F);

DS1307Read(0x05,&temp); // Чтение регистра месяца

month = (((temp & 0xF0) >> 4)*10)+(temp & 0x0F);

DS1307Read(0x06,&temp); // Чтение регистра года

years = (((temp & 0xF0) >> 4)*10)+(temp & 0x0F);

if(v==1)

{_com(0x08); // полное выключение дисплея_com(0x01); // очистка дисплея

_delay_us(100);_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим=0;

}

// Вывод часов и календаря_string(0xC1, " - -20 / "); // дата_com(0xC1); (date, 2); // Выводим на экран дату

if(month == 1) lcd_string(0xC4, "ЗЅі");if (month == 2) lcd_string(0xC4, "дeі"); if (month == 3) lcd_string(0xC4, "јap"); if (month == 4) lcd_string(0xC4, "aѕp"); if (month == 5) lcd_string(0xC4, "јa№"); if (month == 6) lcd_string(0xC4, "ёЖЅ"); if (month == 7) lcd_string(0xC4, "ёЖ»"); if (month == 8) lcd_string(0xC4, "aіґ"); if (month == 9) lcd_string(0xC4, "ceЅ"); if (month == 10) lcd_string(0xC4, "oєї"); if (month == 11) lcd_string(0xC4, "ЅoЗ");

else lcd_string(0xC4, "гeє"); // Выводим на экран месяц_com(0xCA); (years, 2); // Выводим на экран год

if(day == 1) lcd_string(0xCD, "BC");if (day == 2) lcd_string(0xCD, "ЁH"); if (day == 3) lcd_string(0xCD, "BT"); if (day == 4) lcd_string(0xCD, "CP"); if (day == 5) lcd_string(0xCD, "«T"); if (day == 6) lcd_string(0xCD, "ЁT");

else lcd_string(0xCD, "C "); // Выводим на экран день недели

lcd_string(0x84, " : : ");_com(0x84);

LCDWriteInt(hour, 2); // Выводим на экран часы_com(0x87); (minute, 2); // Выводим на экран минуты_com(0x8A); (second, 2); // Выводим на экран секунды_com(0x8E);(zvon_vkl == 1) lcd_data(0xED); // Выводим на экран индикатор включения/выключения звонка(MENU) // если кнопка "меню" нажата

{((PINC & (1 << PC2))==0){}=1;

}

// Вход в меню(menu)

{1: // Настройка времени(1)

{((v==0)||(k==0)||(a==1))

{_com(0x08); // полное выключение дисплея_com(0x01); // очистка дисплея

_delay_us(100);_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим

v=1;=1;=0;

}_string(0x86, "MEH°");_string(0xC1, "Hacїp. Аacoі >");

if(OK) // Если кнопка "ок" нажата

{((PINC & (1 << PC3))==0){}=1;

}(MIN) // Если нажата кнопка "Минуты+"

{((PINC & (1 << PC1))==0){} // Ждем отпускания кнопки

menu=2;;

}(ok==1)

{(k==1)

{_com(0x08); // полное выключение дисплея_com(0x01); // очистка дисплея

_delay_us(100);_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим

k=0;

}_string(0x81, "HACTPO¦KA «ACOB");_string(0xC5, " : ");_com(0xC5);

LCDWriteInt(hour, 2); // Выводим на экран часы_com(0xC8); (minute, 2); // Выводим на экран минуты(HOUR) // Если нажата кнопка "Часы+"

{((PINC & (1 << PC0))==0){} // Ждем отпускания кнопки++; // Увеличиваем часы на 1(hour > 23) hour = 0;

// Преобразуем из двоичной системы в BCD и записываем в DS1307

uint8_t temp;= ((hour/10) << 4)|(hour%10);Write(0x02, temp);

_delay_ms(100);

}(MIN) // Если нажата кнопка "Минуты+"

{((PINC & (1 << PC1))==0){} // Ждем отпускания кнопки++; // Увеличиваем минуты на 1(minute > 59) minute = 0;

// Преобразуем из двоичной системы в BCD и записываем в DS1307

uint8_t temp;= ((minute/10) << 4)|(minute%10);Write(0x01, temp);

_delay_ms(100);

}

/**Выход из настроек часов **/(OK) // Если кнопка "ок" нажата, то выход

{((PINC & (1 << PC3))==0){}=0;=1;

}(ok==0)

{break;}

}

/** Выход из меню **/(MENU) // если кнопка "меню" нажата

{((PINC & (1 << PC2))==0){}=0;;

}(menu=0){break;}

};2://Настройка даты(1)

{((a==0)||(v==0))

{_com(0x08); // полное выключение дисплея

lcd_com(0x01); // очистка дисплея

_delay_us(100);

lcd_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим

v=1;=1;

}_string(0x86, "MEH°");_string(0xC1, "< Hacїp. гaїГ >");

if(HOUR) // Если нажата кнопка "Часы+"

{((PINC & (1 << PC0))==0){} // Ждем отпускания кнопки=1;;

}(MIN) // Если нажата кнопка "Минуты+"

{((PINC & (1 << PC1))==0){} // Ждем отпускания кнопки=3;;

}(OK) // Если кнопка "ок" нажата

{((PINC & (1 << PC3))==0){}=1;

}(ok==1)

{(a==1)

{_com(0x08); // полное выключение дисплея_com(0x01); // очистка дисплея

_delay_us(100);_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим

a=0;

}_string(0x80, "Hacїpo№єa Аёc»a");_string(0xC4, " / / ");_com(0xC4);

LCDWriteInt(date, 2); // Выводим на экран дату

if(month == 1) lcd_string(0xC7, "ЗЅі");if (month == 2) lcd_string(0xC7, "дeі"); if (month == 3) lcd_string(0xC7, "јap"); if (month == 4) lcd_string(0xC7, "aѕp"); if (month == 5) lcd_string(0xC7, "јa№"); if (month == 6) lcd_string(0xC7, "ёЖЅ"); if (month == 7) lcd_string(0xC7, "ёЖ»"); if (month == 8) lcd_string(0xC7, "aіґ"); if (month == 9) lcd_string(0xC7, "ceЅ"); if (month == 10) lcd_string(0xC7, "oєї"); if (month == 11) lcd_string(0xC7, "ЅoЗ");

else lcd_string(0xC7, "гeє"); // Выводим на экран день месяц_com(0xCB); (years, 2); // Выводим на экран год

//настройка даты(MENU) // если кнопка "меню" нажата

{((PINC & (1 << PC2))==0){}++;(date > 31) date=1;_t temp;= ((date/10) << 4)|(date%10);Write(0x04, temp);

_delay_ms(100);

}(HOUR) // Если нажата кнопка "Часы+"

{((PINC & (1 << PC0))==0){} // Ждем отпускания кнопки++; // Увеличиваем часы на 1(month > 12) month = 1;

// Преобразуем из двоичной системы в BCD и записываем в DS1307

uint8_t temp;= ((month/10) << 4)|(month%10);Write(0x05, temp);

_delay_ms(100);

}

(MIN) // Если нажата кнопка "Минуты+"

{((PINC & (1 << PC1))==0){} // Ждем отпускания кнопки++; // Увеличиваем минуты на 1(years > 99) years = 0;

// Преобразуем из двоичной системы в BCD и записываем в DS1307

uint8_t temp;= ((years/10) << 4)|(years%10);Write(0x06, temp);

_delay_ms(100);

}

/**Переход в настройку дня недели **/(OK) // Если кнопка "ок" нажата, то выход

{((PINC & (1 << PC3))==0){}=2;

}(ok==2)

{break;}

}(ok==2)

{(v==1)

{_com(0x08); // полное выключение дисплея_com(0x01); // очистка дисплея

_delay_us(100);_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим

v=0;

}_string(0x82, "аeЅД Ѕeгe»ё");(day == 1) lcd_string(0xC7, "BC");if (day == 2) lcd_string(0xC7, "ЁH"); if (day == 3) lcd_string(0xC7, "BT"); if (day == 4) lcd_string(0xC7, "CP"); if (day == 5) lcd_string(0xC7, "«T"); if (day == 6) lcd_string(0xC7, "ЁT");

else lcd_string(0xC7, "C "); // Выводим на экран день недели(HOUR) // Если нажата кнопка "Часы+"

{((PINC & (1 << PC0))==0){} // Ждем отпускания кнопки++; // Увеличиваем день на 1(day > 7) day = 1;

// Преобразуем из двоичной системы в BCD и записываем в DS1307

uint8_t temp;= (day%10);Write(0x03, temp);

_delay_ms(100);

}

/**выход из настроек даты и дня недели**/(OK) // Если кнопка "ок" нажата, то выход

{((PINC & (1 << PC3))==0){}=0;

}(ok==0)

{break;}

}

/** Выход из меню **/(MENU) // если кнопка "меню" нажата

{((PINC & (1 << PC2))==0){}=0;;

}

};3: // Настройка вкл/выкл звонков

while(1)

{((c==1)||(e==0)||(v==0))

{_com(0x08); // полное выключение дисплея_com(0x01); // очистка дисплея

_delay_us(100);_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим

c=0;=1;=1;

}_string(0x86, "MEH°");_string(0xC0, "< Bє». ·іoЅєoі >");

if(MENU) // если кнопка "меню" нажата

{((PINC & (1 << PC2))==0){}=0;;

}

(HOUR) // Если нажата кнопка "Часы+"

{((PINC & (1 << PC0))==0){} // Ждем отпускания кнопки=2;;

}(MIN) // Если нажата кнопка "Минуты+"

{((PINC & (1 << PC1))==0){} // Ждем отпускания кнопки=4;;

}(OK) //Если кнопка "ок" нажата

{((PINC & (1 << PC3))==0){}=1;

}

(ok==1)

{(e==1)

{_com(0x08); // полное выключение дисплея_com(0x01); // очистка дисплея

_delay_us(100);_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим

e=0;=1;

}_string(0x82, "Bє». ·іoЅєoі");(zvon_vkl == 1) lcd_string(0xC2, "< Bє»ЖАeЅГ >");if (zvon_vkl == 0) lcd_string(0xC2, "< BГє»ЖАeЅГ >");

if(HOUR) // Если нажата кнопка "Часы+"

{((PINC & (1 << PC0))==0){} // Ждем отпускания кнопки_vkl++; // Увеличиваем часы на 1

if(zvon_vkl > 1) zvon_vkl = 0;

_delay_ms(100);

}(OK) //Если кнопка "ок" нажата

{((PINC & (1 << PC3))==0){}=0;

}(ok==0)

{break;}

}

/** Выход из меню **/(MENU) // если кнопка "меню" нажата

{((PINC & (1 << PC2))==0){}=0;;

}

};4: // Информация о разработчиках(1)

{((a==0)||(f==1)||(e==1))

{_com(0x08); // полное выключение дисплея_com(0x01); // очистка дисплея

_delay_us(100);_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим

a=1;=0;=0;=1;

}_string(0x86, "MEH°");_string(0xC1, "< Pa·paІoїАёєё");

if(MENU) // если кнопка "меню" нажата

{((PINC & (1 << PC2))==0){}=0;;

}(HOUR) // Если нажата кнопка "Часы+"

{((PINC & (1 << PC0))==0){} // Ждем отпускания кнопки=3;;

}(OK) //Если кнопка "ок" нажата

{((PINC & (1 << PC3))==0){}=1;

}(ok==1)

{(f==0)

{_com(0x08); // полное выключение дисплея_com(0x01); // очистка дисплея

_delay_us(100);_com(0x06); // сдвиг курсора вправо_com(0x0C); // включение дисплея, курсор не видим

f=1;

}_string(0x84, "4 AC©/09");_string(0xC1, "Ўyгєoі Co»µЅoі");

if(OK) // если кнопка "ок" нажата

{((PINC & (1 << PC3))==0){}=0;

}(ok==0)

{break;}

}

/** Выход из меню **/(MENU) // если кнопка "меню" нажата

{((PINC & (1 << PC2))==0){}=0;;

}

};: ;

}

// Проверка когда звонить

// 1 урок((hour==hour_za) && (minute==minute_za) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_za) && (minute==minute_za) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// 5 минут((hour==hour_zb) && (minute==minute_zb) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zb) && (minute==minute_zb) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// 2 урок((hour==hour_zc) && (minute==minute_zc) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zc) && (minute==minute_zc) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

// перемена((hour==hour_zd) && (minute==minute_zd) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zd) && (minute==minute_zd) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// 3 урок((hour==hour_ze) && (minute==minute_ze) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_ze) && (minute==minute_ze) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

//5 минут((hour==hour_zf) && (minute==minute_zf) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zf) && (minute==minute_zf) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// 4 урок((hour==hour_zj) && (minute==minute_zj) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zj) && (minute==minute_zj) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// перемена((hour==hour_zh) && (minute==minute_zh) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zh) && (minute==minute_zh) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// 5 урок((hour==hour_zi) && (minute==minute_zi) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zi) && (minute==minute_zi) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// 5 минут((hour==hour_zg) && (minute==minute_zg) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zg) && (minute==minute_zg) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// 6 урок((hour==hour_zk) && (minute==minute_zk) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zk) && (minute==minute_zk) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// перемена((hour==hour_zl) && (minute==minute_zl) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zl) && (minute==minute_zl) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// 7 урок((hour==hour_zm) && (minute==minute_zm) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zm) && (minute==minute_zm) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

//5 минут((hour==hour_zn) && (minute==minute_zn) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zn) && (minute==minute_zn) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// 8 урок((hour==hour_zo) && (minute==minute_zo) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zo) && (minute==minute_zo) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

// окончание((hour==hour_zp) && (minute==minute_zp) && (second == second_start) && (day!=1) && (day!=7) && (zvon_vkl==1))

{|= _BV(PB2);

}((hour==hour_zp) && (minute==minute_zp) && (second == second_stop) && (day!=1) && (day!=7) && (zvon_vkl==1))

{&= ~_BV(PB2);

}

}

}

Заключение

Результаты, достигнутые при выполнении курсовой работы:

Проанализирована радиотехническая литература.

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

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

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

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

Данный автомат подачи звонков может программно дорабатываться и совершенствоваться.

Список информационных источников

Синдеев Ю.Г. Электротехника с основами электроники. Ростов-на Дону. 2010.

Шмаков С.Б. Энциклопедия радиолюбителя. Санкт-Петербург. 2010.

Подбельский В.В., Фомин С.С. Курс программирования на языке СИ. Москва. 2012

Керниган Б., Ритчи Д. Язык программирования СИ. Москва. 2012

Приложение А

Микросхемы часов реального времени (RTC)

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

Существует множество микросхем RTC. Это такие как DS1994 и DS1904 выпускаемые фирмой Dallas Semiconductor. Их отличительной особенностью является способ представления времени. Сами часы выполнены как двоичный счётчик с разрешением 1/256 с. Минуты, часы, дни, годы вычисляются из числа секунд, прошедших от условно выбранной даты.

Также есть RTC компании ST, содержащие минимум необходимого для непрерывной выдачи в систему реального времени. К таким устройствам относятся микросхемы M41T0 и M41T80. Они содержат полный набор счетчиков времени и учитывают особенности високосных лет. К дополнительным возможностям этих устройств относятся программируемый сигнал аварии с функцией обработки прерываний, программируемый выходной меандр и отдельный вывод сигнала с частотой 32 кГц, используемый как эталонный входной сигнал для тактовых генераторов других микросхем. Имея такие возможности, данные микросхемы покрывают потребности приложений в значительной части потребительского рынка.

Мы же с своей работе выбираем RTC фирмы Dallas Semiconductor, упомянутой ранее, DS1307.

Характеристики

часы реального времени (RTC) отсчитывают секунды, минуты, часы, дату месяца, месяц, день недели и год с компенсацией високосного года, действительной до 2100 года;

56-байтовое энергонезависимое ОЗУ с питанием от батареи для хранения пользовательских данных;

двухпроводной последовательный интерфейс;

программируемый выходной сигнал с прямоугольными импульсами (для тактирования внешних устройств);

автоматическое обнаружение падения напряжение и схема переключения на батарею;

потребление менее 500 нА в режиме батарейной поддержки при работающем тактовом генераторе;

промышленный диапазон температур: от - 40 °C до + 85 °C;

микросхема производится в 8-выводных корпусах DIP и SOIC.

Классификация- 8-выводный DIP (300 миллидюймов - 7.62 мм)Z - 8-выводный SOIC (150 миллидюймов - 3.81 мм)N - 8-выводный DIP (промышленный)ZN - 8-выводный SOIC (промышленный)

Расположение выводов


DS1307 8-выводный DIP (300 миллидюймов)


DS1307 8-выводный SOIC (150 миллидюймов)

Назначение выводов- первичный источник питания;, X2 - подключение 32.768 кГц кварцевого резонатора;- вход батареи +3 В;- общий минус;- последовательные данные;- последовательные синхроимпульсы;/OUT - выходной сигнал с прямоугольными импульсами.

Описание

Часы реального времени с последовательным интерфейсом DS1307 - это малопотребляющие полные двоично-десятичные часы-календарь, включающие 56 байтов энергонезависимой статической ОЗУ. Адреса и данные передаются последовательно по двухпроводной двунаправленной шине. Часы-календарь отсчитывают секунды, минуты, часы, день, дату, месяц и год. Последняя дата месяца автоматически корректируется для месяцев с количеством дней меньше 31, включая коррекцию високосного года. Часы работают как в 24-часовом, так и в 12-часовом режимах с индикатором AM/PM. DS1307 имеет встроенную схему наблюдения за питанием, которая обнаруживает перебои питания и автоматически переключается на питание от батареи. Для измерения времени в качестве задающего генератора используется кварцевый резонатор частотой 32.768 кГц.

Типовая схема включения

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

Если VCC падает ниже 1.25 * VBAT, DS1307 прерывает процесс доступа и сбрасывает счётчик адреса, причем в это время внешние сигналы не воспринимаются (чтобы предотвратить запись ошибочных данных).

Если VCC падает ниже VBAT, DS1307 переключается в низкоточный режим батарейной поддержки.

При включении питания DS1307 переключается от батареи к Vcc, когда значение Vcc превышает VBAT + 0.2 В. Входящие сигналы начинают восприниматься тогда, когда Vcc превышает 1.25 * VBAT.

Блок-схема на рисунке 8 показывает основные элементы RTC с последовательным интерфейсом.

Рис. 8. Блок-схема DS1307

Описание выводов, GND - на эти выводы подается питание.- это вход +5 В. Когда питающее напряжение выше 1.25 * VBAT, устройство полностью доступно, и можно выполнять чтение и запись данных. Когда к устройству подключена батарея на 3 В, и VCC ниже, чем 1.25 * VBAT, чтение и запись запрещены, однако функция отсчёта времени продолжает работать. Как только VCC падает ниже VBAT, ОЗУ и RTC переключаются на батарейное питание VBAT.- вход для любой стандартной трёхвольтовой литиевой батареи или другого источника энергии. Для нормальной работы DS1307 необходимо, чтобы напряжение батареи было в диапазоне 2.0... 3.5 В. Литиевая батарея с ёмкостью 48 мА/ч или более при отсутствии питания будет поддерживать DS1307 в течение более 10 лет при температуре 25°C.(Serial Clock Input - вход последовательных синхроимпульсов) - используется для синхронизации данных по последовательному интерфейсу.(Serial Data Input/Output - вход/выход последовательных данных) - вывод входа/выхода для двухпроводного последовательного интерфейса. Вывод SDA - с открытым стоком и требует внешнего подтягивающего резистора./OUT (Square Wave/Output Driver - сигнал с прямоугольными импульсами) - когда включен, т.е. бит SQWE установлен в 1, вывод SQW/OUT выдаёт прямоугольные импульсы с одной из четырёх частот (1 Гц, 4 кГц, 8 кГц, 32 кГц). Вывод SQW/OUT - с открытым стоком и требует внешнего подтягивающего резистора. SQW/OUT будет работать как при питании от VCC, так и при питании от VBAT., X2 - выводы для стандартного кварцевого резонатора с частотой 32.768 кГц.и карта адресации памяти

Карта адресов для RTC и регистров ОЗУ представлена на рисунке 9. Регистры RTC расположены в ячейках адресов от 00h до 07h. Регистры ОЗУ расположены в ячейках адресов от 08h до 3Fh. В процессе многобайтного доступа, когда адресный указатель достигает 3Fh (конец пространства ОЗУ), он перемещается на ячейку 00h - начало пространства RTC.

Рис. 9. Карта адресов DS1307

Часы и календарь

Информация от часов и календаря получается чтением соответствующих байтов регистра. Регистры RTC показаны на рисунке 10. Время и календарь устанавливаются или инициализируются записью соответствующих байтов регистра. Содержимое регистров времени и календаря имеет двоично-десятичный формат. Бит 7 регистра 0 - это бит останова часов (clock halt - CH). Когда этот бит установлен в 1, тактовый генератор выключен. Когда сброшен в 0, - тактовый генератор включен.

Имейте в виду, что при включении питания начальное состояние всех регистров не определено. Поэтому необходимо принудительно включать тактовый генератор (бит CH = 0) во время начальной инициализации.может работать и в 12-часовом, и в 24-часовом режимах. Бит 6 регистра часов отвечает за выбор 12- или 24-часового режима. Когда он установлен в 1, выбран 12-часовой режим. В этом режиме бит 5 - это бит AM/PM, при этом высокий логический уровень означает PM. В 24-часовом режиме бит 5 - это бит второго десятка часов (20 - 23 часа).

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

Рис. 10. Регистры хронометра DS1307

Управляющий регистр

Управляющий регистр используется для управления работой вывода SQW/OUT. Биты управляющего регистра представлены в таблице 1.

Таблица 1. Биты управляющего регистра

БИТ 7

БИТ 6

БИТ 5

БИТ 4

БИТ 3

БИТ 2

БИТ 1

БИТ 0

OUT

0

0

SQWE

0

0

RS1

RS0

(Output control - управление выходом) - этот бит управляет логическим уровнем на выводе SQW/OUT, когда выход сигнала с прямоугольными импульсами отключен. Если SQWE = 0, то логический уровень на выводе SQW/OUT равен 1, если OUT = 1, и 0, если OUT = 0.(Square Wave Enable - включение сигнала с прямоугольными импульсами) - когда этот бит установлен в 1, включается генерация прямоугольных импульсов. Их частота зависит от значения битов RS0 и RS1. (Если частота выходного сигнала установлена в 1Гц, регистры часов обновляются по заднему фронту этих импульсов).(Rate Select - выбор частоты) - эти биты управляют частотой прямоугольных импульсов, когда бит SQWE=1. В таблице 2 приведены частоты, которые можно выбрать с помощью битов RS.

Таблица 2. Частота выхода SQW

RS1

RS0

Частота

0

0

1 Гц

0

1

4.096 кГц

1

0

8.192 кГц

1

1

32.768 кГц



Приложение Б

ATmega8, ATmega8L

-разрядные микроконтроллеры с 8 Кбайтами внутрисистемно программируемой Flash памяти

Отличительные особенности:

-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением

Прогрессивная RISC архитектура

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

8-разрядных рабочих регистра общего назначения Полностью статическая работа

Приближающаяся к 16 MIPS (при тактовой частоте 16 МГц) производительность

Встроенный 2-цикловый перемножитель

Энергонезависимая память программ и данных

8 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash)

Обеспечивает 1000 циклов стирания/записи

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

Обеспечен режим одновременного чтения/записи (Read-While-Write)

байт EEPROM

Обеспечивает 100000 циклов стирания/записи

Кбайт встроенной SRAM

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

Встроенная периферия

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

Один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения

Счетчик реального времени с отдельным генератором

Три канала PWM

-канальный аналого-цифровой преобразователь (в корпусах TQFP и MLF)

каналов с 10-разрядной точностью

канала с 8-разрядной точностью

-канальный аналого-цифровой преобразователь (в корпусе PDIP)

канала с 10-разрядной точностью

канала с 8-разрядной точностью

Байт-ориентированный 2-проводный последовательный интерфейс

Программируемый последовательный USART

Последовательный интерфейс SPI (ведущий/ведомый)

Программируемый сторожевой таймер с отдельным встроенным генератором

Встроенный аналоговый компаратор

Специальные микроконтроллерные функции

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

Встроенный калиброванный RC-генератор

Внутренние и внешние источники прерываний

Пять режимов пониженного потребления: Idle, Power-save, Power-down, Standby и снижения шумов ADC

Выводы I/O и корпуса

программируемые линии ввода/вывода

-выводной корпус PDIP, 32-выводной корпус TQFP и 32-выводной корпус MLF

Рабочие напряжения

,7 - 5,5 В (ATmega8L)

,5 - 5,5 В (ATmega8)

Рабочая частота

- 8 МГц (ATmega8L)

- 16 МГц (ATmega8)

Блок-схема:

Рис. 11. Блок-схема микроконтроллера AtMega8

Рис. 12. Расположение выводов в различных корпусах МК AtMega8

Приложение В

Вам представлен RS-232(COM) программатор совместимый с PonyProg и имеющий 10 пиновый ICSP разъём STKxxx.

Характеристики:

Подключение к ПК через RS-232 (через переходники USB - RS-232 не работает!)

Не требует внешнего питания

Использует Atmel-овский 2x5 пиновый ICSP разъём

Габариты 45x30 мм (1.7x1.2") + 20 см (8") кабель

Программируемые микросхемы:S1200, AT90S2313, AT90S2323,S2343, AT90S4414, AT90S4434,S8515, AT90S8535, AT90S2323,S2343, AT90S2333, AT90S4433,S4434, AT90S8535, AT90S8534,, ATmega161, ATmega163,, ATmega128, ATmega8,, ATmega64, ATtiny12 and ATtiny15

Схема программатора

Рис. 13. Принципиальная схема внутрисхемного программатора

Рис. 14. Распиновка разъёма программатора

Рис.15. Схема платы с панелькой для AtMega8

Похожие работы на - Программа для автомата подачи звонков в учебном учреждении

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!