Проектирование автомата подачи звонков. Курсовая работа (т). Информатика, ВТ, телекоммуникации.

👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!
Похожие работы на - Проектирование автомата подачи звонков
Скачать Скачать документ
Информация о работе Информация о работе
Нужна качественная работа без плагиата?
Не нашел материал для своей работы?
Поможем написать качественную работу Без плагиата!
1. Описание разработанного устройства
Разработанный автомат подачи звонков удовлетворяет всем
требованиям, предъявленным в задании. Настройка автомата производится с помощью
трех кнопок: «вверх», «вниз» и «ввод». При этом вся необходимая информация
отображается на шестипозиционном семнадцати сегментном LED - индикаторе. Автомат
позволяет записывать в память до 30 звонков, имеет высокоточные часы, учитывает
день недели (в воскресенье подача звонков не производится), а также имеет
резервную систему питания для часов, что позволяет выключать его в ночное время
без потери настроек и установок времени.
Питание устройства осуществляется от источника постоянного
напряжения +12В. При этом полное напряжение питания подается через реле на звонок,
а управляющая схема питается от напряжения +5В, подаваемого от стабилизатора
7805.
Управление работой устройства осуществляется
микроконтроллером PIC18F2550. Был выбран этот микроконтроллер, поскольку он имеет
достаточное число выводов для управления работой схемы, имеет поддержку
интерфейса I 2 C, что необходимо для работы с часами реального времени, а также
потому, что для него имеется хорошее описание в [1]. Вывод MCLR микроконтроллера
подтянут через 10 кОм резистор на +5В.
Сигнал на реле подается с вывода RA0 микроконтроллера через
транзисторный ключ на биполярном транзисторе 2N3904.
Сигналы от управляющих кнопок поступают на выводы RA1:RA3 микроконтроллера и
вызывают прерывания (при подаче лог. «0»).
В схеме имеются часы реального времени PCF8583, которые хранят
значение текущего года (от 00 до 03), месяца, числа, дня недели, часа, минуты и
секунды. Помимо этого в часах имеется 240 байт свободной памяти, которая в
данном устройстве используется для хранения информации о количестве звонков и
их времени. К выводам OSC1 и OSC0 присоединен часовой кварцевый резонатор
частотой 32768 Гц. Часы имеют резервную схему питания, при этом диод VD1 не
дает заряжать резервную батарейку напряжением питания, а диод VD2 не дает батарейке
питать всю схему, когда отключается основной источник питания. Вывод А0 часов
присоединен к земле, что определяет 6 бит адреса устройства.
Обмен информацией между микроконтроллером и часами происходит
при помощи программно-реализуемого I 2 C-интерфейса, для этого задействованы выводы RB6:RB7. В соответствии со
стандартом передачи данных по I 2 C, шина данных и шина тактов подтянуты через
резисторы номиналом 10 кОм к источнику напряжения +5В. При этом микроконтроллер
выступает в роли master, а часы - в роли slave.
Передача данных на алфавитно-цифровой LED-индикатор осуществляется
с помощью трех сдвиговых регистров 74HC595, при этом первые два регистра U2 и U3 обеспечивают передачу
комбинации, соответствующей данному символу (для этого используются выводы RC0:RC6 микроконтроллера), а
третий регистр отвечает за передачу данных о позиции данного символа на LED (позиция от 0 до 5). Для
этого используются выводы RA1:RA3 микроконтроллера. Передача символа завершается
подачей единицы на вывод RC7. Параллельные данные от сдвиговых регистров
поступают на драйвера TC4468, которые затем передают сигналы на входы LED-индикатора.
Для включения устройства необходимо подключить его к
источнику постоянного напряжения +12В.
Настройка. Настройка осуществляется переходом в режим настройки
автомата. Для этого необходимо нажать на кнопку ВВОД.
После этого пользователь переходит в режим главного меню,
текущий пункт которого отображается на LED-индикаторе. Главное меню
содержит три пункта:
Переход в меню изменения даты и времени
Рис. 1. Пример отображения на LED-индикаторе пункта
главного меню
Для того, чтобы перейти в режим настройки, соответствующий
данному пункту меню, необходимо нажать кнопку ВВОД. Для перемещения между
пунктами используются кнопки ВВЕРХ и ВНИЗ.
Нажатие кнопки ВВОД на позиции ВЫХОД позволяет выйти из
режима настройки, после чего автомат перейдет в режим работы, соответствующий
установленным параметрам.
Меню изменения даты и времени содержит следующие пункты
Рис. 2. Пример отображения на LED-индикаторе пункта меню
настройки даты и времени
После нажатия кнопки ВВОД на каком либо пункте данного меню,
пользователь переходит в режим ввода соответствующего значения. При этом начальное
значение, отображаемое на индикаторе, соответствует установленному на данный
момент в часах. Изменение значения происходит нажатием кнопок ВВЕРХ и ВНИЗ.
Установка выбранного значения - кнопкой ВВОД. После этого происходит возврат в
меню настройки даты и времени.
Рис. 3. Отображение на LED-индикаторе режима ввода
месяца
Следует заметить, что значение года в часах изменяется в
пределах от 0 до 3. Это значит, что при вводе значения года необходимо
отсчитывать это значение, начиная с последнего високосного.
Устройство автоматически определяет пределы изменения
устанавливаемого значения, таким образом исключается возможность ввода заведомо
неверных данных (например, 13 месяц и т.д.) Кроме того, при вводе месяца в некоторых
случаях автоматически производится корректировка числа. Например, в случае,
когда установлено 31 число, а вводится месяц, содержащий 30 или 28 (29, если
год високосный) дней, то число переводится на значение соответственно 30, 28
или 29.
Меню настройки звонков содержит следующие пункты
Переход в режим ввода количества звонков
Переход в режим ввода длительности звонка
Рис. 4. Пример отображения на LED-индикаторе пункта меню
настройки звонков
Ввод значений производится аналогично тому, как это делается
в меню настройки даты и времени. При этом можно ввести до 30 звонков в память
автомата. Длительность звонков вводится в секундах. Максимальное значение
составляет 59 с.
ВНИМАНИЕ! При первом запуске автомата необходимо произвести
настройку звонков, так как устройство не умеет предустановленной схемы.
Обязательно нужно установить длительность звонков, иначе они не будут
производиться (начальное значение длительности - 0).
Рис. 5. Отображение на LED-индикаторе режима ввода
количества звонков
При переходе в режим ввода времени звонков пользователь
попадает в меню выбора звонка, где число пунктов соответствует установленному
количеству звонков.
Меню времени звонков содержит пункты
Рис. 6. Пример отображения на LED-индикаторе пункта меню
времени звонков
После нажатия кнопки ВВОД на одном из пунктов, пользователь
последовательно вводит час и минуту звонка, аналогично тому, как это
производится в режиме ввода времени, и автоматически возвращается в меню
времени звонков.
1. Яценков
В.С. Микроконтроллеры Microchip с аппаратной поддержкой USB. - М.: Горячая
линия-Телеком, 2008. - 400 с.
микроконтроллер автомат звонок часы
Курсовой проект по дисциплине «Цифровые устройства и
микроконтроллеры»
__CONFIG (2, PWRTDIS & BORDIS & WDTDIS);
// глобальные переменныеchar i=0, j, l; // вспомогательные
счетные переменныеchar d, month, day, year; // вспомогательные вычислительные
переменныеunsigned char CallDuration=5; // длительность звонка в секундахchar
CallCount=0; // для временного хранения числа звонков (максимум 30)char
Zvonok=0; // для хранения номера звонка, время которого изменяется в настоящий
моментchar WDAY_Month; // переменнная для считывания текущего дня недели и
месяца из часовchar Minutes; // переменнная для считывания текущего значения
минут из часовchar Hours; // переменнная для считывания текущего значения
часаchar Seconds; // переменнная для считывания текущего значения секундchar
LedWork=0; // логическая переменная (режим настройки вкл/выкл) *дисплей
работает только в режиме настройкиchar SymPlace=0x00; // 6 младших битов этой
переменной определяют,
// на какие позиции дисплея необходимо выводить символыchar
DotPlace=0x00; // на какие позиции ставаить точкиchar Symbols[12]; // массив
символов, которые в данный момент должны выводиться на экран
// (каждый символ использует два байта для описания своей
конфигурации на дисплее)char Mode; // определяет, в каком режиме находится
система настройки
// 2 - режим установки времени и даты
// 10 - настройка количесва звонков (до 30)
// 11 - выбор номера звонка для настройки времени
срабатывания
// 12 - режим ввода часа выбранного звонка
// 13 - режим ввода минуты выбранного звонка
// 14 - режим ввода длительности звонков (в секундах)char m;
// определяет номер текущей позиции внутри данного режима
// изображение чисел 0 1 2 3 4 5 6 7 8 9unsigned char
DigitL[10]={0xFF, 0x30, 0xEE, 0xFC, 0x31, 0xDD, 0xDF, 0xF0, 0xFF, 0xFD}; //
младший байт
const unsigned char DigitH[10]={0x00, 0x00, 0x11,
0x11, 0x11, 0x11, 0x11, 0x00, 0x11, 0x11}; // старший байт
// изображение букв K(0) A(1) Г(2) О(3) Д(4) М(5) Е(6) С(7)
Н(8) Ч(9) И(10) Ь(11) |(12) Х(13) У(14) Т(15) З(16) В(17) /(18) Р(19) Я(20)
Л(21)
const unsigned char LetterL[22]={0x03, 0x30,
0xC3, 0xFF, 0x3C, 0x33, 0xCF, 0xCF, 0x33, 0x31, 0x33, 0x1F, 0x03, 0x00, 0x3D,
0xC0, 0xCC, 0xCF, 0x00, 0xE3, 0xF1, 0x30};unsigned char LetterH[22]={0x29,
0x32, 0x00, 0x00, 0x22, 0xA0, 0x11, 0x00, 0x11, 0x11, 0x22, 0x11, 0x00, 0xAA,
0x11, 0x44, 0x29, 0x29, 0x22, 0x11, 0x13, 0x22};
// массив позиций 0 1 2 3 4 5unsigned char Pos[6]={0x7C, 0xBC,
0xDC, 0xEC, 0xF4, 0xF8};
unsigned short int k=0; // переменная для задержки
// вывод на LED-дисплей символа на позицию PosSymbOut
(char SymbolL, char SymbolH, char Pos, char Dot)
{(Dot) Pos+=(1<<1);=0;(i=0; i<8; i++) // передаем
младший байт изображения символа на регистр сдвига
}=1;=0; (i=0; i<8; i++) //
старший байт изображения
}=1;=0;(i=0; i<8; i++) // байт позиции
// вывод на LED-дисплей всех необходимых в данный момент
символов на соответствующие позиции
{(j=0; j<7; j++) ((1<=1; i-) // посылаем 8 байтов данных
}&=~(1<<7);|=(1<<6);
// здесь уровень на SDA поределяет ведомый (часы)=1;=0;&=~(1<<7);&=~(1<<6);
}ReadByte() //
прием байта по интерфейсу I2C
{out=0x00;&=~(1<<7);|=(1<<6);
// линию SDA определяет ведомый, a SCL - ведущий
}&=~(1<<7);&=~(1<<6);
// состояние линий SDA и SCL определяет ведущий (мк)
}Write
(char Adress, char Data) // записываем данные
Data в ячейку часов с адресом
Adress
}Read (char
Adress) // считываем данные из ячейки часов с адресом Adress
{output; //
переменная для вывода(); // начинаем передачу по I2C(WRITE); // передаем адрес
часов + бит записи(Adress); // передаем адрес нужной ячейки(); // рестарт
протокола I2C(READ); // передаем адрес часов + бит чтения=ReadByte(); //
считываем ячейку(); // завершаем прием данных по I2Coutput;
// полная копия
функции Write, но для обработчика прерываний
// пришлось сделать
такую копию, так как в ином случае возникает необъяснимая ошибка
// которая не
происходит, если эту функцию использовать под разными именами в main() и
interrupt()W (char Adress, char Data) // записываем данные Data в ячейку часов
с адресом Adress
{(); // начинаем
передачу по I2C(WRITE); // передаем адрес часов + бит записи(Adress); //
передаем адрес часов + бит записи(Data); // записывем нужные данные(); //
завершаем прием данных по I2C
// обработчик
прерыванийinterrupt ISR()
// - Прерывания
от кнопок управления -
{(LedWork) //
Находимся в режиме настройки
{(Mode) //
Смотрим, какой режим активен
{1: // Режим
главного меню(m<3) m++; else m=1;;2: // Режим установки времени и даты
case 3: // Режим
ввода года(m>0) m-; else m=3;
break;4:
// Режим ввода месяца(m>1) m-; else m=12;;
case 5: // Режим
ввода числа=((Read(0x06)&0x10)>>4)*10+(Read(0x06)&0x0F); //
считываем записанный в часы месяц=((0xC0&Read(0x05))>>6);(month) // в
зависимости от месяца и високосности года изменяем предел установки дня
{1:
case 3: case 5: case 7: case 8: case 10: case 12:=31; break;4: case 6:
case 9: case 11:=30; break;2:(year) day=28; else day=29; break;
case 7: // Режим
ввода часа(m>0) m-; else m=23;
break;8:
// Режим ввода минут(m>0) m-; else m=59;;9: // Режим меню звонков(m<4)
m++; else m=1;
break;10: //
Режим ввода количества звонков
case 11: // Режим
выбора звонка для редактирования времени
break;12: //
Режим ввода часа выбранного звонка
case 13: // Режим
ввода минуты выбранного звонка
case 14: // Режим
ввода длительности звонков(m>0) m-; else m=59;
Похожие работы на - Проектирование автомата подачи звонков Курсовая работа (т). Информатика, ВТ, телекоммуникации.
Дипломная Работа На Тему Бухгалтерский Учет И Аудит Расходов На Оплату Труда В Торговой Организации
Сочинение: Лермонтовские места
Реферат На Тему Дорогами Гринева И Пугачева
Реферат по теме Биоценоз–сберегающая терапия кишечных инфекций у детей
Реферат по теме Нарушение строения и функций органов и систем при хроническом алкоголизме
Реферат: ОАО "Марийский Целлюлозно–бумажный Комбинат"
Курсовая Работа По Антикризисному Управлению
Ремонт Автомобильных Дорог Реферат
Картина Краски Золотой Осени Сочинение
Курсовая работа: Разработка системы обучения на предприятии
Написать Сочинение Моя Планета
Курсовая работа: Информационное обеспечение логистического процесса. Скачать бесплатно и без регистрации
Субъект Преступления Понятие Признаки Виды Курсовая Работа
Курсовая Работа На Тему Расходы Предприятия
Курсовая работа: Реструктуризация задолженности по обязательным платежам в бюджет. Скачать бесплатно и без регистрации
Реферат по теме Информационная электроника
Реферат На Тему Поля И Излучения
Безопасность жизнедеятельности на литейном цехе
Курсовая Работа На Тему Деньги, Их Роль В Экономике. Равновесие На Денежном Рынке
Реферат Философия Глобальные Проблемы Человечества
Похожие работы на - Финансовый анализ предприятия
Реферат: Пётр Ильич Чайковский
Реферат: Мерчандайзинг понятие и сущность