Автомат подачи звонков в учебном заведении на основе ПК

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

Автомат подачи звонков в учебном заведении на основе ПК

Оглавление

Введение

1. Теоретическая часть

1.1 Постановка задачи

1.2 Теоретические сведения

2. Практическая часть

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

2.2 Алгоритмы работы программы

2.3 Текст программы

2.4 Результаты тестирования (симулирования) устройства

2.5 Анализ полученных результатов

Заключение

Приложения

Введение


Микроконтроллер - микросхема, предназначенная для управления электронными устройствами. Типичный микроконтроллер сочетает в себе функции процессора и периферийных устройств, может содержать ОЗУ. Кроме ОЗУ, микроконтроллер может иметь встроенную энергонезависимую память для хранения программы и данных. Другие модификации контроллеров обладают возможностью многократной перезаписи энергонезависимой памяти [2, стр.21].

Первый патент на однокристальную микро-ЭВМ был выдан в 1971 году <#"721318.files/image001.gif">

Рисунок 1.1 - Микроконтроллер фирмы ATmega

К числу особенностей микроконтроллера AVR семейства ATmega относятся:

1.      FLASH-память программ объемом 8 - 128 Кбайт;

2.      Оперативная память (статическое ОЗУ) объемом 1 - 4 Кбайт;

.        Память данных на основе ЭСППЗУ (EEPROM) объемом от 512 байт до 4 Кбайт;

.        Возможность защиты от чтения и модификации памяти программ и данных;

.        Наличие детектора снижения напряжения питания (brown-out-detector, BOD) [1, стр.37].

Все характеристики подсистемы ввода/вывода микроконтроллеров семейства ATmega такие же, что и у микроконтроллеров других семейств:

.        Программное конфигурирование и выбор портов ввода/вывода;

2.      Выводы могут быть запрограммированы как входные и как выходные независимо друг от друга;

.        Входные буферы с триггером шмитта на всех выводах;

.        Возможность подключения ко всем входам внутренних подтягивающих резисторов (сопротивление резисторов 35 - 120 кОм).

Порты ввода/вывода AVR имеют число независимых линий "Вход/Выход" от 3 до 53. Каждый разряд порта может быть запрограммирован на ввод или на вывод информации. Мощные выходные драйверы обеспечивают токовую нагрузочную способность 20 мА на линию порта (втекающий ток) при максимальном значении 40 мА, что позволяет, например, непосредственно подключать к микроконтроллеру светодиоды и биполярные транзисторы. Общая токовая нагрузка на все линии одного порта не должна превышать 80 мА (все значения для напряжения питания 5 В) [4, стр.55].

Интересная архитектурная особенность построения портов ввода/вывода у AVR заключается в том, что для каждого физического вывода существует 3 бита контроля/управления, а не 2, как у распространенных 8-разрядных микроконтроллеров (Intel, Microchip, Motorola и т.д.).

Микроконтроллеры семейства ATmega имеют наиболее богатый набор периферийных устройств (ПУ). При этом в большинстве моделей имеются все ПУ, которые вообще встречаются в составе микроконтроллеров AVR. Этими устройствами являются:

.        8-разрядные таймеры/счетчики (таймеры Т0 и Т2). В ряде моделей эти таймеры/счетчики могут работать в качестве часов реального времени (в асинхронном режиме). У некоторых моделей они могут использоваться в качестве одно - или двухканального 8-битного генератора ШИМ-сигналов. Количество регистров, обслуживающие таймеры, зависит от их сложности и функциональности.

2.      16-разрядные таймеры/счетчики (таймеры Т1 и Т3). Как и 8-разрядные таймеры/счетчики, они используются для подсчета внешних событий, формирование сигналов, генерация ШИМ, но уже переменной разрядности, и в дополнение может сохранять свое текущее состояние в отдельном регистре по внешнему событию.

.        Сторожевой таймер WDT. Он предназначен для защиты микроконтроллеров от сбоев в процессе работы и имеется во всех моделях семейства. Этот таймер работает даже в режимах пониженного энергопотребления, т.к. имеет независимый тактовый генератор, работающий на частоте 1МГц при напряжении 5В.

