Разработка устройства обработки информации на основе микроконтроллера ATmega8
Разработка структурной и принципиальной схемы. Блок-схема основной программы и подпрограмм обработки прерываний. Имена переменных, используемых в них. Результаты моделирования работы устройства в программе ISIS пакета Рroteus. Разработка печатной платы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.11.2016 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГАОУ ВО «Севастопольский государственный университет»
Институт радиоэлектроники и информационной безопасности
Курсовая работа
по дисциплине «Микропроцессорные устройства»
Содержание
1. Техническое задание
2. Разработка структурной схемы
3. Разработка принципиальной схемы
4. Разработка блок-схемы алгоритма работы устройства и программы для МК
5. Результаты моделирования работы устройства в программе ISIS пакета Рroteus
6. Разработка печатной платы
Вывод
Библиографический список
1. Техническое задание
На основе микроконтроллера ATmega8 разработать устройство, выполняющее следующие функции:
Подсчет количества нажатий на кнопку SB0 за каждые 15 с. Работа устройства должна осуществляться в цикле. По истечению текущих 15 с результат подсчета числа нажатий выводится на дисплей (семисегментный или LCD-дисплей) и сохраняется на нем в течении следующих 15 с.
Обеспечить формирование аналогового сигнала, вид которого изображен на рис. 1.1.
Рис. 1.1 -- Заданный аналоговый сигнал
2. разработка структурной схемы
Согласно ТЗ, в качестве устройства обработки информации будем использовать микроконтроллер (МК) ATmega8, который производится фирмой Atmel. В качестве устройства ввода информации в МК будем использовать кнопку SB0. В качестве устройства вывода информации будем использовать семисегментный индикатор.
Для формирования аналогового сигнала будем использовать цифро-аналоговый преобразователь (ЦАП). Структурная схема устройства, построенная с учетом вышесказанного, приведена на рис. 2.1.
Рис. 2.1 -- Структурная схема проектируемого устройства
3. разработка принципиальной схемы
В качестве микроконтроллера (МК) будем использовать заданный в ТЗ ATmega8, возможности которого позволяют решить поставленную задачу. Для ввода в МК соответствующего сегмента будем использовать кнопку SB0, которая подключается к выводу порта С PC0 микроконтроллера. Семисегментый индикатор подключим по схеме динамической индикации к выводам порта B PB0…PB6 и порта С PС0, PС1. Для того чтобы ток, протекающий через светодиод, не превышали допустимого тока, последовательно с ним необходимо включить токоограничивающий резистор R, номинал которого определяется из закона Ома
Для преобразования цифрового кода в аналоговый сигнал применим микросхему DAC0800, которая представляет собой 8-миразрядный высокоскоростной ЦАП. Микросхему подключим по стандартной схеме, приведенной в техническом описании.
Принципиальная схема проектируемого устройства, созданная в программе ISIS пакета Proteus, изображена на рис. 3.1.
Рис. 3.1 -- Принципиальная схема проектируемого устройства
4. Разработка блок-схемы алгоритма работы устройства и программы для МК
Основную программу будем использовать для определения количества нажатий на кнопку SB0 и вывода данного значения на семисегментные индикаторы.
Для формирования аналогового сигнала и отсчета 15 с будем использовать режим работы сброс таймера при совпадении (СТС). Для работы в режиме СТС используется специальный регистр микроконтроллера -- регистр совпадения, в нашем случае это OCR0A. В режиме СТС таймер производит подсчет входных импульсов. Текущее значение таймера из его счетного регистра постоянно сравнивается с содержимым регистра совпадения. Когда содержимое счетного регистра совпадет с содержимым регистра OCR0A, произойдет сброс таймера и вызов соответствующего прерывания. По прерыванию в порт С выводится значение, которое рассчитывается МК по заданным формулам. При частоте тактового генератора 8 МГц в регистр совпадения необходимо записать значение 115, или, представив данное значение в шестнадцатеричной системе счисления, получим 0x73.
В качестве среды разработки программы будем использовать среду CodeVisionAVR, которая представляет собой интегрированная среду разработки программного обеспечения для микроконтроллеров семейства AVR фирмы Atmel.
Имена переменных, используемых в программе, их тип и назначение представлены в таблице 4.1.
Таблица 4.1 -- Описание переменной, используемой в программе
Имя переменной |
Тип переменной |
Назначение переменной |
|
time |
unsigned int |
Количество интервалов дискретизации |
|
msec |
unsigned int |
Счетчик милисекунд |
|
sec |
unsigned char |
Счетчик секунд |
|
vivod |
unsigned char |
Переменная, в которой хранится результат предыдущего запоминания |
|
count |
unsigned char |
Счетчик количества нажатий |
|
cifri[] |
unsigned char |
Массив цифр для семисегментного индикатора |
|
temp |
unsigned char |
Переменная для динамической индикации |
|
i |
unsigned char |
Переменная для динамической индикации |
Блок-схемы работы основной программы и подпрограмм обработки прерываний изображены на рис. 4.1...4.3.
программа прерывание плата
Рис. 4.1 -- Блок-схема подпрограммы обработки прерываний для формирования аналогового сигнала
Рис. 4.2 -- Блок-схема подпрограммы обработки прерываний для отсчета 15 с
Рис. 4.2 -- Блок-схема основной программы и функции динамической индикации
Текст программы, написанной на языке С, представлен ниже.
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
Project :
Version :
Date : 16.05.2016
Author : NeVaDa
Company :
Comments:
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
#include <mega8.h>
#include <delay.h>
flash unsigned char cifri[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
unsigned int msec = 0;
unsigned int time;
unsigned char sec;
unsigned char vivod;
unsigned char count;
void din_ind(int chislo)
{
unsigned char temp;
unsigned char i;
for(i = 2; i >= 1; i = i >> 1)
{
temp = chislo % 10;
chislo = chislo / 10;
PORTC = i;
PORTB = ~cifri[temp];
delay_ms(1);
}
}
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
if(msec < 1000)
{
msec++;
}
else
{
msec = 0;
if(sec < 15)
{
sec++;
}
else
{
sec = 0;
vivod = count;
count = 0;
}
}
}
// Timer2 output compare interrupt service routine
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
if(time <= 700)
time++;
else
time = 0;
if(time >= 0 && time <= 40)
{
PORTD = 5*time;
}
else
if(time > 40 && time <= 200)
{
PORTD = 200;
}
else
if(time > 200 && time <= 300)
{
PORTD = -2*(time - 300);
}
else
{
PORTD = 0;
}
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x80;
DDRB=0x7F;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
// State6=T State5=T State4=T State3=T State2=P State1=0 State0=0
PORTC=0x04;
DDRC=0x03;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x0B;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x73;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 250,000 kHz
// Mode: CTC top=OCR2
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x0F;
TCNT2=0x00;
OCR2=18;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x90;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
if(PINC.2 == 0)
{
delay_us(200);
while(PINC.2 == 0)
{
}
delay_us(200);
count++;
}
din_ind(vivod);
}
}
5. Результаты моделирования работы устройства в программе Isis Пакета Proteus
Для моделирования нужно определить тактовую частоту. Для этого необходимо правильно настроить CSKEL Fuse . Значение этих битов определяет источника тактовых сигналов. Загрузим файл прошивки в виртуальный МК путем выбора откомпилированного файла в строке Program file.
Результаты моделирования представлены на рис. 5.1…5.4.
Рис. 5.1 -- Устройство сразу после запуска моделирования
Рис. 5.2 -- Устройство после троекратного нажатия кнопки SB0 в течении 15 с
Рис. 5.3 -- Устройство после двадцатикратного нажатия кнопки SB0 в течении следующих 15 с
Таким образом, результаты моделирования полностью соответствуют техническому заданию.
Рис. 5.4 -- Генерируемый аналоговый сигнал на экране виртуального осциллографа
6. Разработка печатной платы
Для разработки печатной платы воспользуемся программой ARES пакета PROTEUS. Для этого, прежде всего, нужно проверить наличие посадочных мест и корпусов у всех элементов. Элементы, у которых они отсутствуют, например, светодиоды и кнопки и семисегментный индикатор, заменим на разъемы из библиотеки Connectors, предполагая, что потенциометр и светодиоды будут располагаться не на печатной плате (рис. 6.1).
На рисунках рис. 6.2…6.4 представлена разведенная печатная плата в разных слоях. Расположение элементов выбиралось вручную, при трассировке использовался авто трассировщик.
3-D виды платы представлены на рис. 6.5…6.9.
Рис. 6.1 -- Подготовка схемы в ISIS для экспорта в ARES
Рис. 6.2 -- Все слои платы
Рис. 6.3 -- Слои Тоp Cooper и Silk
Рис. 6.4 -- Слой Bottom Cooper
Рис. 6.5 -- Вид платы сверху
Рис. 6.6 -- Вид платы спереди
Рис. 6.7 -- Вид платы слева
Рис. 6.8 -- Вид платы сзади
Рис. 6.9 -- Вид платы справа
Вывод
В результате выполнения курсовой работы на основе микроконтроллера ATmega6450 разработано устройство, которое выполняет следующие функции:
Подсчет количества нажатий на кнопку SB0 за каждые 15 с. Работа устройства должна осуществляться в цикле. По истечению текущих 15 с результат подсчета числа нажатий выводится на дисплей (семисегментный или LCD-дисплей) и сохраняется на нем в течении следующих 15 с.
Обеспечивается непрерывное формирование аналогового сигнала заданной формы.
Разработаны принципиальная схема, структурная схемы устройства, алгоритм работы его и, описывающая данный алгоритм, программа на языке С. Также разработана печатная плата устройства.
Библиографический список
1. Белов А.В. Разработка устройств на микроконтроллерах AVR: шагаем от «чайника» до профи / А.В. Белов. -- СПб.: Наука и техника, 2013 -- 528 с.
2. Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя/ А.В. Евстифеев. -- М.: Издательский дом «Додэка-ХХI», 2007 -- 592 с.
3. Лебедев М.Б. CodeVisionAVR: пособие для начинающих / М.Б. Лебедев -- М.: Издательский дом «Додэка-ХХI», 2008 -- 592 с.
4. Методические указания по оформлению текстовых работ для студентов дневной и заочной форм обучения направления 6.050901 -- «Радиотехника» / СевНТУ; сост. В.Г. Слёзкин. -- Севастополь: Изд-во СевНТУ, 2010. -- 20 с.
Размещено на Allbest.ru
Подобные документы
Разработка принципиальной электрической схемы микропроцессорного устройства управления двигателем постоянного тока на базе контроллера ATmega 128. Разработка пакета подпрограмм на языке Assembler в целях регулирования и корректной работы устройства.
курсовая работа [271,5 K], добавлен 14.01.2011Анализ выбора цифрового сигнального процессора и структурной схемы устройства обработки информации. Расчет надежности устройства и производительности обмена данных, разработка ленточного графика. Обзор особенностей радиального и межмодульного интерфейса.
дипломная работа [1,8 M], добавлен 20.05.2012Разработка структурной схемы устройства управления учебным роботом. Выбор двигателя, микроконтроллера, микросхемы, интерфейса связи и стабилизатора. Расчет схемы электрической принципиальной. Разработка сборочного чертежа устройства и алгоритма программы.
курсовая работа [577,8 K], добавлен 24.06.2013Виды терморегуляторов и их общее устройство. Разработка устройства для управления микроклиматом в теплице. Возможные варианты модернизации системы контроля температуры. Блок инициализации микроконтроллера. Разработка структурной схемы работы программы.
курсовая работа [1,8 M], добавлен 27.05.2015Актуальность задачи. Разработка функциональной схемы устройства. Радиолокационная установка (РЛУ). Микропроцессорная часть. Обоснование алгоритма работы устройства. Разработка управляющей программы устройства. Схема алгоритма. Пояснения к программе.
курсовая работа [193,9 K], добавлен 18.10.2007Сравнительный анализ существующих приборов. Разработка функциональной схемы устройства. Выбор и статистический расчет элементов, входящих в систему: датчика, источник тока, усилителя, микроконтроллера, блок питания. Блок-схема управляющей программы.
курсовая работа [769,9 K], добавлен 12.01.2015Создание приемника команд RC5 для персонального компьютера на основе микроконтроллера ATmega8. Особенности написания файла прошивки и симулирование устройства. Порядок выполнения сборки собственной схемы и характеристика полученного микроконтроллера.
курсовая работа [2,0 M], добавлен 24.11.2013Разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы. Текст программы, инициализация указателя стека, структура системы и ресурсов микроконтроллера. Запись кодов при программировании данного устройства.
контрольная работа [18,4 K], добавлен 24.12.2010Выбор принципов проектирования устройства записи, хранения и передачи чисел. Разработка алгоритма выполнения операций, необходимых для обработки информации. Структурная схема устройства. Элементарная база, необходимая для разработки принципиальной схемы.
курсовая работа [1,3 M], добавлен 16.08.2012Разработка функциональной и принципиальной схемы прибора, ее структура и элементы. Источник тока, управляемый напряжением, схема подключения кнопок. Разработка основной программы и применяемые подпрограммы, оценка эффективности проектируемой системы.
курсовая работа [401,3 K], добавлен 14.03.2015