.        Генераторы сигнала с ШИМ разрядностью 8 бит (один из режимов работы 8-разрядных таймеров/счетчиков Т0 и Т2).

.        Одноканальные, двухканальные и трехканальные генераторы сигнала с ШИМ регулируемой разрядности (один из режимов работы 16-разрядных таймеров Т1 и Т3). Разрешение ШИМ-сигнала для разных моделей составляет 8 - 10 бит или 1 - 16 бит.

.        Аналоговый компаратор. Он позволяет сравнивать значения напряжений, присутствующих на двух выводах контроллера. Результатом сравнения является логическое значение, которое может быть получено программой. По результатам может быть сгенерировано прерывание, а также осуществлен захват значение счетного регистра таймера/счетчика Т1, что позволяет измерить длину аналоговых сигналов.

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

.        Полнодуплексный универсальный асинхронный приемопередатчик (UART).

.        Полнодуплексный универсальный синхронный/асинхронный приемопередатчик (USART).

.        Последовательный синхронный интерфейс SPI.

.        Последовательный двухпроводный интерфейс TWI [3, стр.78].

Ядро микроконтроллеров AVR семейства ATmega выполнено по усовершенствованной RISC-архитектуре (enhanced RISC). Арифметико-логическое устройство (АЛУ), выполняющее все вычисления, подключено непосредственно к 32-м рабочим регистрам, объединенным в регистровый файл. Благодаря этому АЛУ выполняет одну операцию (чтение содержимого регистров, выполнение операции и запись результата обратно в регистровый файл) за один машинный цикл. Практически каждая из команд (за исключением команд, у которых одним из операндов является 16-разрядный адрес) занимает одну ячейку памяти программы [1, стр.144].

В микроконтроллеры AVR реализована Гарвардская архитектура, которая характеризуется раздельной памятью программ и данных, каждая из которых имеет собственные шины доступа к ним. Такая организация позволяет одновременно работать как с памятью программ, так и с памятью данных. Разделение шин доступа позволяет использовать для каждого типа памяти шины различной разрядности, причем способы адресации и доступа к каждому типу памяти также различны [2, стр.98].

2. Практическая часть


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


Принципиальная схема устройства изображена на рисунке 2.1.

Рисунок 2.1 - Схема устройства

Основные составляющие созданного устройства:

.        Микропроцессор ATmega8;

2.      Преобразователь MAX232;

.        Конденсаторы;

4.      Com порт;

.        Динамик (buzzer).

 

.2 Алгоритмы работы программы


Блок-схема основной функции устройства автомата подачи звонков в учебном заведении показана на рисунке 2.2.

Рисунок 2.2 - Блок-схема работы устройства

2.3 Текст программы


Исходный код прошивки написан в среде CodeVisionAVR C Compiler и находится в приложении. Основная функция программы представлена ниже.main (void)

{.0=1;(); // визов функции int (инициализация всего)(1) {

ADCSRA=0b11001011;(owf_flag)

{.0=1;(buf_cnt) {_cnt--;("%d",buff [buf_cnt]);

putchar (0x0D); // на новую строку УАРТА

}_flag = 0;

}

}

2.4 Результаты тестирования (симулирования) устройства


Для эмулирования работы программы микроконтроллера использовались среда разработки Proteus, где была собрана схема устройства и приложение написанное на языке C#. Начальное состояние схемы в эмуляторе представлено на рисунке 2.3.

Рисунок 2.3 - Начальное состояние устройства

Для подключения микроконтроллера к ПК был выбран com порт. С помощью программы VSPD имитировалось подключение (Рисунок 2.4).

Рисунок 2.4 - Имитация com порта

Программа для ПК представлена на рисунке 2.5 Происходит считывание времени, когда время совпадает с заданным расписанием происходит подача сигнала в com порт, откуда затем данные поступают на сам микроконтроллер и включается динамик (Рисунок 2.6).

Рисунок 2.5 - Работа программы

Рисунок 2.6 - Работа устройства

2.5 Анализ полученных результатов


В ходе курсовой работы, была разработана схема и программа работы автомата подачи звонков в учебном заведении на основе ПК. Использовались программы, такие как CodeVisionAVR C compiler (на основе микроконтроллера ATMega8), Proteus, MVS12.

В ходе анализа программа не давала сбоев. Выполняла правильные действия в зависимости от запроса пользователя.

Заключение


В результате выполнения курсового проекта были выполнены все поставленные задачи и цели по созданию устройства "Автомат подачи звонков в учебном заведении на основе ПК", а именно:

собрана принципиальная схема устройства;

написана программа для микроконтроллера;

написана программа для ПК;

произведена симуляция устройства;

произведено практическое тестирование устройства.

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

Система реального времени (RTC) реализована во всех микроконтроллерах серии "mega" и в двух кристаллах серии "classic". Таймер/счетчик RTC имеет свой собственный предделитель, который может быть программным способом подключен или к основному внутреннему источнику тактовой частоты микроконтроллера, или к дополнительному асинхронному источнику опорной частоты (кварцевый резонатор или внешний синхросигнал). Как результат работы можно выделить получение опыта работы с микроконтроллерами, в сборке схем и их наладке.

Приложения

Приложение А

#include <mega8. h>

#include <delay. h>

#include <stdio. h>

#define ADC_VREF_TYPE & 0xff;

#define BUF_SIZE 512 // необходимое число точек

unsigned char buff [BUF_SIZE];int buf_cnt=0;char owf_flag =0;char start;[ADC_INT] void adc_isr (void) { start=ADCW;(! owf_flag) {[buf_cnt] =ADCW;_cnt++;(buf_cnt == BUF_SIZE) owf_flag=1; }

}init (void) {

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud Rate: 57600=0x00;=0x18;=0x86;=0x00;=0x0C;=0x0b00000000; // вибираем 0-й канал АЦП

ADCSRA=0x0b10001011; // конфигурация АЦП

#asm ("sei"); // разрешить все переривания

}main (void)

{.0=1;(); // визов функции int (инициализация всего)(1) {=0b11001011; // включаем непреривное АЦП преобразование

if (owf_flag)

{.0=1;(buf_cnt) {

buf_cnt--;("%d",buff [buf_cnt]); // печатаем в УАРТ значение(0x0D); // на новую строку УАРТА

}_flag = 0;

}

}

}

Приложение Б

 

using System;System. Collections. Generic;System.componentModel;System. Data;System. Drawing;System. Linq;System. Text;System. Threading. Tasks;System. Windows. Forms;System. IO. Ports;Kurs

{partial class Form1: Form

{Form1 ()

{();

}void Form1_Load (object sender, EventArgs e)

{

}void button1_Click (object sender, EventArgs e)

{. Text = DateTime. Now. Hour. ToString () +"." + DateTime. Now. Minute. ToString () +"." + DateTime. Now. Second. ToString ();

}void timer1_Tick_1 (object sender, EventArgs e)

{. Text = DateTime. Now. Hour. ToString () +"." + DateTime. Now. Minute. ToString () +"." + DateTime. Now. Second. ToString ();(label1. Text == "8.30.0") {port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = {1};. Write (data, 0,data. Length);. Close ();

};(label1. Text == "9.50.0") {port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = {1};. Write (data, 0,data. Length);. Close ();

};(label1. Text == "10.0.0") {port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = {1};. Write (data, 0,data. Length);. Close ();

};(label1. Text == "11.20.0") {port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = {1};. Write (data, 0,data. Length);. Close ();

};(label1. Text == "11.50.0") {port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = {1};. Write (data, 0,data. Length);. Close ();

};(label1. Text == "13.10.0") {port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = {1};. Write (data, 0,data. Length);. Close ();

};(label1. Text == "13.20.0") {port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = {1};. Write (data, 0,data. Length);. Close ();

};(label1. Text == "14.40.0") {port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = {1};. Write (data, 0,data. Length);. Close ();

};(label1. Text == "14.50.0") {port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = {1};. Write (data, 0,data. Length);. Close ();

};(label1. Text == "16.10.0")

{port = new SerialPort ("COM2", 9600, Parity. None, 8, StopBits. One);. Open ();[] data = { 1 };. Write (data, 0, data. Length);

port. Close ();

};

}

}

}

Похожие работы на - Автомат подачи звонков в учебном заведении на основе ПК

 

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